Prev: 25266 Up: Map Next: 25367
25303: Make a character walk up and down until a certain time
Used by command lists 136, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 186, 188, 198, 200, 202, 206, 208, 210, 212, 214, 216, 218 and 222 to make a character walk up and down within 7 spaces to the left of a fixed location (the 'walkabout origin') until a specified time, e.g. the end of the lesson or when a teacher arrives at the doorway of the classroom.
Input
H Character number (152-169)
L 122
25303 LD A,(HL) Reset bits 5 and 6 of byte 122 of the character's buffer, indicating that he should no longer walk fast or slow continuously (if he was doing so)
25304 AND 159
25306 LD (HL),A
25307 CALL 24972 Collect the signal byte from the command list
25310 LD L,101 Place the signal byte in byte 101 of the character's buffer
25312 LD (HL),A
25313 LD L,99 Change the address in bytes 99 and 100 of the character's buffer from 25303 to 25317 (below)
25315 LD (HL),229
This entry point is used by the routines at 27442 and 27453.
25317 LD L,101 Collect the signal byte from byte 101 of the character's buffer
25319 LD A,(HL)
25320 CALL 25374 Has this signal been raised?
25323 JR Z,25356 Jump if not
The time has come to stop moving about. However, before we move on in the command list, the character needs to return to the walkabout origin.
25325 INC L Collect the x-coordinate of the walkabout origin from byte 102 of the character's buffer
25326 LD A,(HL)
25327 LD L,98 Byte 98 holds the character's x-coordinate
25329 CP (HL) Is the character at the walkabout origin?
25330 JR NZ,25339 Jump if not
25332 LD L,96 Byte 96 holds the character's animatory state
25334 BIT 0,(HL) Is the character midstride?
25336 JP Z,25256 Move to the next command in the command list if not
25339 LD L,107 Fill in the new walkabout destination (either the origin or some location within 7 spaces to the left of the origin)
25341 LD (HL),A
25342 INC L Initialise the counter at byte 108 to 30, which will give the character enough time to get to the destination
25343 LD (HL),30
25345 LD BC,25404 Place the address of the interruptible subcommand routine at 25404 (guide character to destination) into bytes 105 and 106 of the character's buffer
25348 LD L,105
25350 LD (HL),C
25351 INC L
25352 LD (HL),B
25353 INC L
25354 PUSH BC
25355 RET Make an indirect jump to 25404
The signal has not been raised yet, so it's time for another mini-walkabout.
25356 INC L Point HL at the x-coordinate of the walkabout origin
25357 CALL 24993 A=random number
25360 AND 7 -7<=A<=0
25362 SUB 7
25364 ADD A,(HL) Add the x-coordinate of the walkabout origin
25365 JR 25339 Make this the new walkabout destination
Prev: 25266 Up: Map Next: 25367