Prev: D682 Up: Map Next: D6DB
D68C: Play sound channels
Used by the routines at 947A and A915.
D68C LD B,$03 Set B the number of channels to play
D68E LD IX,$D832 Set IX to address for channel #1 sound data
D692 LD D,$00 Set sound register for fine pitch on channel #1
D694 LD A,$01 Set channel volume #1
D696 LD ($D857),A
D699 PUSH BC Save BC and DE
D69A PUSH DE
D69B CALL $D6DB Configure next tone/noise data for current channel
D69E POP DE
D69F PUSH DE
D6A0 LD A,(IX+$00) Jump to next channel if this channel is disabled
D6A3 CP $FF
D6A5 JP Z,$D6C8
D6A8 LD A,(IX+$06) Jump forward if noise sound
D6AB CP $00
D6AD JP NZ,$D6C0
play note
D6B0 LD E,(IX+$04) Send command for fine pitch
D6B3 CALL $D759
D6B6 INC D Increase register number
D6B7 LD E,(IX+$05) Send command for coarse pitch
D6BA CALL $D759
D6BD JP $D6C8 Jump forward and play next channel
play noise
D6C0 LD E,(IX+$04) Send command for noise pitch
D6C3 LD D,$06
D6C5 CALL $D759
play next channel
D6C8 LD BC,$0008 Point IX to the next channel data buffer
D6CB ADD IX,BC
D6CD POP DE Restore DE and BC
D6CE POP BC
D6CF INC D Increment register for next channel
D6D0 INC D
D6D1 LD A,($D857) Increment volume channel
D6D4 INC A
D6D5 LD ($D857),A
D6D8 DJNZ $D699 Jump back and play next channel
D6DA RET
Prev: D682 Up: Map Next: D6DB