diff --git a/main.cpp b/main.cpp index 08adf901783..d49c029c9ad 100644 --- a/main.cpp +++ b/main.cpp @@ -124,6 +124,9 @@ int main(int argc, char *argv[]) } else { Scumm *scumm = Scumm::createFromDetector(&detector, system); g_scumm = scumm; + g_scumm->_sound_volume_master = 0; + g_scumm->_sound_volume_music = detector._music_volume; + g_scumm->_sound_volume_sfx = detector._sfx_volume; /* bind to Gui */ scumm->_gui = &gui; diff --git a/sound.cpp b/sound.cpp index 491350df322..806d213c8b8 100644 --- a/sound.cpp +++ b/sound.cpp @@ -408,19 +408,22 @@ void Scumm::setupSound() IMuse *se = _imuse; if (se) { se->setBase(res.address[rtSound]); - if (!_soundVolumePreset) { - if (se->get_music_volume() == 0) - se->set_music_volume(60); - se->set_master_volume(125); - _sound_volume_music = se->get_music_volume(); - //_sound_volume_master = (se->get_master_volume() / 127); - _sound_volume_master = se->get_master_volume(); + if (!scummcfg->get("music_volume", "scummvm")) + _sound_volume_music = 60; + else + _sound_volume_music = atoi(scummcfg->get("music_volume", "scummvm")); + if (!scummcfg->get("master_volume", "scummvm")) + _sound_volume_master = 125; + else + _sound_volume_master = atoi(scummcfg->get("master_volume", "scummvm")); + if (!scummcfg->get("sfx_volume", "scummvm")) + _sound_volume_sfx = 100; + else + _sound_volume_sfx = atoi(scummcfg->get("sfx_volume", "scummvm")); - } - else { - se->set_music_volume(_sound_volume_music); - se->set_master_volume(_sound_volume_master); - } + se->set_master_volume(_sound_volume_master); + se->set_music_volume(_sound_volume_music); + _mixer->set_volume(_sound_volume_sfx); } _sfxFile = openSfxFile(); } @@ -431,6 +434,7 @@ void Scumm::pauseSounds(bool pause) if (se) se->pause(pause); _soundsPaused = pause; + _mixer->pause(pause); } enum {