From beb52cb6569ea02d7bcb4bf33c3c18224d3c8c78 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Sat, 26 Jun 2021 16:44:34 +0200 Subject: arm7: decompile SND_main --- arm7/lib/src/SND_main.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 arm7/lib/src/SND_main.c (limited to 'arm7/lib/src/SND_main.c') diff --git a/arm7/lib/src/SND_main.c b/arm7/lib/src/SND_main.c new file mode 100644 index 00000000..96dcdc78 --- /dev/null +++ b/arm7/lib/src/SND_main.c @@ -0,0 +1,114 @@ +#include "SND_main.h" + +#include "global.h" + +#include "SND.h" +#include "SND_alarm.h" +#include "SND_capture.h" +#include "SND_command.h" +#include "SND_exChannel.h" +#include "SND_seq.h" +#include "SND_util.h" +#include "SND_work.h" + +#include "OS_alarm.h" +#include "OS_thread.h" +#include "OS_message.h" +#include "OS_tick.h" + +static void FUN_037fc330(void *); +static void SndThread(void *); + +u8 sThreadStack[0x400]; +OSThread sThread; +OSAlarm sAlarm; +OSMessageQueue sMessageQueue; +OSMessage sMessageArray[8]; +u32 sInitialized = 0; + +void SND_Init(u32 priority) { + if (sInitialized == 0) { + sInitialized = 1; + SND_CommandInit(); + SND_CreateThread(priority); + } +} + +void SND_CreateThread(u32 priority) { + OS_CreateThread(&sThread, SndThread, NULL, &sThreadStack[sizeof(sThreadStack)], sizeof(sThreadStack), priority); + OS_WakeupThreadDirect(&sThread); +} + +void SND_InitIntervalTimer(void) { + OS_InitMessageQueue(&sMessageQueue, sMessageArray, 8); + OS_CreateAlarm(&sAlarm); +} + +void SND_StartIntervalTimer(void) { + OSTick tick = OS_GetTick(); + OS_SetPeriodicAlarm(&sAlarm, tick + 0x10000, 2728, FUN_037fc330, NULL); +} + +void SND_StopIntervalTimer(void) { + OS_CancelAlarm(&sAlarm); +} + +u32 SND_WaitForIntervalTimer(void) { + OSMessage result; + (void)OS_ReceiveMessage(&sMessageQueue, &result, 1); + return (u32)result; +} + +void SND_SendWakeupMessage(void) { + (void)OS_SendMessage(&sMessageQueue, (OSMessage)2, 0); +} + +void SNDi_LockMutex(void) { + // nothing +} + +void SNDi_UnlockMutex(void) { + // nothing +} + +static void FUN_037fc330(void *arg) { + (void)arg; + (void)OS_SendMessage(&sMessageQueue, (OSMessage)1, 0); +} + +static void SndThread(void *arg) { + (void)arg; + + SND_InitIntervalTimer(); + SND_ExChannelInit(); + SND_SeqInit(); + SND_AlarmInit(); + SND_Enable(); + SND_SetOutputSelector(0, 0, 0, 0); + SND_SetMasterVolume(0x7F); + SND_StartIntervalTimer(); + + while (1) { + BOOL update = FALSE; + + u32 result = SND_WaitForIntervalTimer(); + + switch (result) { + case 2: + update = FALSE; + break; + case 1: + update = TRUE; + break; + } + + SND_UpdateExChannel(); + SND_CommandProc(); + + SND_SeqMain(update); + SND_ExChannelMain(update); + + SND_UpdateSharedWork(); + (void)SND_CalcRandom(); + } +} -- cgit v1.2.3 From 07509f83f91c412f9150c52b4467429ac46eefe2 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Sun, 1 Aug 2021 12:39:24 +0200 Subject: arm7: split SND into SND_global and SND_channel --- arm7/lib/src/SND_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm7/lib/src/SND_main.c') diff --git a/arm7/lib/src/SND_main.c b/arm7/lib/src/SND_main.c index 96dcdc78..24e81d2c 100644 --- a/arm7/lib/src/SND_main.c +++ b/arm7/lib/src/SND_main.c @@ -2,11 +2,11 @@ #include "global.h" -#include "SND.h" #include "SND_alarm.h" #include "SND_capture.h" #include "SND_command.h" #include "SND_exChannel.h" +#include "SND_global.h" #include "SND_seq.h" #include "SND_util.h" #include "SND_work.h" -- cgit v1.2.3 From d72270d4bd4c3160f98812de51cfb76fb6b47295 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Tue, 3 Aug 2021 18:44:55 +0200 Subject: arm7: run clang-format on SND_* --- arm7/lib/src/SND_main.c | 65 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 23 deletions(-) (limited to 'arm7/lib/src/SND_main.c') diff --git a/arm7/lib/src/SND_main.c b/arm7/lib/src/SND_main.c index 24e81d2c..fbf84573 100644 --- a/arm7/lib/src/SND_main.c +++ b/arm7/lib/src/SND_main.c @@ -12,8 +12,8 @@ #include "SND_work.h" #include "OS_alarm.h" -#include "OS_thread.h" #include "OS_message.h" +#include "OS_thread.h" #include "OS_tick.h" static void FUN_037fc330(void *); @@ -26,57 +26,74 @@ OSMessageQueue sMessageQueue; OSMessage sMessageArray[8]; u32 sInitialized = 0; -void SND_Init(u32 priority) { - if (sInitialized == 0) { +void SND_Init(u32 priority) +{ + if (sInitialized == 0) + { sInitialized = 1; SND_CommandInit(); SND_CreateThread(priority); } } -void SND_CreateThread(u32 priority) { - OS_CreateThread(&sThread, SndThread, NULL, &sThreadStack[sizeof(sThreadStack)], sizeof(sThreadStack), priority); +void SND_CreateThread(u32 priority) +{ + OS_CreateThread(&sThread, + SndThread, + NULL, + &sThreadStack[sizeof(sThreadStack)], + sizeof(sThreadStack), + priority); OS_WakeupThreadDirect(&sThread); } -void SND_InitIntervalTimer(void) { +void SND_InitIntervalTimer(void) +{ OS_InitMessageQueue(&sMessageQueue, sMessageArray, 8); OS_CreateAlarm(&sAlarm); } -void SND_StartIntervalTimer(void) { +void SND_StartIntervalTimer(void) +{ OSTick tick = OS_GetTick(); OS_SetPeriodicAlarm(&sAlarm, tick + 0x10000, 2728, FUN_037fc330, NULL); } -void SND_StopIntervalTimer(void) { +void SND_StopIntervalTimer(void) +{ OS_CancelAlarm(&sAlarm); } -u32 SND_WaitForIntervalTimer(void) { +u32 SND_WaitForIntervalTimer(void) +{ OSMessage result; (void)OS_ReceiveMessage(&sMessageQueue, &result, 1); return (u32)result; } -void SND_SendWakeupMessage(void) { +void SND_SendWakeupMessage(void) +{ (void)OS_SendMessage(&sMessageQueue, (OSMessage)2, 0); } -void SNDi_LockMutex(void) { +void SNDi_LockMutex(void) +{ // nothing } -void SNDi_UnlockMutex(void) { +void SNDi_UnlockMutex(void) +{ // nothing } -static void FUN_037fc330(void *arg) { +static void FUN_037fc330(void *arg) +{ (void)arg; (void)OS_SendMessage(&sMessageQueue, (OSMessage)1, 0); } -static void SndThread(void *arg) { +static void SndThread(void *arg) +{ (void)arg; SND_InitIntervalTimer(); @@ -88,18 +105,20 @@ static void SndThread(void *arg) { SND_SetMasterVolume(0x7F); SND_StartIntervalTimer(); - while (1) { + while (1) + { BOOL update = FALSE; - + u32 result = SND_WaitForIntervalTimer(); - switch (result) { - case 2: - update = FALSE; - break; - case 1: - update = TRUE; - break; + switch (result) + { + case 2: + update = FALSE; + break; + case 1: + update = TRUE; + break; } SND_UpdateExChannel(); -- cgit v1.2.3