From ce68dfdbecd41a487067a413346aee7d8beafbbb Mon Sep 17 00:00:00 2001 From: simisonne Date: Tue, 11 Aug 2026 12:57:33 +0000 Subject: [PATCH] Identify and dump board HUD tile graphics and pokedex info window tilemap gBoardHudTilemapA and gBoardHudTilemapB are not tilemaps despite their names: both blobs are 4bpp tile graphics for the board HUD, loaded to charblock 1 tiles 320-351 and 352-415 on every board transition and referenced from the BG0 tilemap buffer with palette bank 12. Extracted as board_hud_tiles_a/b.png following the stage/main conventions. gPokedexInfoWindowTiles is a genuine 32x32 u16 tilemap. Its content rows 0-5 are a 26x6 window referencing tile indices 224-409, which are sheet rows 7-12, cols 0-25 of the 32 wide gPokedexBgText_Gfx tileset. Extracted as info_window_tilemap.bin following the pokedex tilemap conventions (bg1/bg2/bg3_tilemap.bin). All assets verified byte exact against baserom via gbagfx round trip; make compare passes. --- data/rom_1.s | 25 +++++++++++++++++++--- graphics/pokedex/info_window_tilemap.bin | Bin 0 -> 2048 bytes graphics/stage/main/board_hud_tiles_a.png | Bin 0 -> 376 bytes graphics/stage/main/board_hud_tiles_b.png | Bin 0 -> 521 bytes 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 graphics/pokedex/info_window_tilemap.bin create mode 100644 graphics/stage/main/board_hud_tiles_a.png create mode 100644 graphics/stage/main/board_hud_tiles_b.png diff --git a/data/rom_1.s b/data/rom_1.s index 5b46f7a..2b9807c 100644 --- a/data/rom_1.s +++ b/data/rom_1.s @@ -352,8 +352,16 @@ gPokedexBgText_Gfx:: @ 0x08082720 .incbin "graphics/pokedex/bg_text.4bpp" .space 0x20 +@ 32x32 u16 tilemap (0x800 bytes) for the pokedex info window that slides +@ in over the dex entry view. Copied to BG1's screenblock 0 tilemap at +@ row 10 (VRAM 0x6000280) by Pokedex_InfoWindowSlideIn (src/pokedex.c). +@ Only the first 7 rows (2*0xE0 bytes) are DMA'd; rows 0-5 hold the +@ window content and the rest is 0x001F filler (tile 31, blank). +@ The window is a 26x6 chunk of tile indices 224..409, i.e. sheet rows +@ 7..12, cols 0..25 of the 32 wide gPokedexBgText_Gfx tileset +@ (graphics/pokedex/bg_text.png), with palette bank 1 (0x1000 attr bit). gPokedexInfoWindowTiles:: @ 0x08086B40 - .incbin "baserom.gba", 0x86B40, 0x800 + .incbin "graphics/pokedex/info_window_tilemap.bin" gPokedexBg2_Tilemap:: @ 0x08087340 .incbin "graphics/pokedex/bg2_tilemap.bin" @@ -1198,8 +1206,14 @@ gEggModePalette:: @ 0x083A806C gCaptureModePalette:: @ 0x083A808C .incbin "graphics/stage/main/capture_mode.gbapal" +@ Despite the _Tilemap name these are NOT tilemaps: they are 4bpp tile +@ GRAPHICS for the board HUD (score frame etc.), 64 tiles here (0x800 +@ bytes). loadFieldBoardGraphics (src/all_board_setup.c) DMA's them to +@ charblock 1 tile 352..415 (VRAM 0x06006C00) on every board transition, +@ and they are referenced from the BG0 tilemap buffer with palette bank +@ 12 (e.g. 0xC17E = tile 382 in all_board_process8.c). gBoardHudTilemapB:: @ 0x083A826C - .incbin "baserom.gba", 0x3A826C, 0x800 + .incbin "graphics/stage/main/board_hud_tiles_b.4bpp" .space 0x20 gShopPalette:: @ 0x083A8A8C @@ -1208,8 +1222,13 @@ gShopPalette:: @ 0x083A8A8C gTravelPortraitPalette:: @ 0x083A8AAC .incbin "graphics/stage/main/travel_portrait.gbapal" +@ Same as gBoardHudTilemapB: 4bpp tile GRAPHICS (not a tilemap), 32 tiles +@ here (0x400 bytes). DMA'd to charblock 1 tile 320..351 (VRAM +@ 0x06006800) by loadFieldBoardGraphics; referenced from the BG0 tilemap +@ buffer with palette bank 12 (e.g. 0xC156 = tile 342 in +@ all_board_pinball_game_main.c). gBoardHudTilemapA:: @ 0x083A8ACC - .incbin "baserom.gba", 0x3A8ACC, 0x400 + .incbin "graphics/stage/main/board_hud_tiles_a.4bpp" .space 0x20 gPortraitAnimFrameGraphics:: @ 0x083A8EEC diff --git a/graphics/pokedex/info_window_tilemap.bin b/graphics/pokedex/info_window_tilemap.bin new file mode 100644 index 0000000000000000000000000000000000000000..e1f57c3979b6a94eb30c14886cf9881d4ce3d72d GIT binary patch literal 2048 zcmeIuNn6eV6vp8<8KUCcMQZg*r3@h%cNszyl5rP`k|8rYQ<-I!ZzoCSAu{Z+=(@aL z!0LaU#d9{l&7DrAQ_o`{Uc_L$jG=fH!|^)a#M^im@8d&!j8E}7zQjm;jc+j;-{VL8 zj9-!d(~Vt9mT|I;H^D@cMu*qhPnryMvHqEwcvBOTg?6$|= zjK0-A`yJ4x-9d+R=yX_@BaS-exNaw$bjoRGoORB57c%;bF1hTAt9tah=DHhhy5+Vz k?&@>TeGfeJ$YW1D)$dtG|F1>zCjyB;B9I6q0{=tcH#X?9Jpcdz literal 0 HcmV?d00001 diff --git a/graphics/stage/main/board_hud_tiles_a.png b/graphics/stage/main/board_hud_tiles_a.png new file mode 100644 index 0000000000000000000000000000000000000000..aab3544f284a2ded85826d9b22b168e92afaa113 GIT binary patch literal 376 zcmV-;0f+vHP)kT`{(&8FzV3wb6am%aDOa$#oo>f5DOfo$CgZ9z1?gZ9)&*s)Y~6Aqz!{sZ8ti%A!gQ7(|nT_NC$j;Vm*f;<_th`I0-YE{yFSw{I zsD%FlVBNc(Lo=iR9R^%_p8gmB&pzPe?1OFIB{%@00el%y=VK6z7r#5aDixXp>843Z z#qrUe44vlyaP=_L{l5eZmD5#VG literal 0 HcmV?d00001 diff --git a/graphics/stage/main/board_hud_tiles_b.png b/graphics/stage/main/board_hud_tiles_b.png new file mode 100644 index 0000000000000000000000000000000000000000..87f591f6423436405ff08a90ec51a524a4d23cbe GIT binary patch literal 521 zcmV+k0`~ohP)8xuuAxBLi0FIS%A$^1i-E24X!EhReb3hFY5vjQ`R9mQ@-hd0P6y{pn0Gr z0<*jET8PHyd78wpOKTlK#P8s<4mf{w0z?%+iK7bO7F(cGxNS+B2tHX6i{m&}8|m*! zd0YtV-~WT}N{cTIkj}r20JOYFnGvM5z$2MRn}Hj`0fqDY$RP=l$9quQFhTKqwo#F7 z_S^S0Pp%*p#2vq-z?bt~BfnDaVV9}^Ts(VSu98h;5qSSoGRRyxEXnwYqH%@HCYASX z^|$0$CRvK0OptD$)7GP{OZ^^{5A?f&%GdZ&(foKbo>uX~O@NRMSGPt z?oQ;8*4ni@06k7k7wG;sVRZF_@L|B%qVN%Bo{A;Dz;Xk8{nYA3fIA1Edwc-eL6jB; zkPD#Wm8Xlh0^l%+kXz+xu0Uz?jL@RRg^$sv^|+v30CWR