Files
Cyphgirl 0329e168d1 Colourize the remaining board, pickup and Pokedex OBJ sheets
Extends the intro_sprite work to every other OBJ sheet whose palette is
recoverable: 136 more segment PNGs across the boards, the evolution pickups
and the Pokedex, all byte-for-byte identical through the build.

A second kind of sheet
- The intro_sprite sheets are loaded whole, so their segments start at OBJ
  tile 0. Everything else is streamed frame by frame over a slot inside that
  sheet while the board runs -- the entities, the shop sign, the banners. Those
  start at the slot's tile instead, and since every frame is drawn through the
  same OAM entry they all share one bank. SLOTS records where each lands, taken
  from the destination of the DmaCopy16 that streams it.
- Segment ranges and the vote are unchanged otherwise, so a slot that coincides
  with an intro_sprite segment lands on the palette already reviewed for it.
  A slot that is only part of a sprite (the charge indicator streams four tiles
  into the middle of an eight-tile one) falls back to the entry covering it.

Tile 704 and OBJ bank 14
- These are the overlay pair. Every mode that wants a banner streams its sheet
  over one and its palette over the other, so the sprite set the vote finds
  there says nothing about the art. Those sheets take the palette loaded beside
  their own copy instead: gRubyPainterPalette and gSapphirePainterPalette for
  the travel painters, gBonusStagePal_Lit for the ball save, gBonusClearTextPal_Lit
  for the end of ball, gTravelPortraitPalette for the roulette fx.
- The evolution pickups work the same way one level down: gEvoItemPalettes runs
  parallel to gEvoItemAppear_GfxList, so each icon sheet takes its own entry.
  Nine of them share one appear-and-sparkle animation and colour it differently;
  a PNG holds one palette, so a shared segment keeps the first sheet's.

Also
- Spheal and the Pokedex join BOARDS. The Pokedex sheet is also what the
  e-reader screen puts in OBJ VRAM, so both sprite-set tables have to be
  consulted to reach all of its segments.
- Sheets built by the plain %.4bpp: %.png rule have no config entry to record
  the answer in; derive adds one carrying only the palette, which
  generate_graphics_rules.sh ignores.
- Palette paths are written relative to the config that holds them, not to the
  board -- graphics/stage/gfx.json holds a sapphire sheet.

Left greyscale: 37 PNGs. Five go to BG VRAM (the text and glyph sheets, the
high score watermark), where the bank lives in the tilemap entries the code
writes rather than in any OAM data, so they need a different derivation. The
rest are sheets with no incbin -- the light and arrow strips, several gunk_*
blobs -- whose place in VRAM is not established yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 15:04:26 -04:00
..