[Scummvm-cvs-logs] SF.net SVN: scummvm: [30132] scummvm/trunk/engines/scumm/midiparser_ro.cpp

eriktorbjorn at users.sourceforge.net eriktorbjorn at users.sourceforge.net
Wed Jan 2 00:30:30 CET 2008


Revision: 30132
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30132&view=rev
Author:   eriktorbjorn
Date:     2008-01-01 15:30:29 -0800 (Tue, 01 Jan 2008)

Log Message:
-----------
Added what I hope is the proper fix for bug #1498785 ("LOOM: Unknown Roland
MIDI music events"). It would probably be safe to commit to the 0.11 branch,
but I don't know for sure which games would be affected other than EGA Loom.

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/midiparser_ro.cpp

Modified: scummvm/trunk/engines/scumm/midiparser_ro.cpp
===================================================================
--- scummvm/trunk/engines/scumm/midiparser_ro.cpp	2008-01-01 22:55:54 UTC (rev 30131)
+++ scummvm/trunk/engines/scumm/midiparser_ro.cpp	2008-01-01 23:30:29 UTC (rev 30132)
@@ -69,9 +69,20 @@
 		if (info.command() == 0xA) {
 			++_lastMarkerCount;
 			info.event = 0xF0;
-		} else if (info.event == 0xF0) {
+		} else if (info.command() == 0xF) {
 			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.
+				info.delta += 256;
+			}
 			continue;
 		}
 		break;


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