summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Panzlaff <michael.panzlaff@fau.de>2021-06-30 19:03:31 +0200
committerMichael Panzlaff <michael.panzlaff@fau.de>2021-08-25 18:03:41 +0200
commitd049ab8b4a071b7718461dc8b513f34466fec931 (patch)
treebefa172d9b5c3b2a5506ef8bb12f82267857d9ea
parentf9aae26dd2155d78f111907f47feb0ec5be9f30c (diff)
add some more sound header stuff
-rw-r--r--arm7/lib/include/SND_channel.h42
-rw-r--r--arm7/lib/include/SND_exChannel.h2
-rw-r--r--arm7/lib/include/registers.h7
-rw-r--r--include/nitro/SND_exChannel_shared.h25
-rw-r--r--include/nitro/SND_main_shared.h4
5 files changed, 78 insertions, 2 deletions
diff --git a/arm7/lib/include/SND_channel.h b/arm7/lib/include/SND_channel.h
new file mode 100644
index 00000000..5f90aa66
--- /dev/null
+++ b/arm7/lib/include/SND_channel.h
@@ -0,0 +1,42 @@
+#ifndef GUARD_SND_CHANNEL_H
+#define GUARD_SND_CHANNEL_H
+
+#include "nitro/types.h"
+
+void SND_SetupChannelPcm(
+ s32 chnIdx,
+ const void *data,
+ s32 format,
+ s32 loop,
+ s32 loopStart,
+ s32 loopLen,
+ s32 volume,
+ s32 volumeDiv,
+ s32 timer,
+ s32 pan
+);
+
+void SND_SetupChannelPsg(
+ s32 chnIdx,
+ s32 waveDuty,
+ s32 volume,
+ s32 volumeDiv,
+ s32 timer,
+ s32 pan
+);
+
+void SND_SetupChannelNoise(
+ s32 chnIdx,
+ s32 volume,
+ s32 volumeDiv,
+ s32 timer,
+ s32 pan
+);
+
+void SND_StopChannel(s32 chnIdx, s32 hold);
+
+void SND_SetChannelVolume(s32 chnIdx, s32 volume, s32 volumeDiv);
+void SND_SetChannelPan(s32 chnIdx, s32 pan);
+void SND_SetChannelTimer(s32 chnIdx, s32 timer);
+
+#endif //GUARD_SND_CHANNEL_H
diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h
index 8450a629..cc07d34f 100644
--- a/arm7/lib/include/SND_exChannel.h
+++ b/arm7/lib/include/SND_exChannel.h
@@ -11,4 +11,6 @@ void SND_UpdateExChannel(void);
void SND_ExChannelMain(BOOL update);
void SND_FreeExChannel(struct SNDExChannel *chn);
+typedef void (*SNDExChannelCallback)(struct SNDExChannel *chn, s32 status, void *userData);
+
#endif //GUARD_SND_EXCHANNEL_H
diff --git a/arm7/lib/include/registers.h b/arm7/lib/include/registers.h
index 1fb1e9ca..bc55d0d8 100644
--- a/arm7/lib/include/registers.h
+++ b/arm7/lib/include/registers.h
@@ -5,6 +5,13 @@
#define reg_EXTKEYIN (*(REGType16v *)0x4000136)
+#define reg_SOUNDxCNT_STAT(x) (*((REGType8v *)0x4000403 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT(x) (*((REGType32v *)0x4000400 + ((int)x) * 0x10))
+#define reg_SOUNDxSAD(x) (*((REGType32v *)0x4000404 + ((int)x) * 0x10))
+#define reg_SOUNDxTMR(x) (*((REGType16v *)0x4000408 + ((int)x) * 0x10))
+#define reg_SOUNDxPNT(x) (*((REGType16v *)0x400040A + ((int)x) * 0x10))
+#define reg_SOUNDxLEN(x) (*((REGType32v *)0x400040C + ((int)x) * 0x10))
+
#define EXTKEYIN_X (1<<0)
#define EXTKEYIN_Y (1<<1)
#define EXTKEYIN_DEBUG (1<<3)
diff --git a/include/nitro/SND_exChannel_shared.h b/include/nitro/SND_exChannel_shared.h
new file mode 100644
index 00000000..eb702f16
--- /dev/null
+++ b/include/nitro/SND_exChannel_shared.h
@@ -0,0 +1,25 @@
+#ifndef GUARD_SND_EXCHANNEL_SHARED_H
+#define GUARD_SND_EXCHANNEL_SHARED_H
+
+#include "nitro/types.h"
+
+#define SND_ENV_ATTACK 0
+#define SND_ENV_DECAY 1
+#define SND_ENV_SUSTAIN 2
+#define SND_ENV_RELEASE 3
+
+#define SND_CHN_TYPE_PCM 0
+#define SND_CHN_TYPE_PSG 1
+#define SND_CHN_TYPE_NOISE 2
+
+#define SND_CHN_SYNC_START 0x1
+#define SND_CHN_SYNC_STOP 0x2
+#define SND_CHN_SYNC_TIMER 0x4
+#define SND_CHN_SYNC_VOLUME 0x8
+#define SND_CHN_SYNC_PAN 0x10
+
+#define SND_LFO_PITCH 0
+#define SND_LFO_VOLUME 1
+#define SND_LFO_PAN 2
+
+#endif //GUARD_SND_EXCHANNEL_SHARED_H
diff --git a/include/nitro/SND_main_shared.h b/include/nitro/SND_main_shared.h
index d77273ed..154d93b6 100644
--- a/include/nitro/SND_main_shared.h
+++ b/include/nitro/SND_main_shared.h
@@ -83,7 +83,7 @@ struct SNDExChannel {
union {
const void *waveDataPtr;
- u32 dutyCycle;
+ s32 dutyCycle;
}; // 0x44
void (*callback)(struct SNDExChannel *chn, u32 status, void *userData); // 0x48
@@ -173,4 +173,4 @@ struct SNDTrack {
}; // size = 0x40
#endif //POKEDIAMOND_SND_MAIN_SHARED_H
- \ No newline at end of file
+