mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-09-10 04:17:24 -05:00
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:
BIN
data/board_data/collision/catch_target_collision_48x48.bin
Normal file
BIN
data/board_data/collision/catch_target_collision_48x48.bin
Normal file
Binary file not shown.
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user