![]()  | 
Routines | 
| Prev: EF32 | Up: Map | Next: F03A | 
| 
 
Used by the routines at MovePlayer, Action_Get, Action_Climb, Action_Enter, Action_Row and GameStart.
 
  | 
||||||||
| ChangeRoom | EF54 | LD HL,$BC6F | HL=Flag_EventState. | |||||
| EF57 | BIT 0,(HL) | Jump to ChangeRoom_0 if bit 0 of *HL is unset. | ||||||
| EF59 | JR Z,ChangeRoom_0 | |||||||
| EF5B | LD HL,$BC67 | Initialise Counter_Crab to 06. | ||||||
| EF5E | LD (HL),$06 | |||||||
| EF60 | CP $2C | Jump to ChangeRoom_0 if A is not equal to 2C. | ||||||
| EF62 | JR NZ,ChangeRoom_0 | |||||||
| EF64 | LD HL,$BC6F | Reset bit 0 of *Flag_EventState. | ||||||
| EF67 | RES 0,(HL) | |||||||
| EF69 | PUSH AF | Stash AF on the stack. | ||||||
| 
 
Spawn the giant crab in 
The Rockpool.
 
 | 
||||||||
| EF6A | LD BC,$2930 | Call Handler_UpdateObjectLocation using item "A giant crab" to create it in The Rockpool. | ||||||
| EF6D | CALL Handler_UpdateObjectLocation | |||||||
| EF70 | POP AF | Restore AF from the stack. | ||||||
| EF71 | LD HL,$EC27 | Write 2F to *EC27 to open up westbound access to The Secluded Beach from The Canyon. | ||||||
| EF74 | LD (HL),$2F | |||||||
| EF76 | LD HL,$EC2A | Write 30 to *EC2A to open up northbound access to The Rockpool from The Secluded Beach. | ||||||
| EF79 | LD (HL),$30 | |||||||
| ChangeRoom_0 | EF7B | CALL MovePlayerToRoom | Call MovePlayerToRoom. | |||||
| EF7E | LD E,$00 | E=00. | ||||||
| EF80 | CALL Handler_DisplayRoomImage | Call Handler_DisplayRoomImage. | ||||||
| EF83 | LD A,($BCCB) | Jump to ChangeRoom_1 if *CurrentRoom is not room 30: " The Rockpool". | ||||||
| EF86 | CP $30 | |||||||
| EF88 | JR NZ,ChangeRoom_1 | |||||||
| EF8A | LD A,$29 | Call ValidateItemPresent with "A giant crab". | ||||||
| EF8C | CALL ValidateItemPresent | |||||||
| EF8F | JR NZ,ChangeRoom_1 | Jump to ChangeRoom_1 if A is not equal to 29. | ||||||
| EF91 | LD HL,$BC6F | Set bit 0 of *Flag_EventState. | ||||||
| EF94 | SET 0,(HL) | |||||||
| EF96 | XOR A | Write 00 to *EC27 to remove access to The Secluded Beach from The Canyon. | ||||||
| EF97 | LD ($EC27),A | |||||||
| EF9A | LD ($EC2A),A | Write 00 to *EC2A to remove access to The Rockpool from The Secluded Beach. | ||||||
| EF9D | LD HL,$BC66 | Set bit 0 of *Flag_TurnBasedEventState which relates to the crab being active. | ||||||
| EFA0 | SET 0,(HL) | |||||||
| EFA2 | LD A,$06 | Write 06 to *Counter_Crab. | ||||||
| EFA4 | LD ($BC67),A | |||||||
| ChangeRoom_1 | EFA7 | LD A,$2B | Call ValidateItemPresent with "A giant octopus". | |||||
| EFA9 | CALL ValidateItemPresent | |||||||
| EFAC | JR NZ,ChangeRoom_2 | Jump to ChangeRoom_2 if "A giant octopus" isn't in the current room. | ||||||
| EFAE | LD HL,$BC66 | Set bit 1 of *Flag_TurnBasedEventState which relates to the tentacle being active. | ||||||
| EFB1 | SET 1,(HL) | |||||||
| EFB3 | LD A,$05 | Write 05 to *Counter_Tentacle. | ||||||
| EFB5 | LD ($BC68),A | |||||||
| ChangeRoom_2 | EFB8 | LD A,$2A | Call ValidateItemPresent with "A lion". | |||||
| EFBA | CALL ValidateItemPresent | |||||||
| EFBD | JR NZ,ChangeRoom_3 | Jump to ChangeRoom_3 if "A lion" isn't in the current room. | ||||||
| EFBF | LD HL,$BC66 | Set bit 3 of *Flag_TurnBasedEventState which relates to the lion being active. | ||||||
| EFC2 | SET 3,(HL) | |||||||
| EFC4 | LD A,$07 | Write 07 to *Counter_Lion. | ||||||
| EFC6 | LD ($BC6A),A | |||||||
| ChangeRoom_3 | EFC9 | LD HL,$E8C1 | Call CheckActiveScenicEvents with Data_ItemGroup_Crocodile. | |||||
| EFCC | CALL CheckActiveScenicEvents | |||||||
| EFCF | JR NZ,ChangeRoom_4 | Jump to ChangeRoom_4 if A is not equal to 07. | ||||||
| EFD1 | LD HL,$BC66 | Set bit 4 of *Flag_TurnBasedEventState which relates to the crocodile being active. | ||||||
| EFD4 | SET 4,(HL) | |||||||
| EFD6 | LD A,$0B | Write 0B to *Counter_Crocodile. | ||||||
| EFD8 | LD ($BC6B),A | |||||||
| ChangeRoom_4 | EFDB | LD A,$18 | Call ValidateItemPresent with "Surrounded by natives". | |||||
| EFDD | CALL ValidateItemPresent | |||||||
| EFE0 | JR NZ,ChangeRoom_5 | Jump to ChangeRoom_5 if "Surrounded by natives" isn't in the current room. | ||||||
| EFE2 | LD HL,$BC66 | Set bit 5 of *Flag_TurnBasedEventState which relates to the cannibals being active. | ||||||
| EFE5 | SET 5,(HL) | |||||||
| EFE7 | LD A,$09 | Initialise the turn counter at *Counter_Cannibals with 09. | ||||||
| EFE9 | LD ($BC6C),A | |||||||
| ChangeRoom_5 | EFEC | LD A,($BCCB) | Jump to ChangeRoom_6 if *CurrentRoom is not room 03: " Your Ship". | |||||
| EFEF | CP $03 | |||||||
| EFF1 | JR NZ,ChangeRoom_6 | |||||||
| EFF3 | LD A,$1D | Call ValidateItemPresent with "The Jewels of Babylon". | ||||||
| EFF5 | CALL ValidateItemPresent | |||||||
| EFF8 | JR NZ,ChangeRoom_6 | Jump to ChangeRoom_6 if "The Jewels of Babylon" isn't in the current room. | ||||||
| EFFA | POP HL | Restore HL and HL from the stack. | ||||||
| EFFB | POP HL | |||||||
| EFFC | JP GameComplete | Jump to GameComplete. | ||||||
| ChangeRoom_6 | EFFF | LD A,($BCCB) | Jump to ChangeRoom_7 if *CurrentRoom is not room 02: " The Open Sea". | |||||
| F002 | CP $02 | |||||||
| F004 | JR NZ,ChangeRoom_7 | |||||||
| F006 | LD HL,$BC54 | Jump to ChangeRoom_7 if bit 5 of *GameFlags_Help is set. | ||||||
| F009 | BIT 5,(HL) | |||||||
| F00B | JR NZ,ChangeRoom_7 | |||||||
| F00D | SET 5,(HL) | Set bit 5 of *HL. | ||||||
| F00F | LD HL,$BC66 | Set bit 7 of *Flag_TurnBasedEventState which relates to the wave being active. | ||||||
| F012 | SET 7,(HL) | |||||||
| F014 | LD A,$05 | Write 05 to *Counter_Wave. | ||||||
| F016 | LD ($BC6E),A | |||||||
| ChangeRoom_7 | F019 | LD A,($BCCB) | Jump to ChangeRoom_8 if *CurrentRoom is not room 6C: " The Bridge". | |||||
| F01C | CP $6C | |||||||
| F01E | JR NZ,ChangeRoom_8 | |||||||
| F020 | LD A,$1D | Call ValidateItemPresent with "The Jewels of Babylon". | ||||||
| F022 | CALL ValidateItemPresent | |||||||
| F025 | JR NZ,ChangeRoom_8 | Jump to ChangeRoom_8 if "The Jewels of Babylon" isn't in the current room. | ||||||
| 
 
Print "The bridge begins to shake...".
 
 | 
||||||||
| F027 | LD HL,$E5CF | HL=Messaging_TheBridgeBeginsToShake. | ||||||
| F02A | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||||||
| F02D | POP HL | Restore HL from the stack. | ||||||
| 
 
Bad luck!
 
 | 
||||||||
| F02E | LD HL,$EDD7 | Switch GameOver onto the stack so the next return actions a "game over". | ||||||
| F031 | EX (SP),HL | |||||||
| 
 
Print "Suddenly,it collapses.".
 
 | 
||||||||
| F032 | LD HL,$E5ED | HL=Messaging_SuddenlyItCollapses. | ||||||
| F035 | CALL PausePrintStringAndScroll | Call PausePrintStringAndScroll. | ||||||
| F038 | RET | Return. | ||||||
| ChangeRoom_8 | F039 | RET | Return. | |||||
| Prev: EF32 | Up: Map | Next: F03A |