Restart music upon set_background_music() call if BETTER_REVERB preset changes (#797)

This commit is contained in:
Gregory Heskett
2024-06-01 10:55:58 -04:00
committed by GitHub
parent 7ffa9a3bd7
commit dcd58b2aad
4 changed files with 9 additions and 1 deletions

View File

@@ -1062,6 +1062,7 @@ void init_reverb_us(s32 presetId) {
betterReverbPreset = &gBetterReverbSettings[0];
}
activeBetterReverbPreset = gBetterReverbPresetValue;
betterReverbLightweight = betterReverbPreset->useLightweightSettings;
betterReverbDownsampleRate = betterReverbPreset->downsampleRate;
monoReverb = betterReverbPreset->isMono;

View File

@@ -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;

View File

@@ -55,6 +55,7 @@ enum ChannelIndexes {
extern u8 toggleBetterReverb;
extern u8 gBetterReverbPresetValue;
extern u8 activeBetterReverbPreset;
extern u8 betterReverbLightweight;
extern s8 betterReverbDownsampleRate;
extern u8 monoReverb;

View File

@@ -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 {