summaryrefslogtreecommitdiff
path: root/arm7/lib/include
diff options
context:
space:
mode:
authorMichael Panzlaff <michael.panzlaff@fau.de>2021-07-09 18:19:29 +0200
committerMichael Panzlaff <michael.panzlaff@fau.de>2021-08-25 18:03:48 +0200
commit0da1dc3cb5db999b5035c28858134ba6fbcc661c (patch)
tree0d2a0f630fa699eb0abde9c1014b95e052709314 /arm7/lib/include
parentbedb58ea94b44f8b4168fd731339fec38ee21988 (diff)
arm7: decompile SND
Diffstat (limited to 'arm7/lib/include')
-rw-r--r--arm7/lib/include/PM.h9
-rw-r--r--arm7/lib/include/SND.h6
-rw-r--r--arm7/lib/include/SND_channel.h48
-rw-r--r--arm7/lib/include/SND_exChannel.h2
-rw-r--r--arm7/lib/include/registers.h30
-rw-r--r--arm7/lib/include/syscall.h2
6 files changed, 64 insertions, 33 deletions
diff --git a/arm7/lib/include/PM.h b/arm7/lib/include/PM.h
new file mode 100644
index 00000000..df2185be
--- /dev/null
+++ b/arm7/lib/include/PM.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_PM_H
+#define GUARD_PM_H
+
+#include "nitro/types.h"
+
+void PMi_SetControl(int ctrl);
+void PMi_ResetControl(int ctrl);
+
+#endif //GUARD_PM_H
diff --git a/arm7/lib/include/SND.h b/arm7/lib/include/SND.h
index c417ab0e..196377ed 100644
--- a/arm7/lib/include/SND.h
+++ b/arm7/lib/include/SND.h
@@ -4,6 +4,12 @@
#include "nitro/types.h"
void SND_Enable(void);
+void SND_Disable(void);
+void SND_Shutdown(void);
+void SND_BeginSleep(void);
+void SND_EndSleep(void);
+void SND_SetMasterPan(int pan);
+void SND_SetMasterVolume(int vol);
void SND_SetOutputSelector(int leftOutputFrom, int rightOutputFrom, int outputCh1ToMixer, int outputCh3ToMixer);
#endif //GUARD_SND_H
diff --git a/arm7/lib/include/SND_channel.h b/arm7/lib/include/SND_channel.h
index 8b74b579..9e015beb 100644
--- a/arm7/lib/include/SND_channel.h
+++ b/arm7/lib/include/SND_channel.h
@@ -8,40 +8,40 @@
void SNDi_SetSurroundDecay(int decay);
void SND_SetupChannelPcm(
- s32 chnIdx,
+ int chnIdx,
const void *data,
- s32 format,
- s32 loop,
- s32 loopStart,
- s32 loopLen,
- s32 volume,
- s32 volumeDiv,
- s32 timer,
- s32 pan
+ int format,
+ int loop,
+ int loopStart,
+ int loopLen,
+ int volume,
+ int volumeDiv,
+ int timer,
+ int pan
);
void SND_SetupChannelPsg(
- s32 chnIdx,
- s32 waveDuty,
- s32 volume,
- s32 volumeDiv,
- s32 timer,
- s32 pan
+ int chnIdx,
+ int waveDuty,
+ int volume,
+ int volumeDiv,
+ int timer,
+ int pan
);
void SND_SetupChannelNoise(
- s32 chnIdx,
- s32 volume,
- s32 volumeDiv,
- s32 timer,
- s32 pan
+ int chnIdx,
+ int volume,
+ int volumeDiv,
+ int timer,
+ int pan
);
-void SND_StopChannel(s32 chnIdx, s32 hold);
+void SND_StopChannel(int chnIdx, int hold);
-void SND_SetChannelVolume(s32 chnIdx, s32 volume, s32 volumeDiv);
-void SND_SetChannelPan(s32 chnIdx, s32 pan);
-void SND_SetChannelTimer(s32 chnIdx, s32 timer);
+void SND_SetChannelVolume(int chnIdx, int volume, int volumeDiv);
+void SND_SetChannelPan(int chnIdx, int pan);
+void SND_SetChannelTimer(int chnIdx, int timer);
u32 SND_GetChannelControl(int idx);
diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h
index 038a1a49..66a1d78f 100644
--- a/arm7/lib/include/SND_exChannel.h
+++ b/arm7/lib/include/SND_exChannel.h
@@ -21,7 +21,7 @@ void SND_ReleaseExChannel(struct SNDExChannel *chn);
BOOL SND_IsExChannelActive(struct SNDExChannel *chn);
struct SNDExChannel *SND_AllocExChannel(u32 channelMask, int priority, u32 flags, SNDExChannelCallback callback, void *callbackUserData);
void SND_FreeExChannel(struct SNDExChannel *chn);
-BOOL SND_IsChannelActive(s32 idx);
+BOOL SND_IsChannelActive(int idx);
void SND_InvalidateWave(const void *start, const void *end);
// TODO internal functions, move these so exChannel
diff --git a/arm7/lib/include/registers.h b/arm7/lib/include/registers.h
index e9280957..f30d237a 100644
--- a/arm7/lib/include/registers.h
+++ b/arm7/lib/include/registers.h
@@ -5,14 +5,28 @@
#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 reg_SNDCAPxCNT(x) (*((REGType8v *)0x4000508 + ((int)(x))))
+#define reg_POWCNT2 (*(REGType16v *)0x4000304)
+
+
+#define reg_SOUNDCNT_VOL (*(REGType8v *)0x4000500)
+#define reg_SOUNDCNT_MIX (*(REGType8v *)0x4000501)
+
+#define reg_SOUNDxCNT_VOL(x) (*(REGType8v *)(0x4000400 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT_VOLS(x) (*(REGType16v *)(0x4000400 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT_PAN(x) (*(REGType8v *)(0x4000402 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT_STAT(x) (*(REGType8v *)(0x4000403 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT(x) (*(REGType32v *)(0x4000400 + ((int)x) * 0x10))
+#define reg_SOUNDoffCNT(off) (*(REGType32v *)(0x4000400 + (int)(off)))
+#define reg_SOUNDxSAD(x) (*(REGType32v *)(0x4000404 + ((int)x) * 0x10))
+#define reg_SOUNDoffSAD(off) (*(REGType32v *)(0x4000404 + (int)(off)))
+#define reg_SOUNDxTMR(x) (*(REGType16v *)(0x4000408 + ((int)x) * 0x10))
+#define reg_SOUNDoffTMR(off) (*(REGType16v *)(0x4000408 + (int)(off)))
+#define reg_SOUNDxPNT(x) (*(REGType16v *)(0x400040A + ((int)x) * 0x10))
+#define reg_SOUNDoffPNT(off) (*(REGType16v *)(0x400040A + (int)(off)))
+#define reg_SOUNDxLEN(x) (*(REGType32v *)(0x400040C + ((int)x) * 0x10))
+#define reg_SOUNDoffLEN(off) (*(REGType32v *)(0x400040C + (int)(off)))
+
+#define reg_SNDCAPxCNT(x) (*(REGType8v *)(0x4000508 + ((int)(x))))
#define EXTKEYIN_X (1<<0)
#define EXTKEYIN_Y (1<<1)
diff --git a/arm7/lib/include/syscall.h b/arm7/lib/include/syscall.h
index 1ac6fe49..579fd790 100644
--- a/arm7/lib/include/syscall.h
+++ b/arm7/lib/include/syscall.h
@@ -4,5 +4,7 @@
void SVC_WaitByLoop(u32 ct);
u8 SVC_GetVolumeTable(int idx);
u16 SVC_GetPitchTable(int idx);
+void SVC_SoundBiasSet(int step);
+void SVC_SoundBiasReset(int step);
#endif //POKEDIAMOND_ARM7_SYSCALL_H