From 4a31545d4e159a0fb49620bce37c2687f35d29c4 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Fri, 4 Jul 2025 16:51:35 -0400 Subject: [PATCH] Link MSL_C/e_acos, rspsim fixes --- include/jaudio_NES/audiocommon.h | 28 ++++++++++++++ src/static/MSL_C.PPCEABI.bare.H/e_acos.c | 1 + src/static/jaudio_NES/internal/rspsim.c | 47 ++++++++++++------------ 3 files changed, 53 insertions(+), 23 deletions(-) diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h index a4b37bd3..e617964c 100644 --- a/include/jaudio_NES/audiocommon.h +++ b/include/jaudio_NES/audiocommon.h @@ -37,6 +37,34 @@ extern "C" { #define ADSR_RESTART -3 #define ADSR_SPECIAL4 -4 // TODO: figure this out +// Audio ABI commands +#define A_CMD_SPNOOP 0 +#define A_CMD_ADPCM 1 +#define A_CMD_CLEARBUFF 2 +#define A_CMD_UNK3 3 +#define A_CMD_ADDMIXER 4 +#define A_CMD_RESAMPLE 5 +#define A_CMD_RESAMPLE_ZOH 6 +#define A_CMD_FILTER 7 +#define A_CMD_SETBUFF 8 +#define A_CMD_DUPLICATE 9 +#define A_CMD_DMEMMOVE 10 +#define A_CMD_LOADADPCM 11 +#define A_CMD_MIXER 12 +#define A_CMD_INTERLEAVE 13 +#define A_CMD_HILOGAIN 14 +#define A_CMD_SETLOOP 15 +#define A_CMD_UNK16 16 +#define A_CMD_INTERL 17 +#define A_CMD_ENVSETUP1 18 +#define A_CMD_ENVMIXER 19 +#define A_CMD_LOADBUFF 20 +#define A_CMD_SAVEBUFF 21 +#define A_CMD_ENVSETUP2 22 +#define A_CMD_S8DEC 23 +#define A_CMD_LOADCACHE 24 +#define A_CMD_EXIT 25 + #define NA_MAKE_COMMAND(a0, a1, a2, a3) \ (u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0)) diff --git a/src/static/MSL_C.PPCEABI.bare.H/e_acos.c b/src/static/MSL_C.PPCEABI.bare.H/e_acos.c index 383d46ab..cf3d47d9 100644 --- a/src/static/MSL_C.PPCEABI.bare.H/e_acos.c +++ b/src/static/MSL_C.PPCEABI.bare.H/e_acos.c @@ -35,6 +35,7 @@ */ #include "MSL_C/MSL_Common_Embedded/Math/fdlibm.h" +#include "MSL_C/w_math.h" #ifdef __STDC__ static const double diff --git a/src/static/jaudio_NES/internal/rspsim.c b/src/static/jaudio_NES/internal/rspsim.c index ab2a7110..acfa7587 100644 --- a/src/static/jaudio_NES/internal/rspsim.c +++ b/src/static/jaudio_NES/internal/rspsim.c @@ -3,6 +3,7 @@ #include #include "jaudio_NES/sample.h" #include "jaudio_NES/rate.h" +#include "jaudio_NES/audiocommon.h" static u8 DMEM[0x1000] ATTRIBUTE_ALIGN(32); static u32 ADPCM_BOOKBUF_SIZE = 0; @@ -94,16 +95,16 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { pTaskCmds += 2; switch (cmdHi >> 24) { - case 24: // A_LOADCACHE (special to GC?) + case A_CMD_LOADCACHE: // A_LOADCACHE (special to GC?) sp128 = (u8*)cmdLo; sp12C = cmdHi & 0xFFFF; DCTouchRange((void*)cmdLo, ((cmdHi >> 16) & 0xFF) * 16); break; - case 0: // A_SPNOOP + case A_CMD_SPNOOP: // A_SPNOOP break; - case 1: { // A_ADPCM + case A_CMD_ADPCM: { // A_ADPCM u8 flags = cmdHi >> 16; if (flags & 1) { // clear history @@ -184,13 +185,13 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 2: // A_CLEARBUFF + case A_CMD_CLEARBUFF: // A_CLEARBUFF u16 addr = cmdHi & 0xFFFF; u16 size = cmdLo & 0xFFFF; Jac_bzero(&DMEM[addr], size); break; - case 5: { // A_RESAMPLE + case A_CMD_RESAMPLE: { // A_RESAMPLE s16 spC[8]; s16* var_r4; s16* var_r6; @@ -263,13 +264,13 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 8: // A_SETBUFF + case A_CMD_SETBUFF: // A_SETBUFF DMEMIn = cmdHi & 0xFFFF; DMEMOut = (cmdLo >> 16) & 0xFFFF; DMEMCount = cmdLo & 0xFFFF; break; - case 9: { // A_DUPLICATE + case A_CMD_DUPLICATE: { // A_DUPLICATE u16 src = cmdHi & 0xFFFF; u16 dst = cmdLo >> 16; s32 count = (cmdHi >> 16) & 0xFF; @@ -290,7 +291,7 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { // case 6: // A_RESAMPLE_ZOH // break; - case 10: { // A_DMEMMOVE + case A_CMD_DMEMMOVE: { // A_DMEMMOVE u16 src = cmdHi & 0xFFFF; u16 dst = cmdLo >> 16; u16 size = cmdLo & 0xFFFF; @@ -298,13 +299,13 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 11: // A_LOADADPCM + case A_CMD_LOADADPCM: // A_LOADADPCM Jac_bcopy((void*)cmdLo, ADPCM_BOOKBUF, cmdHi & 0xFFFF); ADPCM_BOOKBUF_SIZE = cmdHi & 0xFFFF; break; - case 4: // A_ADDMIXER - case 12: { // A_MIXER + case A_CMD_ADDMIXER: // A_ADDMIXER + case A_CMD_MIXER: { // A_MIXER s16* src = DMEM_OFS(cmdLo >> 16); s16* dst = DMEM_OFS(cmdLo & 0xFFFF); s32 count = (cmdHi >> 16) & 0xFF; @@ -326,7 +327,7 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 13: { // A_INTERLEAVE + case A_CMD_INTERLEAVE: { // A_INTERLEAVE u16 inL = cmdLo >> 16; u16 inR = cmdLo & 0xFFFF; u16 out = cmdHi & 0xFFFF; @@ -354,11 +355,11 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { // case 14: // A_HILOGAIN // break; - case 15: // A_SETLOOP + case A_CMD_SETLOOP: // A_SETLOOP loop_point = (void*)cmdLo; break; - case 16: { // ??? + case A_CMD_UNK16: { // ??? u8 count = (cmdHi >> 16) & 0xFF; u32 dst = cmdHi & 0xFFFF; u32 src = cmdLo >> 16; @@ -372,7 +373,7 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 17: { // A_INTERL + case A_CMD_INTERL: { // A_INTERL s32 count = cmdHi & 0xFFFF; s16* src = (s16*)&DMEM[cmdLo >> 16]; s16* dst = (s16*)&DMEM[cmdLo & 0xFFFF]; @@ -386,19 +387,19 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 20: { // A_LOADBUFF + case A_CMD_LOADBUFF: { // A_LOADBUFF u16 size = ((cmdHi >> 16) & 0xFF) * 16; Jac_bcopy((void*)cmdLo, (s16*)&DMEM[cmdHi & 0xFFFF], size); break; } - case 21: { // A_SAVEBUFF + case A_CMD_SAVEBUFF: { // A_SAVEBUFF u16 size = ((cmdHi >> 16) & 0xFF) * 16; Jac_bcopy(DMEM_OFS(cmdHi & 0xFFFF), (void*)cmdLo, size); break; } - case 18: { // A_ENVSETUP1 + case A_CMD_ENVSETUP1: { // A_ENVSETUP1 u8 temp = cmdHi >> 16; envParam1_1 = cmdHi & 0xFFFF; envParam1_2 = cmdLo >> 16; @@ -407,12 +408,12 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 22: // A_ENVSETUP2 + case A_CMD_ENVSETUP2: // A_ENVSETUP2 envParam2_0 = cmdLo >> 16; envParam2_1 = cmdLo & 0xFFFF; break; - case 19: { // A_ENVMIXER + case A_CMD_ENVMIXER: { // A_ENVMIXER s32 var_r16; s16* var_r17; s16* var_r18; @@ -532,7 +533,7 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 23: { // A_S8DEC + case A_CMD_S8DEC: { // A_S8DEC u8 flags = cmdHi >> 16; if (flags & 1) { @@ -561,7 +562,7 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 7: { // A_FILTER + case A_CMD_FILTER: { // A_FILTER s16 sp3C[16]; s16 sp1C[16]; u8 flags; @@ -616,7 +617,7 @@ extern s32 RspStart(u32* pTaskCmds, s32 allTasks) { break; } - case 25: // ??? (special to GC?) + case A_CMD_EXIT: // ??? (special to GC?) return i + 1; } }