aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJohannes Schickel2011-07-10 18:06:33 +0200
committerJohannes Schickel2011-07-10 18:06:33 +0200
commitadb2bbbb5902f0cb9f9c6ca6db81d57b723e1a23 (patch)
treec95a3f16369821739e9e3eff26227568449d36a9 /engines
parent5edb6f9e4a331049e49c04441aa36b67053f605c (diff)
downloadscummvm-rg350-adb2bbbb5902f0cb9f9c6ca6db81d57b723e1a23.tar.gz
scummvm-rg350-adb2bbbb5902f0cb9f9c6ca6db81d57b723e1a23.tar.bz2
scummvm-rg350-adb2bbbb5902f0cb9f9c6ca6db81d57b723e1a23.zip
SCUMM: Properly implement volume controler for PC Speaker output.
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/imuse/pcspk.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/engines/scumm/imuse/pcspk.cpp b/engines/scumm/imuse/pcspk.cpp
index 6eaf7ad168..1b8afcabe5 100644
--- a/engines/scumm/imuse/pcspk.cpp
+++ b/engines/scumm/imuse/pcspk.cpp
@@ -307,8 +307,15 @@ void PcSpkDriver::MidiChannel_PcSpk::controlChange(byte control, byte value) {
case 7:
_tl = value;
- // TODO: Properly implement this
- _owner->updateNote();
+ if (_owner->_activeChannel == this) {
+ if (_tl == 0) {
+ _owner->_lastActiveChannel = 0;
+ _owner->_lastActiveOut = 0;
+ _owner->_pcSpk.stop();
+ } else {
+ _owner->output((_out.note << 7) + _pitchBend + _out.unk60 + _out.unkE);
+ }
+ }
break;
case 64: