[Scummvm-cvs-logs] scummvm master -> f55258962a4ee56b2de03a1e006821df55543a51

m-kiewitz m_kiewitz at users.sourceforge.net
Sat May 30 20:15:22 CEST 2015


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
f55258962a SHERLOCK: implement SysEx 0xFC loop/not loop


Commit: f55258962a4ee56b2de03a1e006821df55543a51
    https://github.com/scummvm/scummvm/commit/f55258962a4ee56b2de03a1e006821df55543a51
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-05-30T20:15:20+02:00

Commit Message:
SHERLOCK: implement SysEx 0xFC loop/not loop

Changed paths:
    engines/sherlock/music.cpp



diff --git a/engines/sherlock/music.cpp b/engines/sherlock/music.cpp
index 884fbd6..cc66f4c 100644
--- a/engines/sherlock/music.cpp
+++ b/engines/sherlock/music.cpp
@@ -134,6 +134,8 @@ void MidiParser_SH::parseNextEvent(EventInfo &info) {
 		break;
 	case 0xF:
 		if (info.event == 0xFF) {
+			warning("SysEx 0xFF");
+
 			byte type = *(_position._playPos++);
 			switch(type) {
 			case 0x2F:
@@ -150,10 +152,24 @@ void MidiParser_SH::parseNextEvent(EventInfo &info) {
 				break;
 			}
 		} else if (info.event == 0xFC) {
-			allNotesOff();
-			stopPlaying();
-			unloadMusic();
-			return;
+			// Official End-Of-Track signal
+			warning("SysEx 0xFC");
+
+			byte type = *(_position._playPos++);
+			switch (type) {
+			case 0x80: // end of track, triggers looping
+				warning("SysEx triggered looping");
+				jumpToTick(0, true, true, false);
+				break;
+			case 0x81: // end of track, stop playing
+				warning("SysEx triggered music stop");
+				stopPlaying();
+				unloadMusic();
+				break;
+			default:
+				error("MidiParser_SH::parseNextEvent: Unknown SysEx 0xFC type %x", type);
+				break;
+			}
 		} else {
 			warning("TODO: %x / Unknown", info.event);
 			break;






More information about the Scummvm-git-logs mailing list