Routines
 Prev: F6E5 Up: Map Next: F731
F6E9: Make a character walk up or down
The address of this interruptible subcommand routine is placed into bytes 0x0E and 0x0F of a character's buffer by the routine at F748. It makes a character start or continue walking up or down towards his walkabout destination, stopping occasionally on the way to flip a light switch or raise or lower a window blind.
Input
H Character number (0xD7-0xE5)
F6E9 CALL \$F698 Exit now if the character is midstride
F6EC BIT 2,(HL) Is the character's arm raised?
F6EE JP NZ,\$F37B Lower his arm if so
This entry point is used by the routine at 7A57.
F6F1 LD L,\$11 The counter in byte 0x11 of the character's buffer determines the delay until the character will next consider flipping a light switch or raising or lowering a window blind
F6F3 DEC (HL) Decrement that counter
F6F4 JR NZ,\$F722 Jump unless the counter has reached 0
F6F6 LD (HL),\$04 Reset the counter to 4 (in case the character is not standing next to a light switch or window blind at the moment)
F6F8 CALL \$F6B0 Is the character standing next to a light switch or window blind?
F6FB JR Z,\$F722 Jump if not
The character is standing next to a light switch or window blind.
F6FD CP \$40 Is the character standing next to a window blind?
F6FF JR C,\$F70A Jump if so
F701 LD A,(DE) A=fixture location flags
F702 BIT 5,A Does the light switch affect the lights in more than one window or window pair?
F704 JR NZ,\$F722 Jump if so (the character will not flip the switch)
F706 LD A,\$20 Bit 5 set: light switch toggle
F708 JR \$F712
F70A CP \$08 Set the zero flag if the character standing next to the right-hand window of a pair
F70C LD A,\$01 Bit 0 set: right-hand window blind toggle
F70E JR Z,\$F712 Jump if the character is standing next to the right-hand window of a pair
F710 LD A,\$40 Bit 6 set: left-hand window blind toggle
F712 CALL \$F499 Flip the light switch, or raise or lower the window blind
F715 CALL \$F17F Get a random number between 0x20 and 0x9F in A
F718 AND \$7F