Files
Cyphgirl d4ead51565 Decompile rom_2.s data tables and extract the largest rom_1.s blobs
Removes 291 baserom incbins (223,976 bytes). Everything below was checked by
re-encoding the emitted data and comparing against the ROM bytes before the
source was touched, and the build matches at every step.

Sprite sets and tables in rom_2.s
- Convert 212 packed sprite sets to packed_sprite_oam. Note the "l" suffix in
  packed_sprite_oaml means an 8-byte entry, not 6, so the entry size is checked
  against each set's leading count rather than inferred from its size.
- Convert 79 named tables using their extern declarations to fix each shape,
  including the structs defined in .c files rather than headers (KecleonMoveNode,
  IntroAnimVelocity). Eight tables whose element count does not divide by the
  declared row width are listed flat, with a comment, rather than forced into a
  shape the data contradicts.
- gEReaderTextGlyphTable is 14 pages of 3x24 u16. Each entry packs a glyph offset
  in bits 4-15 with an advance width in bits 0-3 that the draw code masks off:
  i=2, apostrophe/comma/full stop/l=4, word-final n=5, everything else 6. The 42
  lines of text are transcribed as comments; the glyph map and the transcription
  were checked against each other over all 1008 entries.
- gUnknown_086BBC44 was two things: six sprite sets, then 680 bytes that nothing
  in the ROM points at, holding stale pointers past the rom end and a second copy
  of the POKEPINAGB signature. That part stays an incbin as gUnusedRomTail.

Large blobs in rom_1.s
- gUnknown_81A6BE4 is an 8x8 ASCII font, 0x20-0x5F in order, with a yen sign in
  the backslash slot. The other 30,720 bytes are zero. Now gDebugAsciiFont.
- The idle board configs are attract-mode demos: 4800 ReplayInputFrame each
  paired with one PinballGame snapshot. Extracted to data/idle_board. The labels
  run 0, 2, 3, 1 in ROM order.
- Kyogre body, Rayquaza body variants, the travel painter mons, the hole
  indicator and the Sapphire bumpers are extracted as tile sheets. Frame counts
  come from the declared strides; palettes come from the OBJ palette sets, not
  the board BG palette, whose banks are black or grey for these sprites. Where a
  sprite's pieces tile into a rectangle the sheet is laid out with -oamshape so
  the frames are readable; where they do not, or where the tiles are scattered
  over several board positions, it is one frame per row and the comment says so.

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