Prev: 52596 Up: Map Next: 52686
52635: Room drawing: Draw a graphic
Used by the routines at 52513 and 52535.
Input
BC x- and y-coordinates
HL (Entry at 52642 only) Address in display file to start drawing
52635 LD (23444),BC Store x- and y-coordinates of character block currently being drawn at 23444
52639 CALL 54132 Move virtual cursor (bitmap) to display file address for coordinates x=C, y=B and load address into HL
This entry point is used by the routine at 52596.
52642 PUSH HL Store HL (address in display file to print character)
52643 LD HL,52717 Load HL with 52717 (address of routine to advance HL with apply-horizontal-mirror flag reset)
52646 LD A,(23450) Load A with apply-horizontal-mirror and apply-vertical-mirror flags
52649 AND 2 If apply-horizontal-mirror flag is reset...
52651 JR Z,52656 ...then skip ahead to 52656
52653 LD HL,52820 Load HL with 52820 (address of routine to advance HL with apply-horizontal-mirror flag set)
52656 LD (52715),HL Change destination for JP instruction at 52714 to value in HL...
52659 POP HL Restore HL (address in display file to print character)
52660 LD DE,(23447) Load DE with graphic data address
This entry point is used by the routine at 52689.
52664 LD A,(DE) Load A with a byte of graphic data
52665 OR A If data is zero...
52666 JR Z,52689 ...then read repeat counter value, x, and draw x rows of reset pixels
52668 CP 255 If data is 255...
52670 JR Z,52710 ...then read repeat counter value, x, and draw x rows of set pixels
The three-byte instruction at 52672 is modified by the instructions at 52514, 52537, 52567 and 52598. Initially it is as shown below, however upon modification it can take the following forms:
Instruction Mirror options Effect
52514 None NOP / NOP / NOP (do nothing)
52537 Apply vertical CALL 52924 (reverse the order of the bits in A)
52567 Apply horizontal NOP / NOP / NOP (do nothing)
52598 Both CALL 52924 (reverse the order of the bits in A)
52672 CALL 52924 Reverse the order of the bits in A
52675 CALL 52686 Load byte of graphic data in A into display file address in HL
52678 INC DE Advance DE to next byte of graphic data
52679 CALL 52714 Advance HL to next location in display file (up or down one pixel)...
52682 JP Z,52664 ...and if this new location is not outside dimensions of the graphic then loop back to 52664
This entry point is used by the routine at 52689.
52685 RET Return
Prev: 52596 Up: Map Next: 52686