A practical guide to blade flicker while the saber is ignited, including legacy flicker, fire mode, pulse behavior, and where every related setting belongs.
config.txtcolors.txtfont_config.txtWhen your saber is ignited and you are simply holding it still, the blade is not supposed to look like a flat, dead bar of light. It flickers. That subtle shimmer, pulse, drift, or crackle is what makes the blade feel alive.
The Crystal Focus X gives you a lot of control over this blade behavior while the saber is ignited. You can keep it subtle and cinematic, make it unstable and electric, or turn it into a full animated fire effect.
The CFX uses two separate flicker systems:
| System | What It Does |
|---|---|
| Spatial Flicker | The modern pixel-blade system. It works per pixel along the blade and gives you the creative styles like Movie Flicker, Brown Noise, Full Random, and Fire. |
| Legacy Flicker | The original brightness-based system. It dims the whole blade uniformly and is still used as the basis for Style 0. |
These systems can work together. Spatial styles 1 through 5 blend a kcolor flicker color over the blade, while Style 0 relies on the underlying brightness flicker from the legacy engine.
Set the flicker style in your blade profile in config.txt:
style_flicker=N
| Value | Name | Visual Description |
|---|---|---|
| 0 | Legacy | Classic uniform brightness flicker. The entire blade dims and brightens together, with no per-pixel variation and no added flicker color overlay. This is the default. |
| 1 | Bicolor | Blends the flicker color over the whole blade uniformly. The blend amount varies over time, creating a two-tone shimmer. |
| 2 | Movie Flicker | A wandering patch of flicker color moves randomly along the blade. One area is affected while the rest stays mostly unchanged, giving a cinematic, shifting look. |
| 3 | Brown Noise | Smooth organic per-pixel variation. Each pixel drifts slowly and independently, creating a flowing shimmer without harsh jumps. |
| 4 | Full Random | Chaotic per-pixel noise. Each pixel gets fresh random values, making the blade feel unstable, noisy, and electrical. |
| 5 | Fire | A full fire simulation. Heat rises or falls through the blade, sparks ignite from a source point, and the flicker behaves like animated flame instead of a simple color shimmer. |
Styles 1 through 5 use a separate flicker color called kcolor. This is defined in colors.txt inside the active [color=N] section:
[color=1]
blade=0,0,255
kcolor=100,0,200
In this example, the blade is blue and the flicker color is purple. When flicker is applied, purple gets blended over the blue according to the chosen style and settings.
If no kcolor is set, the flicker color defaults to black. That means styles 1 through 5 will mostly dim the blade rather than tint it with a visible second color.
These settings belong in your blade profile in config.txt.
force_flicker=N — How Often the Flicker FiresRange: 0–255
Default: 0
This controls how often the flicker effect is applied. Each frame, the CFX rolls a random number from 0 to 255. If that roll is less than or equal to force_flicker, flicker is applied.
force_flicker=255 gives constant flickerforce_flicker=128 gives flicker roughly half the timeforce_flicker=30 gives occasional flickerforce_flicker=0 disables styles 1 through 4 visuallyNote: Style 0 and Style 5 behave differently. Legacy always runs through the old engine, while Fire uses force_flicker as part of its direction and speed control.
depth_flicker=N — How Strong the Color Blend IsRange: 0–255
Default: 0
This controls how strongly kcolor is mixed into the blade color.
depth_flicker=0 means no visible color blenddepth_flicker=128 gives a medium visible mixdepth_flicker=255 allows pixels to shift fully to the flicker color at maximum intensitysize_flicker=N — Spatial Focus AreaRange: 0–65535
Default: 0
When this is greater than 0, the flicker can be concentrated into a localized zone instead of affecting the whole blade evenly. The zone is shaped like a soft bump centered at pos_flicker.
pos_flicker=N — Center of the Flicker ZoneRange: 0–255
Default: 0
This sets where the localized flicker zone is centered.
pos_flicker=0 centers it near the emitterpos_flicker=128 centers it near the middlepos_flicker=255 centers it near the tipmapping_flicker=N — Dynamic Control SourceRange: 0–4
Default: 0
| Value | Mapping | Description |
|---|---|---|
| 0 | None | Uses the static depth_flicker value. |
| 1 | Audio | Flicker intensity follows the sound level. Louder means stronger flicker. |
| 2 | Angular | Flicker intensity follows blade tilt. Pointing down gives more flicker. |
| 3 | Move | Flicker intensity follows movement and swing speed. Faster motion gives more flicker. |
| 4 | Angular Reverse | The inverse of Angular. Pointing up gives more flicker. |
refreshfx=N — FX Update RateDefault: 12
This controls how frequently strip effects refresh. Lower values make the animation update faster and feel smoother. Higher values slow the updates down.
Style 5 is special because its parameters behave differently from the other flicker styles. It is a heat simulation rather than a simple random shimmer.
| Parameter | Behavior in Fire Mode |
|---|---|
force_flicker | Controls direction and speed. Values of 128 or higher make the fire move upward from emitter to tip. Values below 128 make it move downward from tip to emitter. |
size_flicker | Controls cooling. Higher values make the flame die out faster. Lower values let it stay taller and hotter. |
pos_flicker | Controls the spark origin. 0 means sparks begin at the emitter, 128 near the middle, and 255 at the tip. |
depth_flicker | Not used directly. The fire simulation drives the blend amount. |
mapping_flicker | Still works. It can scale the overall fire intensity from audio, tilt, or motion. |
kcolor | Defines the fire color. Warm oranges and yellows usually work best. |
style_flicker=5
force_flicker=180
size_flicker=40
pos_flicker=0
kcolor=255,80,0
style_flicker=5
force_flicker=80
size_flicker=30
pos_flicker=255
kcolor=200,50,0
These settings control the original brightness-based flicker engine. They apply to all blade types, including tri-Cree and pixel blades. On pixel blades, they form the base behavior used by Style 0.
These also belong in config.txt under [profile=N], with optional font overrides in font_config.txt.
flks=N — Flicker SpeedDefault: 6
This controls how often the brightness flicker updates. Lower values mean faster flickering.
flkd=N — Flicker DepthDefault: 0
This is the maximum percentage of brightness reduction during a flicker event.
flkon=N — Flicker During Power OnValues: 0 or 1
Default: 1
When enabled, the blade flickers during ignition. Set it to 0 if you want a cleaner, steadier power-on.
flkoff=N — Flicker During Power OffValues: 0 or 1
Default: 1
When enabled, the blade flickers during retraction. Set it to 0 if you want a clean shutdown look.
tridentflk=N — Trident Channel Flicker DepthDefault: 0
This is only relevant for tri-Cree blades using Trident channel configurations. It works like flkd, but only for the delayed Trident channels.
The pulse effect is a slow rhythmic brightness oscillation layered on top of normal flicker. It makes the blade feel like it is breathing.
pulsed=N — Pulse DepthDefault: 0
This is the percentage of brightness reduction at the bottom of the pulse cycle.
pulsel=N — Pulse DurationDefault: 0
This is the duration of one half-cycle of the pulse in milliseconds. Lower values pulse faster.
Note: Bothpulsedandpulselmust be non-zero for the pulse effect to be visible.
| Setting | Config File | Section |
|---|---|---|
style_flicker, mapping_flicker, force_flicker, depth_flicker, size_flicker, pos_flicker | config.txt | [profile=N] |
flks, flkd, flkon, flkoff, tridentflk | config.txt | [profile=N] |
pulsed, pulsel | config.txt | [profile=N] |
refreshfx | config.txt | [profile=N] |
kcolor | colors.txt | [color=N] |
Font override: Any setting that normally lives in config.txt can also be placed in a font's font_config.txt. When that font is active, the font-level value overrides the default profile value.
; In config.txt [profile=1]
style_flicker=2
mapping_flicker=1
force_flicker=200
depth_flicker=80
size_flicker=120
; In colors.txt [color=1]
blade=0,0,255
kcolor=40,0,255
; In config.txt [profile=1]
style_flicker=3
mapping_flicker=0
force_flicker=220
depth_flicker=100
; In colors.txt [color=1]
blade=255,0,0
kcolor=255,100,0
; In config.txt [profile=1]
style_flicker=4
mapping_flicker=0
force_flicker=255
depth_flicker=150
; In colors.txt [color=1]
blade=255,255,255
kcolor=100,100,255
; In config.txt [profile=1]
style_flicker=1
mapping_flicker=2
force_flicker=255
; In colors.txt [color=1]
blade=0,255,0
kcolor=0,100,255
; In config.txt [profile=1]
style_flicker=0
flkd=15
flks=6
pulsed=20
pulsel=2000
| Key | Description | Default | File |
|---|---|---|---|
style_flicker | Flicker style 0–5 | 0 | config.txt |
mapping_flicker | Dynamic input source 0–4 | 0 | config.txt |
force_flicker | Frequency or probability, and fire direction/speed behavior in Style 5 | 0 | config.txt |
depth_flicker | Color blend intensity | 0 | config.txt |
size_flicker | Localized flicker zone width | 0 | config.txt |
pos_flicker | Center of the flicker zone | 0 | config.txt |
kcolor | Flicker color | 0,0,0 | colors.txt |
flks | Legacy flicker speed | 6 | config.txt |
flkd | Legacy flicker depth | 0 | config.txt |
flkon | Flicker during ignition | 1 | config.txt |
flkoff | Flicker during retraction | 1 | config.txt |
tridentflk | Trident channel flicker depth | 0 | config.txt |
pulsed | Pulse depth | 0 | config.txt |
pulsel | Pulse half-cycle duration | 0 | config.txt |
refreshfx | Strip FX refresh period | 12 | config.txt |