summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authorChristopher Leggett <chris@leggett.dev>2022-12-13 14:55:00 -0500
committerGitHub <noreply@github.com>2022-12-13 14:55:00 -0500
commit7718e74d735bd2e7e2c4bf1b208312a4a2be5de6 (patch)
treef129f7e7b6054702bd76c2bc1bbd493eb3a44c2e /soh/src/code
parent639e51bb8edcda4a4e7756de88070b7a53b91079 (diff)
Always use authentic cache policy for replaced seqs (#2176)
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/audio_load.c8
1 files changed, 8 insertions, 0 deletions
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);