![]() |
Routines |
| Prev: 63DA | Up: Map | Next: 655B |
|
Called from the main loop at 6229.
|
||||
| 651E | LD HL,($7C6D) | Pick up Horace's new location. | ||
| 6521 | LD DE,($7C6B) | Pick up Horace's current location. | ||
| 6525 | XOR A | Clear the carry flag. | ||
| 6526 | SBC HL,DE | Subtract Horace's current location from his new location. | ||
| 6528 | LD A,H | Has Horace moved? | ||
| 6529 | OR L | |||
| 652A | JR Z,$653A | Jump if not. | ||
| 652C | LD HL,($7C6B) | Pick up Horace's current location. | ||
| 652F | LD DE,$7F87 | Point DE at the graphic data for the blank sprite. | ||
| 6532 | CALL $6C0F | Set HL' to the attribute file address for Horace's location. | ||
| 6535 | LD C,$3E | This is the attribute byte for the blank sprite (INK 6: PAPER 7). | ||
| 6537 | CALL $6BD6 | Draw the blank sprite over Horace's current location. | ||
|
Now consider the guards.
|
||||
| 653A | LD HL,$6DAC | Point HL at the last of the guard countdown timers. | ||
| 653D | LD B,$01 | B will count the guards: 1, 2, 3 and 4. | ||
| 653F | PUSH BC | Save the guard counter. | ||
| 6540 | LD A,(HL) | Set the zero flag if this guard is in play. | ||
| 6541 | INC HL | |||
| 6542 | OR (HL) | |||
| 6543 | DEC HL | Point HL at the next guard's countdown timer. | ||
| 6544 | DEC HL | |||
| 6545 | DEC HL | |||
| 6546 | PUSH HL | Save the guard countdown timer pointer briefly. | ||
| 6547 | JR NZ,$6552 | Jump if this guard is not in play yet. | ||
| 6549 | CALL $6A3F | Copy the guard's buffer to the temporary location (6DB8). | ||
| 654C | CALL $655B | Redraw the tiles behind the guard if he's moved. | ||
| 654F | CALL $6A6A | Copy the guard's buffer back to its original location. | ||
| 6552 | POP HL | Restore the guard countdown timer pointer to HL. | ||
| 6553 | POP BC | Restore the guard counter to B. | ||
| 6554 | INC B | Next guard. | ||
| 6555 | LD A,B | Copy the guard counter to A. | ||
| 6556 | CP $05 | Have we done all four guards yet? | ||
| 6558 | JR NZ,$653F | If not, jump back to do the next one. | ||
| 655A | RET | |||
| Prev: 63DA | Up: Map | Next: 655B |