| 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.
|
||||
| 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 |