aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2022-08-11 14:23:05 +0200
committerspicyjpeg <thatspicyjpeg@gmail.com>2022-08-11 14:23:05 +0200
commit7abb3b78727c8d4672197951e62b1c5916b3a54a (patch)
tree987fb4c0cc83a3104fb8f1b94aa03ab7b9f67a73 /libpsn00b
parenta1081f296bca4f718cf31e5b6a262661d132e9e4 (diff)
downloadpsn00bsdk-7abb3b78727c8d4672197951e62b1c5916b3a54a.tar.gz
Clean up and add audio file to sound/spustream example
Diffstat (limited to 'libpsn00b')
-rw-r--r--libpsn00b/psxspu/common.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/libpsn00b/psxspu/common.c b/libpsn00b/psxspu/common.c
index c1e8cab..55a3dba 100644
--- a/libpsn00b/psxspu/common.c
+++ b/libpsn00b/psxspu/common.c
@@ -46,13 +46,6 @@ void SpuInit(void) {
SPU_EXT_VOL_L = 0;
SPU_EXT_VOL_R = 0;
- for (int i = 0; i < 24; i++) {
- SPU_CH_VOL_L(i) = 0;
- SPU_CH_VOL_R(i) = 0;
- SPU_CH_FREQ(i) = 0;
- SPU_CH_ADDR(i) = 0;
- }
-
DMA_DPCR |= 0x000b0000; // Enable DMA4
DMA_CHCR(4) = 0x00000201; // Stop DMA4
@@ -68,8 +61,18 @@ void SpuInit(void) {
for (int i = 7; i; i--)
SPU_DATA = 0x0000;
+ // "Play" the dummy block on all channels. This will reset the start
+ // address and ADSR envelope status of each channel.
+ for (int i = 0; i < 24; i++) {
+ SPU_CH_VOL_L(i) = 0;
+ SPU_CH_VOL_R(i) = 0;
+ SPU_CH_FREQ(i) = 0x1000;
+ SPU_CH_ADDR(i) = WRITABLE_AREA_ADDR;
+ }
+
// Sony's implementation leaves everything muted, however it makes sense to
// turn up at least the master and CD audio volume by default.
+ SPU_KEY_ON = 0x00ffffff;
SPU_MASTER_VOL_L = 0x3fff;
SPU_MASTER_VOL_R = 0x3fff;
SPU_CD_VOL_L = 0x3fff;