]> git.sur5r.net Git - cc65/blobdiff - libsrc/pce/psg.s
Fixed bugs; and, improved the efficiency of some pce library functions.
[cc65] / libsrc / pce / psg.s
index 431f5883445461738a1bf3a1648d04020d88a464..7087c20846b77c2a7368ebbe0a52bf0e3442abe2 100644 (file)
@@ -1,29 +1,28 @@
+        .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