![]() |
Routines |
Prev: 6648 | Up: Map |
|
||||||||||||
6652 | CALL $6564 | Is ERIC sitting or lying down? | ||||||||||
6655 | RET NZ | Return if so | ||||||||||
6656 | CALL $6648 | Check whether ERIC is on a staircase | ||||||||||
6659 | LD A,E | A=ERIC's x-coordinate | ||||||||||
665A | JR Z,$6664 | Jump if ERIC's not on a staircase | ||||||||||
665C | CP $30 | Is ERIC on a staircase at the right of the skool? | ||||||||||
665E | JP NC,$657F | Move ERIC down a step if so | ||||||||||
6661 | JP $65E4 | Otherwise move ERIC up a step | ||||||||||
6664 | BIT 7,B | Is ERIC facing right? | ||||||||||
6666 | JP NZ,$656A | Turn ERIC round if so | ||||||||||
ERIC is facing left, and is not on a staircase.
|
||||||||||||
6669 | AND A | Is ERIC standing at the far left side of the skool? | ||||||||||
666A | RET Z | Return if so | ||||||||||
666B | LD A,D | A=ERIC's y-coordinate | ||||||||||
666C | CP $A9 | Is ERIC on the bottom floor? | ||||||||||
666E | JR Z,$667A | Jump if so | ||||||||||
6670 | CP $9B | Set the zero flag if ERIC is on the top floor | ||||||||||
6672 | LD A,$3A | This is the x-coordinate of the wall between the Map and Reading Rooms | ||||||||||
6674 | JR Z,$6678 | Jump if ERIC's on the top floor | ||||||||||
6676 | LD A,$27 | This is the x-coordinate of the wall between the Exam and White Rooms | ||||||||||
6678 | CP E | Is ERIC facing this wall (from the right side)? | ||||||||||
6679 | RET Z | Return if so (ERIC cannot walk through walls) | ||||||||||
There is no wall obstructing ERIC, so it's time to put him midstride.
|
||||||||||||
667A | LD A,$01 | A=0x01 (ERIC midstride, facing left) | ||||||||||
667C | LD L,E | L=ERIC's current x-coordinate | ||||||||||
667D | DEC E | E=ERIC's post-midstride x-coordinate | ||||||||||
667E | LD C,A | C=0x01/0x81 (ERIC midstride) | ||||||||||
667F | LD A,($7FFC) | 7FFC holds the ASCII code of the last keypress | ||||||||||
6682 | BIT 5,A | Was the last keypress upper case (fast)? | ||||||||||
6684 | JR Z,$668A | Jump if so | ||||||||||
6686 | LD A,C | Clearly these instructions have no effect, but one wonders what they might once have been and done | ||||||||||
6687 | ADD A,$00 | |||||||||||
6689 | LD C,A | |||||||||||
668A | LD A,($7FFB) | Collect ERIC's status flags from 7FFB | ||||||||||
668D | BIT 6,A | Bit 6 is always reset, so this jump is always made | ||||||||||
668F | JR Z,$6695 | |||||||||||
6691 | LD A,C | Clearly these instructions have no effect, but one wonders what they might once have been and done | ||||||||||
6692 | ADD A,$00 | |||||||||||
6694 | LD C,A | |||||||||||
6695 | LD A,C | A=0x01/0x81 (ERIC midstride) | ||||||||||
6696 | LD H,D | H=ERIC's current y-coordinate | ||||||||||
6697 | LD B,A | B=0x02/0x82 (ERIC standing, phase 3) | ||||||||||
6698 | INC B | |||||||||||
6699 | BIT 0,L | Is ERIC's current x-coordinate even? | ||||||||||
669B | JR Z,$66A1 | Jump if so | ||||||||||
669D | DEC B | Adjust ERIC's midstride animatory state (in A) to 0x03/0x83 and post-midstride animatory state (in B) to 0x00/0x80 if ERIC's current x-coordinate is odd | ||||||||||
669E | DEC B | |||||||||||
669F | ADD A,$02 | |||||||||||
66A1 | JP $653C | Put ERIC midstride |
Prev: 6648 | Up: Map |