File: SFX PSG routine.txt - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

This is the routine that plays a SFX;
This routine is used for the in game sound fx (like shooting) <<<<<<<<<<<<

In SCC-BLAFFER I use ONLY channel 3 for PSG (drums) channel 1 and 2 are unused.
What do I need to change in the routine below to let it leave channel 3 untouched ?

;+----- Set all PSG regs.-----+ ;SEE (Sound Effects Editor)
SETPSG:
        LD IX,PSGREG
        LD E,0          ;Start reg.0
        INC HL          ;[skip event byte]

;

        LD B,3          ;First 6 reg. [sound frequency]
STPS.0: PUSH BC
        LD C,(HL)       ;reg. $00, $02 or $04           -> Fine tune : A,B & C channels
        INC HL
        LD B,(HL)       ;reg. $01, $03 or $05           -> Coarse tune : A,B & C channels
        BIT 7,(HL)      ;check and handle Tuning
        CALL NZ,TUNWUP
        BIT 6,(HL)
        CALL NZ,TUNWDW
        INC HL
        LD A,C
        CALL WRTPSG
        LD A,B
        AND $0F
        CALL WRTPSG
        POP BC
        DJNZ STPS.0

        LD A,(HL)       ;reg. $06 [Rustle frequency]       -> Noise channel ?
        INC HL
        BIT 7,A
        CALL NZ,TUN_UP
        BIT 6,A
        CALL NZ,TUN_DW
        AND $1F
        CALL WRTPSG

        LD A,(HL)       ;reg. $07 [set channel ON/OFF]       ->Mixer :/EN noise /EN A /EN B /EN C
        AND $3F
        OR $80          ;set bit 7 is necessary to write the PSG!! ---> pour SSG/YM2610 : idem ??? pas sur !
        INC HL
        CALL WRTPSG

        LD B,3          ;reg.  $08-$0A [Volume  Channels A,B & C]
STPS.1: PUSH BC
        LD A,(HL)
        INC HL
        BIT 5,A
        JP NZ,STPS.2    ;Volume pattern is set.
        LD C,A
        AND $0F
        BIT 7,C
        CALL NZ,TUN_UP
        BIT 6,C
        CALL NZ,VOL_DW
        CALL FIXVOL     ;                                               Volume est param�trable !!
STPS.2: AND $1F
        CALL WRTPSG
        POP BC
        DJNZ STPS.1

        LD B,3          ; reg $0B-$0D [volume effect] ->Volume envelope period fine tune/coarse tune & Volume envelop shape
STPS_2: LD A,(HL)
        INC HL
        CALL WRTPSG
        DJNZ STPS_2
        RET


; Tuning
;- byte
TUN_UP: ADD A,(IX)      ; Up
        RET
TUN_DW: SUB (IX)        ; Down
        NEG
        RET
;- word
TUNWUP: PUSH HL
        LD L,(IX)
        LD H,(IX+1)
        ADD HL,BC
        PUSH HL
        POP BC
        POP HL
        RET
TUNWDW: PUSH HL
        LD L,(IX)
        LD H,(IX+1)
        XOR A
        SBC HL,BC
        PUSH HL
        POP BC
        POP HL
        RET

; Volume Down
VOL_DW: AND $0F
        LD B,A
        LD A,(IX+0)
        SUB B
        RET NC
        XOR A
        RET


; Make relative volume (depending on "SEEVOL"
; In: A, volume
; Out: A, new volume [seevol - (15-volume)]
FIXVOL: AND $0F
        LD B,A
        LD A,15
        SUB B
        LD C,A
        LD A,(SEEVOL)
        AND $0F
        SUB C
        RET NC
        XOR A
        RET


; Write PSG (not ROM-BIOS compatible!)
; In: A, data
; E, port
; IX, PSG store table
; Out: E+1
; IX+1
WRTPSG: LD (IX),A
        INC IX
        PUSH AF
        LD A,E
        OUT ($A0),A             ; pour MSX /port $A0(write) register Write port -> A modifier NEOGEO :OUT ($4),A
        INC E
        POP AF
        OUT ($A1),A             ; pour MSX /port $A1(write) Value Write port    -> A modifier NEOGEO :OUT ($5),A
        RET


;+----------------------------< Work Area >------------------------------------+
; reg. 0 1 2 3 4 5 6 7 8 9 A B C D
PSGREG: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; - PSG port store buffer -