Prev: 6136 Up: Map Next: 61BB
615E: Handle COLLISION_MODE_FIGHTER collision detection
Used by the routine at collision_dispatcher.
Checks if the player's missile has collided with a fighter aircraft. Uses bounding box collision detection by comparing the missile coordinates (from state_plane_missile_y) with the fighter's coordinates (from object_coordinates).
The collision box is 6 pixels wide (horizontally) and uses vertical bounds of +10 and +1 pixels.
If no collision is detected (any boundary check fails), jumps to no_collision_exit to reset collision mode and return.
On collision: removes the fighter from the viewport, triggers two explosion fragments, awards POINTS_FIGHTER, and continues to post-collision processing at finalize_collision.
handle_collision_mode_fighter 615E LD BC,($5EF3) Load missile coordinates from state_plane_missile_y and fighter coordinates from object_coordinates.
6162 LD DE,($8B0C)
Y-axis collision check.
6166 LD A,B Check if missile_Y + 6 >= fighter_Y; exit to no_collision_exit if not.
6167 ADD A,$06
6169 SUB D
616A JP M,no_collision_exit
616D LD A,D Check if fighter_Y + 6 >= missile_Y; exit to no_collision_exit if not.
616E ADD A,$06
6170 SUB B
6171 JP M,no_collision_exit
X-axis collision check.
6174 LD H,$00 Check if fighter_X + 10 >= missile_X; exit to no_collision_exit if not.
6176 LD A,E
6177 ADD A,$0A
6179 LD L,A
617A LD B,$00
617C OR A
617D SBC HL,BC
617F JP M,no_collision_exit
6182 LD H,$00 Check if missile_X + 1 >= fighter_X; exit to no_collision_exit if not.
6184 LD BC,($5EF3)
6188 LD A,C
6189 INC A
618A LD L,A
618B LD B,$00
618D LD C,E
618E OR A
618F SBC HL,BC
6191 JP M,no_collision_exit
Collision detected - process hit.
6194 POP DE Clean up stack (3x POP DE).
6195 POP DE
6196 POP DE
6197 LD A,D Store fighter Y coordinate to state_collision_y.
6198 LD ($5EF6),A
619B LD HL,($5F60) Get object coordinates from viewport and mark slot as empty.
619E DEC HL
619F DEC HL
61A0 LD B,(HL)
61A1 DEC HL
61A2 LD C,(HL)
61A3 LD (HL),$00
61A5 LD D,$00 Spawn two explosion fragments (second offset by X-6).
61A7 CALL spawn_explosion_fragment
61AA DEC C
61AB DEC C
61AC DEC C
61AD DEC C
61AE DEC C
61AF DEC C
61B0 CALL spawn_explosion_fragment
61B3 LD A,$10 Award POINTS_FIGHTER to player.
61B5 CALL add_points
61B8 JP finalize_collision Finalize collision.
Prev: 6136 Up: Map Next: 61BB