![]() |
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 |