Prev: C4EB Up: Map Next: C556
C520: Move Player To Room
Used by the routine at ChangeRoom.
Input
A Destination room ID
MovePlayerToRoom C520 LD C,A Load the destination room ID into C.
C521 LD A,($BD30) B=*Count_ScenicEvents.
C524 LD B,A
C525 LD A,($BCCB) A=CurrentRoom.
C528 LD HL,$BC78 HL=*Table_ScenicEventLocations.
C52B JR FindScenicEvents Jump to FindScenicEvents.
FindScenicEvents_Loop C52D INC HL Increment the scenic event location pointer by one.
FindScenicEvents C52E CP (HL) Jump to MovePlayerToRoom_0 if A is not equal to *HL.
C52F JR NZ,MovePlayerToRoom_0
C531 LD (HL),C Write C to *HL.
MovePlayerToRoom_0 C532 DJNZ FindScenicEvents_Loop Decrease counter by one and loop back to FindScenicEvents_Loop until counter is zero.
Sets the destination room ID as the new current room ID.
C534 LD A,C Write C to *CurrentRoom.
C535 LD ($BCCB),A
C538 LD A,($BC6F) A=*Flag_EventState.
C53B AND A Jump to MovePlayerToRoom_4 if A is zero.
C53C JR Z,MovePlayerToRoom_4
C53E LD B,$08 B=08.
C540 LD HL,$BC70 HL=BC70.
C543 LD C,A C=A.
C544 JR MovePlayerToRoom_2 Jump to MovePlayerToRoom_2.
MovePlayerToRoom_1 C546 INC HL Increment HL by one.
MovePlayerToRoom_2 C547 SRL C Shift C right.
C549 JR NC,MovePlayerToRoom_3 Jump to MovePlayerToRoom_3 if HL is greater than or equal to A.
C54B LD A,(HL) A=*HL.
C54C PUSH HL Stash HL and BC on the stack.
C54D PUSH BC
C54E CALL Handler_UpdateItemEventCurrentRoom Call Handler_UpdateItemEventCurrentRoom.
C551 POP BC Restore BC and HL from the stack.
C552 POP HL
MovePlayerToRoom_3 C553 DJNZ MovePlayerToRoom_1 Decrease counter by one and loop back to MovePlayerToRoom_1 until counter is zero.
MovePlayerToRoom_4 C555 RET Return.
View the equivalent code in Warlord.
Prev: C4EB Up: Map Next: C556