![]() |
Routines |
| Prev: 63530 | Up: Map | Next: 63614 |
|
The address of this interruptible subcommand routine is placed into bytes 14 and 15 of a cat's buffer by the routine at 63530. It makes a cat run up or down to his next walkabout destination, and then terminates.
|
||||||||
| 63558 | LD L,0 | Point HL at byte 0 of the cat's buffer | ||||||
| 63560 | BIT 0,(HL) | Is the cat in running phase 2 (animatory state 118/246)? | ||||||
|
The cat's animatory state is 117 or 245 (running phase 1). Move him forward and advance his animatory state.
|
||||||||
| 63562 | JR Z,63580 | Jump if so | ||||||
| 63564 | CALL 59848 | Update the SRB for the cat's current animatory state and location | ||||||
| 63567 | INC A | A=118/246 (cat running phase 2) | ||||||
| 63568 | PUSH AF | Save this animatory state briefly | ||||||
| 63569 | RLCA | A=-1 if the cat is facing left, 1 if he's facing right | ||||||
| 63570 | CCF | |||||||
| 63571 | SBC A,A | |||||||
| 63572 | ADD A,A | |||||||
| 63573 | INC A | |||||||
| 63574 | ADD A,E | Adjust the cat's x-coordinate appropriately | ||||||
| 63575 | LD E,A | |||||||
| 63576 | POP AF | Restore the cat's next animatory state to A | ||||||
| 63577 | JP 59861 | Update the cat's animatory state and location and update the SRB | ||||||
|
The cat's animatory state is 118 or 246 (running phase 2). Either advance his animatory state, or turn him round.
|
||||||||
| 63580 | LD L,1 | Point HL at byte 1 of the cat's buffer | ||||||
| 63582 | LD A,(HL) | A=cat's current x-coordinate | ||||||
| 63583 | LD L,11 | The cat's walkabout destination x-coordinate is stored in byte 11 of the cat's buffer | ||||||
| 63585 | CP (HL) | Has the cat reached his walkabout destination? | ||||||
| 63586 | JP Z,62084 | Terminate this subcommand if so | ||||||
| 63589 | LD B,255 | B=-1 (which will set the cat's animatory state to running phase 1) | ||||||
| 63591 | LD L,0 | Point HL at byte 0 of the cat's buffer | ||||||
| 63593 | BIT 7,(HL) | Set the zero flag if the cat is facing left | ||||||
| 63595 | JR C,63610 | Jump if the cat is to the left of his walkabout destination | ||||||
| 63597 | JR Z,63601 | Jump if the cat is facing left | ||||||
| 63599 | LD B,128 | B=128 (which will turn the cat round) | ||||||
| 63601 | PUSH BC | Save the animatory state adjustment | ||||||
| 63602 | CALL 59848 | Update the SRB for the cat's current animatory state and location | ||||||
| 63605 | POP BC | Restore the animatory state adjustment to B | ||||||
| 63606 | ADD A,B | A=cat's next animatory state (running phase 1, or turned round) | ||||||
| 63607 | JP 59861 | Update the cat's animatory state and location and update the SRB | ||||||
| 63610 | JR NZ,63601 | Jump if the cat is facing right | ||||||
| 63612 | JR 63599 | Turn the cat round | ||||||
| Prev: 63530 | Up: Map | Next: 63614 |