Prev: 50411 Up: Map Next: 50518
50464: Move Player To Room
Used by the routine at ChangeRoom.
Input
A Destination room ID
MovePlayerToRoom 50464 LD C,A Load the destination room ID into C.
50465 LD A,(48432) B=*Count_ScenicEvents.
50468 LD B,A
50469 LD A,(48331) A=CurrentRoom.
50472 LD HL,48248 HL=*Table_ScenicEventLocations.
50475 JR FindScenicEvents Jump to FindScenicEvents.
FindScenicEvents_Loop 50477 INC HL Increment the scenic event location pointer by one.
FindScenicEvents 50478 CP (HL) Jump to MovePlayerToRoom_0 if A is not equal to *HL.
50479 JR NZ,MovePlayerToRoom_0
50481 LD (HL),C Write C to *HL.
MovePlayerToRoom_0 50482 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.
50484 LD A,C Write C to *CurrentRoom.
50485 LD (48331),A
50488 LD A,(48239) A=*Flag_EventState.
50491 AND A Jump to MovePlayerToRoom_4 if A is zero.
50492 JR Z,MovePlayerToRoom_4
50494 LD B,8 B=8.
50496 LD HL,48240 HL=48240.
50499 LD C,A C=A.
50500 JR MovePlayerToRoom_2 Jump to MovePlayerToRoom_2.
MovePlayerToRoom_1 50502 INC HL Increment HL by one.
MovePlayerToRoom_2 50503 SRL C Shift C right.
50505 JR NC,MovePlayerToRoom_3 Jump to MovePlayerToRoom_3 if HL is greater than or equal to A.
50507 LD A,(HL) A=*HL.
50508 PUSH HL Stash HL and BC on the stack.
50509 PUSH BC
50510 CALL Handler_UpdateItemEventCurrentRoom Call Handler_UpdateItemEventCurrentRoom.
50513 POP BC Restore BC and HL from the stack.
50514 POP HL
MovePlayerToRoom_3 50515 DJNZ MovePlayerToRoom_1 Decrease counter by one and loop back to MovePlayerToRoom_1 until counter is zero.
MovePlayerToRoom_4 50517 RET Return.
View the equivalent code in Warlord.
Prev: 50411 Up: Map Next: 50518