summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm7/arm7.lsf1
-rw-r--r--arm7/lib/include/SND_exChannel.h5
-rw-r--r--arm7/lib/include/SND_lockChannel.h15
-rw-r--r--arm7/lib/src/SND_command.c1
-rw-r--r--arm7/lib/src/SND_exChannel.c76
-rw-r--r--arm7/lib/src/SND_lockChannel.c81
6 files changed, 80 insertions, 99 deletions
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf
index 074e5311..46b4ffb8 100644
--- a/arm7/arm7.lsf
+++ b/arm7/arm7.lsf
@@ -47,7 +47,6 @@ Autoload WRAM
Object SND_channel.o
Object SND_lfo.o
Object SND_wave.o
- Object SND_lockChannel.o
Object SND_exChannel.o
Object SND_seq.o
Object SND_bank.o
diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h
index 66a1d78f..9ebedc76 100644
--- a/arm7/lib/include/SND_exChannel.h
+++ b/arm7/lib/include/SND_exChannel.h
@@ -31,4 +31,9 @@ void ExChannelStart(struct SNDExChannel *chn, int length);
int ExChannelVolumeCmp(struct SNDExChannel *chn_a, struct SNDExChannel *chn_b);
void ExChannelSetup(struct SNDExChannel *, SNDExChannelCallback callback, void *callbackUserData, int priority);
+void SND_StopUnlockedChannel(u32 channelMask, u32 weak);
+void SND_LockChannel(u32 channelMask, u32 weak);
+void SND_UnlockChannel(u32 channelMask, u32 weak);
+u32 SND_GetLockedChannel(u32 weak);
+
#endif //GUARD_SND_EXCHANNEL_H
diff --git a/arm7/lib/include/SND_lockChannel.h b/arm7/lib/include/SND_lockChannel.h
deleted file mode 100644
index 461745b3..00000000
--- a/arm7/lib/include/SND_lockChannel.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef GUARD_SND_LOCKCHANNEL_H
-#define GUARD_SND_LOCKCHANNEL_H
-
-#include "nitro/types.h"
-
-void SND_StopUnlockedChannel(u32 channelMask, u32 weak);
-void SND_LockChannel(u32 channelMask, u32 weak);
-void SND_UnlockChannel(u32 channelMask, u32 weak);
-u32 SND_GetLockedChannel(u32 weak);
-
-// 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/src/SND_command.c b/arm7/lib/src/SND_command.c
index fc059c89..1ffcb0d5 100644
--- a/arm7/lib/src/SND_command.c
+++ b/arm7/lib/src/SND_command.c
@@ -12,7 +12,6 @@
#include "SND_capture.h"
#include "SND_channel.h"
#include "SND_exChannel.h"
-#include "SND_lockChannel.h"
#include "SND_main.h"
#include "SND_seq.h"
#include "SND_work.h"
diff --git a/arm7/lib/src/SND_exChannel.c b/arm7/lib/src/SND_exChannel.c
index 7919b5f7..f3ba922b 100644
--- a/arm7/lib/src/SND_exChannel.c
+++ b/arm7/lib/src/SND_exChannel.c
@@ -3,7 +3,6 @@
#include "SND_channel.h"
#include "SND_main.h"
#include "SND_work.h"
-#include "SND_lockChannel.h"
#include "SND_util.h"
#include "registers.h"
@@ -12,6 +11,9 @@
extern u8 sChannelAllocationOrder[SND_CHANNEL_COUNT];
extern u8 sAttackCoeffTable[19];
+static u32 sLockedChannelMask;
+static u32 sWeakLockedChannelMask;
+
void SND_ExChannelInit(void) {
struct SNDExChannel *chn;
s32 i;
@@ -344,3 +346,75 @@ void SND_FreeExChannel(struct SNDExChannel *chn) {
chn->callbackUserData = NULL;
}
}
+
+void SND_StopUnlockedChannel(u32 channelMask, u32 weak) {
+ (void)weak;
+
+ struct SNDExChannel *chn;
+
+ for (int i = 0; i < SND_CHANNEL_COUNT && channelMask != 0; i++, channelMask >>= 1) {
+ if ((channelMask & 1) == 0)
+ continue;
+
+ chn = &SNDi_Work.channels[i];
+
+ if (sLockedChannelMask & (1 << i))
+ continue;
+
+ if (chn->callback)
+ chn->callback(chn, 0, chn->callbackUserData);
+
+ SND_StopChannel(i, 0);
+ chn->priority = 0;
+ SND_FreeExChannel(chn);
+ chn->flags.syncFlag = 0;
+ chn->flags.active = 0;
+ }
+}
+
+void SND_LockChannel(u32 channelMask, u32 weak) {
+ struct SNDExChannel *chn;
+ u32 j = channelMask;
+ int i = 0;
+
+ for (; i < SND_CHANNEL_COUNT && j != 0; i++, j >>= 1) {
+ if ((j & 1) == 0)
+ continue;
+
+ chn = &SNDi_Work.channels[i];
+
+ if (sLockedChannelMask & (1 << i))
+ continue;
+
+ if (chn->callback)
+ chn->callback(chn, 0, chn->callbackUserData);
+
+ SND_StopChannel(i, 0);
+ chn->priority = 0;
+ SND_FreeExChannel(chn);
+ chn->flags.syncFlag = 0;
+ chn->flags.active = 0;
+ }
+
+ if (weak & 1) {
+ sWeakLockedChannelMask |= channelMask;
+ } else {
+ sLockedChannelMask |= channelMask;
+ }
+}
+
+void SND_UnlockChannel(u32 channelMask, u32 weak) {
+ if (weak & 1) {
+ sWeakLockedChannelMask &= ~channelMask;
+ } else {
+ sLockedChannelMask &= ~channelMask;
+ }
+}
+
+u32 SND_GetLockedChannel(u32 weak) {
+ if (weak & 1) {
+ return sWeakLockedChannelMask;
+ } else {
+ return sLockedChannelMask;
+ }
+}
diff --git a/arm7/lib/src/SND_lockChannel.c b/arm7/lib/src/SND_lockChannel.c
deleted file mode 100644
index 871cf716..00000000
--- a/arm7/lib/src/SND_lockChannel.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "SND_lockChannel.h"
-
-#include "SND_work.h"
-#include "SND_exChannel.h"
-#include "SND_channel.h"
-
-// TODO make these vars static after merging this file with exChannel
-u32 sLockedChannelMask;
-u32 sWeakLockedChannelMask;
-
-void SND_StopUnlockedChannel(u32 channelMask, u32 weak) {
- (void)weak;
-
- struct SNDExChannel *chn;
-
- for (int i = 0; i < SND_CHANNEL_COUNT && channelMask != 0; i++, channelMask >>= 1) {
- if ((channelMask & 1) == 0)
- continue;
-
- chn = &SNDi_Work.channels[i];
-
- if (sLockedChannelMask & (1 << i))
- continue;
-
- if (chn->callback)
- chn->callback(chn, 0, chn->callbackUserData);
-
- SND_StopChannel(i, 0);
- chn->priority = 0;
- SND_FreeExChannel(chn);
- chn->flags.syncFlag = 0;
- chn->flags.active = 0;
- }
-}
-
-void SND_LockChannel(u32 channelMask, u32 weak) {
- struct SNDExChannel *chn;
- u32 j = channelMask;
- int i = 0;
-
- for (; i < SND_CHANNEL_COUNT && j != 0; i++, j >>= 1) {
- if ((j & 1) == 0)
- continue;
-
- chn = &SNDi_Work.channels[i];
-
- if (sLockedChannelMask & (1 << i))
- continue;
-
- if (chn->callback)
- chn->callback(chn, 0, chn->callbackUserData);
-
- SND_StopChannel(i, 0);
- chn->priority = 0;
- SND_FreeExChannel(chn);
- chn->flags.syncFlag = 0;
- chn->flags.active = 0;
- }
-
- if (weak & 1) {
- sWeakLockedChannelMask |= channelMask;
- } else {
- sLockedChannelMask |= channelMask;
- }
-}
-
-void SND_UnlockChannel(u32 channelMask, u32 weak) {
- if (weak & 1) {
- sWeakLockedChannelMask &= ~channelMask;
- } else {
- sLockedChannelMask &= ~channelMask;
- }
-}
-
-u32 SND_GetLockedChannel(u32 weak) {
- if (weak & 1) {
- return sWeakLockedChannelMask;
- } else {
- return sLockedChannelMask;
- }
-}