aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/include
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2022-10-27 16:55:08 +0200
committerspicyjpeg <thatspicyjpeg@gmail.com>2022-10-27 16:55:08 +0200
commitf6c41f3783c4fce49a9899b710ebb50ba9f647ab (patch)
tree7133d4e05008cb11c05995d3c0ce7d938258cd51 /libpsn00b/include
parent4dbf47f129a55428b90df2805228fbd481e1d117 (diff)
downloadpsn00bsdk-f6c41f3783c4fce49a9899b710ebb50ba9f647ab.tar.gz
Refactor sound examples, add new spustream example
Diffstat (limited to 'libpsn00b/include')
-rw-r--r--libpsn00b/include/hwregs_a.inc22
-rw-r--r--libpsn00b/include/hwregs_c.h21
-rw-r--r--libpsn00b/include/psxspu.h14
3 files changed, 39 insertions, 18 deletions
diff --git a/libpsn00b/include/hwregs_a.inc b/libpsn00b/include/hwregs_a.inc
index c78b41a..ca38542 100644
--- a/libpsn00b/include/hwregs_a.inc
+++ b/libpsn00b/include/hwregs_a.inc
@@ -32,12 +32,18 @@
.set SPU_MASTER_VOL_R, 0x1d82
.set SPU_REVERB_VOL_L, 0x1d84
.set SPU_REVERB_VOL_R, 0x1d86
-.set SPU_KEY_ON, 0x1d88
-.set SPU_KEY_OFF, 0x1d8c
-.set SPU_FM_MODE, 0x1d90
-.set SPU_NOISE_MODE, 0x1d94
-.set SPU_REVERB_ON, 0x1d98
-.set SPU_CHAN_STATUS, 0x1d9c
+.set SPU_KEY_ON1, 0x1d88
+.set SPU_KEY_ON1, 0x1d8a
+.set SPU_KEY_OFF1, 0x1d8c
+.set SPU_KEY_OFF2, 0x1d8e
+.set SPU_FM_MODE1, 0x1d90
+.set SPU_FM_MODE2, 0x1d92
+.set SPU_NOISE_MODE1, 0x1d94
+.set SPU_NOISE_MODE2, 0x1d96
+.set SPU_REVERB_ON1, 0x1d98
+.set SPU_REVERB_ON2, 0x1d9a
+.set SPU_CHAN_STATUS1, 0x1d9c
+.set SPU_CHAN_STATUS2, 0x1d9e
.set SPU_REVERB_ADDR, 0x1da2
.set SPU_IRQ_ADDR, 0x1da4
@@ -59,8 +65,8 @@
.set SPU_VOICE_VOL_R, 0x02
.set SPU_VOICE_FREQ, 0x04
.set SPU_VOICE_ADDR, 0x06
-.set SPU_VOICE_ADSR_L, 0x08
-.set SPU_VOICE_ADSR_H, 0x0a
+.set SPU_VOICE_ADSR1, 0x08
+.set SPU_VOICE_ADSR2, 0x0a
.set SPU_VOICE_LOOP, 0x0e
## MDEC
diff --git a/libpsn00b/include/hwregs_c.h b/libpsn00b/include/hwregs_c.h
index b205b87..0e21922 100644
--- a/libpsn00b/include/hwregs_c.h
+++ b/libpsn00b/include/hwregs_c.h
@@ -38,12 +38,18 @@
#define SPU_MASTER_VOL_R _MMIO16(IOBASE | 0x1d82)
#define SPU_REVERB_VOL_L _MMIO16(IOBASE | 0x1d84)
#define SPU_REVERB_VOL_R _MMIO16(IOBASE | 0x1d86)
-#define SPU_KEY_ON _MMIO32(IOBASE | 0x1d88)
-#define SPU_KEY_OFF _MMIO32(IOBASE | 0x1d8c)
-#define SPU_FM_MODE _MMIO32(IOBASE | 0x1d90)
-#define SPU_NOISE_MODE _MMIO32(IOBASE | 0x1d94)
-#define SPU_REVERB_ON _MMIO32(IOBASE | 0x1d98)
-#define SPU_CHAN_STATUS _MMIO32(IOBASE | 0x1d9c)
+#define SPU_KEY_ON1 _MMIO16(IOBASE | 0x1d88)
+#define SPU_KEY_ON2 _MMIO16(IOBASE | 0x1d8a)
+#define SPU_KEY_OFF1 _MMIO16(IOBASE | 0x1d8c)
+#define SPU_KEY_OFF2 _MMIO16(IOBASE | 0x1d8e)
+#define SPU_FM_MODE1 _MMIO16(IOBASE | 0x1d90)
+#define SPU_FM_MODE2 _MMIO16(IOBASE | 0x1d92)
+#define SPU_NOISE_MODE1 _MMIO16(IOBASE | 0x1d94)
+#define SPU_NOISE_MODE2 _MMIO16(IOBASE | 0x1d96)
+#define SPU_REVERB_ON1 _MMIO16(IOBASE | 0x1d98)
+#define SPU_REVERB_ON2 _MMIO16(IOBASE | 0x1d9a)
+#define SPU_CHAN_STATUS1 _MMIO16(IOBASE | 0x1d9c)
+#define SPU_CHAN_STATUS2 _MMIO16(IOBASE | 0x1d9e)
#define SPU_REVERB_ADDR _MMIO16(IOBASE | 0x1da2)
#define SPU_IRQ_ADDR _MMIO16(IOBASE | 0x1da4)
@@ -67,7 +73,8 @@
#define SPU_CH_VOL_R(N) _MMIO16(IOBASE | 0x1c02 + 16 * (N))
#define SPU_CH_FREQ(N) _MMIO16(IOBASE | 0x1c04 + 16 * (N))
#define SPU_CH_ADDR(N) _MMIO16(IOBASE | 0x1c06 + 16 * (N))
-#define SPU_CH_ADSR(N) _MMIO32(IOBASE | 0x1c08 + 16 * (N))
+#define SPU_CH_ADSR1(N) _MMIO16(IOBASE | 0x1c08 + 16 * (N))
+#define SPU_CH_ADSR2(N) _MMIO16(IOBASE | 0x1c0a + 16 * (N))
#define SPU_CH_LOOP_ADDR(N) _MMIO16(IOBASE | 0x1c0e + 16 * (N))
/* MDEC */
diff --git a/libpsn00b/include/psxspu.h b/libpsn00b/include/psxspu.h
index 05737f7..cdc3ac7 100644
--- a/libpsn00b/include/psxspu.h
+++ b/libpsn00b/include/psxspu.h
@@ -111,11 +111,19 @@ typedef struct _SpuCommonAttr {
(SPU_CH_FREQ(ch) = (pitch))
#define SpuSetVoiceStartAddr(ch, addr) \
(SPU_CH_ADDR(ch) = getSPUAddr(addr))
-#define SpuSetVoiceADSR(ch, ar, dr, sr, rr, sl) \
- (SPU_CH_ADSR(ch) = getSPUADSR(ar, dr, sr, rr, sl))
+#define SpuSetVoiceADSR(ch, ar, dr, sr, rr, sl) ( \
+ SPU_CH_ADSR1(ch) = (sl) | ((dr) << 4) | ((ar) << 8), \
+ SPU_CH_ADSR2(ch) = (rr) | ((sr) << 6) | (1 << 14) \
+)
#define SpuSetKey(enable, voice_bit) \
- ((enable) ? (SPU_KEY_ON = (voice_bit)) : (SPU_KEY_OFF = (voice_bit)))
+ ((enable) ? ( \
+ SPU_KEY_ON1 = (uint16_t) (voice_bit), \
+ SPU_KEY_ON2 = (uint16_t) ((voice_bit) >> 16) \
+ ) : ( \
+ SPU_KEY_OFF1 = (uint16_t) (voice_bit), \
+ SPU_KEY_OFF2 = (uint16_t) ((voice_bit) >> 16) \
+ ))
/* Public API */