Routines |
Prev: 61710 | Up: Map | Next: 62154 |
Used by the routine at RunHandlers.
|
||||
Just return if the number of active helicopters is already at the maximum amount for this level.
|
||||
Handler_SpawnHelicopters | 62091 | LD A,(53778) | Return if *NumberActiveHelicopters is equal to *MaxHelicopterCount. | |
62094 | LD B,A | |||
62095 | LD A,(54261) | |||
62098 | CP B | |||
62099 | RET Z | |||
Add a hint of randomness to whether we proceed or not. Roughly 50% chance.
|
||||
62100 | CALL RandomNumber | A=random number between 0-255. | ||
62103 | CP 128 | Return if A is higher than 128. | ||
62105 | RET NC | |||
Loop to find an empty slot.
|
||||
62106 | LD HL,53906 | HL=53906 (Table_Helicopters-3). | ||
Handler_SpawnHelicopters_FindSlot | 62109 | INC HL | Move the table pointer to the next helicopter table data. | |
62110 | INC HL | |||
62111 | INC HL | |||
62112 | LD A,(HL) | Jump to Handler_SpawnHelicopters_FindSlot if this helicopter is already active. | ||
62113 | AND A | |||
62114 | JR NZ,Handler_SpawnHelicopters_FindSlot | |||
50/50 chance of jumping to Handler_SpawnForegroundHelicopter.
|
||||
62116 | CALL RandomNumber | Get a random number of either zero or one. | ||
62119 | AND %00000001 | |||
62121 | JR Z,Handler_SpawnForegroundHelicopter | Jump to Handler_SpawnForegroundHelicopter if the result is zero. | ||
Creates a background helicopter.
|
||||
62123 | LD (HL),64 | Write 64 (background) to helicopter state. | ||
62125 | INC HL | Increment the helicopter table pointer by one. | ||
62126 | LD (HL),252 | Write 252 to helicopter X position. | ||
62128 | JR Handler_Helicopter_SetYPos | Jump to Handler_Helicopter_SetYPos. | ||
Creates a foreground helicopter.
|
||||
Handler_SpawnForegroundHelicopter | 62130 | LD (HL),128 | Write 128 (foreground) to helicopter state. | |
62132 | INC HL | Increment the helicopter table pointer by one. | ||
62133 | LD (HL),36 | Write 36 to helicopter X position. | ||
Handler_Helicopter_SetYPos | 62135 | INC HL | Increment the helicopter table pointer by one. | |
62136 | LD (HL),3 | Write 3 to helicopter Y position. | ||
25% chance of jumping to Helicopter_Update_Count.
|
||||
62138 | CALL RandomNumber | Get a random number between 0-3. | ||
62141 | AND %00000011 | |||
62143 | JR Z,Helicopter_Update_Count | Jump to Helicopter_Update_Count if the random number is 0. | ||
62145 | LD (HL),A | Write the random number to helicopter Y position. | ||
Keep track of the number of active helicopters.
|
||||
Helicopter_Update_Count | 62146 | LD A,(54261) | Increment *NumberActiveHelicopters by one. | |
62149 | INC A | |||
62150 | LD (54261),A | |||
62153 | RET | Return. |
Prev: 61710 | Up: Map | Next: 62154 |