Extract the catch target collision map from baserom

gCatchTargetCollisionBitmap is not graphics. CheckCatchTargetCollision indexes it
[y * 48 + x] against the ball's offset from the Jirachi centre, bounds-checked to
48 on both axes, which accounts for the label exactly: 2304 bytes, one per
position. Bit 7 is the solid flag and the low seven bits are the surface angle
the collision answers with, scaled by 512.

So it goes to data/board_data/collision as a .bin with its dimensions in the
name, next to the flipper map and the per-board entity maps, rather than through
gbagfx. tools/collision_viewer already reads that family.

Decoding it confirms the reading: the solid cells form a disc filling 41% of the
square, and the angles of the solid cells run the full range around it, which is
what a round target should look like.

make compare passes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Cyphgirl
2026-08-08 09:55:33 -04:00
parent 81bab75500
commit e19e280e0d
2 changed files with 5 additions and 1 deletions

View File

@@ -1155,8 +1155,12 @@ gPikaSaverPartialCoverageGfx:: @ 0x08397E6C
.incbin "graphics/stage/main/pika_saver_partial_coverage.4bpp"
.space 0x20
@ Not graphics: a 48x48 collision map, one byte per position, indexed
@ [y * 48 + x] by CheckCatchTargetCollision (all_board_process6_collision.c)
@ against the ball's offset from the Jirachi centre. Bit 7 is the solid flag and
@ the low seven bits are the surface angle the collision answers with.
gCatchTargetCollisionBitmap:: @ 0x0839A28C
.incbin "baserom.gba", 0x39A28C, 0x900
.incbin "data/board_data/collision/catch_target_collision_48x48.bin"
.include "data/graphics/mon_portraits_pals.inc"