+ .export psg_init
- .include "pce.inc"
-
- .export psg_init
+ .include "pce.inc"
+ .segment "ONCE"
psg_init:
- clx
- stx $0800 ; Select channel
-psg_clear_loop:
- stz $0801 ; Clear global balance
- stz $0802 ; Clear frequency LSB
- stz $0803 ; Clear frequency MSB
- stz $0804 ; Clear volume
- stz $0805 ; Clear balance
- stz $0807 ; Clear noise control
- stz $0808 ; Clear LFO frequency
- stz $0809 ; Clear LFO control
+ stz PSG_GLOBAL_PAN ; Silence global balance
+ ldx #6 - 1
- cly
-psg_clear_waveform: stz $0806 ; Clear waveform byte
- iny
- cpy #$20
- bne psg_clear_waveform
+psg_clear_loop:
+ stx PSG_CHAN_SELECT ; Select channel
+ stz PSG_FREQ_LO ; Clear frequency LSB
+ stz PSG_FREQ_HI ; Clear frequency MSB
+ stz PSG_CHAN_CTRL ; Clear volume
+ stz PSG_CHAN_PAN ; Clear balance
+ stz PSG_NOISE ; Clear noise control
+ stz PSG_LFO_FREQ ; Clear LFO frequency
+ stz PSG_LFO_CTRL ; Clear LFO control
- inx
- cpx #$06
- bne psg_clear_loop
- rts
+ ldy #$20
+psg_clear_waveform:
+ stz PSG_CHAN_DATA ; Clear waveform byte
+ dey
+ bne psg_clear_waveform
+ dex
+ bpl psg_clear_loop
+ rts