What This Guide Covers
This guide is intentionally focused only on the Color Profile system in Crystal Focus X. It covers the fields inside colors.txt, what each color does, how mcolor= controls Flash-on-Clash channel mixing, and a few practical examples.
More advanced topics such as flicker, unstable effects, heat arrays, mapping, and Swing Bright will be covered in separate guides.
1. Color Profile Fields
A color profile is defined inside colors.txt under a [color=N] section. It contains nine colors plus the mcolor= channel mask.
| Config Key | Field | What It Does |
|---|---|---|
color= | BladeColor | The base blade color. Every pixel starts as this color before any effects are applied. This is the "resting" blade appearance. |
fcolor= | FocColor | Flash-on-Clash color. When a clash or lockup is triggered, the blade flashes this color — subject to the FocMix channel mask (see below). |
bcolor= | BoltColor | Blaster bolt color. The travelling bolt impact uses this color. |
lcolor= | LockupColor | Lockup color. During sustained lockup, the blade blends between FocColor and LockupColor based on hilt twist angle. Twisting the hilt shifts the lockup glow between these two colors. |
xcolor= | CrystalColor | Crystal chamber LED color. Used for the crystal chamber accent, independent of blade color. |
kcolor= | FlickerColor | Flicker color. The style_flicker system blends pixels toward this color. Also used by the FIRE flicker style's heat map. |
ecolor= | FxColor | Effects / unstable color. All heat-based unstable effects (fire, unstable, chainsaw, starkiller, etc.) blend the blade toward this color using the Heat array. Also used by Swing Bright when no unstable effect is active. |
dcolor= | DragColor | Drag effect color. When the blade tip is dragged on the ground, pixels show this color. |
tcolor= | StabColor | Stab effect color. When a stab motion is detected, the blade tip flashes this color. |
Color Format
All colors are specified as RGBW values (0–1023 each):
color=800,0,0,0
The four values are Red, Green, Blue, White. Each channel ranges from 0 to 1023. If the White channel is not used, set it to 0.
Note: Older community examples sometimes use 0–255-style values. In CFX color profiles, the actual channel range is 0–1023, so examples in this guide use that full range.
2. mcolor and Flash-on-Clash Channel Mixing
mcolor=1111
FocMix controls which color channels participate in the Flash-on-Clash shimmer. It is configured with the mcolor= key, which takes four characters — one per RGBW channel — where 1 means the channel is affected and 0 means it is not:
| Position | Channel | Example |
|---|---|---|
| 1st | Red | 1000 = Red only |
| 2nd | Green | 0100 = Green only |
| 3rd | Blue | 0010 = Blue only |
| 4th | White | 0001 = White only |
The value 1111 means all channels are mixed during FoC, which is the "full FoC" legacy behavior. A value of 0000 means no FoC mixing occurs.
focmix= config key. focmix only appears in debug output. The config file key is always mcolor=.How It Works in Practice
When a clash occurs and the shimmer alternates between the normal blade output and the FoC color, CFX checks each channel individually. Only channels whose character is set to 1 in the mcolor= value will have their brightness altered during the FoC flash. The other channels remain untouched.
Example: With color=0,0,1023,0 (blue blade) and fcolor=1023,1023,1023,0 (white FoC):
mcolor=1111→ Full white flash on clash (all channels affected)mcolor=1000→ Only the Red channel flashes during FoC, giving a purple-ish clashmcolor=1010→ Red + Blue channels flash, leaving Green alone
Lockup Color Blending
During sustained lockup, the system blends between FocColor and LockupColor based on the hilt's twist angle (SteadyTwist). Twisting one way shifts toward FocColor, twisting the other way shifts toward LockupColor. This creates a dynamic, interactive lockup glow.
3. Color Profile Quick Reference
| Key | Purpose |
|---|---|
color=R,G,B,W | Base blade color |
fcolor=R,G,B,W | Flash-on-Clash color |
bcolor=R,G,B,W | Blaster bolt color |
lcolor=R,G,B,W | Lockup color |
xcolor=R,G,B,W | Crystal chamber color |
kcolor=R,G,B,W | Flicker target color |
ecolor=R,G,B,W | Effects / unstable target color |
dcolor=R,G,B,W | Drag color |
tcolor=R,G,B,W | Stab color |
mcolor=RGBW | Flash-on-Clash channel mask using four 1/0 characters |
4. Practical Examples
Example 1: Classic Blue Blade with White FoC
[color=0]
cname=Classic Blue
color=0,0,1023,0
fcolor=1023,1023,1023,0
bcolor=1023,1023,1023,0
lcolor=800,800,1023,0
xcolor=0,0,400,0
kcolor=0,0,1023,0
ecolor=0,0,1023,0
dcolor=1023,400,0,0
tcolor=1023,1023,1023,0
mcolor=1111
No unstable effects, no advanced flicker. The blade is solid blue with full-channel white FoC flashes.
Example 2: Kylo Ren Unstable Red
[color=1]
cname=Kylo Unstable
color=1023,0,0,0
fcolor=1023,800,200,0
bcolor=1023,400,0,0
lcolor=1023,200,0,0
xcolor=1023,0,0,0
kcolor=1023,200,0,0
ecolor=1023,800,0,0
dcolor=1023,320,0,0
tcolor=1023,1023,800,0
mcolor=1111
In the blade profile:
unstable=1
lcool=30
hcool=80
sparkf=150
sparkd=80
drift=1
mapping_unstable=1
mapping_color=0
mapb=200
mapc=30
This creates:
- A red blade with orange-ish unstable sparks (FxColor is yellow-orange)
- Sparks distributed over 80% of the blade length
- Audio-reactive: louder = more sparks, wilder instability
- Drift enabled: heat randomly diffuses up and down
- A slight constant FxColor tint (
mapc=30) to keep some warmth even on "cold" pixels
Example 3: Fire Blade with Swing Bright
[color=2]
cname=Temple Guardian
color=800,720,0,0
fcolor=1023,1023,800,0
bcolor=1023,1023,400,0
lcolor=1023,800,200,0
xcolor=800,400,0,0
kcolor=1023,400,0,0
ecolor=1023,200,0,0
dcolor=1023,600,0,0
tcolor=1023,1023,0,0
mcolor=1111
In the blade profile:
unstable=2
lcool=20
hcool=120
sparkf=180
sparkd=40
drift=0
mapping_unstable=1
mapping_color=1
mapb=220
mapc=0
style_sbright=0
mapping_sbright=3
delay_sbright=180
This creates:
- A gold/yellow base blade with red-orange fire climbing from the base
- Heat map color mode (
mapping_color=1) for physically-inspired flame colors - Sparks ignite in the bottom 40% of the blade
- Audio-reactive fire intensity
- Swing Bright adds brightness on swings (move-mapped), with a long decay (
delay_sbright=180) - Since unstable is active, Swing Bright uses FlickerPulseColor (the lit-blade base) as its boost color
Example 4: Bicolor Flicker with Brown Noise
[color=3]
cname=Ahsoka White-Blue
color=800,800,1023,320
fcolor=1023,1023,1023,400
bcolor=1023,1023,1023,0
lcolor=600,600,1023,0
xcolor=400,400,1023,0
kcolor=0,200,1023,0
ecolor=800,800,1023,0
dcolor=1023,400,0,0
tcolor=1023,1023,1023,0
mcolor=1111
In the blade profile:
unstable=0
style_flicker=3
depth_flicker=80
force_flicker=200
size_flicker=30
mapping_flicker=1
style_sbright=0
mapping_sbright=3
delay_sbright=100
This creates:
- A near-white blade with a blue FlickerColor
- Brown noise flicker smoothly shifts patches of the blade toward blue
- Audio-mapped: louder hum = more blue flicker visible
- No unstable effects, so the blade stays clean and elegant
- Swing Bright uses FxColor (white-blue) to boost brightness on swings
Guide generated from Crystal Focus X firmware source code analysis. Color values in examples are illustrative — adjust to taste.