![]() |
Routines |
| Prev: 62480 | Up: Map | Next: 62560 |
| 62483 | LD A,(32734) | A=255 if we're in demo mode, 0 otherwise | |||||||||||||||
| 62486 | INC A | Are we in demo mode? | |||||||||||||||
| 62487 | JP NZ,29178 | Read the keyboard if not | |||||||||||||||
|
We're in demo mode.
|
|||||||||||||||||
| 62490 | LD HL,0 | Set the score (held at 32741) and the number of lines (held at 32743) to 0 | |||||||||||||||
| 62493 | LD (32741),HL | ||||||||||||||||
| 62496 | LD (32743),HL | ||||||||||||||||
| 62499 | CALL 29118 | Check for keypresses | |||||||||||||||
| 62502 | JP NZ,63189 | Start a new game if there was one | |||||||||||||||
|
No keys have been pressed, so figure out ERIC's next move by seeing what little boy no. 10 is doing.
|
|||||||||||||||||
| 62505 | LD DE,(50945) | Pick up the coordinates of little boy no. 10 in DE | |||||||||||||||
| 62509 | LD H,210 | 210=ERIC | |||||||||||||||
| 62511 | CALL 25843 | Compare the coordinates of ERIC and little boy no. 10 | |||||||||||||||
| 62514 | AND A | Are they the same? | |||||||||||||||
| 62515 | JR Z,62533 | Jump if so | |||||||||||||||
| 62517 | DEC A | Now A=0 (ERIC is on a staircase facing up), 1 (on a staircase facing down), 2 (to the right of little boy no. 10), or 3 (to his left) | |||||||||||||||
| 62518 | LD HL,23672 | Point HL at the LSB of the system variable FRAMES | |||||||||||||||
| 62521 | XOR 2 | Flip bit 1 of A | |||||||||||||||
|
Now A holds a value that will be translated into a simulated keypress depending on ERIC's location:
|
|||||||||||||||||
| 62523 | BIT 7,(HL) | Is the LSB of FRAMES < 128? | |||||||||||||||
| 62525 | JR Z,62529 | Jump if so: this will be an upper case (fast) keypress | |||||||||||||||
| 62527 | ADD A,4 | 4<=A<=7: force a lower case (slow) keypress | |||||||||||||||
| 62529 | ADD A,A | A=80+2n where 0<=n<=7 (simulated keypress for LEFT, RIGHT, UP, DOWN or left, right, up, down) | |||||||||||||||
| 62530 | ADD A,80 | ||||||||||||||||
| 62532 | RET | ||||||||||||||||
|
ERIC's coordinates match those of little boy no. 10 exactly.
|
|||||||||||||||||
| 62533 | LD A,(50944) | A=animatory state of little boy no. 10 | |||||||||||||||
| 62536 | CP 68 | 68: little boy sitting in a chair | |||||||||||||||
| 62538 | LD HL,53760 | Point HL at byte 0 of ERIC's buffer | |||||||||||||||
| 62541 | JR Z,62549 | Jump if little boy no. 10 is sitting in a chair | |||||||||||||||
| 62543 | CP 197 | 197: Is little boy no. 10 sitting on the floor facing right (as in assembly)? | |||||||||||||||
| 62545 | JR Z,62549 | Jump if so | |||||||||||||||
| 62547 | XOR A | No simulated keypress (ERIC stays still) | |||||||||||||||
| 62548 | RET | ||||||||||||||||
|
Little boy no. 10 is sitting in a chair or sitting on the floor facing right (as in assembly). Make ERIC face the same way and sit too (in the same spot as little boy no. 10).
|
|||||||||||||||||
| 62549 | XOR (HL) | Set the carry flag if ERIC and little boy no. 10 are facing in opposite directions | |||||||||||||||
| 62550 | RLCA | ||||||||||||||||
| 62551 | LD A,98 | 98=keypress code for 'S' (sit) | |||||||||||||||
| 62553 | RET NC | Return if ERIC and little boy no. 10 are facing the same way | |||||||||||||||
| 62554 | LD A,(HL) | A=ERIC's animatory state | |||||||||||||||
| 62555 | RLCA | Set A to 1 if ERIC is facing left (leading to a simulated keypress code of 82, or RIGHT), 0 if he's facing right (leading to a simulated keypress code of 80, or LEFT); that is, make ERIC turn round | |||||||||||||||
| 62556 | SBC A,A | ||||||||||||||||
| 62557 | INC A | ||||||||||||||||
| 62558 | JR 62529 | ||||||||||||||||
| Prev: 62480 | Up: Map | Next: 62560 |