![]() |
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 |