From ec94904725527228624c20c8d41a92aaf0c6dfa0 Mon Sep 17 00:00:00 2001 From: inspectredc <78732756+inspectredc@users.noreply.github.com> Date: Wed, 3 Apr 2024 02:52:04 +0100 Subject: [PATCH 1/2] Match Audio_ProcessSeqCmd (#197) --- src/main/audio_general.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/main/audio_general.c b/src/main/audio_general.c index f5d092fc..44fa0751 100644 --- a/src/main/audio_general.c +++ b/src/main/audio_general.c @@ -892,7 +892,6 @@ void Audio_StopSequence(u8 seqPlayId, u16 fadeOutTime) { gActiveSequences[seqPlayId].seqId = 0xFFFF; } -#ifdef NON_MATCHING void Audio_ProcessSeqCmd(u32 seqCmd) { u16 flag; u16 channelDisableMask; @@ -935,7 +934,7 @@ void Audio_ProcessSeqCmd(u32 seqCmd) { AUDIOCMD_GLOBAL_DISCARD_SEQ_FONTS(seqNumber); } } - AUDIOCMD_GLOBAL_ASYNC_LOAD_FONT(seqNumber, 20, (seqPlayId + 1) & 0xFF); + AUDIOCMD_GLOBAL_ASYNC_LOAD_FONT(seqNumber, 20, (s8) (seqPlayId + 1)); // AudioThread_QueueCmdS8(0xF5000000 | ((temp1 & 0xFF) << 0x10) | 0x1400 | ((seqPlayId + 1) & 0xFF), // 0); } @@ -1119,16 +1118,15 @@ void Audio_ProcessSeqCmd(u32 seqCmd) { break; case 15: specId = seqCmd & 0xFF; - val = (seqCmd & 0xFF00) >> 8; - - gSfxChannelLayout = val; - + gSfxChannelLayout = (seqCmd & 0xFF00) >> 8; sp61 = sNewAudioSpecId; sNewAudioSpecId = specId; - if (sp61 != sNewAudioSpecId) { - AudioThread_ResetAudioHeap(sNewAudioSpecId); + + if (sp61 != specId) { + AudioThread_ResetAudioHeap(specId); func_8001DE1C(sp61); AUDIOCMD_GLOBAL_STOP_AUDIOCMDS(); + } else { Audio_StopSequence(SEQ_PLAYER_BGM, 1); Audio_StopSequence(SEQ_PLAYER_FANFARE, 1); @@ -1136,10 +1134,6 @@ void Audio_ProcessSeqCmd(u32 seqCmd) { break; } } -#else -void Audio_ProcessSeqCmd(u32 seqCmd); -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/audio_general/Audio_ProcessSeqCmd.s") -#endif void Audio_QueueSeqCmd(s32 seqCmd) { gAudioSeqCmds[gSeqCmdWritePos] = seqCmd; From bc4c757145d65de664d8f3e020557589f47c0580 Mon Sep 17 00:00:00 2001 From: inspectredc <78732756+inspectredc@users.noreply.github.com> Date: Wed, 3 Apr 2024 03:38:21 +0100 Subject: [PATCH 2/2] Match AudioLoad_RelocateFontAndPreloadSamples (#198) --- include/sf64audio_provisional.h | 2 +- src/main/audio_load.c | 25 ++++++++++--------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/include/sf64audio_provisional.h b/include/sf64audio_provisional.h index 02d2fe4e..5f4b5e0a 100644 --- a/include/sf64audio_provisional.h +++ b/include/sf64audio_provisional.h @@ -1117,7 +1117,7 @@ void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad); void AudioLoad_ProcessSlowLoads(s32 resetStatus); void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size); void AudioLoad_DmaSlowCopyUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkMediumParam); -AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, s32 size, s32 medium, s32 nChunks, OSMesgQueue* retQueue, u32 retMesg); +AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32 medium, s32 nChunks, OSMesgQueue* retQueue, u32 retMesg); void AudioLoad_ProcessAsyncLoads(s32 resetStatus); void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus); void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size); diff --git a/src/main/audio_load.c b/src/main/audio_load.c index 8ca47f84..9639921e 100644 --- a/src/main/audio_load.c +++ b/src/main/audio_load.c @@ -1016,7 +1016,7 @@ void AudioLoad_DmaSlowCopyUnkMedium(u32 devAddr, u8* ramAddr, u32 size, s32 unkM func_8000FC8C(func_8000FC7C(unkMediumParam, &addr), addr, ramAddr, size); } -AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, s32 size, s32 medium, s32 nChunks, +AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32 medium, s32 nChunks, OSMesgQueue* retQueue, u32 retMesg) { AudioAsyncLoad* asyncLoad; s32 i; @@ -1039,7 +1039,7 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, s32 size, s32 if (nChunks == 0) { asyncLoad->chunkSize = 0x1000; } else { - asyncLoad->chunkSize = ALIGN256(size / nChunks); + asyncLoad->chunkSize = ALIGN256((s32) size / nChunks); if (asyncLoad->chunkSize < 0x100) { asyncLoad->chunkSize = 0x100; } @@ -1213,8 +1213,6 @@ static char devstr54[] = "Warning: Length zero %x\n"; static char devstr55[] = "Wave Load %d \n"; static char devstr56[] = "Total Bg Wave Load %d \n"; -#ifdef NON_MATCHING -// gPreloadSampleStackTop ends up in the wrong register near the end. https://decomp.me/scratch/tGyym s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, SampleBankRelocInfo* relocData, s32 isAsync) { s32 i; Sample* sample; @@ -1236,7 +1234,7 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample for (i = 0; i < gNumUsedSamples; i++) { size += ALIGN16(gUsedSamples[i]->size); } - // if(size && size) {} + for (i = 0; i < gNumUsedSamples; i++) { if (gPreloadSampleStackTop == 120) { break; @@ -1280,12 +1278,13 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample } break; case 1: - gPreloadSampleStack[gPreloadSampleStackTop].sample = sample; - gPreloadSampleStack[gPreloadSampleStackTop].ramAddr = sampleRamAddr; - gPreloadSampleStack[gPreloadSampleStackTop].encodedInfo = (gPreloadSampleStackTop << 24) | 0xFFFFFF; - gPreloadSampleStack[gPreloadSampleStackTop].isFree = 0; - gPreloadSampleStack[gPreloadSampleStackTop].endAndMediumKey = - (u32) sample->sampleAddr + sample->size + sample->medium; + size = gPreloadSampleStackTop; + gPreloadSampleStack[size].sample = sample; + gPreloadSampleStack[size].ramAddr = sampleRamAddr; + gPreloadSampleStack[size].encodedInfo = (size << 24) | 0xFFFFFF; + gPreloadSampleStack[size].isFree = 0; + gPreloadSampleStack[size].endAndMediumKey = + (uintptr_t) sample->sampleAddr + sample->size + sample->medium; gPreloadSampleStackTop++; break; } @@ -1293,16 +1292,12 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample gNumUsedSamples = 0; if ((gPreloadSampleStackTop != 0) && !inProgress) { sample = gPreloadSampleStack[gPreloadSampleStackTop - 1].sample; - // if (1) {} nChunks = (sample->size / 0x1000) + 1; AudioLoad_StartAsyncLoad(sample->sampleAddr, gPreloadSampleStack[gPreloadSampleStackTop - 1].ramAddr, sample->size, sample->medium, nChunks, &gPreloadSampleQueue, gPreloadSampleStack[gPreloadSampleStackTop - 1].encodedInfo); } } -#else -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/audio_load/AudioLoad_RelocateFontAndPreloadSamples.s") -#endif // static char devstr55[] = "Wave Load %d \n"; // static char devstr56[] = "Total Bg Wave Load %d \n";