![]() |
Routines |
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 | Get signal byte from 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 from 25303 to 25317 |
25315 | LD (HL),229 |
25317 | LD L,101 | Collect the signal byte from the character's buffer and place it in A |
25319 | LD A,(HL) | |
25320 | CALL 25374 | Has this signal been raised? |
25323 | JR Z,25356 | Jump if not |
25325 | INC L | L=102 |
25326 | LD A,(HL) | A=character's walkabout origin x-coordinate |
25327 | LD L,98 | |
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 | Jump if not (time to move on in the command list) |
25339 | LD L,107 | Set the character's next destination x-coordinate |
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 routine at 25404 (guide character to destination) in 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 |
25356 | INC L | L=102 |
25357 | CALL 24993 | Get random number in A |
25360 | AND 7 | -7<=A<=0 |
25362 | SUB 7 | |
25364 | ADD A,(HL) | A=short random distance left of walkabout origin |
25365 | JR 25339 |