[Scummvm-cvs-logs] SF.net SVN: scummvm:[55000] scummvm/trunk/engines/hugo

spookypeanut at users.sourceforge.net spookypeanut at users.sourceforge.net
Wed Dec 22 10:22:14 CET 2010


Revision: 55000
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55000&view=rev
Author:   spookypeanut
Date:     2010-12-22 09:22:14 +0000 (Wed, 22 Dec 2010)

Log Message:
-----------
HUGO: Set some volume levels to get the MAME adlib emul working

Modified Paths:
--------------
    scummvm/trunk/engines/hugo/sound.cpp
    scummvm/trunk/engines/hugo/sound.h

Modified: scummvm/trunk/engines/hugo/sound.cpp
===================================================================
--- scummvm/trunk/engines/hugo/sound.cpp	2010-12-22 09:09:38 UTC (rev 54999)
+++ scummvm/trunk/engines/hugo/sound.cpp	2010-12-22 09:22:14 UTC (rev 55000)
@@ -33,6 +33,7 @@
 /* sound.c - sound effects and music support */
 
 #include "common/system.h"
+#include "common/config-manager.h"
 
 #include "sound/decoders/raw.h"
 #include "sound/audiostream.h"
@@ -68,6 +69,7 @@
 	if (_midiData) {
 		memcpy(_midiData, stream, size);
 		_mutex.lock();
+		syncVolume();
 		_parser->loadMusic(_midiData, size);
 		_parser->setTrack(0);
 		_isLooping = true;
@@ -115,6 +117,15 @@
 	setVolume(_masterVolume + diff);
 }
 
+void MidiPlayer::syncVolume() {
+	int volume = ConfMan.getInt("music_volume");
+	if (ConfMan.getBool("mute")) {
+		volume = -1;
+	}
+	debugC(2, kDebugMusic, "Syncing music volume to %d", volume);
+	setVolume(volume);
+}
+
 void MidiPlayer::setVolume(int volume) {
 	debugC(3, kDebugMusic, "MidiPlayer::setVolume");
 	_masterVolume = CLIP(volume, 0, 255);
@@ -127,6 +138,13 @@
 	_mutex.unlock();
 }
 
+void MidiPlayer::setChannelVolume(int channel) {
+	int newVolume = _channelsVolume[channel] * _masterVolume / 255;
+	debugC(3, kDebugMusic, "Music channel %d: volume %d->%d",
+		channel, _channelsVolume[channel], newVolume);
+	_channelsTable[channel]->volume(newVolume);
+}
+
 int MidiPlayer::open() {
 	if (!_driver)
 		return 255;
@@ -179,6 +197,8 @@
 
 	if (!_channelsTable[ch]) {
 		_channelsTable[ch] = (ch == 9) ? _driver->getPercussionChannel() : _driver->allocateChannel();
+		if (_channelsTable[ch])
+			setChannelVolume(ch);
 	}
 	if (_channelsTable[ch]) {
 		_channelsTable[ch]->send(b);

Modified: scummvm/trunk/engines/hugo/sound.h
===================================================================
--- scummvm/trunk/engines/hugo/sound.h	2010-12-22 09:09:38 UTC (rev 54999)
+++ scummvm/trunk/engines/hugo/sound.h	2010-12-22 09:22:14 UTC (rev 55000)
@@ -54,7 +54,9 @@
 	void pause(bool p);
 	void updateTimer();
 	void adjustVolume(int diff);
+	void setChannelVolume(int channel);
 	void setVolume(int volume);
+    void syncVolume();
 	int getVolume() const { return _masterVolume; }
 	void setLooping(bool loop) { _isLooping = loop; }
 


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