summaryrefslogtreecommitdiff
path: root/arm7/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/lib/include')
-rw-r--r--arm7/lib/include/SND_channel.h3
-rw-r--r--arm7/lib/include/SND_exChannel.h25
-rw-r--r--arm7/lib/include/SND_lockChannel.h4
-rw-r--r--arm7/lib/include/SND_util.h7
4 files changed, 36 insertions, 3 deletions
diff --git a/arm7/lib/include/SND_channel.h b/arm7/lib/include/SND_channel.h
index 5f90aa66..718e7e2b 100644
--- a/arm7/lib/include/SND_channel.h
+++ b/arm7/lib/include/SND_channel.h
@@ -39,4 +39,7 @@ void SND_SetChannelVolume(s32 chnIdx, s32 volume, s32 volumeDiv);
void SND_SetChannelPan(s32 chnIdx, s32 pan);
void SND_SetChannelTimer(s32 chnIdx, s32 timer);
+// TODO move this function to SND_exChannel.c
+u16 CalcDecayCoeff(s32 value);
+
#endif //GUARD_SND_CHANNEL_H
diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h
index cc07d34f..dfd93f21 100644
--- a/arm7/lib/include/SND_exChannel.h
+++ b/arm7/lib/include/SND_exChannel.h
@@ -3,14 +3,33 @@
#include "nitro/types.h"
+#include "nitro/SND_exChannel_shared.h"
#include "nitro/SND_main_shared.h"
+typedef void (*SNDExChannelCallback)(struct SNDExChannel *chn, s32 status, void *userData);
+
void SND_ExChannelInit(void);
-BOOL SND_IsChannelActive(s32 idx);
void SND_UpdateExChannel(void);
-void SND_ExChannelMain(BOOL update);
+void SND_ExChannelMain(BOOL step);
+BOOL SND_StartExChannelPcm(struct SNDExChannel *chn, const struct SNDWaveParam *wave, const void *data, s32 length);
+BOOL SND_StartExChannelPsg(struct SNDExChannel *chn, s32 duty, s32 length);
+BOOL SND_StartExChannelNoise(struct SNDExChannel *chn, s32 length);
+s32 SND_UpdateExChannelEnvelope(struct SNDExChannel *chn, BOOL step);
+void SND_SetExChannelAttack(struct SNDExChannel *chn, s32 attack);
+void SND_SetExChannelDecay(struct SNDExChannel *chn, s32 decay);
+void SND_SetExChannelSustain(struct SNDExChannel *chn, s32 sustain);
+void SND_SetExChannelRelease(struct SNDExChannel *chn, s32 release);
+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);
-typedef void (*SNDExChannelCallback)(struct SNDExChannel *chn, s32 status, void *userData);
+// TODO internal functions, move these so exChannel
+s32 ExChannelSweepUpdate(struct SNDExChannel *chn, BOOL step);
+s32 ExChannelLfoUpdate(struct SNDExChannel *chn, BOOL step);
+void ExChannelStart(struct SNDExChannel *chn, s32);
+s32 ExChannelVolumeCmp(struct SNDExChannel *chn_a, struct SNDExChannel *chn_b);
+void ExChannelSetup(struct SNDExChannel *, SNDExChannelCallback callback, void *callbackUserData, s32 priority);
#endif //GUARD_SND_EXCHANNEL_H
diff --git a/arm7/lib/include/SND_lockChannel.h b/arm7/lib/include/SND_lockChannel.h
index ed7fd872..9673fb51 100644
--- a/arm7/lib/include/SND_lockChannel.h
+++ b/arm7/lib/include/SND_lockChannel.h
@@ -8,4 +8,8 @@ void SND_LockChannel(u32 channelMask, u32 locked);
void SND_UnlockChannel(u32 channelMask, u32 locked);
u32 SND_GetLockedChannel(u32 locked);
+// TODO remove these externs if lockChannel is merged with exChannel
+extern u32 sLockedChannelMask;
+extern u32 sWeakLockedChannelMask;
+
#endif //GUARD_SND_LOCKCHANNEL_H
diff --git a/arm7/lib/include/SND_util.h b/arm7/lib/include/SND_util.h
index babf2a87..1bfdb7a8 100644
--- a/arm7/lib/include/SND_util.h
+++ b/arm7/lib/include/SND_util.h
@@ -3,6 +3,13 @@
#include "nitro/types.h"
+#define SND_DECIBEL_SQUARE_TABLE_COUNT
+
u32 SND_CalcRandom(void);
+u16 SND_CalcChannelVolume(s32 value);
+u16 SND_CalcTimer(s32 timer, s32 pitch);
+
+extern const s16 SNDi_DecibelSquareTable[128];
+
#endif //GUARD_SND_UTIL_H