![]()  | 
Routines | 
| Prev: AFEB | Up: Map | Next: B05E | 
| 
 
Used by the routine at ChangeRoom.
 
  | 
||||||||
| MovePlayerToRoom | B01F | LD C,A | Load the destination room ID into C. | |||||
| B020 | LD A,($A7EE) | Jump to SetNewCurrentRoomID if *Count_ScenicEvents is zero. | ||||||
| B023 | AND A | |||||||
| B024 | JR Z,SetNewCurrentRoomID | |||||||
| B026 | LD B,A | B=Count_ScenicEvents. | ||||||
| B027 | LD HL,($A7E2) | HL=*Pointer_ScenicEventLocations. | ||||||
| B02A | JR FindScenicEvents | Jump to FindScenicEvents. | ||||||
| FindScenicEvents_Loop | B02C | INC HL | Increment the scenic event location pointer by one. | |||||
| FindScenicEvents | B02D | LD A,(HL) | Load the next scenic event location into A. | |||||
| B02E | CALL ValidateItemPresent | Call ValidateItemPresent. | ||||||
| B031 | JR NZ,FindScenicEvents_Next | Jump to FindScenicEvents_Next if the scenic event is not at this location. | ||||||
| 
 
A scenic event matched this location!
 
 | 
||||||||
| B033 | PUSH HL | Stash the scenic event location pointer and scenic events counter on the stack. | ||||||
| B034 | PUSH BC | |||||||
| B035 | LD B,(HL) | Load the current scenic event location into B. | ||||||
| B036 | CALL Handler_UpdateItemLocation | Call Handler_UpdateItemLocation. | ||||||
| B039 | POP BC | Restore the scenic events counter and scenic event location pointer from the stack. | ||||||
| B03A | POP HL | |||||||
| FindScenicEvents_Next | B03B | 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.
 
 | 
||||||||
| SetNewCurrentRoomID | B03D | LD A,C | Write C to *CurrentRoom. | |||||
| B03E | LD ($A7C3),A | |||||||
| B041 | LD A,($A787) | Return if *Flag_EventStates is zero. | ||||||
| B044 | AND A | |||||||
| B045 | RET Z | |||||||
| B046 | LD B,$08 | B=08. | ||||||
| B048 | LD HL,$A788 | HL=A788. | ||||||
| B04B | LD C,A | C=A. | ||||||
| B04C | JR MovePlayerToRoom_1 | Jump to MovePlayerToRoom_1. | ||||||
| MovePlayerToRoom_0 | B04E | INC HL | Increment HL by one. | |||||
| MovePlayerToRoom_1 | B04F | SRL C | Shift C right. | |||||
| B051 | JR NC,MovePlayerToRoom_2 | Jump to MovePlayerToRoom_2 if HL is greater than or equal to A. | ||||||
| B053 | LD A,(HL) | A=*HL. | ||||||
| B054 | PUSH HL | Stash HL and BC on the stack. | ||||||
| B055 | PUSH BC | |||||||
| B056 | CALL Handler_UpdateItemEventCurrentRoom | Call Handler_UpdateItemEventCurrentRoom. | ||||||
| B059 | POP BC | Restore BC and HL from the stack. | ||||||
| B05A | POP HL | |||||||
| MovePlayerToRoom_2 | B05B | DJNZ MovePlayerToRoom_0 | Decrease counter by one and loop back to MovePlayerToRoom_0 until counter is zero. | |||||
| B05D | RET | Return. | ||||||
| 
 
View the equivalent code in The Jewels Of Babylon.
 
 | 
||||||||
| Prev: AFEB | Up: Map | Next: B05E |