![]() |
Routines |
| Prev: CEE5 | Up: Map | Next: CFB5 |
|
Used by the routine at 9470.
|
||||
| CF59 | LD A,($A1EE) | Return if Rex is dead | ||
| CF5C | OR A | |||
| CF5D | RET NZ | |||
| CF5E | LD A,($A1F9) | Return if Rex is teleporting | ||
| CF61 | OR A | |||
| CF62 | RET NZ | |||
| CF63 | LD IY,$5D22 | Set IY to base address for enemy projectiles | ||
| CF67 | LD B,$14 | Set B to the number of projectiles to check | ||
| CF69 | LD A,(IY+$06) | check projectile status | ||
| CF6C | CP $01 | is flying? | ||
| CF6E | JP NZ,$CFAB | Jump forward and check next projectile if not flying | ||
| CF71 | LD A,($A250) | Check if projectile y-position is in range of collision based on Rex y-position | ||
| CF74 | ADD A,$05 | |||
| CF76 | CP (IY+$01) | |||
| CF79 | JP NC,$CFAB | |||
| CF7C | ADD A,$11 | |||
| CF7E | CP (IY+$01) | |||
| CF81 | JP C,$CFAB | |||
| CF84 | LD A,($A24F) | Check if projectile x-position is in range of collision based on Rex x-position | ||
| CF87 | CP (IY+$00) | |||
| CF8A | JP NC,$CFAB | |||
| CF8D | ADD A,$10 | |||
| CF8F | CP (IY+$00) | |||
| CF92 | JP C,$CFAB | |||
|
Impact with Rex
|
||||
| CF95 | LD (IY+$06),$02 | Set projectile status to impact #1 | ||
| CF99 | LD A,($A1E2) | Check if Rex has the shield activated | ||
| CF9C | OR A | Jump to kill Rex if shield not active | ||
| CF9D | JP Z,$CFA8 | |||
|
Shield activated
|
||||
| CFA0 | LD L,$05 | Set L to the shield loss quantity | ||
| CFA2 | CALL $98EC | Handle shield loss | ||
| CFA5 | JP $CFAB | Jump to handle next projectile | ||
|
Shield not activated
|
||||
| CFA8 | CALL $9CC5 | Kill Rex | ||
| CFAB | LD DE,$000F | Point IY to the next projectile data | ||
| CFAE | ADD IY,DE | |||
| CFB0 | DEC B | Decrement projectile counter | ||
| CFB1 | JP NZ,$CF69 | Jump back and check next projectile | ||
| CFB4 | RET | |||
| Prev: CEE5 | Up: Map | Next: CFB5 |