Prev: 61297 Up: Map Next: 61387
61336: Room drawing: Draw a graphic
Used by the routines at 61214 and 61236.
Input
BC x- and y-coordinates
HL (Entry at 61343 only) Address in display file to start drawing
61336 LD (23444),BC Store x- and y-coordinates of character block currently being drawn at 23444
61340 CALL 63203 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 61297.
61343 PUSH HL Store HL (address in display file to print character)
61344 LD HL,61418 Load HL with 61418 (address of routine to advance HL with apply-horizontal-mirror flag reset)
61347 LD A,(23450) Load A with apply-horizontal-mirror and apply-vertical-mirror flags
61350 AND 2 If apply-horizontal-mirror flag is reset...
61352 JR Z,61357 ...then skip ahead to 61357
61354 LD HL,61521 Load HL with 61521 (address of routine to advance HL with apply-horizontal-mirror flag set)
61357 LD (61416),HL Change destination for JP instruction at 61415 to value in HL...
61360 POP HL Restore HL (address in display file to print character)
61361 LD DE,(23447) Load DE with graphic data address
This entry point is used by the routine at 61390.
61365 LD A,(DE) Load A with a byte of graphic data
61366 OR A If data is zero...
61367 JR Z,61390 ...then read repeat counter value, x, and draw x rows of reset pixels
61369 CP 255 If data is 255...
61371 JR Z,61411 ...then read repeat counter value, x, and draw x rows of set pixels
The three-byte instruction at 61373 is modified by the instructions at 61215, 61238, 61268 and 61299. Initially it is as shown below, however upon modification it can take the following forms:
Instruction Mirror options Effect
61215 None NOP / NOP / NOP (do nothing)
61238 Apply vertical CALL 61625 (reverse the order of the bits in A)
61268 Apply horizontal NOP / NOP / NOP (do nothing)
61299 Both CALL 61625 (reverse the order of the bits in A)
61373 CALL 61625 Reverse the order of the bits in A
61376 CALL 61387 Load byte of graphic data in A into display file address in HL
61379 INC DE Advance DE to next byte of graphic data
61380 CALL 61415 Advance HL to next location in display file (up or down one pixel)...
61383 JP Z,61365 ...and if this new location is not outside dimensions of the graphic then loop back to 61365
This entry point is used by the routine at 61390.
61386 RET Return
Prev: 61297 Up: Map Next: 61387