Routines |
Prev: F5CD | Up: Map | Next: F5F6 |
The address of this interruptible subcommand routine is placed into bytes 0x0E and 0x0F of a character's buffer by the routine at F600. It guides the character left or right across the floor of a building to his final destination.
|
||||||||
F5CE | LD BC,$F4E6 | Point BC at the routine at F4E6 | ||||||
This entry point is used by the unused routine at F5F6 (with BC=F5A0) and by the routine at F5FB (with BC=F5EE: RET).
|
||||||||
F5D1 | LD L,$00 | Point HL at byte 0x00 of the character's buffer | ||||||
F5D3 | BIT 0,(HL) | Is the character midstride? | ||||||
F5D5 | JP NZ,$EC5A | If so, move the character from the midstride position and update the SRB | ||||||
F5D8 | LD L,$03 | Has this character's command list been marked for a restart? | ||||||
F5DA | BIT 4,(HL) | |||||||
F5DC | JP NZ,$F284 | Terminate this subcommand if so (this jump is never made because bit 4 of byte 0x03 is unused) | ||||||
F5DF | LD L,$01 | Collect the character's x-coordinate from byte 0x01 of his buffer | ||||||
F5E1 | LD A,(HL) | |||||||
F5E2 | LD L,$10 | Compare this with the character's intermediate or final destination x-coordinate | ||||||
F5E4 | CP (HL) | |||||||
F5E5 | JP Z,$F284 | Terminate this subcommand if they match | ||||||
F5E8 | PUSH AF | Save the carry flag | ||||||
F5E9 | LD DE,$F5EF | Push the address of the instruction at F5EF (below) onto the stack | ||||||
F5EC | PUSH DE | |||||||
F5ED | PUSH BC | Make an indirect jump to the routine whose address is in BC, and then return to F5EF (below) | ||||||
F5EE | RET | |||||||
F5EF | POP AF | Restore the carry flag | ||||||
F5F0 | JP C,$EBAE | Make the character move right if he's to the left of his intermediate or final destination | ||||||
F5F3 | JP $EBBB | Otherwise make the character move left |
Prev: F5CD | Up: Map | Next: F5F6 |