Routines |
Prev: 8A3C | Up: Map | Next: 8ABB |
Used by the routine at 8684.
|
||||
8A75 | LD IX,$5E00 | Point IX at the first byte of the attribute buffer at 5E00 | ||
8A79 | LD A,$70 | Set the operand of the 'LD D,n' instruction at 8A9B (below) to $70 | ||
8A7B | LD ($8A9C),A | |||
8A7E | CALL $8A8A | Draw the tiles for the top half of the cavern to the screen buffer at 7000 | ||
8A81 | LD IX,$5F00 | Point IX at the 256th byte of the attribute buffer at 5E00 in preparation for drawing the bottom half of the cavern; this instruction is redundant, since IX already holds 5F00 | ||
8A85 | LD A,$78 | Set the operand of the 'LD D,n' instruction at 8A9B (below) to $78 | ||
8A87 | LD ($8A9C),A | |||
8A8A | LD C,$00 | 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 7000.
|
||||
8A8C | LD E,C | E holds the LSB of the screen buffer address | ||
8A8D | LD A,(IX+$00) | Pick up an attribute byte from the buffer at 5E00; this identifies the type of tile to draw | ||
8A90 | LD HL,$8020 | Move HL through the attribute bytes and graphic data of the background, floor, crumbling floor, wall, conveyor and nasty tiles starting at 8020 until we find a byte that matches the attribute byte of the tile to be drawn | ||
8A93 | LD BC,$0048 | |||
8A96 | CPIR | |||
8A98 | LD C,E | Restore the value of the tile counter in C | ||
8A99 | LD B,$08 | There are eight bytes in the tile | ||
8A9B | LD D,$00 | This instruction is set to either 'LD D,$70' or 'LD D,$78' above; now DE holds the appropriate address in the screen buffer at 7000 | ||
8A9D | LD A,(HL) | Copy the tile graphic data to the screen buffer at 7000 | ||
8A9E | LD (DE),A | |||
8A9F | INC HL | |||
8AA0 | INC D | |||
8AA1 | DJNZ $8A9D | |||
8AA3 | INC IX | Move IX along to the next byte in the attribute buffer | ||
8AA5 | INC C | Have we drawn 256 tiles yet? | ||
8AA6 | JP NZ,$8A8C | If not, jump back to draw the next one | ||
The empty cavern has been drawn to the screen buffer at 7000. If we're in The Final Barrier, however, there is further work to do.
|
||||
8AA9 | LD A,($8407) | Pick up the number of the current cavern from 8407 | ||
8AAC | CP $13 | Is it The Final Barrier? | ||
8AAE | RET NZ | Return if not | ||
8AAF | LD HL,$A000 | Copy the graphic data from A000 to the top half of the screen buffer at 7000 | ||
8AB2 | LD DE,$7000 | |||
8AB5 | LD BC,$0800 | |||
8AB8 | LDIR | |||
8ABA | RET |
Prev: 8A3C | Up: Map | Next: 8ABB |