diff options
Diffstat (limited to 'arm7/lib/include')
-rw-r--r-- | arm7/lib/include/SND_channel.h | 3 | ||||
-rw-r--r-- | arm7/lib/include/SND_exChannel.h | 25 | ||||
-rw-r--r-- | arm7/lib/include/SND_lockChannel.h | 4 | ||||
-rw-r--r-- | arm7/lib/include/SND_util.h | 7 |
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 |