Routines |
Prev: 25266 | Up: Map | Next: 25367 |
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.
|
||||||||||
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 |