Routines |
Prev: 64FD | Up: Map | Next: 653C |
Called from the main loop at 6767 when ERIC is midstride.
|
||||
6500 | LD HL,$7FE9 | Set ERIC's midstride action timer at 7FE9 to 0 to indicate that ERIC will no longer be midstride after this movement | ||
6503 | LD A,(HL) | |||
6504 | LD (HL),$00 | |||
6506 | DEC L | Set ERIC's main action timer at 7FE8 equal to the previous contents of 7FE9 | ||
6507 | LD (HL),A | |||
6508 | LD HL,$AC63 | Point HL at byte 0x63 of ERIC's buffer | ||
650B | CALL $6214 | Update the SRB for ERIC's current location | ||
650E | LD L,$63 | Pick up ERIC's next animatory state in A (from byte 0x63 of his buffer) and his next location in DE (from bytes 0x64 and 0x65) | ||
6510 | LD A,(HL) | |||
6511 | INC L | |||
6512 | LD D,(HL) | |||
6513 | INC L | |||
6514 | LD E,(HL) | |||
6515 | CALL $61B0 | Update ERIC's animatory state and location and update the SRB | ||
6518 | CALL $6992 | Update the display | ||
651B | CALL $FE52 | Make a walking sound effect | ||
Decide whether the screen should be scrolled left or right.
|
||||
651E | LD HL,$AC60 | Point HL at byte 0x60 of ERIC's buffer | ||
6521 | LD A,($7F00) | A=X: leftmost column of the skool on screen (0-64) | ||
6524 | BIT 7,(HL) | Is ERIC facing left? | ||
6526 | LD L,$62 | |||
6528 | JR Z,$6533 | Jump if so | ||
652A | CP $40 | Is the far right end of the skool on screen? | ||
652C | RET Z | Return if so | ||
652D | SUB (HL) | A=X-x (x=ERIC's x-coordinate) | ||
652E | CP $EA | Is ERIC's screen x-coordinate 22? | ||
6530 | RET NZ | Return if not | ||
6531 | JR $64DC | Otherwise scroll the screen left 8 columns | ||
6533 | AND A | Is the far left end of the skool on screen (X=0)? | ||
6534 | RET Z | Return if so | ||
6535 | SUB (HL) | A=X-x (x=ERIC's x-coordinate) | ||
6536 | CP $F7 | Is ERIC's screen x-coordinate 9? | ||
6538 | RET NZ | Return if not | ||
6539 | JP $64D2 | Otherwise scroll the screen right 8 columns |
Prev: 64FD | Up: Map | Next: 653C |