Files
pokepinballrs/tools/scripts
Cyphgirl ad2db56f71 Extract the four largest rom_1.s OBJ sheets from baserom
gSphealIntroSprites_Gfx, gCatchTile_RevealTilesGfx, gRayquazaSkyBackgroundGfx
and gBoardActionTilesGfx were the four biggest baserom incbins left in rom_1.s,
40096 bytes between them. Each is now a segmented PNG sheet.

Segment boundaries come from the OAM entries in rom_2.s that draw each sheet,
filtered by the palette bank the sheet is loaded with -- the tile-704 overlay
slot is shared by around 160 labels, so the bank is what says which of them
belong to a given sheet. Piece geometry comes from the same entries.

The Rayquaza clouds are irregular composites that -oam cannot describe, so they
get oam-shape jsons with spacer runs for the holes, as the painter and
ball-open sheets already do.

objpalette.py gains the bindings this needed: SLOT_PALETTES for the catch reveal
and evolution banner, whose palettes are DMA'd beside their sheets; SLOTS for
the Rayquaza sky; and overrides for the sky's unreferenced tail and for Spheal's
pause block, which is the one board leaving OBJ bank 9 blank.

Trailing blank tiles stay as .space rather than padding out the PNGs. Every
segment round-trips png -> 4bpp byte-exact, each rebuilt sheet matches the ROM
blob before and after recolouring, and make compare still passes.

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