Prev: 35388 Up: Map Next: 35515
35445: Draw the current cavern to the screen buffer at 28672
Used by the routine at 34436.
35445 LD IX,24064 Point IX at the first byte of the attribute buffer at 24064
35449 LD A,112 Set the operand of the 'LD D,n' instruction at 35483 (below) to 112
35451 LD (35484),A
35454 CALL 35466 Draw the tiles for the top half of the cavern to the screen buffer at 28672
35457 LD IX,24320 Point IX at the 256th byte of the attribute buffer at 24064 in preparation for drawing the bottom half of the cavern; this instruction is redundant, since IX already holds 24320
35461 LD A,120 Set the operand of the 'LD D,n' instruction at 35483 (below) to 120
35463 LD (35484),A
35466 LD C,0 C will count 256 tiles
The following loop draws 256 tiles (for either the top half or the bottom half of the cavern) to the screen buffer at 28672.
35468 LD E,C E holds the LSB of the screen buffer address
35469 LD A,(IX+0) Pick up an attribute byte from the buffer at 24064; this identifies the type of tile to draw
35472 LD HL,32800 Move HL through the attribute bytes and graphic data of the background, floor, crumbling floor, wall, conveyor and nasty tiles starting at 32800 until we find a byte that matches the attribute byte of the tile to be drawn
35475 LD BC,72
35478 CPIR
35480 LD C,E Restore the value of the tile counter in C
35481 LD B,8 There are eight bytes in the tile
35483 LD D,0 This instruction is set to either 'LD D,112' or 'LD D,120' above; now DE holds the appropriate address in the screen buffer at 28672
35485 LD A,(HL) Copy the tile graphic data to the screen buffer at 28672
35486 LD (DE),A
35487 INC HL
35488 INC D
35489 DJNZ 35485
35491 INC IX Move IX along to the next byte in the attribute buffer
35493 INC C Have we drawn 256 tiles yet?
35494 JP NZ,35468 If not, jump back to draw the next one
The empty cavern has been drawn to the screen buffer at 28672. If we're in The Final Barrier, however, there is further work to do.
35497 LD A,(33799) Pick up the number of the current cavern from 33799
35500 CP 19 Is it The Final Barrier?
35502 RET NZ Return if not
35503 LD HL,40960 Copy the graphic data from 40960 to the top half of the screen buffer at 28672
35506 LD DE,28672
35509 LD BC,2048
35512 LDIR
35514 RET
Prev: 35388 Up: Map Next: 35515