From 1eabeec82f79bade7da9bc31284f2eb6a37335a0 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Sat, 21 Jun 2025 07:34:15 -0400 Subject: [PATCH] jaudio_NES: link aramcall --- configure.py | 2 +- src/static/jaudio_NES/internal/aramcall.c | 44 +++++++++-------------- 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/configure.py b/configure.py index 7a9870ae..e7ed62e5 100644 --- a/configure.py +++ b/configure.py @@ -757,7 +757,7 @@ config.libs = [ Object(Matching, "jaudio_NES/internal/streamctrl.c"), Object(Matching, "jaudio_NES/internal/sub_sys.c"), Object(Matching, "jaudio_NES/internal/track.c"), - Object(NonMatching, "jaudio_NES/internal/aramcall.c"), + Object(Matching, "jaudio_NES/internal/aramcall.c"), Object(NonMatching, "jaudio_NES/internal/audioconst.c"), Object(NonMatching, "jaudio_NES/internal/audiotable.c"), Object(NonMatching, "jaudio_NES/internal/audiowork.c"), diff --git a/src/static/jaudio_NES/internal/aramcall.c b/src/static/jaudio_NES/internal/aramcall.c index e7f03b0b..3d527488 100644 --- a/src/static/jaudio_NES/internal/aramcall.c +++ b/src/static/jaudio_NES/internal/aramcall.c @@ -28,13 +28,7 @@ void Jac_RegisterARAMCallback(ARAMCallback callback) */ u32 LoadAram(char* filepath, u32* status, u32 dst) { - // GUH MUH BRUH - volatile char** filepathGuh = (volatile char**)&filepath; - volatile u32* dstGuh = &dst; - char* filepathMruh = (char*)*filepathGuh; - u32 dstMruh = *dstGuh; - - if (DVDT_LoadtoARAM(0, filepathMruh, dstMruh, 0, 0, status, NULL) == -1) { + if (DVDT_LoadtoARAM(0, filepath, dst, 0, 0, status, NULL) == -1) { return 0; } return dst; @@ -47,18 +41,7 @@ u32 LoadAram(char* filepath, u32* status, u32 dst) */ u32 LoadAramSingle(char* filepath, u32 src, u32 length, u32* status, u32 dst) { - // GUH MUH BRUH (this function is very stupidly written, why does this match?) - u32 pad[1]; - volatile char** filepathGuh = (volatile char**)&filepath; - volatile u32* srcGuh = &src; - volatile u32* lengthGuh = &length; - char* filepathMruh = (char*)*filepathGuh; - u32 lengthMuh = *lengthGuh; - u32 srcMuh = *srcGuh; - // u32 dstMuh = *dstGuh; - - // Why is normal dst passed into this function when everything else isn't??? - if (DVDT_LoadtoARAM(0, filepathMruh, dst, srcMuh, lengthMuh, status, NULL) == -1) { + if (DVDT_LoadtoARAM(0, filepath, dst, src, length, status, NULL) == -1) { return 0; } return dst; @@ -134,7 +117,8 @@ static BOOL first = TRUE; */ u32 LoadAram_Default(char* filename, u32 src, u32 length, u32* status, jaheap_* heap) { - char filepath[140]; + char filepath[128]; + u32 ret; if (first) { Init_AramMotherHeap(); @@ -145,16 +129,22 @@ u32 LoadAram_Default(char* filename, u32 src, u32 length, u32* status, jaheap_* strcat(filepath, filename); if (src == 0 && length == 0) { - if (!Jac_AllocHeap(heap, &aram_mother, DVDT_CheckFile(filepath))) { - return 0; - } - return LoadAram(filepath, status, heap->startAddress); + s32 fileOK = DVDT_CheckFile(filepath); + + if (!Jac_AllocHeap(heap, &aram_mother, fileOK)) { + ret = 0; + } else { + ret = LoadAram(filepath, status, heap->startAddress); + } } else { if (!Jac_AllocHeap(heap, &aram_mother, length)) { - return 0; - } - return LoadAramSingle(filepath, src, length, status, heap->startAddress); + ret = 0; + } else { + ret = LoadAramSingle(filepath, src, length, status, heap->startAddress); + } } + + return ret; } /*