GB: Fix sound options not working

Fix crash when adjusting echo/stereo sliders.

Fix enhancements not working when selected

Fix settings not loaded at startup

Reviews and/or modifications are welcome. Obviously, im trying out if I understand how options are linked in WX so I am not quite sure if this is the right thing to do this.
This commit is contained in:
retro-wertz 2018-06-09 21:08:20 +08:00
parent abb62df6f3
commit 4e4424e806
2 changed files with 9 additions and 6 deletions

View File

@ -2315,16 +2315,16 @@ EVT_HANDLER_MASK(SoundConfigure, "Sound options...", CMDEN_NREC_ANY)
return;
switch (panel->game_type()) {
case IMAGE_UNKNOWN:
break;
case IMAGE_GB:
gb_effects_config.echo = (float)gopts.gb_echo / 100.0;
gb_effects_config.stereo = (float)gopts.gb_stereo / 100.0;
// note that setting declick may reset gb sound engine
gbSoundSetDeclicking(gopts.gb_declick);
gbSoundSetSampleRate(!gopts.sound_qual ? 48000 : 44100 / (1 << (gopts.sound_qual - 1)));
break;
case IMAGE_GBA:
case IMAGE_UNKNOWN:
soundSetSampleRate(!gopts.sound_qual ? 48000 : 44100 / (1 << (gopts.sound_qual - 1)));
break;
}
@ -2341,9 +2341,6 @@ EVT_HANDLER_MASK(SoundConfigure, "Sound options...", CMDEN_NREC_ANY)
soundSetVolume((float)gopts.sound_vol / 100.0);
update_opts();
if (emulating)
soundReset();
}
EVT_HANDLER(EmulatorDirectories, "Directories...")
@ -2504,18 +2501,22 @@ EVT_HANDLER(GBASoundInterpolation, "GBA sound interpolation")
EVT_HANDLER(GBDeclicking, "GB sound declicking")
{
GetMenuOptionBool("GBDeclicking", gopts.gb_declick);
// note that setting declick may reset gb sound engine
gbSoundSetDeclicking(gopts.gb_declick);
update_opts();
}
EVT_HANDLER(GBEnhanceSound, "Enable GB sound effects")
{
GetMenuOptionBool("GBEnhanceSound", gopts.gb_effects_config_enabled);
gb_effects_config.enabled = gopts.gb_effects_config_enabled;
update_opts();
}
EVT_HANDLER(GBSurround, "GB surround sound effect (%)")
{
GetMenuOptionBool("GBSurround", gopts.gb_effects_config_surround);
gb_effects_config.surround = gopts.gb_effects_config_surround;
update_opts();
}

View File

@ -161,6 +161,8 @@ void GameArea::LoadGame(const wxString& name)
}
// start sound; this must happen before CPU stuff
gb_effects_config.enabled = gopts.gb_effects_config_enabled;
gb_effects_config.surround = gopts.gb_effects_config_surround;
gb_effects_config.echo = (float)gopts.gb_echo / 100.0;
gb_effects_config.stereo = (float)gopts.gb_stereo / 100.0;
gbSoundSetDeclicking(gopts.gb_declick);