D398: Hockey-mask behavior handler
| hockey_mask |
D398 |
CALL inhabitant_react_state |
|
D39B |
RET C |
|
D39C |
CALL object_avoid_walls |
|
D39F |
CALL move_object |
|
D3A2 |
CALL inhabitant_offscreen |
|
D3A5 |
RET C |
|
D3A6 |
LD B,$14 |
|
D3A8 |
CALL ball_kill |
|
D3AB |
RET C |
|
D3AC |
CALL overlap_sweep |
|
D3AF |
OR A |
|
D3B0 |
JR Z,comet_scan_inflight |
|
D3B2 |
LD (IY+$0B),$00 |
|
D3B6 |
LD (IY+$0C),$02 |
|
D3BA |
RET |
| comet_scan_inflight |
D3BB |
PUSH IY |
|
D3BD |
LD IY,inhabitant_records |
|
D3C1 |
LD B,$05 |
| comet_scan_loop |
D3C3 |
LD A,(IY+$08) |
|
D3C6 |
CP $11 |
|
D3C8 |
JR Z,comet_busy_frame |
|
D3CA |
LD DE,$0010 |
|
D3CD |
ADD IY,DE |
|
D3CF |
DJNZ comet_scan_loop |
|
D3D1 |
JR comet_ready |
| comet_busy_frame |
D3D3 |
POP IY |
|
D3D5 |
LD HL,slot_hockey_mask_unarmed |
|
D3D8 |
LD (IX+$06),L |
|
D3DB |
LD (IX+$07),H |
|
D3DE |
RET |
| comet_ready |
D3DF |
POP IY |
|
D3E1 |
LD HL,slot_hockey_mask_armed |
|
D3E4 |
LD (IX+$06),L |
|
D3E7 |
LD (IX+$07),H |
|
D3EA |
LD HL,controls |
|
D3ED |
BIT 4,(HL) |
|
D3EF |
RET Z |
|
D3F0 |
LD HL,slot_hockey_mask_unarmed |
|
D3F3 |
LD (IX+$06),L |
|
D3F6 |
LD (IX+$07),H |
|
D3F9 |
PUSH IY |
|
D3FB |
PUSH IX |
|
D3FD |
LD IX,inhabitant_objects |
|
D401 |
LD IY,inhabitant_records |
|
D405 |
LD B,$05 |
| comet_free_scan |
D407 |
LD A,(IY+$08) |
|
D40A |
OR A |
|
D40B |
JR Z,comet_spawn |
|
D40D |
LD DE,$0009 |
|
D410 |
ADD IX,DE |
|
D412 |
LD DE,$0010 |
|
D415 |
ADD IY,DE |
|
D417 |
DJNZ comet_free_scan |
|
D419 |
POP IX |
|
D41B |
POP IY |
|
D41D |
RET |
| comet_spawn |
D41E |
LD (IY+$08),$11 |
|
D422 |
POP HL |
|
D423 |
LD A,(HL) |
|
D424 |
LD (IX+$00),A |
|
D427 |
INC HL |
|
D428 |
LD A,(HL) |
|
D429 |
ADD A,$10 |
|
D42B |
LD (IX+$01),A |
|
D42E |
DEC HL |
|
D42F |
PUSH HL |
|
D430 |
LD B,$11 |
|
D432 |
CALL spawn_object_init |
|
D435 |
LD (IY+$0C),$00 |
|
D439 |
LD HL,slot_comet_1 |
|
D43C |
LD (IX+$06),L |
|
D43F |
LD (IX+$07),H |
|
D442 |
SET 0,(IX+$08) |
|
D446 |
POP IX |
|
D448 |
POP IY |
|
D44A |
RET |
Fork me on GitHub