![]() |
Routines |
| Prev: D09B | Up: Map | Next: D116 |
|
|
||||
|
This causes the creature's missile to rebound off the shield at high speed. The diverted missile/bolt can even close open doors if it collides with a door handle.
Calculate the missile's new horizontal trajectory:
|
||||
| D0EC | LD A,($EAC0) | Maroc's horizontal (X-axis) screen position, in 4-pixel/half-character steps | ||
| D0EF | LD C,A | |||
| D0F0 | LD A,($EB48) | Missile's horizontal (X-axis) screen position, in 4-pixel/half-character steps | ||
| D0F3 | SUB C | Subtract Maroc's position from missile position | ||
| D0F4 | RLA | |||
| D0F5 | SBC A,A | The RLA and SBC sets A to 0 or 255 depending on whether the missile position is to Maroc's left or right | ||
| D0F6 | XOR $0F | Based on direction, sets the above calculated value at 240 (-15) or +15 | ||
| D0F8 | LD C,A | |||
| D0F9 | LD A,($EB4C) | Get the missile's existing horizontal movement speed | ||
| D0FC | ADD A,C | Add the calculated value (+/- 15) | ||
| D0FD | LD ($EB4C),A | ...and re-store. | ||
|
Calculate the missile's new vertical trajectory
|
||||
| D100 | LD A,($EAC1) | Maroc's vertical (Y-axis) pixel screen position | ||
| D103 | LD C,A | Missile's vertical (X-axis) pixel screen position | ||
| D104 | LD A,($EB4A) | |||
| D107 | SUB C | Subtract Maroc's position from missile position | ||
| D108 | RLA | |||
| D109 | SBC A,A | The RLA and SBC sets A to 0 or 255 depending on whether the missile position is above or below Maroc | ||
| D10A | XOR $0F | Based on direction, sets the above calculated value at 240 (-15) or +15 | ||
| D10C | LD C,A | |||
| D10D | LD A,($EB4D) | Get the missile's existing vertical movement speed | ||
| D110 | ADD A,C | Add the calculated value (+/- 15) | ||
| D111 | LD ($EB4D),A | ...and re-store. | ||
| D114 | JR $D12E | |||
| Prev: D09B | Up: Map | Next: D116 |