aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gui.cpp1
-rw-r--r--scummvm.cpp1
-rw-r--r--sound.cpp1
-rw-r--r--sound/mixer.cpp8
-rw-r--r--sound/mixer.h2
5 files changed, 11 insertions, 2 deletions
diff --git a/gui.cpp b/gui.cpp
index db4f59a7e1..03ab77459a 100644
--- a/gui.cpp
+++ b/gui.cpp
@@ -609,6 +609,7 @@ void Gui::handleSoundDialogCommand(int cmd)
imuse->set_music_volume(_s->_sound_volume_music);
imuse->set_master_volume(_s->_sound_volume_master);
_s->_mixer->set_volume(_s->_sound_volume_sfx);
+ _s->_mixer->set_music_volume(_s->_sound_volume_music);
scummcfg->set("master_volume", _s->_sound_volume_master);
scummcfg->set("music_volume", _s->_sound_volume_music);
scummcfg->set("sfx_volume", _s->_sound_volume_sfx);
diff --git a/scummvm.cpp b/scummvm.cpp
index 453bbbcc59..e09fdd4e3c 100644
--- a/scummvm.cpp
+++ b/scummvm.cpp
@@ -1525,6 +1525,7 @@ Scumm *Scumm::createFromDetector(GameDetector *detector, OSystem *syst)
}
}
scumm->_mixer->set_volume(128);
+ scumm->_mixer->set_music_volume(128);
/* HACK !!! */
g_scumm = scumm;
diff --git a/sound.cpp b/sound.cpp
index 8e0fbae593..ce1d30b8d6 100644
--- a/sound.cpp
+++ b/sound.cpp
@@ -527,6 +527,7 @@ void Scumm::setupSound()
se->set_master_volume(_sound_volume_master);
se->set_music_volume(_sound_volume_music);
_mixer->set_volume(_sound_volume_sfx);
+ _mixer->set_music_volume(_sound_volume_music);
}
_sfxFile = openSfxFile();
}
diff --git a/sound/mixer.cpp b/sound/mixer.cpp
index 73b793814c..e44b459ca4 100644
--- a/sound/mixer.cpp
+++ b/sound/mixer.cpp
@@ -201,6 +201,11 @@ void SoundMixer::set_volume(int volume)
_volume_table[i] = ((int8)i) * volume;
}
+void SoundMixer::set_music_volume(int volume)
+{
+ _music_volume = volume;
+}
+
#ifdef COMPRESSED_SOUND_FILE
bool SoundMixer::Channel::sound_finished()
{
@@ -710,8 +715,7 @@ void SoundMixer::Channel_MP3_CDMUSIC::mix(int16 *data, uint len)
{
mad_fixed_t const *ch;
mad_timer_t frame_duration;
- const int16 *vol_tab = _mixer->_volume_table;
- unsigned char volume = ((int)vol_tab[1]) * 32 / 255;
+ unsigned char volume = _mixer->_music_volume * 32 / 255;
if (_to_be_destroyed) {
real_destroy();
diff --git a/sound/mixer.h b/sound/mixer.h
index 531cfc9c69..49fe0eca19 100644
--- a/sound/mixer.h
+++ b/sound/mixer.h
@@ -131,6 +131,7 @@ public:
uint _output_rate;
int16 *_volume_table;
+ int _music_volume;
bool _paused;
@@ -192,6 +193,7 @@ public:
/* set the volume, 0-256 */
void set_volume(int volume);
+ void set_music_volume(int volume);
/* pause - unpause */
void pause(bool paused);