![]() |
Routines |
Prev: D244 | Up: Map | Next: D338 |
Used by the routine at CFB5.
|
||||
D24E | LD (IX+$0C),$00 | Set question to not visble | ||
D252 | PUSH IX | Save IX and BC | ||
D254 | PUSH BC | |||
D255 | CALL $D36F | Reset sound volume chanels | ||
D258 | CALL $D63B | Copy screen display file into room graphic data buffer | ||
D25B | LD BC,$4E20 | SET BC = 20.000 | ||
D25E | CALL $C94E | Wait some time ~1s (128 t-states 20.000 times) | ||
D261 | LD IX,$ABFE | Point IX to the text defintion for SPEED UP | ||
D265 | LD B,$01 | Set B to the number of rows to draw | ||
D267 | CALL $A2E6 | Draw the windows into the display file | ||
D26A | LD HL,$1CE8 | Set A216 the Bonus Windows Loop Counter (7200 loops) | ||
D26D | LD ($A216),HL | |||
D270 | CALL $A51D | Set A a random number between 1-4 | ||
D273 | AND $03 | |||
D275 | INC A | |||
D276 | LD ($A208),A | Set A208 to the number of bonus screen to show (0-speed up 1-shield loss 2-1000 bonus 3-energy loss 4-100 rapid shots) | ||
D279 | SLA A | Set into IX the address of the text defintion corresponding to the number of bonus | ||
D27B | LD E,A | |||
D27C | LD D,$00 | |||
D27E | LD HL,$D244 | |||
D281 | ADD HL,DE | |||
D282 | LD E,(HL) | |||
D283 | INC HL | |||
D284 | LD D,(HL) | |||
D285 | PUSH DE | |||
D286 | POP IX | |||
D288 | CALL $A4AF | Print the line of text into the windows | ||
D28B | INC IX | Increment pointer for the next bonus line | ||
D28D | LD BC,($A216) | Set BC to the Bonus Windows Counter | ||
D291 | PUSH BC | Save BC | ||
D292 | CALL $A61F | Check FIRE pressed | ||
D295 | POP BC | Restore BC | ||
D296 | JP Z,$D2C7 | If FIRE key pressed jump to handle the bonus selected | ||
D299 | DEC BC | Decrement counter | ||
D29A | LD A,B | Jump back and wait for keypressed if counter has not reached zero | ||
D29B | OR C | |||
D29C | JP NZ,$D291 | |||
D29F | LD HL,($A216) | Reset loop counter (substract 200 loops to the previous counter) | ||
D2A2 | LD DE,$00C8 | |||
D2A5 | AND A | |||
D2A6 | SBC HL,DE | |||
D2A8 | LD ($A216),HL | |||
D2AB | LD A,H | If loop counter less than 256 then jump to handle the bonus on screen | ||
D2AC | OR A | |||
D2AD | JP Z,$D2C7 | |||
D2B0 | LD A,($A208) | Increment the bonus windows number | ||
D2B3 | INC A | |||
D2B4 | LD ($A208),A | |||
D2B7 | CP $05 | if bonus number equals 5 then point to the first bonus | ||
D2B9 | JP NZ,$D288 | |||
D2BC | LD IX,$ABFE | |||
D2C0 | XOR A | |||
D2C1 | LD ($A208),A | |||
D2C4 | JP $D288 | Jump back and show the next bonus | ||
handle bonus selected
|
||||
D2C7 | LD A,($A208) | Check bonus slected | ||
D2CA | OR A | is speed up? | ||
D2CB | JP Z,$D2F5 | Jump to handle speed up bonus | ||
D2CE | CP $01 | is shield loss? | ||
D2D0 | JP Z,$D305 | Jump to handle shield loss | ||
D2D3 | CP $02 | is 1000 bouns points? | ||
D2D5 | JP Z,$D310 | Jump to handle bonus points | ||
D2D8 | CP $03 | is energy loss? | ||
D2DA | JP Z,$D31C | handle energy loss | ||
D2DD | CP $04 | is rapid shots? | ||
D2DF | JP Z,$D328 | handle rapid shots | ||
return to normal game
|
||||
D2E2 | LD BC,$4E20 | Set BC to 20.000 | ||
D2E5 | CALL $C94E | Wait some time ~1s (128 t-states 20.000 times) | ||
D2E8 | CALL $D346 | Reset sound data buffer | ||
D2EB | POP BC | Restore BC and IX | ||
D2EC | POP IX | |||
D2EE | CALL $A432 | Copy room graphic buffer to display file | ||
D2F1 | CALL $C932 | Copy room color attribute buffer to attribute file | ||
D2F4 | RET | |||
handle speed up
|
||||
D2F5 | LD A,$01 | Set Rex fast speed | ||
D2F7 | LD ($A20B),A | |||
D2FA | LD A,$C8 | Set speed up duration to 200 | ||
D2FC | LD ($A20C),A | |||
D2FF | LD HL,$ABFE | Set HL to point to the bonus text definition address | ||
D302 | JP $D2E2 | Jump back and return to normal game | ||
handle shield loss
|
||||
D305 | LD L,$14 | loss quantity to L = 20 | ||
D307 | CALL $98EC | Handle shield loss | ||
D30A | LD HL,$AC11 | Set HL to point to the bonus text definition address | ||
D30D | JP $D2E2 | Jump back and return to normal game | ||
handle bonus points
|
||||
D310 | LD DE,$000A | Set A to the bonus points obtained (*100) | ||
D313 | CALL $9945 | Increment score | ||
D316 | LD HL,$AC24 | Set HL to point to the bonus text definition address | ||
D319 | JP $D2E2 | Jump back and return to normal game | ||
handle energy loss
|
||||
D31C | CALL $BAB8 | Handle double weapon energy loss | ||
D31F | CALL $A34D | Draw HUD | ||
D322 | LD HL,$AC37 | Set HL to point to the bonus text definition address | ||
D325 | JP $D2E2 | Jump back and return to normal game | ||
handle rapid shots
|
||||
D328 | LD A,$01 | Set rapid shots | ||
D32A | LD ($A1D9),A | |||
D32D | LD A,$64 | Set number of rapid shots | ||
D32F | LD ($A1DA),A | |||
D332 | LD HL,$AC4A | Set HL to point to the bonus text definition address | ||
D335 | JP $D2E2 | Jump back and return to normal game |
Prev: D244 | Up: Map | Next: D338 |