Prev: DCD5 Up: Map Next: DD5C
DD24: Draw the spell pointer arrow, spell charge icons and energy bar on the scroll
Used by the routines at E641, E6FA and E753.
Input
DE Screen display address location to draw at
scroll spell example
spell counter icon
energy bar
Draws the scroll arrow (called from E641), the spell 'charge' icons (called from E6FA) or the energy bar (called from E76E)
DD24 LD HL,($EB51) Get graphics address pointer from 97C3
DD27 LD A,(HL) Get the graphics address pointer low byte for the arrow (AFA6), the scroll charge icons (AEE7), or the energy bar (AEF3)
DD28 INC HL High byte of the graphics address pointer
DD29 LD H,(HL)
DD2A LD L,A ...HL register pair now contains the graphics address pointer for the relevant graphic
DD2B LD C,(HL) Number of tiles that make up the graphic
DD2C INC HL Move graphics address pointer along to start of first tile graphic
DD2D INC HL
DD2E INC HL
DD2F LD B,(HL) Number of bytes in the graphics tile to draw
DD30 INC HL Move pointer to start of tile graphics
DD31 LD ($EADE),DE Store screen display address position
Draw graphic tile on screen
DD35 LD A,(HL) Copy graphic byte onto screen:
DD36 LD (DE),A
DD37 INC HL Move to next graphic byte
DD38 LD A,D Get pixel row
DD39 AND $07
DD3B INC A Move down to next pixel row
DD3C CP $08 Are we crossing a pixel/character boundary?
DD3E JR C,$DD50 ...If not, move down 1 pixel row and continue drawing the graphic
DD40 LD A,D ...If so, recalculate screen display address. Get high byte of screen address
DD41 AND $F8 Reset the low 3 bits (pixel row number) to zero
DD43 LD D,A
DD44 LD A,E Get the low byte of the screen address
DD45 ADD A,$20 Increment column by 32 to move down to next screen row
DD47 LD E,A
DD48 JR NC,$DD51 Crossing a 1/3 screen boundary? ...If not, skip next 3 instructions
DD4A LD A,D ...If so, adjust high byte of screen address accordingly
DD4B ADD A,$08
DD4D LD D,A Store correct screen address high byte back in D register
DD4E JR $DD51
DD50 INC D Move down 1 pixel row
DD51 DJNZ $DD35 Repeat for all pixel rows of this graphics tile
Continue to draw the remaining tiles in the graphic
DD53 LD DE,($EADE) Retrieve screen display address
DD57 INC E Move right one character square
DD58 DEC C Decrement tile graphic counter
DD59 JR NZ,$DD2D If there are tiles left in the graphic, draw the next one.
DD5B RET
Prev: DCD5 Up: Map Next: DD5C