![]() |
Routines |
| Prev: E220 | Up: Map | Next: E286 |
| E25B | LD A,$0E | Playing area is 14 character rows high | ||
| E25D | LD ($EAC7),A | |||
| E260 | LD DE,$4042 | Screen display address for top left of playing area | ||
|
Clear a character row (8 pixels) of the playing area:
|
||||
| E263 | LD C,$08 | 8 pixel rows | ||
| E265 | LD H,D | Copy screen display address from DE to HL | ||
| E266 | LD L,E | |||
| E267 | LD B,$1C | 28 character rows to clear | ||
| E269 | LD (HL),$00 | Clear pixel byte | ||
| E26B | INC L | Move on character square right | ||
| E26C | DJNZ $E269 | Repeat for 28 character rows | ||
| E26E | INC H | Move down 1 pixel | ||
| E26F | DEC C | |||
| E270 | JR NZ,$E266 | Repeat for 8 pixel rows | ||
|
Move down to next (character) row:
|
||||
| E272 | LD A,E | Get starting left hand position | ||
| E273 | ADD A,$20 | Move down to next character square | ||
| E275 | LD E,A | Are we crossing a third-of-screen boundary? | ||
| E276 | JR NC,$E27C | |||
| E278 | LD A,D | If so, recalculate screen display high-byte accordingly | ||
| E279 | ADD A,$08 | |||
| E27B | LD D,A | Store corrected screen address high byte back in D register | ||
|
Check if all character rows have been cleared:
|
||||
| E27C | LD A,($EAC7) | Get character row counter | ||
| E27F | DEC A | ...and decrement | ||
| E280 | LD ($EAC7),A | |||
| E283 | JR NZ,$E263 | Repeat for all 14 character squares of playing area | ||
| E285 | RET | |||
| Prev: E220 | Up: Map | Next: E286 |