Prev: 33267 Up: Map Next: 33375
33319: Drawing routine used for intro sequence graphics
Used by the routines at 32289 and 32549.
Input
HL Screen display address to draw at
33319 LD C,H Store screen display address high byte in C register
33320 LD A,(35759) Get number of columns to draw
33323 LD (35761),A Store as a counter
33326 LD H,C Retrieve screen display address from C register
33327 LD B,8 8 pixel lines to draw
33329 LD DE,(31940) Retrieve address pointing to graphics to draw
Draw a series of character column graphics:
33333 LD A,(DE) ...get graphics byte
33334 LD (HL),A ...and copy it to the screen
33335 INC H Increment screen display position (move down one pixel line)
33336 INC DE ...and move to next graphic byte
33337 DJNZ 33333 Repeat until 8 pixel lines printed
33339 INC L Move right 1 square on screen
33340 LD A,(35761) Retrieve the graphic column counter
33343 DEC A ...Decrement it...
33344 LD (35761),A ...And re-store it...
33347 JR NZ,33326 Keep drawing until column counter = 0
Recalculate screen display address for next character row of graphics:
33349 LD A,(35759) Retrieve column counter
33352 LD B,A
33353 LD A,33 Subtract from 33 to get next line offset position
33355 SUB B
33356 DEC L L was incremented before finishing earlier so move back a space
33357 ADD A,L Add the offset so we're at the correct position for the next character row
33358 LD L,A
33359 JR NC,33365 Check that we're not crossing a 1/3 screen boundary
33361 LD A,C Crossing a 1/3 screen boundary, so
33362 ADD A,8 Amend the screen display address by adding 8
33364 LD C,A ...and store byte in C for retrieval later
Check if any more graphics need drawing:
33365 LD A,(35760) Retrieve row counter
33368 DEC A Decrement and re-store it
33369 LD (35760),A
33372 JR NZ,33320 Continue drawing until counter = 0
33374 RET
Prev: 33267 Up: Map Next: 33375