aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTorbjörn Andersson2008-01-03 19:43:43 +0000
committerTorbjörn Andersson2008-01-03 19:43:43 +0000
commit11efbda297e9ed762fba6829cbfbf5a5032f5f1e (patch)
tree0364331448ecf9ce2d2ea0da940f5b4deaa98625 /engines
parent9b4fc2f70b7c35d8df5a9e70fb5ea8a118e5628b (diff)
downloadscummvm-rg350-11efbda297e9ed762fba6829cbfbf5a5032f5f1e.tar.gz
scummvm-rg350-11efbda297e9ed762fba6829cbfbf5a5032f5f1e.tar.bz2
scummvm-rg350-11efbda297e9ed762fba6829cbfbf5a5032f5f1e.zip
Made the Loom Roland music fix a bit more specific. Only one song in EGA Loom
is affected and, according to Kirben, none in Monkey Island 1 VGA. I don't know about Monkey Island 1 EGA, but I've assumed it uses the same music as the VGA versions. svn-id: r30202
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/midiparser_ro.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/engines/scumm/midiparser_ro.cpp b/engines/scumm/midiparser_ro.cpp
index 2d4d5acfad..2ef4cecfac 100644
--- a/engines/scumm/midiparser_ro.cpp
+++ b/engines/scumm/midiparser_ro.cpp
@@ -69,18 +69,15 @@ void MidiParser_RO::parseNextEvent (EventInfo &info) {
if (info.command() == 0xA) {
++_lastMarkerCount;
info.event = 0xF0;
- } else if (info.command() == 0xF && info.event != 0xFF) {
+ } else if (info.event == 0xF0 || info.event == 0xF1) {
byte delay = *(_position._play_pos++);
info.delta += delay;
- if (info.event != 0xF0) {
- // The event is usually 0xF0 but there are a
- // few cases in EGA Loom where it's 0xF1. I'm
- // speculating that this is for adding values
- // greater than 255 to info.delta. See bug
- // #1498785.
- //
- // The actual calculation is pure guesswork,
- // but the result sounds good enough to me.
+ if (info.event == 0xF1) {
+ // This event is, as far as we have been able
+ // to determine, only used in one single song
+ // in EGA Loom. It seems to be meant for adding
+ // values greater than 255 to info.delta. See
+ // bug #1498785.
info.delta += 256;
}
continue;