![]() |
Routines |
Prev: 27464 | Up: Map |
Used by the routine at 24576.
|
||||||||||||||
27509 | PUSH BC | Save the tile counter. | ||||||||||||
27510 | PUSH HL | Save the maze layout data address. | ||||||||||||
27511 | EX DE,HL | Transfer the display file address to HL. | ||||||||||||
27512 | CALL 27663 | Set HL' to the corresponding attribute file address (always 22528). | ||||||||||||
27515 | EX DE,HL | Transfer the display file address back to DE. | ||||||||||||
27516 | EXX | Exchange registers. | ||||||||||||
27517 | POP DE | Restore the maze layout data address to DE'. | ||||||||||||
27518 | POP BC | Restore the tile counter to BC'. | ||||||||||||
27519 | LD A,(DE) | Pick up a tile identifier. | ||||||||||||
27520 | INC DE | Point DE' at the next tile identifier. | ||||||||||||
27521 | CP 0 | Is the current tile blank? | ||||||||||||
27523 | JR Z,27549 | Jump if so. | ||||||||||||
27525 | CP 2 | Is the current tile a flower? | ||||||||||||
27527 | JR Z,27553 | Jump if so. | ||||||||||||
27529 | CP 3 | Is the current tile an arrow (entrance or exit)? | ||||||||||||
27531 | JR Z,27541 | Jump if so. | ||||||||||||
27533 | CP 9 | Is the current tile a tunnel entrance? | ||||||||||||
27535 | JR Z,27545 | Jump if so. | ||||||||||||
27537 | LD A,61 | Wall tile (INK 5). | ||||||||||||
27539 | JR 27555 | |||||||||||||
27541 | LD A,56 | Arrow tile (INK 0). | ||||||||||||
27543 | JR 27555 | |||||||||||||
27545 | LD A,63 | Tunnel entrance (INK 7). | ||||||||||||
27547 | JR 27555 | |||||||||||||
27549 | LD A,62 | Blank tile (INK 6). | ||||||||||||
27551 | JR 27555 | |||||||||||||
27553 | LD A,60 | Flower (INK 4). | ||||||||||||
27555 | LD (HL),A | Set the attribute byte. | ||||||||||||
27556 | INC HL | Move HL' along the attribute file. | ||||||||||||
27557 | DEC BC | Decrement the tile counter. | ||||||||||||
27558 | LD A,B | Have we finished setting the attribute bytes yet? | ||||||||||||
27559 | OR C | |||||||||||||
27560 | JR NZ,27519 | Jump back if not. | ||||||||||||
27562 | EXX | Exchange registers. | ||||||||||||
The attribute bytes have been set. Time to draw the maze tiles.
|
||||||||||||||
27563 | PUSH HL | Save the maze layout pointer. | ||||||||||||
27564 | LD A,(HL) | Pick up a tile identifier in A. | ||||||||||||
27565 | LD H,0 | Point IX at the graphic data for the corresponding tile (at 31735+8*A). | ||||||||||||
27567 | LD L,A | |||||||||||||
27568 | ADD HL,HL | |||||||||||||
27569 | ADD HL,HL | |||||||||||||
27570 | ADD HL,HL | |||||||||||||
27571 | LD IX,31735 | |||||||||||||
27575 | EX DE,HL | |||||||||||||
27576 | ADD IX,DE | |||||||||||||
27578 | EX DE,HL | |||||||||||||
27579 | LD L,8 | Draw the tile. | ||||||||||||
27581 | LD A,(IX+0) | |||||||||||||
27584 | LD (DE),A | |||||||||||||
27585 | INC D | |||||||||||||
27586 | INC IX | |||||||||||||
27588 | DEC L | |||||||||||||
27589 | JR NZ,27581 | |||||||||||||
27591 | INC E | Point DE at the display file address for the next tile. | ||||||||||||
27592 | JR Z,27598 | |||||||||||||
27594 | LD A,D | |||||||||||||
27595 | SUB 8 | |||||||||||||
27597 | LD D,A | |||||||||||||
27598 | POP HL | Restore the maze layout pointer to HL. | ||||||||||||
27599 | INC HL | Move along to the next maze tile identifier. | ||||||||||||
27600 | DEC BC | Decrement the tile counter. | ||||||||||||
27601 | LD A,B | Have we drawn all the tiles yet? | ||||||||||||
27602 | OR C | |||||||||||||
27603 | JR NZ,27563 | Jump back if not. | ||||||||||||
27605 | RET |
Prev: 27464 | Up: Map |