Prev: D14D Up: Map Next: D215
D1B9: Handle enemy projectile collision with Rex
Used by the routines at 947A and A915.
D1B9 LD A,($A055) Return if Rex is dead
D1BC OR A
D1BD RET NZ
D1BE LD A,($A060) Return if Rex is teleporting
D1C1 OR A
D1C2 RET NZ
D1C3 LD IY,$5D22 Set IY to base address for enemy projectiles
D1C7 LD B,$14 Set B to the number of projectiles to check
D1C9 LD A,(IY+$06) check projectile status
D1CC CP $01 is flying?
D1CE JP NZ,$D20B Jump forward and check next projectile if not flying
D1D1 LD A,($A0B7) Check if projectile y-position is in range of collision based on Rex y-position
D1D4 ADD A,$05
D1D6 CP (IY+$01)
D1D9 JP NC,$D20B
D1DC ADD A,$11
D1DE CP (IY+$01)
D1E1 JP C,$D20B
D1E4 LD A,($A0B6) Check if projectile x-position is in range of collision based on Rex x-position
D1E7 CP (IY+$00)
D1EA JP NC,$D20B
D1ED ADD A,$10
D1EF CP (IY+$00)
D1F2 JP C,$D20B
Impact with Rex
D1F5 LD (IY+$06),$02 Set projectile status to impact #1
D1F9 LD A,($A049) Check if Rex has the shield activated
D1FC OR A Jump to kill Rex if shield not active
D1FD JP Z,$D208
Shield activated
D200 LD L,$05 Set L to the shield loss quantity
D202 CALL $99CE Handle shield loss
D205 JP $D20B Jump to handle next projectile
Shield not activated
D208 CALL $9BDA Kill Rex
D20B LD DE,$000F Point IY to the next projectile data
D20E ADD IY,DE
D210 DEC B Decrement projectile counter
D211 JP NZ,$D1C9 Jump back and check next projectile
D214 RET
Prev: D14D Up: Map Next: D215