[Scummvm-cvs-logs] CVS: scummvm/scumm dialogs.cpp,1.116,1.117 imuse.cpp,2.121,2.122 imuse.h,1.54,1.55 imuse_internal.h,2.35,2.36 input.cpp,2.7,2.8 music.h,2.12,2.13 player_mod.cpp,2.18,2.19 player_mod.h,2.16,2.17 player_v2.cpp,2.52,2.53 player_v2.h,2.30,2.31 player_v2a.cpp,2.20,2.21 player_v2a.h,2.10,2.11 player_v3a.cpp,1.20,1.21 player_v3a.h,1.20,1.21 saveload.cpp,1.184,1.185 script_v6he.cpp,2.139,2.140 scumm.cpp,1.279,1.280 scumm.h,1.520,1.521
Max Horn
fingolfin at users.sourceforge.net
Sun Nov 28 13:25:04 CET 2004
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30971
Modified Files:
dialogs.cpp imuse.cpp imuse.h imuse_internal.h input.cpp
music.h player_mod.cpp player_mod.h player_v2.cpp player_v2.h
player_v2a.cpp player_v2a.h player_v3a.cpp player_v3a.h
saveload.cpp script_v6he.cpp scumm.cpp scumm.h
Log Message:
Trying to cleanup the volume control mess inside the SCUMM engine: renamed MusicEngine::setMasterVolume to setMusicVolume; fixed iMuse to use the correct method for setMusicVolume (previously modified the iMuse internal volume control); hooked up the volume control of various other music engines; added ScummEngine::setupVolume method which can be called whenever volume settings change, and which gurantees that those are handled uniformly
Index: dialogs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.cpp,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -d -r1.116 -r1.117
--- dialogs.cpp 27 Nov 2004 13:10:30 -0000 1.116
+++ dialogs.cpp 28 Nov 2004 21:23:51 -0000 1.117
@@ -462,31 +462,8 @@
}
GUI_OptionsDialog::close();
-
- // Sync the engine with the config manager
- int soundVolumeMaster = ConfMan.getInt("master_volume");
- int soundVolumeMusic = ConfMan.getInt("music_volume");
- int soundVolumeSfx = ConfMan.getInt("sfx_volume");
- int soundVolumeSpeech = ConfMan.getInt("speech_volume");
-
- if (_vm->_imuseDigital) {
- _vm->_mixer->setVolume(soundVolumeMaster);
- _vm->_imuseDigital->setGroupMusicVolume(soundVolumeMusic / 2);
- _vm->_imuseDigital->setGroupSfxVolume(soundVolumeSfx / 2);
- _vm->_imuseDigital->setGroupVoiceVolume(soundVolumeSpeech / 2);
- return;
- }
-
- if (_vm->_imuse) {
- _vm->_imuse->set_music_volume(soundVolumeMusic);
- }
-
- if (_vm->_musicEngine) {
- _vm->_musicEngine->setMasterVolume(soundVolumeMaster);
- }
-
- _vm->_mixer->setVolume(soundVolumeSfx * soundVolumeMaster / 255);
- _vm->_mixer->setMusicVolume(soundVolumeMusic);
+
+ _vm->setupVolumes();
}
Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 2.121
retrieving revision 2.122
diff -u -d -r2.121 -r2.122
--- imuse.cpp 27 Nov 2004 14:53:36 -0000 2.121
+++ imuse.cpp 28 Nov 2004 21:23:52 -0000 2.122
@@ -566,13 +566,13 @@
}
}
-int IMuseInternal::set_music_volume(uint vol) {
+int IMuseInternal::setMusicVolume(uint vol) {
if (vol > 255)
vol = 255;
if (_music_volume == vol)
return 0;
_music_volume = vol;
- vol = vol * _master_volume / 255;
+ vol = _master_volume * _music_volume / 255;
for (uint i = 0; i < ARRAYSIZE(_channel_volume); i++) {
_channel_volume_eff[i] = _channel_volume[i] * vol / 255;
}
@@ -581,13 +581,13 @@
return 0;
}
-int IMuseInternal::setMasterVolume(uint vol) {
+int IMuseInternal::setImuseMasterVolume(uint vol) {
if (vol > 255)
vol = 255;
if (_master_volume == vol)
return 0;
_master_volume = vol;
- vol = vol * _music_volume / 255;
+ vol = _master_volume * _music_volume / 255;
for (uint i = 0; i < ARRAYSIZE(_channel_volume); i++) {
_channel_volume_eff[i] = _channel_volume[i] * vol / 255;
}
@@ -685,8 +685,8 @@
if (a[1] > 127)
return -1;
else {
- warning ("IMuse doCommand(6) - setMasterVolume (%d)", a[1]);
- return setMasterVolume((a[1] << 1) |(a[1] ? 0 : 1)); // Convert from 0-127 to 0-255
+ warning ("IMuse doCommand(6) - setImuseMasterVolume (%d)", a[1]);
+ return setImuseMasterVolume((a[1] << 1) |(a[1] ? 0 : 1)); // Convert from 0-127 to 0-255
}
case 7:
warning ("IMuse doCommand(7) - getMasterVolume (%d)", a[1]);
@@ -1378,7 +1378,7 @@
// Load all sounds that we need
fix_players_after_load(scumm);
fix_parts_after_load();
- setMasterVolume(_master_volume);
+ setImuseMasterVolume(_master_volume);
if (_midi_native)
reallocateMidiChannels(_midi_native);
@@ -1745,8 +1745,7 @@
void IMuse::on_timer(MidiDriver *midi) { in(); _target->on_timer(midi); out(); }
void IMuse::pause(bool paused) { in(); _target->pause(paused); out(); }
int IMuse::save_or_load(Serializer *ser, ScummEngine *scumm) { in(); int ret = _target->save_or_load(ser, scumm); out(); return ret; }
-int IMuse::set_music_volume(uint vol) { in(); int ret = _target->set_music_volume(vol); out(); return ret; }
-void IMuse::setMasterVolume(int vol) { in(); _target->setMasterVolume(vol); out(); }
+void IMuse::setMusicVolume(int vol) { in(); _target->setMusicVolume(vol); out(); }
void IMuse::startSound(int sound) { in(); _target->startSound(sound); out(); }
void IMuse::stopSound(int sound) { in(); _target->stopSound(sound); out(); }
void IMuse::stopAllSounds() { in(); _target->stopAllSounds(); out(); }
Index: imuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.h,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- imuse.h 27 Nov 2004 14:53:37 -0000 1.54
+++ imuse.h 28 Nov 2004 21:23:53 -0000 1.55
@@ -61,8 +61,7 @@
void on_timer(MidiDriver *midi);
void pause(bool paused);
int save_or_load(Serializer *ser, ScummEngine *scumm);
- int set_music_volume(uint vol);
- void setMasterVolume(int vol);
+ void setMusicVolume(int vol);
void startSound(int sound);
void stopSound(int sound);
void stopAllSounds();
Index: imuse_internal.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_internal.h,v
retrieving revision 2.35
retrieving revision 2.36
diff -u -d -r2.35 -r2.36
--- imuse_internal.h 27 Nov 2004 14:53:37 -0000 2.35
+++ imuse_internal.h 28 Nov 2004 21:23:53 -0000 2.36
@@ -450,8 +450,8 @@
int terminate1();
int terminate2();
int save_or_load(Serializer *ser, ScummEngine *scumm);
- int set_music_volume(uint vol);
- int setMasterVolume(uint vol);
+ int setMusicVolume(uint vol);
+ int setImuseMasterVolume(uint vol);
bool startSound(int sound);
int stopSound(int sound);
int stopAllSounds();
Index: input.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/input.cpp,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -d -r2.7 -r2.8
--- input.cpp 21 Nov 2004 14:48:17 -0000 2.7
+++ input.cpp 28 Nov 2004 21:23:53 -0000 2.8
@@ -382,15 +382,13 @@
vol -= 16;
vol = vol & 0xF0;
ConfMan.set("music_volume", vol);
- if (_imuse)
- _imuse->set_music_volume (vol);
+ setupVolumes();
} else if (_lastKeyHit == ']') { // ] Music volume up
int vol = ConfMan.getInt("music_volume");
vol = (vol + 16) & 0xFF0;
if (vol > 255) vol = 255;
ConfMan.set("music_volume", vol);
- if (_imuse)
- _imuse->set_music_volume (vol);
+ setupVolumes();
} else if (_lastKeyHit == '-') { // - text speed down
if (_defaultTalkDelay < 9)
_defaultTalkDelay++;
Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/music.h,v
retrieving revision 2.12
retrieving revision 2.13
diff -u -d -r2.12 -r2.13
--- music.h 28 Sep 2004 23:47:04 -0000 2.12
+++ music.h 28 Nov 2004 21:23:53 -0000 2.13
@@ -45,7 +45,7 @@
* Set the output volume.
* @param vol the new output volume
*/
- virtual void setMasterVolume(int vol) = 0;
+ virtual void setMusicVolume(int vol) = 0;
/**
* Start playing the sound with the given id.
Index: player_mod.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_mod.cpp,v
retrieving revision 2.18
retrieving revision 2.19
diff -u -d -r2.18 -r2.19
--- player_mod.cpp 27 Nov 2004 16:12:11 -0000 2.18
+++ player_mod.cpp 28 Nov 2004 21:23:53 -0000 2.19
@@ -59,7 +59,7 @@
}
}
-void Player_MOD::setMasterVolume(int vol) {
+void Player_MOD::setMusicVolume(int vol) {
_maxvol = vol;
}
Index: player_mod.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_mod.h,v
retrieving revision 2.16
retrieving revision 2.17
diff -u -d -r2.16 -r2.17
--- player_mod.h 27 Nov 2004 16:18:50 -0000 2.16
+++ player_mod.h 28 Nov 2004 21:23:53 -0000 2.17
@@ -38,7 +38,7 @@
public:
Player_MOD(ScummEngine *scumm);
virtual ~Player_MOD();
- virtual void setMasterVolume(int vol);
+ virtual void setMusicVolume(int vol);
virtual void startChannel(int id, void *data, int size, int rate, uint8 vol, int loopStart = 0, int loopEnd = 0, int8 pan = 0);
virtual void stopChannel(int id);
Index: player_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2.cpp,v
retrieving revision 2.52
retrieving revision 2.53
diff -u -d -r2.52 -r2.53
--- player_v2.cpp 27 Nov 2004 16:12:11 -0000 2.52
+++ player_v2.cpp 28 Nov 2004 21:24:00 -0000 2.53
@@ -374,7 +374,7 @@
_RNG = NG_PRESET;
set_pcjr(pcjr);
- setMasterVolume(255);
+ setMusicVolume(255);
_mixer->setupPremix(this);
}
@@ -416,7 +416,7 @@
mutex_down();
}
-void Player_V2::setMasterVolume (int vol) {
+void Player_V2::setMusicVolume (int vol) {
if (vol > 255)
vol = 255;
Index: player_v2.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2.h,v
retrieving revision 2.30
retrieving revision 2.31
diff -u -d -r2.30 -r2.31
--- player_v2.h 27 Nov 2004 16:18:50 -0000 2.30
+++ player_v2.h 28 Nov 2004 21:24:00 -0000 2.31
@@ -78,7 +78,7 @@
Player_V2(ScummEngine *scumm, bool pcjr);
virtual ~Player_V2();
- virtual void setMasterVolume(int vol);
+ virtual void setMusicVolume(int vol);
virtual void startSound(int sound);
virtual void stopSound(int sound);
virtual void stopAllSounds();
Index: player_v2a.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2a.cpp,v
retrieving revision 2.20
retrieving revision 2.21
diff -u -d -r2.20 -r2.21
--- player_v2a.cpp 8 Jan 2004 20:37:25 -0000 2.20
+++ player_v2a.cpp 28 Nov 2004 21:24:00 -0000 2.21
@@ -1178,8 +1178,8 @@
#endif
}
-void Player_V2A::setMasterVolume (int vol) {
- _mod->setMasterVolume(vol);
+void Player_V2A::setMusicVolume (int vol) {
+ _mod->setMusicVolume(vol);
}
int Player_V2A::getSoundSlot (int id) const {
Index: player_v2a.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2a.h,v
retrieving revision 2.10
retrieving revision 2.11
diff -u -d -r2.10 -r2.11
--- player_v2a.h 28 Sep 2004 23:47:04 -0000 2.10
+++ player_v2a.h 28 Nov 2004 21:24:00 -0000 2.11
@@ -43,7 +43,7 @@
Player_V2A(ScummEngine *scumm);
virtual ~Player_V2A();
- virtual void setMasterVolume(int vol);
+ virtual void setMusicVolume(int vol);
virtual void startSound(int sound);
virtual void stopSound(int sound);
virtual void stopAllSounds();
Index: player_v3a.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v3a.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- player_v3a.cpp 15 Feb 2004 08:06:32 -0000 1.20
+++ player_v3a.cpp 28 Nov 2004 21:24:00 -0000 1.21
@@ -75,8 +75,8 @@
}
}
-void Player_V3A::setMasterVolume (int vol) {
- _mod->setMasterVolume(vol);
+void Player_V3A::setMusicVolume (int vol) {
+ _mod->setMusicVolume(vol);
}
int Player_V3A::getMusChan (int id) const {
Index: player_v3a.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v3a.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- player_v3a.h 28 Sep 2004 23:47:04 -0000 1.20
+++ player_v3a.h 28 Nov 2004 21:24:00 -0000 1.21
@@ -42,7 +42,7 @@
Player_V3A(ScummEngine *scumm);
virtual ~Player_V3A();
- virtual void setMasterVolume(int vol);
+ virtual void setMusicVolume(int vol);
virtual void startSound(int sound);
virtual void stopSound(int sound);
virtual void stopAllSounds();
Index: saveload.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/saveload.cpp,v
retrieving revision 1.184
retrieving revision 1.185
diff -u -d -r1.184 -r1.185
--- saveload.cpp 27 Nov 2004 18:01:44 -0000 1.184
+++ saveload.cpp 28 Nov 2004 21:24:00 -0000 1.185
@@ -870,13 +870,14 @@
if (_imuse && (_saveSound || !_saveTemporaryState)) {
_imuse->save_or_load(s, this);
- _imuse->setMasterVolume(ConfMan.getInt("master_volume"));
- _imuse->set_music_volume(ConfMan.getInt("music_volume"));
}
if (_imuseDigital) {
_imuseDigital->saveOrLoad(s);
}
+
+ if (s->isLoading())
+ setupVolumes();
}
void ScummEngine::saveLoadResource(Serializer *ser, int type, int idx) {
Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.139
retrieving revision 2.140
diff -u -d -r2.139 -r2.140
--- script_v6he.cpp 19 Oct 2004 12:30:41 -0000 2.139
+++ script_v6he.cpp 28 Nov 2004 21:24:00 -0000 2.140
@@ -1159,7 +1159,7 @@
int arg = pop();
switch (subOp) {
case 0xde:
- _imuse->set_music_volume(arg);
+ _imuse->setMusicVolume(arg);
break;
case 0xdf:
// Used in fbear introduction
Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.279
retrieving revision 1.280
diff -u -d -r1.279 -r1.280
--- scumm.cpp 27 Nov 2004 17:50:22 -0000 1.279
+++ scumm.cpp 28 Nov 2004 21:24:00 -0000 1.280
@@ -1091,8 +1091,7 @@
if (_imuse) {
_imuse->setBase(res.address[rtSound]);
- _imuse->setMasterVolume(ConfMan.getInt("master_volume"));
- _imuse->set_music_volume(ConfMan.getInt("music_volume"));
+ _imuse->setMusicVolume(ConfMan.getInt("music_volume"));
}
_sound->setupSound();
@@ -1326,16 +1325,10 @@
warning("MIDI driver depends on sound mixer, switching to null MIDI driver");
}
}
- _mixer->setVolume(ConfMan.getInt("sfx_volume") * ConfMan.getInt("master_volume") / 255);
- _mixer->setMusicVolume(ConfMan.getInt("music_volume"));
// Init iMuse
if (_features & GF_DIGI_IMUSE) {
_musicEngine = _imuseDigital = new IMuseDigital(this, 10);
- _mixer->setVolume(ConfMan.getInt("master_volume"));
- _imuseDigital->setGroupMusicVolume(ConfMan.getInt("music_volume") / 2);
- _imuseDigital->setGroupSfxVolume(ConfMan.getInt("sfx_volume") / 2);
- _imuseDigital->setGroupVoiceVolume(ConfMan.getInt("speech_volume") / 2);
} else if ((_features & GF_AMIGA) && (_version == 2)) {
_musicEngine = new Player_V2A(this);
} else if ((_features & GF_AMIGA) && (_version == 3)) {
@@ -1367,12 +1360,42 @@
}
if (midi == MDT_TOWNS)
_imuse->property(IMuse::PROP_DIRECT_PASSTHROUGH, 1);
- _imuse->set_music_volume(ConfMan.getInt("music_volume"));
}
}
+
+ setupVolumes();
+
#endif // ph0x-hack
}
+void ScummEngine::setupVolumes() {
+
+ // Sync the engine with the config manager
+ int soundVolumeMaster = ConfMan.getInt("master_volume");
+ int soundVolumeMusic = ConfMan.getInt("music_volume");
+ int soundVolumeSfx = ConfMan.getInt("sfx_volume");
+ int soundVolumeSpeech = ConfMan.getInt("speech_volume");
+
+ if (_imuse) {
+ _imuse->setMusicVolume(soundVolumeMusic);
+ }
+
+ if (_musicEngine) {
+ _musicEngine->setMusicVolume(soundVolumeMusic);
+ }
+
+ _mixer->setVolume(soundVolumeSfx * soundVolumeMaster / 255);
+ _mixer->setMusicVolume(soundVolumeMusic);
+
+ if (_imuseDigital) {
+ _mixer->setVolume(soundVolumeMaster);
+ _imuseDigital->setGroupMusicVolume(soundVolumeMusic / 2);
+ _imuseDigital->setGroupSfxVolume(soundVolumeSfx / 2);
+ _imuseDigital->setGroupVoiceVolume(soundVolumeSpeech / 2);
+ }
+}
+
+
#pragma mark -
#pragma mark --- Main loop ---
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.520
retrieving revision 1.521
diff -u -d -r1.520 -r1.521
--- scumm.h 27 Nov 2004 17:50:22 -0000 1.520
+++ scumm.h 28 Nov 2004 21:24:01 -0000 1.521
@@ -393,6 +393,7 @@
void loadCJKFont();
void setupMusic(int midi);
+ void setupVolumes();
// Scumm main loop
int scummLoop(int delta);
More information about the Scummvm-git-logs
mailing list