From 379649beadeeec32f73e4e203887e57d66977658 Mon Sep 17 00:00:00 2001 From: Nicholas Estelami Date: Wed, 13 Jul 2022 21:26:44 -0400 Subject: [PATCH] Fixed soundfont issues --- soh/src/code/audio_seqplayer.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/soh/src/code/audio_seqplayer.c b/soh/src/code/audio_seqplayer.c index 3ae70719c..b8fbd9e1f 100644 --- a/soh/src/code/audio_seqplayer.c +++ b/soh/src/code/audio_seqplayer.c @@ -1176,9 +1176,13 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { if (seqPlayer->defaultFont != 0xFF) { SequenceData sDat = ResourceMgr_LoadSeqByName(sequenceMap[seqPlayer->seqId]); - int8_t idx = (sDat.numFonts - result - 1); - command = sDat.fonts[abs(idx)]; + // The game apparantely would sometimes do negative array lookups, the result of which would get rejected by AudioHeap_SearchCaches, never + // changing the actual fontid. + if (result > sDat.numFonts) + break; + + command = sDat.fonts[(sDat.numFonts - result - 1)]; } if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, command))