CRYSTAL FOCUS X
Beginner Guide Series
FLICKER STYLES
Blade behavior while ignited · Pixel effects · Configuration

Flicker Styles Guide

A practical guide to blade flicker while the saber is ignited, including legacy flicker, fire mode, pulse behavior, and where every related setting belongs.

What you will learn
  • The difference between spatial and legacy flicker
  • All six spatial flicker styles
  • How mapping, force, depth, size, and position work
  • How pulse and fire mode behave
Main files
Blade profile
config.txt
Color profile
colors.txt
Font override
font_config.txt
Best used for
  • Classic movie shimmer
  • Unstable or crackling blades
  • Audio-reactive blade effects
  • Animated fire setups

What Is Blade Flicker?

When 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.

Two Flicker Systems

The CFX uses two separate flicker systems:

SystemWhat It Does
Spatial FlickerThe 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 FlickerThe 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.

Spatial Flicker Styles

Choosing a Style

Set the flicker style in your blade profile in config.txt:

style_flicker=N
ValueNameVisual Description
0LegacyClassic 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.
1BicolorBlends the flicker color over the whole blade uniformly. The blend amount varies over time, creating a two-tone shimmer.
2Movie FlickerA 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.
3Brown NoiseSmooth organic per-pixel variation. Each pixel drifts slowly and independently, creating a flowing shimmer without harsh jumps.
4Full RandomChaotic per-pixel noise. Each pixel gets fresh random values, making the blade feel unstable, noisy, and electrical.
5FireA 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.

The Flicker Color

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.

Flicker Parameters

These settings belong in your blade profile in config.txt.

force_flicker=N — How Often the Flicker Fires

Range: 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.

Note: 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 Is

Range: 0–255
Default: 0

This controls how strongly kcolor is mixed into the blade color.

size_flicker=N — Spatial Focus Area

Range: 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 Zone

Range: 0–255
Default: 0

This sets where the localized flicker zone is centered.

mapping_flicker=N — Dynamic Control Source

Range: 0–4
Default: 0

ValueMappingDescription
0NoneUses the static depth_flicker value.
1AudioFlicker intensity follows the sound level. Louder means stronger flicker.
2AngularFlicker intensity follows blade tilt. Pointing down gives more flicker.
3MoveFlicker intensity follows movement and swing speed. Faster motion gives more flicker.
4Angular ReverseThe inverse of Angular. Pointing up gives more flicker.

refreshfx=N — FX Update Rate

Default: 12

This controls how frequently strip effects refresh. Lower values make the animation update faster and feel smoother. Higher values slow the updates down.

The Fire Style In Detail

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.

ParameterBehavior in Fire Mode
force_flickerControls 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_flickerControls cooling. Higher values make the flame die out faster. Lower values let it stay taller and hotter.
pos_flickerControls the spark origin. 0 means sparks begin at the emitter, 128 near the middle, and 255 at the tip.
depth_flickerNot used directly. The fire simulation drives the blend amount.
mapping_flickerStill works. It can scale the overall fire intensity from audio, tilt, or motion.
kcolorDefines the fire color. Warm oranges and yellows usually work best.

Example: Classic Upward Fire

style_flicker=5
force_flicker=180
size_flicker=40
pos_flicker=0
kcolor=255,80,0

Example: Reverse Fire

style_flicker=5
force_flicker=80
size_flicker=30
pos_flicker=255
kcolor=200,50,0

Legacy Flicker Settings

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 Speed

Default: 6

This controls how often the brightness flicker updates. Lower values mean faster flickering.

flkd=N — Flicker Depth

Default: 0

This is the maximum percentage of brightness reduction during a flicker event.

flkon=N — Flicker During Power On

Values: 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 Off

Values: 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 Depth

Default: 0

This is only relevant for tri-Cree blades using Trident channel configurations. It works like flkd, but only for the delayed Trident channels.

Pulse Effect

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 Depth

Default: 0

This is the percentage of brightness reduction at the bottom of the pulse cycle.

pulsel=N — Pulse Duration

Default: 0

This is the duration of one half-cycle of the pulse in milliseconds. Lower values pulse faster.

Note: Both pulsed and pulsel must be non-zero for the pulse effect to be visible.

Putting It All Together

Where Settings Go

SettingConfig FileSection
style_flicker, mapping_flicker, force_flicker, depth_flicker, size_flicker, pos_flickerconfig.txt[profile=N]
flks, flkd, flkon, flkoff, tridentflkconfig.txt[profile=N]
pulsed, pulselconfig.txt[profile=N]
refreshfxconfig.txt[profile=N]
kcolorcolors.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.

Example: Subtle Movie-Style Flicker

; 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

Example: Organic Brown Noise Shimmer

; 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

Example: Electric Crackling

; 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

Example: Tilt-Reactive Bicolor

; 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

Example: Breathing Blade with Flicker

; In config.txt [profile=1]
style_flicker=0
flkd=15
flks=6
pulsed=20
pulsel=2000

Quick Reference

KeyDescriptionDefaultFile
style_flickerFlicker style 0–50config.txt
mapping_flickerDynamic input source 0–40config.txt
force_flickerFrequency or probability, and fire direction/speed behavior in Style 50config.txt
depth_flickerColor blend intensity0config.txt
size_flickerLocalized flicker zone width0config.txt
pos_flickerCenter of the flicker zone0config.txt
kcolorFlicker color0,0,0colors.txt
flksLegacy flicker speed6config.txt
flkdLegacy flicker depth0config.txt
flkonFlicker during ignition1config.txt
flkoffFlicker during retraction1config.txt
tridentflkTrident channel flicker depth0config.txt
pulsedPulse depth0config.txt
pulselPulse half-cycle duration0config.txt
refreshfxStrip FX refresh period12config.txt