Prev: 738E Up: Map Next: 73D0
7393: Operate helicopter missile
Advances the helicopter missile position and renders it. Missiles move down and sideways based on helicopter orientation. Removed when reaching viewport boundary.
  • Loads position from helicopter_missile_coordinates_ptr
  • Advances Y position
  • Moves X position by HELICOPTER_MISSILE_STEP ($08)
  • Removed at VIEWPORT_HEIGHT boundary
  • Sets COLLISION_MODE_HELICOPTER_MISSILE for collision
operate_helicopter_missile 7393 LD BC,($5F73) Load missile coordinates from helicopter_missile_coordinates_ptr. Return if B==0 (no missile).
7397 LD A,B
7398 CP $00
739A RET Z
739B CALL advance_object Advance Y position, store to previous_object_coordinates, move X left by $08.
739E LD ($8B0A),BC
73A2 LD A,C
73A3 SUB $08
73A5 LD C,A
73A6 LD A,B Check viewport boundary. If off-screen, remove missile via remove_helicopter_missile.
73A7 AND $88
73A9 CP $88
73AB JP Z,remove_helicopter_missile
73AE LD A,($5F75) If right-facing (from helicopter_missile_state), adjust X offset via invert_helicopter_missile_offset.
73B1 BIT 6,A
73B3 CALL Z,invert_helicopter_missile_offset
73B6 LD ($8B0C),BC Store position to object_coordinates and helicopter_missile_coordinates_ptr.
73BA LD ($5F73),BC
73BE LD A,$04 Render missile: collision mode=$04, width=1, attributes=$00, height=1.
73C0 LD ($5EF5),A
73C3 LD A,$01
73C5 LD E,$00
73C7 LD D,$01
73C9 LD HL,$82C5
73CC CALL render_sprite
73CF RET
Prev: 738E Up: Map Next: 73D0