![]() |
Routines |
| Prev: FC57 | Up: Map | Next: FCE2 |
|
Used by the routine at FB52 to scroll the screen up and down a row 7 times when Sam hits the ground after being dropped from the roof of a building by a gangster.
|
||||
| FC6A | LD HL,$E8A0 | Change the instruction at E8A0 to RET | ||
| FC6D | LD (HL),$C9 | |||
| FC6F | LD L,$DC | Change the instruction at E8DC to RET | ||
| FC71 | LD (HL),$C9 | |||
| FC73 | LD HL,$E7EC | Set the instruction at E7EB to 'LD BC,$0020' | ||
| FC76 | LD (HL),$20 | |||
| FC78 | LD L,$EF | Set the instruction at E7EE to 'LDIR' | ||
| FC7A | LD (HL),$B0 | |||
| FC7C | LD H,$07 | We will scroll the screen up and down a row 7 times | ||
| FC7E | PUSH HL | Save the scroll counter | ||
| FC7F | LD HL,$4000 | Save the top 8 rows of pixels on the screen in page 0x7E | ||
| FC82 | LD DE,$7E00 | |||
| FC85 | LD BC,$0020 | |||
| FC88 | LD A,$08 | |||
| FC8A | LDIR | |||
| FC8C | INC H | |||
| FC8D | LD L,B | |||
| FC8E | LD C,$20 | |||
| FC90 | DEC A | |||
| FC91 | JR NZ,$FC8A | |||
| FC93 | LD H,$58 | Save the top row of attribute bytes (5800-581F) in the first 32 bytes of the screen refresh buffer at 7F00 | ||
| FC95 | LDIR | |||
| FC97 | CALL $E888 | Scroll the screen up a row | ||
| FC9A | LD HL,$5060 | Fill the top line of bytes on the 20th row of the screen with 9s; this is a bug | ||
| FC9D | LD B,$20 | |||
| FC9F | LD (HL),$09 | |||
| FCA1 | INC L | |||
| FCA2 | DJNZ $FC9F | |||
| FCA4 | POP HL | Restore the scroll counter (1-7) to H | ||
| FCA5 | PUSH HL | Save the scroll counter again | ||
| FCA6 | LD A,H | Prepare the sound effect parameters | ||
| FCA7 | LD DE,$0180 | |||
| FCAA | LD C,$C0 | |||
| FCAC | CALL $FCE4 | Make a sound effect | ||
| FCAF | CALL $E8C3 | Scroll the screen down a row | ||
| FCB2 | LD HL,$7E00 | Restore the top 8 rows of pixels on the screen from page 0x7E | ||
| FCB5 | LD DE,$4000 | |||
| FCB8 | LD A,$08 | |||
| FCBA | LD C,$20 | |||
| FCBC | LDIR | |||
| FCBE | INC D | |||
| FCBF | LD E,B | |||
| FCC0 | LD C,$20 | |||
| FCC2 | DEC A | |||
| FCC3 | JR NZ,$FCBC | |||
| FCC5 | LD D,$58 | Restore the top row of attribute bytes (5800-581F) from where they were saved earlier | ||
| FCC7 | LDIR | |||
| FCC9 | POP HL | Restore the scroll counter (1-7) to H | ||
| FCCA | LD DE,$0100 | Prepare the sound effect parameters | ||
| FCCD | LD C,$60 | |||
| FCCF | LD A,H | |||
| FCD0 | CALL $FCE4 | Make a sound effect | ||
| FCD3 | DEC H | Decrement the scroll counter | ||
| FCD4 | JR NZ,$FC7E | Jump back until we've scrolled the screen up and down 7 times | ||
| FCD6 | LD HL,$E8A0 | Change the instruction at E8A0 back to 'LD HL,$7FFF' | ||
| FCD9 | LD (HL),$21 | |||
| FCDB | LD L,$DC | Change the instruction at E8DC back to 'LD HL,$7FFF' | ||
| FCDD | LD (HL),$21 | |||
| FCDF | JP $FC46 | Regenerate the table of mirrored values of 0x00-0xFF at 7E00 | ||
| Prev: FC57 | Up: Map | Next: FCE2 |