| Routines

46312: Move a character one step along the catwalk

Used by the routine at 46568.
Input
H | 152 (boy) or 164 (teacher)
46312 | CALL 25108 | Update the SRB for the character's current location
46315 | INC A | A=character's next animatory state
46316 | LD C,A | Store this in C
46317 | RRCA | Set the carry flag if this animatory state is midstride
46318 | LD A,C | Restore the next animatory state to A
46319 | JR C,46329 | Jump if the character will be midstride
The character will be moving from the midstride position, so move him one space forward.
46321 | INC E | Increment the character's x-coordinate
46322 | AND 3 | Keep only the walking phase identifier bits of the animatory state (bits 0-1)
46324 | LD A,C | Restore the next animatory state to A again
46325 | JR NZ,46329 | Jump if the next animatory state is standing/walking phase 3
46327 | SUB 4 | Reset the animatory state to standing/walking phase 1
Now A holds the character's new animatory state, and E his x-coordinate.
46329 | CALL 25008 | Update the character's animatory state and location and update the SRB
46332 | JP 27026 | Update the display