[Scummvm-cvs-logs] SF.net SVN: scummvm:[50417] scummvm/trunk/engines/sci/sound/midiparser_sci. cpp

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Mon Jun 28 12:36:10 CEST 2010


Revision: 50417
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50417&view=rev
Author:   m_kiewitz
Date:     2010-06-28 10:36:10 +0000 (Mon, 28 Jun 2010)

Log Message:
-----------
SCI: changed the way setVolume works for sci0 back to the way it was from r50414, because adlib driver doesn't support channel volume changes for sci0 games, fixes fading in those games

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sound/midiparser_sci.cpp

Modified: scummvm/trunk/engines/sci/sound/midiparser_sci.cpp
===================================================================
--- scummvm/trunk/engines/sci/sound/midiparser_sci.cpp	2010-06-28 10:15:13 UTC (rev 50416)
+++ scummvm/trunk/engines/sci/sound/midiparser_sci.cpp	2010-06-28 10:36:10 UTC (rev 50417)
@@ -673,20 +673,14 @@
 	}
 
 	assert(volume <= MUSIC_VOLUME_MAX);
-	_volume = volume;
-	// Send previous channel volumes again to actually update the volume
-	for (int i = 0; i < 15; i++)
-		if (_channelRemap[i] != -1)
-			sendToDriver(0xB0 + i, 7, _channelVolume[i]);
-	return;
-	// TODO: old code, should be left here till we figured out that new code works fine
 	if (_volume != volume) {
 		_volume = volume;
 
-
 		switch (_soundVersion) {
 		case SCI_VERSION_0_EARLY:
 		case SCI_VERSION_0_LATE: {
+			// SCI0 adlib driver doesn't support channel volumes, so we need to go this way
+			// TODO: this should take the actual master volume into account
 			int16 globalVolume = _volume * 15 / 127;
 			((MidiPlayer *)_driver)->setVolume(globalVolume);
 			break;
@@ -694,12 +688,10 @@
 
 		case SCI_VERSION_1_EARLY:
 		case SCI_VERSION_1_LATE:
-			// sending volume change to all currently mapped channels
-			// FIXME?: maybe we should better store new volume if music isn't playing currently and adjust volume
-			//  when playing
+			// Send previous channel volumes again to actually update the volume
 			for (int i = 0; i < 15; i++)
 				if (_channelRemap[i] != -1)
-					sendToDriver(0xB0 + i, 7, _volume);
+					sendToDriver(0xB0 + i, 7, _channelVolume[i]);
 			break;
 
 		default:


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list