aboutsummaryrefslogtreecommitdiff
path: root/sky/music
diff options
context:
space:
mode:
authorJamieson Christian2003-10-07 15:13:39 +0000
committerJamieson Christian2003-10-07 15:13:39 +0000
commit69964cda56f6570158197def169564a2aa1776ac (patch)
tree2f19e2e771dd500ca859d9590cd28f013f8f5e3d /sky/music
parent537ee7166fc50701845fd2ad73c5124e0f9be0db (diff)
downloadscummvm-rg350-69964cda56f6570158197def169564a2aa1776ac.tar.gz
scummvm-rg350-69964cda56f6570158197def169564a2aa1776ac.tar.bz2
scummvm-rg350-69964cda56f6570158197def169564a2aa1776ac.zip
Corrected MT-32 master volume SysEx
svn-id: r10671
Diffstat (limited to 'sky/music')
-rw-r--r--sky/music/mt32music.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/sky/music/mt32music.cpp b/sky/music/mt32music.cpp
index d5bf335422..81637f4754 100644
--- a/sky/music/mt32music.cpp
+++ b/sky/music/mt32music.cpp
@@ -62,12 +62,14 @@ void SkyMT32Music::timerCall(void) {
}
void SkyMT32Music::setVolume(uint8 volume) {
-
- uint8 sysEx[6];
+ uint8 sysEx[10] = "\x41\x10\x16\x12\x10\x00\x16\x00\x00";
_musicVolume = volume;
- sysEx[0] = 0x7F; sysEx[1] = 0x7F; sysEx[2] = 0x04; sysEx[3] = 0x01;
- sysEx[4] = 0; sysEx[5] = volume & 0x7F;
- _midiDrv->sysEx(sysEx, 6);
+ sysEx[7] = (volume > 100) ? 100 : volume;
+ sysEx[8] = 0x00;
+ for (uint8 cnt = 4; cnt < 8; cnt++)
+ sysEx[8] -= sysEx[cnt];
+ sysEx[8] &= 0x7F;
+ _midiDrv->sysEx(sysEx, 9);
}
void SkyMT32Music::setupPointers(void) {