Routines |
Prev: 33210 | Up: Map | Next: 33319 |
|
||||||||||
Number of character columns to draw stored at 35759. Number of character rows at 35760.
|
||||||||||
33267 | LD C,H | Copy high byte of display address position to C register | ||||||||
33268 | LD A,(35759) | Copy counter for number of columns to draw into working buffer | ||||||||
33271 | LD (35761),A | |||||||||
33274 | LD H,C | Get high byte of display address | ||||||||
Screen drawing loop for a row of graphics (1 character row, multiple columns):
|
||||||||||
33275 | LD B,8 | 8 pixel rows to draw | ||||||||
33277 | LD A,(DE) | Get graphics byte | ||||||||
33278 | LD (HL),A | ...copy it to the screeen | ||||||||
33279 | INC H | Increment high byte of display address to move down one pixel | ||||||||
33280 | INC DE | Increment graphics address pointer ready for next graphics byte | ||||||||
33281 | DJNZ 33277 | Repeat for 8 pixel rows | ||||||||
33283 | INC L | Move right one character position on screen | ||||||||
33284 | LD A,(35761) | Retrieve, decrement and re-store the column counter | ||||||||
33287 | DEC A | |||||||||
33288 | LD (35761),A | |||||||||
33291 | JR NZ,33274 | Keep drawing until all columns are done | ||||||||
Calculate the screen display address for the next (character) row:
|
||||||||||
33293 | LD A,(35759) | Get the total number of columns drawn | ||||||||
33296 | LD B,A | Store in B register | ||||||||
33297 | LD A,33 | Subtract from 33 - this gives us the offset for the low byte screen display position for the next row down | ||||||||
33299 | SUB B | |||||||||
33300 | DEC L | L was incremented earlier before the 'column finished check', so move it back to its previous position. | ||||||||
33301 | ADD A,L | ...and add it so it's in the correct column position to draw the next row. | ||||||||
33302 | LD L,A | |||||||||
33303 | JR NC,33309 | Check to see if this has caused us to go past a 'third-of-screen' boundary | ||||||||
33305 | LD A,C | If so, modify the high byte of the stored screen address accordingly | ||||||||
33306 | ADD A,8 | |||||||||
33308 | LD C,A | |||||||||
Continue to draw rows of graphics:
|
||||||||||
33309 | LD A,(35760) | Get the number of rows to draw | ||||||||
33312 | DEC A | Reduce by one | ||||||||
33313 | LD (35760),A | ...and re-store | ||||||||
33316 | JR NZ,33268 | All rows finished? If not, continue to draw the graphics. | ||||||||
33318 | RET |
Prev: 33210 | Up: Map | Next: 33319 |