![]() |
Routines |
| Prev: 9F0B | Up: Map | Next: 9F8F |
|
Used by the routine at BC48.
|
||||
| 9F15 | LD A,(IX+$18) | Return if enemy is not teleporting | ||
| 9F18 | OR A | |||
| 9F19 | RET Z | |||
| 9F1A | LD A,(IX+$01) | Computes in HL the address into room graphic data buffer for the enemy | ||
| 9F1D | LD L,A | |||
| 9F1E | LD H,$00 | |||
| 9F20 | ADD HL,HL | |||
| 9F21 | ADD HL,HL | |||
| 9F22 | ADD HL,HL | |||
| 9F23 | ADD HL,HL | |||
| 9F24 | ADD HL,HL | |||
| 9F25 | LD A,(IX+$00) | |||
| 9F28 | SRL A | |||
| 9F2A | SRL A | |||
| 9F2C | SRL A | |||
| 9F2E | LD E,A | |||
| 9F2F | LD D,$00 | |||
| 9F31 | ADD HL,DE | |||
| 9F32 | LD DE,$E8FF | |||
| 9F35 | ADD HL,DE | |||
| 9F36 | LD A,(IX+$02) | Check enemy direction and jump forward if facing right | ||
| 9F39 | OR A | |||
| 9F3A | JP Z,$9F3E | |||
| 9F3D | INC HL | Increase address into room graphic data buffer if enemy facing left | ||
| 9F3E | LD C,$00 | Remnant code. B overwritten in next instructions | ||
| 9F40 | LD B,(IX+$19) | |||
| 9F43 | LD IY,$9F0B | Set IY to point to the address for teleporting mask data | ||
| 9F47 | LD A,(IX+$19) | Set IY to point to the correspondent mask based on mask index from enemy configuration buffer | ||
| 9F4A | LD E,A | |||
| 9F4B | LD D,$00 | |||
| 9F4D | ADD IY,DE | |||
|
scramble FOOT MAN graphic data to simulate teleporting
|
||||
| 9F4F | LD B,(IX+$0F) | Set B to the height of the sprite | ||
| 9F52 | PUSH BC | Save BC | ||
| 9F53 | LD B,(IX+$0E) | Set B to the width of the sprite | ||
| 9F56 | PUSH HL | Save HL and BC | ||
| 9F57 | PUSH BC | |||
| 9F58 | CALL $A530 | Scramble graphic data deom FOOT MAN sprite based on pseudo random number and mask | ||
| 9F5B | AND (HL) | |||
| 9F5C | AND (IY+$00) | |||
| 9F5F | LD (HL),A | Set the new scrambled data | ||
| 9F60 | INC HL | Point to the next address into room graphic data buffer | ||
| 9F61 | POP BC | Restore BC | ||
| 9F62 | DJNZ $9F57 | Jump back until all the width of the sprite scrambled | ||
| 9F64 | POP HL | Restore HL | ||
| 9F65 | LD DE,$0020 | Point HL to the next row | ||
| 9F68 | ADD HL,DE | |||
| 9F69 | POP BC | Restore BC | ||
| 9F6A | DJNZ $9F52 | Jump back until all the height of the sprite scrambled | ||
| 9F6C | LD A,(IX+$1A) | Check type of teleporting | ||
| 9F6F | OR A | |||
| 9F70 | JP NZ,$9F80 | Jump forward if teleporting into the room | ||
|
teleporting out of the room
|
||||
| 9F73 | DEC (IX+$19) | Decrement teleporting index | ||
| 9F76 | RET NZ | Return if teleporting index is not zero | ||
| 9F77 | LD (IX+$18),$00 | End teleporting out of the room | ||
| 9F7B | LD (IX+$0C),$00 | Set sprite not visible | ||
| 9F7F | RET | |||
|
teleporting into the room
|
||||
| 9F80 | LD A,(IX+$19) | Increase teleporting index | ||
| 9F83 | INC A | |||
| 9F84 | LD (IX+$19),A | |||
| 9F87 | CP $0A | Return if teleporting has not finished | ||
| 9F89 | RET NZ | |||
| 9F8A | LD (IX+$18),$00 | End teleporting into the room | ||
| 9F8E | RET | |||
| Prev: 9F0B | Up: Map | Next: 9F8F |