Each group is a 16-palette block, but LoadMonFieldSpriteGraphics and the
pokedex both index it as eggIndex % 6, so only the first six are ever
read - and those six are already named. The remaining ten per group (and
thirteen in group 5) are grey filler: 63 palettes with only 8 distinct
values between them, and no pointer to any of them anywhere in the ROM.
They have no art to generate them, so they go in as .gbapal.bin the way
gb_player does, one file per group.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Each gMonCatchSpriteGroupN_Pal holds 16 palettes, but only the first five
were named. LoadCatchSpriteGraphics reads slot i*5 + mon for frame i, so
the palettes are striped frame-major while the graphics are mon-major:
every catch sprite is three 6x6 frames with a palette each - the mon's
own colours, the red capture flash, and the darkened silhouette.
A PNG carries one palette, so each sheet becomes three images and the
two .inc files reference the images and palettes in sequence. Slot 15 is
a colour-0-only palette shared by every group; it has no art, so it goes
in as catch_mon_pal_empty.gbapal.bin.
graphics/debug_ascii_font_extra.png was mislabelled palette data: its 384
bytes are group 16's frame 1 and 2 palettes for chikorita, cyndaquil,
totodile and aerodactyl plus the empty padding slots. Removed.
Every frame round-trips byte-exact in both directions, PNG to 4bpp
against the ROM tiles and PNG to gbapal against the ROM palette.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* dump u8 * pointers
* through 08137DA4
* checkpoint 08138014
* travel paint
* sapphire travel paint
* painter palette rename
* ruby evo arrows
* prenaming sapphire evo arrows
* sapphire evo arrows
* raw ruby coin arrow dump
* rename capture ball variants
* indicatorLight naming
* carve pointer array at 0x086AFCB0
* dump/carve gFieldBoardConfigs 0x086AFD70
* dumped gKecleonSpriteYSortData:: @ 0x086AEA70
* dump spheal flight path data
* merged the 2 SphealFrameset Arrays
* naming of spheal/sealeo frameset data
* dump gOptionsSpriteSets and potential data block after the Pokepinagb string
* add comment with original name of raw fu the 2 raw functions
* add comment with original name of the 2 raw functions
* folderized board lights
* split Ruby Light file, name ruby light unknowns
* Sapphire board lights
* class standardization: board collision data set
* board data folderization
* 4 banner graphics, unk naming
* added m4a_tables.c
* move comment point for m4a_tables
* agb_sram rodata
* incorporate remainder of m4a_tables file.
* Move AgbLibSramVersion into src/agb_sram.c
* Dump se fragment
* Don't hardcode gDeltaEncodingTable address
* Don't hardcode AgbMain in crt0.s
* Cleanup gAreaPortraitIndexes name
* More name cleanup
---------
Co-authored-by: Marcus Huderle <huderlem@gmail.com>
* Add tooling support for graphics with 2^n chunking
* update to OAM handling, from 2n sizing
* Update assembly to use the hex, rather than music name, for ease of uese in decompme/m2C
* additional tools/examples
* graphics build, not currently compare matching.
* remove sprites.png
* working conversion in make file!
* stage/main folder done
* stage/misc folder done
* stage/ruby complete
* stage/sapphire updated
* base for remaining kinda-graphics; file name casing
* more name casing
* extract catch sprites
* remove special 6x4 handling from oam slicer; switched hed the 2 images to using non-oam 2x2 chunks. (net same, but allows the 6x4 to process normally when things like the whalmer are found)
* Palette info for the catch sprites, thanks to cyphgirl
* obliterate the old hatch-sprite code
* refactor segments to not have the base file name dependancy
* catch mon 1-9, horizontal layout
* rename the f param in the json for graphics
* casing cleanup?
* .
* possible fix for the out of date segment piece
* Replace graphic_cnvt_attrs.txt strategy with individually-generated makefile rules
* Don't specify tileCount
---------
Co-authored-by: Marcus Huderle <huderlem@gmail.com>