diff --git a/src/audio/heap.c b/src/audio/heap.c index c9ec78c5..75161172 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -1062,6 +1062,7 @@ void init_reverb_us(s32 presetId) { betterReverbPreset = &gBetterReverbSettings[0]; } + activeBetterReverbPreset = gBetterReverbPresetValue; betterReverbLightweight = betterReverbPreset->useLightweightSettings; betterReverbDownsampleRate = betterReverbPreset->downsampleRate; monoReverb = betterReverbPreset->isMono; diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index feec8785..ce99c745 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -43,6 +43,7 @@ #ifdef BETTER_REVERB // Do not touch these values manually, unless you want potential for problems. u8 gBetterReverbPresetValue = 0; +u8 activeBetterReverbPreset = 0; u8 toggleBetterReverb = FALSE; u8 betterReverbLightweight = FALSE; u8 monoReverb; diff --git a/src/audio/synthesis.h b/src/audio/synthesis.h index f66267b7..467e1dcc 100644 --- a/src/audio/synthesis.h +++ b/src/audio/synthesis.h @@ -55,6 +55,7 @@ enum ChannelIndexes { extern u8 toggleBetterReverb; extern u8 gBetterReverbPresetValue; +extern u8 activeBetterReverbPreset; extern u8 betterReverbLightweight; extern s8 betterReverbDownsampleRate; extern u8 monoReverb; diff --git a/src/game/sound_init.c b/src/game/sound_init.c index ce9be0b6..7e784404 100644 --- a/src/game/sound_init.c +++ b/src/game/sound_init.c @@ -3,6 +3,7 @@ #include "area.h" #include "audio/external.h" #include "audio/load.h" +#include "audio/synthesis.h" #include "engine/graph_node.h" #include "engine/math_util.h" #include "level_table.h" @@ -230,7 +231,11 @@ void play_infinite_stairs_music(void) { * Called from threads: thread5_game_loop */ void set_background_music(u16 a, u16 seqArgs, s16 fadeTimer) { - if (gResetTimer == 0 && seqArgs != sCurrentMusic) { + if (gResetTimer == 0 && (seqArgs != sCurrentMusic +#ifdef BETTER_REVERB + || gBetterReverbPresetValue != activeBetterReverbPreset +#endif + )) { if (gCurrCreditsEntry != NULL) { sound_reset(7); } else {