Skip to content

Tutorial Colors and Palettes

johnjohto edited this page Jul 25, 2026 · 1 revision

Tutorial: Colors and Palettes

The palette system recolors the whole presentation — world tiles per map, each species' battle art, walkers, UI chrome, HP bars — from one data file. Two pieces turn it on:

  1. presentation/version.json gains the knob:
{"color_mode": "palettes"}
  1. presentation/palettes.json holds the library and the assignments:
{
 "palettes": {
  "pal_meadow": ["#ffffff", "#b8e0a0", "#4a7850", "#102010"],
  "pal_hero":   ["#ffffff", "#f0c8a0", "#a05840", "#181010"]
 },
 "assignments": {
  "world":   {"default": "pal_meadow", "maps": {"MeadowHut": "pal_hero"}},
  "species": {"cindercub": "pal_hero"},
  "trainers": "pal_hero",
  "ui":       "pal_meadow",
  "hp_bars": {"green": "pal_meadow", "yellow": "pal_hero", "red": "pal_hero"},
  "objects": {}
 }
}

How it works

  • A palette is four shades, light → dark. The engine builds a lookup that maps your art's original four-shade ramp onto each palette, so one drawn tileset renders in every map's own colors — connected neighbor maps each keep their palette in the same frame.
  • world assigns per map (with a default); species colors each monster's battle art and dex pic; trainers and ui color trainer pics and menu chrome; hp_bars colors the three bar states by its own thresholds; objects recolors specific walker sheets.
  • Absent knob = the classic four-shade monochrome look, untouched. The library can sit in your project dormant until the knob turns.

Validation

Boot checks every assignment resolves into the library and every palette has exactly four parseable colors — refusals name the entry. --validate sees the same rules.

Where Kanto's colors come from

For the faithful project, the extractor emits the cartridge's own palette tables into presentation/palettes.json on your machine — the same file shape you author by hand, produced from your own extraction. The distributed toolkit contains none of those values; your project's colors are yours.

Clone this wiki locally