![]() |
Routines |
| Prev: B530 | Up: Map | Next: B5C4 |
|
||||||||
| B54C | XOR A | Set A214 to playing sound for Rex weapon | ||||||
| B54D | LD ($A214),A | |||||||
| B550 | LD IY,$5B60 | Set IY to the address for the rex projectile configuration | ||||||
| B554 | LD E,$1E | Set E to the max number of projectiles | ||||||
| B556 | LD A,($A1AC) | Set A to the in use Rex weapon | ||||||
| B559 | OR A | is basic laser? | ||||||
| B55A | JP Z,$B565 | Jump forward if so | ||||||
| B55D | CP $01 | is double fire? | ||||||
| B55F | JP Z,$B565 | Jump forward if so | ||||||
| B562 | JP $B56E | Jump to play sound | ||||||
| B565 | LD A,($A1AD) | Set E to max number of Rex projectile based on weapon energy level max num. projectiles = weapon energy level * 4 | ||||||
| B568 | SLA A | |||||||
| B56A | SLA A | |||||||
| B56C | INC A | |||||||
| B56D | LD E,A | |||||||
|
Check if there is a free slot for projectile and configure sound
|
||||||||
| B56E | DEC E | Set B to the number of projectiles to check for sound play | ||||||
| B56F | LD B,E | |||||||
| B570 | LD A,(IY+$06) | Set A to the projectile state | ||||||
| B573 | OR A | is projectile slot free? | ||||||
| B574 | JP Z,$B583 | Jump to play sound | ||||||
| B577 | LD DE,$000F | Point IY to the next projectile | ||||||
| B57A | ADD IY,DE | |||||||
| B57C | DJNZ $B570 | Jump until all projectiles handled | ||||||
| B57E | LD IY,$03E8 | No slot available, point IY to rom address | ||||||
| B582 | RET | |||||||
|
Configure sound
|
||||||||
| B583 | PUSH HL | Save HL | ||||||
| B584 | LD A,($A214) | playing sound for enemy weapon? | ||||||
| B587 | OR A | |||||||
| B588 | JP NZ,$B5A8 | Jump if so | ||||||
| B58B | LD DE,$D4FB | Set DE to the address sound data for basic laser, double fire and multiple | ||||||
| B58E | LD A,($A1AC) | weapon in use is laser? | ||||||
| B591 | CP $02 | |||||||
| B593 | CALL Z,$B5A0 | Configure address for his sound data | ||||||
| B596 | CP $04 | weapon in use is spray? | ||||||
| B598 | CALL Z,$B5A4 | Configure address for his sound data | ||||||
| B59B | CALL $D37F | Configure sound channel and mixer register | ||||||
| B59E | POP HL | Restore HL | ||||||
| B59F | RET | |||||||
|
Configure address for laser sound data
|
||||||||
| B5A0 | LD DE,$D50D | |||||||
| B5A3 | RET | |||||||
|
Configure address for spray sound data
|
||||||||
| B5A4 | LD DE,$D516 | |||||||
| B5A7 | RET | |||||||
|
Configure address for enemy sound data
|
||||||||
| B5A8 | POP HL | Restore HL | ||||||
| B5A9 | LD A,($D5DA) | sound channel 3 in use? | ||||||
| B5AC | CP $FF | |||||||
| B5AE | RET NZ | Return if so | ||||||
| B5AF | LD DE,$D504 | Configure address for enemy sound data | ||||||
| B5B2 | CALL $D37F | Configure sound channel and mixer register | ||||||
| B5B5 | RET | |||||||
| B5B6 | LD A,$01 | Set A214 to playing enemy sound data | ||||||
| B5B8 | LD ($A214),A | |||||||
| B5BB | LD IY,$5D22 | Set IY to the address for the enemy projectile configuration | ||||||
| B5BF | LD E,$14 | Set E to the max number of projectiles | ||||||
| B5C1 | JP $B56E | Jump back and check if sound need to be played | ||||||
| Prev: B530 | Up: Map | Next: B5C4 |