mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-09-13 05:47:04 -05:00
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>