Routines |
Prev: EC69 | Up: Map | Next: ECD0 |
EC7B | CALL $EC69 | Make a sound effect | ||
EC7E | LD H,$E6 | 0xE6=Sam | ||
EC80 | CALL $EC5A | Move Sam from the midstride or mid-action position and update the SRB | ||
This entry point is used by the routines at 64BD, 7AF4 and FB52.
|
||||
EC83 | LD DE,$7FFE | 7FFE holds X, the x-coordinate of the leftmost column of the play area on screen | ||
EC86 | LD L,$01 | Point HL at byte 0x01 of Sam's buffer | ||
EC88 | LD A,(DE) | A=X | ||
EC89 | SUB (HL) | Subtract Sam's x-coordinate | ||
EC8A | JR Z,$EC90 | Jump if they are equal | ||
EC8C | CP $F7 | Is Sam's x-coordinate >= X+10? | ||
EC8E | JR C,$EC9C | Jump if so (no need to scroll right) | ||
EC90 | LD A,(DE) | A=X | ||
EC91 | AND A | Is X=0? | ||
EC92 | JR Z,$ECAB | Jump if so (no need to scroll right) | ||
EC94 | CALL $EA80 | Update the display | ||
EC97 | CALL $F18E | Cycle a character buffer group forwards and scroll the screen right | ||
EC9A | JR $ECAB | |||
EC9C | CP $EB | Is Sam's x-coordinate <= X+21? | ||
EC9E | JR NC,$ECAB | Jump if so (no need to scroll left) | ||
ECA0 | LD A,(DE) | A=X | ||
ECA1 | CP $E0 | Is X=224? | ||
ECA3 | JR Z,$ECAB | Jump if so (no need to scroll left) | ||
ECA5 | CALL $EA80 | Update the display | ||
ECA8 | CALL $F1BA | Cycle a character buffer group backwards and scroll the screen left | ||
Now that any required horizontal scrolling has been done, it's time to check whether any vertical scrolling is required.
|
||||
ECAB | LD DE,$7FFF | 7FFF holds Y, the y-coordinate of the topmost row of the play area on screen | ||
ECAE | LD HL,$E602 | Point HL at byte 0x02 of Sam's buffer | ||
ECB1 | LD A,(DE) | A=Y-3 | ||
ECB2 | SUB $03 | |||
ECB4 | SUB (HL) | Subtract Sam's y-coordinate | ||
ECB5 | CP $FC | Is Sam's y-coordinate >= Y+2? | ||
ECB7 | JR C,$ECC3 | Jump if so (no need to scroll down) | ||
ECB9 | LD A,(DE) | A=Y | ||
ECBA | CP $02 | Is Y=2? | ||
ECBC | RET Z | Return if so (no need to scroll down) | ||
ECBD | CALL $EA80 | Update the display | ||
ECC0 | JP $E8B7 | Scroll the screen down | ||
ECC3 | CP $F0 | Is Sam's y-coordinate <= Y+13? | ||
ECC5 | RET NC | Return if so (no need to scroll up) | ||
ECC6 | LD A,(DE) | A=Y | ||
ECC7 | CP $14 | Is Y=20? | ||
ECC9 | RET Z | Return if so (no need to scroll up) | ||
ECCA | CALL $EA80 | Update the display | ||
ECCD | JP $E87C | Scroll the screen up |
Prev: EC69 | Up: Map | Next: ECD0 |