Prev: 94C3 Up: Map Next: 952F
94D9: Move into a new room
Used by the routine at 940C.
94D9 LD IX,$8D52 Reset bit 3 in the room flags (8D52), so touching any nasty is fatal.
94DD RES 3,(IX+$00)
Test for moving left.
94E1 LD A,($5C7B) Is the X co-ordinate (5C7B) far left?
94E4 OR A
94E5 JR NZ,$94F6 Jump forward if not. Moving left.
94E7 LD HL,$C522 Get the next room to the left.
94EA LD A,(HL)
94EB LD ($9649),A Make this the current room (9649).
94EE LD A,$EE Set the position to the far right.
94F0 LD ($5C7B),A
94F3 JP $9526 Jump forward.
Test for moving right.
94F6 CP $F0 Is the X co-ordinate far right?
94F8 JR NZ,$9505 Jump forward if not.
Moving right.
94FA LD HL,$C523 Get the next room to the right.
94FD LD A,(HL)
94FE LD ($9649),A Make this the current room (9649).
9501 LD A,$02 Make the position the far left.
9503 JR $94F0 Jump back to set this.
Test for moving up.
9505 LD A,($5C7C) Is the Y co-ordinate (5C7C) at the top?
9508 CP $AF
950A JR C,$951B Jump forward if not.
Moving up.
950C LD HL,$C520 Get the next room up.
950F LD A,(HL)
9510 LD ($9649),A Make this the current room (9649).
9513 LD A,$23 Set the position to the bottom.
9515 LD ($5C7C),A
9518 JP $9526 Jump forward.
If the next room is not left, right or up, it must be down.
951B LD HL,$C521 Get the next room down.
951E LD A,(HL)
951F LD ($9649),A Make this the current room (9649).
9522 LD A,$AD Make the position the top.
9524 JR $9515 Jump back to set this.
9526 LD HL,($5C7B) Make the new position (5C7B, 5C7C) the one to reset back to if a life is lost (964B).
9529 LD ($964B),HL
952C JP $940C Enter the new room.
Prev: 94C3 Up: Map Next: 952F