![]() |
Routines |
| Prev: 62175 | Up: Map | Next: 62420 |
| 62178 | LD HL,32755 | 32755 holds ERIC's main action timer | ||||||||||||||
| 62181 | DEC (HL) | Is it time to deal with ERIC yet? | ||||||||||||||
| 62182 | RET NZ | Return if not | ||||||||||||||
| 62183 | LD A,(32734) | 32734 holds 255 if we're in demo mode, 0 otherwise | ||||||||||||||
| 62186 | INC A | Are we in demo mode? | ||||||||||||||
| 62187 | JR NZ,62240 | Jump if not | ||||||||||||||
|
We're in demo mode. Figure out ERIC's next move depending on what little boy no. 10 is doing.
|
||||||||||||||||
| 62189 | CALL 63166 | Exit demo mode and start a new game if a key was pressed; otherwise return here with ERIC's animatory state in A | ||||||||||||||
| 62192 | LD HL,50944 | Point HL at byte 0 of little boy no. 10's buffer | ||||||||||||||
| 62195 | CP 4 | 4: Is ERIC sitting in a chair? | ||||||||||||||
| 62197 | JR Z,62203 | Jump if so | ||||||||||||||
| 62199 | CP 133 | 133: Is ERIC sitting on the floor facing right? | ||||||||||||||
| 62201 | JR NZ,62216 | Jump if not | ||||||||||||||
| 62203 | ADD A,64 | A=68 (little boy sitting on a chair) or 197 (little boy sitting on the floor facing right) | ||||||||||||||
| 62205 | CP (HL) | Compare ERIC's animatory state with that of little boy no. 10 | ||||||||||||||
| 62206 | LD HL,32732 | 32732 holds the counter that determines the delay between little boy no. 10 standing up and ERIC standing up | ||||||||||||||
| 62209 | JR NZ,62214 | Jump if ERIC's not doing what little boy no. 10 is doing | ||||||||||||||
| 62211 | LD (HL),45 | Initialise the stand-up delay counter at 32732 to 45 | ||||||||||||||
| 62213 | RET | |||||||||||||||
| 62214 | DEC (HL) | Decrement the stand-up delay counter at 32732 | ||||||||||||||
| 62215 | RET NZ | Return if it's not time for ERIC to stand up | ||||||||||||||
| 62216 | LD HL,32763 | 32763 holds ERIC's status flags | ||||||||||||||
| 62219 | LD (HL),0 | Clear all of them (ERIC is no longer sitting or lying down) | ||||||||||||||
|
This entry point is used by the routine at 24175.
|
||||||||||||||||
| 62221 | CALL 29012 | Make a sound effect | ||||||||||||||
| 62224 | LD H,210 | 210=ERIC | ||||||||||||||
| 62226 | CALL 25012 | Update the SRB for ERIC's current animatory state and location | ||||||||||||||
| 62229 | AND 128 | A=0/128: ERIC standing up | ||||||||||||||
| 62231 | CALL 24880 | Update ERIC's animatory state and location and update the SRB | ||||||||||||||
| 62234 | LD A,6 | Set ERIC's main action timer (at 32755) to 6 | ||||||||||||||
| 62236 | LD (32755),A | |||||||||||||||
| 62239 | RET | |||||||||||||||
|
We're not in demo mode.
|
||||||||||||||||
| 62240 | CALL 29118 | Collect the code of the last key pressed in A | ||||||||||||||
| 62243 | RET Z | Return if no keys were pressed | ||||||||||||||
| 62244 | RES 5,A | Normalise the code to upper case | ||||||||||||||
| 62246 | CP 83 | Was 'S' pressed? | ||||||||||||||
| 62248 | JR Z,62216 | Make ERIC stand up if so | ||||||||||||||
| 62250 | CP 79 | Was 'O' pressed? | ||||||||||||||
| 62252 | RET NZ | Return if not | ||||||||||||||
| 62253 | LD A,(53760) | A=ERIC's animatory state | ||||||||||||||
| 62256 | CP 4 | 4: Is ERIC sitting in a chair? | ||||||||||||||
| 62258 | RET NZ | Return if not | ||||||||||||||
|
ERIC is sitting in a chair and 'O' (open desk) was pressed. Compute the ID of the desk ERIC is sitting at so we can determine whether he's found the water pistol or the stinkbombs.
|
||||||||||||||||
| 62259 | LD A,(54785) | Pick up the x-coordinate of whatever object is using buffer 214 | ||||||||||||||
| 62262 | CP 192 | Is this buffer being used at the moment? | ||||||||||||||
| 62264 | RET C | Return if so | ||||||||||||||
| 62265 | LD DE,(53761) | Pick up ERIC's coordinates in DE | ||||||||||||||
| 62269 | LD A,D | A=ERIC's y-coordinate | ||||||||||||||
| 62270 | CP 10 | Is ERIC on the middle floor? | ||||||||||||||
| 62272 | JR Z,62294 | Jump if so | ||||||||||||||
| 62274 | CP 3 | Is ERIC on the top floor? | ||||||||||||||
| 62276 | RET NZ | Return if not | ||||||||||||||
| 62277 | LD A,E | A=ERIC's x-coordinate | ||||||||||||||
| 62278 | CP 22 | Is ERIC in the Blue Room? | ||||||||||||||
| 62280 | JR C,62290 | Jump if so | ||||||||||||||
| 62282 | SUB 27 | |||||||||||||||
| 62284 | CP 34 | Is ERIC in the Yellow Room? | ||||||||||||||
| 62286 | JR C,62290 | Jump if so | ||||||||||||||
| 62288 | SUB 106 | |||||||||||||||
| 62290 | SUB 9 | |||||||||||||||
| 62292 | JR 62303 | |||||||||||||||
| 62294 | LD A,E | A=ERIC's x-coordinate | ||||||||||||||
| 62295 | CP 53 | Is ERIC in the Science lab? | ||||||||||||||
| 62297 | JR C,62301 | Jump if so | ||||||||||||||
| 62299 | SUB 113 | |||||||||||||||
| 62301 | SUB 2 | |||||||||||||||
| 62303 | RRA | |||||||||||||||
| 62304 | LD B,A | |||||||||||||||
|
At this point B holds the identifier of the desk that ERIC's sitting at.
Now we check whether the water pistol has been placed in a desk yet.
|
||||||||||||||||
| 62305 | LD HL,32730 | 32730 holds the ID of the desk containing the water pistol | ||||||||||||||
| 62308 | LD A,(HL) | Has the water pistol been placed in a desk yet? | ||||||||||||||
| 62309 | AND A | |||||||||||||||
| 62310 | JR NZ,62326 | Jump if so | ||||||||||||||
|
The water pistol hasn't been placed in a desk yet. Pick one at random that doesn't match the desk containing the stinkbombs.
|
||||||||||||||||
| 62312 | CALL 25233 | A=random desk ID from 1 to 31 | ||||||||||||||
| 62315 | AND 31 | |||||||||||||||
| 62317 | JR Z,62312 | |||||||||||||||
| 62319 | LD L,219 | HL=32731 (which holds the ID of the desk containing the stinkbombs) | ||||||||||||||
| 62321 | CP (HL) | Is this the desk containing the stinkbombs? | ||||||||||||||
| 62322 | JR Z,62312 | Get another random desk ID if so | ||||||||||||||
| 62324 | DEC L | Otherwise place the newly determined ID of the desk containing the water pistol into 32730 | ||||||||||||||
| 62325 | LD (HL),A | |||||||||||||||
|
Check whether ERIC has found the water pistol.
|
||||||||||||||||
| 62326 | CP B | Is ERIC sitting at the desk that contains the water pistol? | ||||||||||||||
| 62327 | JR NZ,62345 | Jump if not | ||||||||||||||
| 62329 | LD (HL),0 | Set 32730 to 0 (the water pistol is not in any desk now) | ||||||||||||||
| 62331 | LD L,235 | HL=32747 (inventory flags) | ||||||||||||||
| 62333 | LD A,(HL) | Pick these up in A | ||||||||||||||
| 62334 | AND 24 | Keep only bits 3 and 4 (the pistol bits) | ||||||||||||||
| 62336 | LD A,44 | 44: animatory state of a desk lid | ||||||||||||||
| 62338 | JR NZ,62377 | Jump if ERIC already has a water pistol | ||||||||||||||
| 62340 | SET 3,(HL) | Give ERIC a water pistol (full of water) | ||||||||||||||
| 62342 | INC A | 45: animatory state of a desk lid with a water pistol | ||||||||||||||
| 62343 | JR 62377 | |||||||||||||||
|
There was no water pistol in the desk. Check whether there are stinkbombs.
|
||||||||||||||||
| 62345 | INC L | HL=32731 (which holds the ID of the desk containing the stinkbombs) | ||||||||||||||
| 62346 | LD A,(HL) | Have the stinkbombs been placed in a desk yet? | ||||||||||||||
| 62347 | AND A | |||||||||||||||
| 62348 | JR NZ,62364 | Jump if so | ||||||||||||||
|
The stinkbombs haven't been placed in a desk yet. Pick one at random that doesn't match the desk containing the water pistol.
|
||||||||||||||||
| 62350 | CALL 25233 | A=random desk ID from 1 to 31 | ||||||||||||||
| 62353 | AND 31 | |||||||||||||||
| 62355 | JR Z,62350 | |||||||||||||||
| 62357 | LD L,218 | HL=32730 (which holds the ID of the desk containing the water pistol) | ||||||||||||||
| 62359 | CP (HL) | Is this the desk containing the water pistol? | ||||||||||||||
| 62360 | JR Z,62350 | Get another random desk ID if so | ||||||||||||||
| 62362 | INC L | Otherwise place the newly determined ID of the desk containing the stinkbombs into 32731 | ||||||||||||||
| 62363 | LD (HL),A | |||||||||||||||
|
Check whether ERIC has found the stinkbombs.
|
||||||||||||||||
| 62364 | CP B | Compare the ID of the desk ERIC's sitting at (A) with the ID of the desk containing the stinkbombs (B) | ||||||||||||||
| 62365 | LD A,44 | 44: animatory state of a desk lid | ||||||||||||||
| 62367 | JR NZ,62377 | Jump if ERIC isn't sitting at the desk that contains the stinkbombs | ||||||||||||||
| 62369 | LD L,235 | HL=32747 (inventory flags) | ||||||||||||||
| 62371 | LD A,(HL) | Set bits 5-7, giving ERIC three stinkbombs | ||||||||||||||
| 62372 | OR 224 | |||||||||||||||
| 62374 | LD (HL),A | |||||||||||||||
| 62375 | LD A,46 | 46: animatory state of a desk lid with stinkbombs | ||||||||||||||
| 62377 | LD HL,54803 | Point HL at byte 19 of the desk lid's buffer | ||||||||||||||
| 62380 | LD (HL),8 | Initialise the counter determining how long the desk lid stays up | ||||||||||||||
| 62382 | DEC E | E=x-coordinate of the desk lid in front of ERIC | ||||||||||||||
| 62383 | CALL 30534 | Update the SRB for the desk lid's appearance and place address 62386 (below) into bytes 17 and 18 of its buffer | ||||||||||||||
|
The address of this entry point is placed into bytes 17 and 18 of the desk lid's buffer by the instruction above.
|
||||||||||||||||
| 62386 | LD L,19 | Byte 19 of the desk lid's buffer holds the delay counter that determines when the desk lid will shut | ||||||||||||||
| 62388 | DEC (HL) | Decrement this counter | ||||||||||||||
| 62389 | LD A,(HL) | Copy its current value to A | ||||||||||||||
| 62390 | JP Z,29903 | Jump if it's time for the desk lid to close | ||||||||||||||
| 62393 | SUB 6 | Is it time for ERIC to collect the contents of the desk? | ||||||||||||||
| 62395 | RET NZ | Return if not | ||||||||||||||
| 62396 | LD L,A | L=0 | ||||||||||||||
| 62397 | LD A,(HL) | A=animatory state of a desk lid (with contents, if any) | ||||||||||||||
| 62398 | CP 44 | 44: Is the desk empty? | ||||||||||||||
| 62400 | RET Z | Return if so | ||||||||||||||
| 62401 | CALL 31746 | Print the inventory | ||||||||||||||
|
This entry point is used by the routine at 24348.
|
||||||||||||||||
| 62404 | LD C,5 | Make a celebratory sound effect (ERIC has achieved something rather handy) | ||||||||||||||
| 62406 | LD B,3 | |||||||||||||||
| 62408 | LD HL,65303 | |||||||||||||||
| 62411 | LD D,H | |||||||||||||||
| 62412 | LD E,H | |||||||||||||||
| 62413 | CALL 62155 | |||||||||||||||
| 62416 | DEC C | |||||||||||||||
| 62417 | JR NZ,62406 | |||||||||||||||
| 62419 | RET | |||||||||||||||
| Prev: 62175 | Up: Map | Next: 62420 |