![]()  | 
Routines | 
| Prev: AC86 | Up: Map | Next: ACBD | 
| 
 
Used by the routine at GameStart.
 
Handles checking if a scenic event should occur ... and also, handles jumping to the correct related scenic event routine to action it.
 
 | 
||||
| Handler_ScenicEvents | AC88 | LD A,($BBCF) | A=*Count_ScenicEvents. | |
| AC8B | AND A | Return if *Count_ScenicEvents is zero. | ||
| AC8C | RET Z | |||
| AC8D | LD B,A | B=A. | ||
| AC8E | LD HL,$B6BA | HL=Table_ScenicEventLocations2. | ||
| AC91 | JR ScenicEvents_Process | Jump to ScenicEvents_Process. | ||
| Handler_ScenicEvents_Loop | AC93 | INC HL | Increment HL by one. | |
| ScenicEvents_Process | AC94 | LD A,(HL) | A=*HL. | |
| AC95 | CALL ValidateItemPresent | Call ValidateItemPresent. | ||
| AC98 | JR NZ,ScenicEvents_Next | Jump to ScenicEvents_Next if HL is not equal to A. | ||
| 
 
An event was found to be processed!
 
First though, stash away the current pointer and index in the search, so this can be resumed later.
 
 | 
||||
| AC9A | LD ($AC84),HL | Write HL to *TempStore_TablePointer. | ||
| AC9D | LD ($AC86),BC | Write BC to *TempStore_TableIndex. | ||
| 
 
Calculate the event index and get the event handler.
 
 | 
||||
| ACA1 | LD A,($BBCF) | E=*Count_ScenicEvents-B. | ||
| ACA4 | SUB B | |||
| ACA5 | LD E,A | |||
| ACA6 | LD IX,$BBBD | Load IX with JumpTable_ScenicEvents which contains a pointer to the scenic event rountines jump table. | ||
| ACAA | CALL GetTableEntry | Call GetTableEntry. | ||
| ACAD | PUSH HL | IX=HL (using the stack). | ||
| ACAE | POP IX | |||
| ACB0 | CALL $A6FF | Call A6FF. | ||
| 
 
This is the return point after the handler has finished executing.
 
 | 
||||
| ScenicEvents_PostProcessing | ACB3 | LD HL,($AC84) | Restore *TempStore_TablePointer to HL. | |
| ACB6 | LD BC,($AC86) | Restore *TempStore_TableIndex to BC. | ||
| ScenicEvents_Next | ACBA | DJNZ Handler_ScenicEvents_Loop | Decrease the event counter by one and loop back to Handler_ScenicEvents_Loop until all events have been processed. | |
| ACBC | RET | Return. | ||
| 
 
View the equivalent code in; 
 
 | 
||||
| Prev: AC86 | Up: Map | Next: ACBD |