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 |