Routines |
Prev: 53403 | Up: Map | Next: 53526 |
|
||||
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:
|
||||
53484 | LD A,(60096) | Maroc's horizontal (X-axis) screen position, in 4-pixel/half-character steps | ||
53487 | LD C,A | |||
53488 | LD A,(60232) | Missile's horizontal (X-axis) screen position, in 4-pixel/half-character steps | ||
53491 | SUB C | Subtract Maroc's position from missile position | ||
53492 | RLA | |||
53493 | 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 | ||
53494 | XOR 15 | Based on direction, sets the above calculated value at 240 (-15) or +15 | ||
53496 | LD C,A | |||
53497 | LD A,(60236) | Get the missile's existing horizontal movement speed | ||
53500 | ADD A,C | Add the calculated value (+/- 15) | ||
53501 | LD (60236),A | ...and re-store. | ||
Calculate the missile's new vertical trajectory
|
||||
53504 | LD A,(60097) | Maroc's vertical (Y-axis) pixel screen position | ||
53507 | LD C,A | Missile's vertical (X-axis) pixel screen position | ||
53508 | LD A,(60234) | |||
53511 | SUB C | Subtract Maroc's position from missile position | ||
53512 | RLA | |||
53513 | SBC A,A | The RLA and SBC sets A to 0 or 255 depending on whether the missile position is above or below Maroc | ||
53514 | XOR 15 | Based on direction, sets the above calculated value at 240 (-15) or +15 | ||
53516 | LD C,A | |||
53517 | LD A,(60237) | Get the missile's existing vertical movement speed | ||
53520 | ADD A,C | Add the calculated value (+/- 15) | ||
53521 | LD (60237),A | ...and re-store. | ||
53524 | JR 53550 |
Prev: 53403 | Up: Map | Next: 53526 |