![]() |
Routines |
Prev: 35388 | Up: Map |
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 |