Prev: F5AD Up: Map Next: F6A6
F64D: See if Monty has picked up enough coal to open a blocking wall
Used by the routine at F7C7.
First, work out how much coal has been collected.
F64D XOR A Start the count of coal items at 0.
F64E LD HL,$964C Look at the buffer at 964D.
F651 LD B,$40 40 items to look at.
F653 INC HL Has the next bit of coal been collected?
F654 BIT 7,(HL)
F656 JR NZ,$F659 No, so move on.
F658 INC A Otherwise, increment the count of collected coal.
F659 DJNZ $F653 Loop back round to look at the next coal data.
F65B LD ($F7D5),A Set this as the number of collected coal pieces.
Now, get the wall flags.
F65E LD IX,$F7D1 Set IX to the wall flags at F7D1.
F662 CP $10 Have 16 pieces of coal being collected?
F664 JR Z,$F682 Jump if so.
F666 CP $20 Have 32?
F668 JR Z,$F68E Jump if so.
F66A CP $30 Have 48?
F66C JR Z,$F69A Jump if so.
F66E CP $40 Have 64?
F670 RET NZ Return if not.
Handle collecting 64 pieces of coal.
F671 LD A,($9649)
F674 CP $14
F676 JR NZ,$F67D
There are no walls in this room.
F678 SET 0,(IX+$00) Reset the flag and exit.
F67C RET
Handle collecting 64 pieces of coal (2).
F67D SET 2,(IX+$00)
F681 RET
Handle collecting 16 pieces of coal.
F682 LD A,($9649) Is Monty in room 6?
F685 CP $06
F687 JR Z,$F678 Exit if not.
F689 SET 5,(IX+$00) Set bit 5 (room 6)
F68D RET
Handle collecting 32 pieces of coal.
F68E LD A,($9649)
F691 CP $0B
F693 JR Z,$F678
F695 SET 4,(IX+$00)
F699 RET
Handle collectiong 48 pieces of coal.
F69A LD A,($9649)
F69D CP $0F
F69F JR Z,$F678
F6A1 SET 3,(IX+$00)
F6A5 RET
Prev: F5AD Up: Map Next: F6A6