Prev: 6C64 Up: Map Next: 6C96
6C7C: Deal with a character who is looking for a seat
The address of this uninterruptible subcommand routine is placed into bytes 0x6F and 0x70 of a character's buffer by the routine at 6C64 (after he's been knocked out of his chair and just got up to look for another one - or the same one, in EINSTEIN's case), or by the routine at 6CA0.
Input
H Character number (0x98-0xA9)
6C7C CALL $6214 Update the SRB for the character's current location
6C7F LD C,A Store the character's animatory state in C temporarily
6C80 BIT 0,A Is the character midstride?
6C82 JP NZ,$635A Finish the stride if so
6C85 CALL $6BF0 Is the character standing beside a chair?
6C88 JP Z,$6B7D If so, knock the current occupant (if any) to the floor, make this character sit down, and remove the address of this routine from bytes 0x6F and 0x70 of his buffer
6C8B LD A,C Restore the character's animatory state to A
6C8C NOP
6C8D JR NC,$6C92 Jump unless the character should turn round
6C8F XOR $80 Flip bit 7 of the animatory state, thus turning him round
6C91 DEC A Compensate for the 'INC A' below
6C92 INC A A=character's new animatory state (midstride, or just turned round)
6C93 JP $61B0 Update the character's animatory state and update the SRB
Prev: 6C64 Up: Map Next: 6C96