Routines |
Prev: 81F3 | Up: Map | Next: 825F |
|
||||||||
8227 | LD C,H | Store screen display address high byte in C register | ||||||
8228 | LD A,($8BAF) | Get number of columns to draw | ||||||
822B | LD ($8BB1),A | Store as a counter | ||||||
822E | LD H,C | Retrieve screen display address from C register | ||||||
822F | LD B,$08 | 8 pixel lines to draw | ||||||
8231 | LD DE,($7CC4) | Retrieve address pointing to graphics to draw | ||||||
Draw a series of character column graphics:
|
||||||||
8235 | LD A,(DE) | ...get graphics byte | ||||||
8236 | LD (HL),A | ...and copy it to the screen | ||||||
8237 | INC H | Increment screen display position (move down one pixel line) | ||||||
8238 | INC DE | ...and move to next graphic byte | ||||||
8239 | DJNZ $8235 | Repeat until 8 pixel lines printed | ||||||
823B | INC L | Move right 1 square on screen | ||||||
823C | LD A,($8BB1) | Retrieve the graphic column counter | ||||||
823F | DEC A | ...Decrement it... | ||||||
8240 | LD ($8BB1),A | ...And re-store it... | ||||||
8243 | JR NZ,$822E | Keep drawing until column counter = 0 | ||||||
Recalculate screen display address for next character row of graphics:
|
||||||||
8245 | LD A,($8BAF) | Retrieve column counter | ||||||
8248 | LD B,A | |||||||
8249 | LD A,$21 | Subtract from 33 to get next line offset position | ||||||
824B | SUB B | |||||||
824C | DEC L | L was incremented before finishing earlier so move back a space | ||||||
824D | ADD A,L | Add the offset so we're at the correct position for the next character row | ||||||
824E | LD L,A | |||||||
824F | JR NC,$8255 | Check that we're not crossing a 1/3 screen boundary | ||||||
8251 | LD A,C | Crossing a 1/3 screen boundary, so | ||||||
8252 | ADD A,$08 | Amend the screen display address by adding 8 | ||||||
8254 | LD C,A | ...and store byte in C for retrieval later | ||||||
Check if any more graphics need drawing:
|
||||||||
8255 | LD A,($8BB0) | Retrieve row counter | ||||||
8258 | DEC A | Decrement and re-store it | ||||||
8259 | LD ($8BB0),A | |||||||
825C | JR NZ,$8228 | Continue drawing until counter = 0 | ||||||
825E | RET |
Prev: 81F3 | Up: Map | Next: 825F |