From 7718e74d735bd2e7e2c4bf1b208312a4a2be5de6 Mon Sep 17 00:00:00 2001 From: Christopher Leggett Date: Tue, 13 Dec 2022 14:55:00 -0500 Subject: Always use authentic cache policy for replaced seqs (#2176) --- soh/src/code/audio_load.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'soh/src/code') diff --git a/soh/src/code/audio_load.c b/soh/src/code/audio_load.c index 354119cb2..ad6310157 100644 --- a/soh/src/code/audio_load.c +++ b/soh/src/code/audio_load.c @@ -78,6 +78,8 @@ void* sUnusedHandler = NULL; s32 gAudioContextInitalized = false; char* sequenceMap[MAX_SEQUENCES]; +// A map of authentic sequence IDs to their cache policies, for use with sequence swapping. +u8 seqCachePolicyMap[MAX_AUTHENTIC_SEQID]; char* fontMap[256]; uintptr_t fontStart; @@ -569,15 +571,20 @@ s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) { s32 index; s32 numFonts; s32 fontId; + s8 authCachePolicy = -1; // since 0 is a valid cache policy value AudioSeq_SequencePlayerDisable(seqPlayer); fontId = 0xFF; if (gAudioContext.seqReplaced[playerIdx]) { + authCachePolicy = seqCachePolicyMap[seqId]; seqId = gAudioContext.seqToPlay[playerIdx]; } SequenceData seqData2 = ResourceMgr_LoadSeqByName(sequenceMap[seqId]); + if (authCachePolicy != -1) { + seqData2.cachePolicy = authCachePolicy; + } for (int i = 0; i < seqData2.numFonts; i++) { @@ -1316,6 +1323,7 @@ void AudioLoad_Init(void* heap, size_t heapSize) { strcpy(str, seqList[i]); sequenceMap[sDat.seqNumber] = str; + seqCachePolicyMap[sDat.seqNumber] = sDat.cachePolicy; } free(seqList); -- cgit v1.2.3