[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