![]() |
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 |