Prev: 9DE8 Up: Map Next: 9E5C
9E01: Sound FX command 5,8
Tone.
Input
B Channel index + 1
IX Sound fx data
sound_fx_command_5_8 9E01 LD HL,(sound_fx_data_buffer_4_34) Get byte 3-4 of sound fx data 4, e.g. $8080
9E04 RES 7,H $0080
9E06 LD DE,(sound_fx_data_buffer_4_12) Get byte 1-2 of sound fx data 4, e.g. $00DC
9E0A ADD HL,DE Add them, e.g. $005C
9E0B LD A,H $00
9E0C LD (sound_fx_data_buffer_4_34),HL Save again
9E0F SET 7,(IX+$04) $80
9E13 CP $04 If >= 4
9E15 JR NC,sound_fx_command_5_8_0 Then skip ahead
9E17 LD DE,(sound_fx_data_buffer_4_67) Else get byte 6-7, e.g. $03C0
9E1B AND A Clear carry
9E1C SBC HL,DE Subtract it
9E1E RET C Return if de > hl
sound_fx_command_5_8_0 9E1F LD (IX+$03),$80 Set byte 3-4
9E23 LD (IX+$04),$80 ...
9E27 EX DE,HL
9E28 LD DE,$0008 Subtract 8
9E2B AND A ...
9E2C SBC HL,DE ...
9E2E LD (sound_fx_data_buffer_4_67),HL Set byte 6-7
9E31 LD A,H
9E32 AND A
9E33 JR NZ,sound_fx_command_5_8_1
9E35 LD A,L
9E36 CP $EA
9E38 JR NC,sound_fx_command_5_8_1
9E3A LD A,(IX+$05)
9E3D CP $85
9E3F JP NZ,current_sound_fx_done Sound FX done
9E42 LD C,$09 Sound index
9E44 PUSH BC
9E45 CALL play_sound_fx_2 Play sound 9
9E48 POP BC
9E49 RET
sound_fx_command_5_8_1 9E4A LD DE,$0080
9E4D AND A Clear carry
9E4E SBC HL,DE
9E50 SRL H Divide HL by 4
9E52 RR L ...
9E54 SRL H ...
9E56 RR L ...
9E58 LD (sound_fx_data_buffer_4_12),HL Set byte 1-2
9E5B RET
Prev: 9DE8 Up: Map Next: 9E5C