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 -