mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-03-03 02:01:47 -05:00
fix audio crash when trying to detect BGM_DISABLED (#3150)
This commit is contained in:
parent
7c31eafc1e
commit
bea24fcde7
@ -486,8 +486,10 @@ void AudioLoad_AsyncLoadFont(s32 fontId, s32 arg1, s32 retData, OSMesgQueue* ret
|
||||
u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
|
||||
s32 index;
|
||||
|
||||
if (seqId == NA_BGM_DISABLED)
|
||||
return NULL;
|
||||
// Check for NA_BGM_DISABLED and account for seqId that are stripped with `& 0xFF` by the caller
|
||||
if (seqId == NA_BGM_DISABLED || seqId == 0xFF) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
u16 newSeqId = AudioEditor_GetReplacementSeq(seqId);
|
||||
if (newSeqId > sequenceMapSize || !sequenceMap[newSeqId]) {
|
||||
|
@ -4659,19 +4659,25 @@ void func_800F5C2C(void) {
|
||||
|
||||
void Audio_PlayFanfare(u16 seqId)
|
||||
{
|
||||
u16 sp26;
|
||||
u32 sp20;
|
||||
u8* sp1C;
|
||||
u8* sp18;
|
||||
u16 curSeqId;
|
||||
u32 outNumFonts;
|
||||
u8* curFontId;
|
||||
u8* requestedFontId;
|
||||
|
||||
sp26 = func_800FA0B4(SEQ_PLAYER_FANFARE);
|
||||
sp1C = func_800E5E84(sp26 & 0xFF, &sp20);
|
||||
sp18 = func_800E5E84(seqId, &sp20);
|
||||
if (!sp1C || !sp18) {
|
||||
curSeqId = func_800FA0B4(SEQ_PLAYER_FANFARE);
|
||||
|
||||
// Although seqIds are u16, there is no fanfare that is above 0xFF
|
||||
// Sometimes the game will add 0x900 to a requested fanfare ID
|
||||
// The `& 0xFF` here is to strip off this 0x900 and get the original fanfare ID
|
||||
// when getting the sound font data for the sequence
|
||||
curFontId = func_800E5E84(curSeqId & 0xFF, &outNumFonts);
|
||||
requestedFontId = func_800E5E84(seqId & 0xFF, &outNumFonts);
|
||||
|
||||
if (!curFontId || !requestedFontId) {
|
||||
// disable BGM, we're about to null deref!
|
||||
D_8016B9F4 = 1;
|
||||
} else {
|
||||
if ((sp26 == NA_BGM_DISABLED) || (*sp1C == *sp18)) {
|
||||
if ((curSeqId == NA_BGM_DISABLED) || (*curFontId == *requestedFontId)) {
|
||||
D_8016B9F4 = 1;
|
||||
} else {
|
||||
D_8016B9F4 = 5;
|
||||
|
Loading…
x
Reference in New Issue
Block a user