[Scummvm-cvs-logs] SF.net SVN: scummvm:[46893] scummvm/trunk/engines/sci/sfx

wjpalenstijn at users.sourceforge.net wjpalenstijn at users.sourceforge.net
Sat Jan 2 19:16:12 CET 2010


Revision: 46893
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46893&view=rev
Author:   wjpalenstijn
Date:     2010-01-02 18:16:12 +0000 (Sat, 02 Jan 2010)

Log Message:
-----------
SCI/new music code: Improve midi hold handling a bit. Still broken.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sfx/midiparser.cpp
    scummvm/trunk/engines/sci/sfx/soundcmd.cpp

Modified: scummvm/trunk/engines/sci/sfx/midiparser.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/midiparser.cpp	2010-01-02 18:02:21 UTC (rev 46892)
+++ scummvm/trunk/engines/sci/sfx/midiparser.cpp	2010-01-02 18:16:12 UTC (rev 46893)
@@ -144,10 +144,18 @@
 				// TODO: Not implemented yet
 				break;
 			case kMidiHold:
-				// Check if the hold ID marker is the same as the hold ID marker set for that song by
-				// cmdSetSoundHold. If it is, set the loop position
+				// Check if the hold ID marker is the same as the hold ID
+				// marker set for that song by cmdSetSoundHold.
+				// If it is, loop back
+
+				// FIXME: this is currently broken, as seen in the
+				// scene in LSL5 where Larry first arrives at the airport
+				// in the limo. The engine sound is stopped instead of
+				// continuing. As a possible direction to look at for a fix,
+				// removing the allNotesOff() call in jumpToTick() lets the
+				// engine sound continue.
 				if (info.basic.param2 == _pSnd->hold)
-					_loopTick = _position._play_tick;
+					jumpToTick(_loopTick);
 				break;
 			case kUpdateCue:
 				switch (_soundVersion) {

Modified: scummvm/trunk/engines/sci/sfx/soundcmd.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2010-01-02 18:02:21 UTC (rev 46892)
+++ scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2010-01-02 18:16:12 UTC (rev 46893)
@@ -859,13 +859,7 @@
 	}
 
 	// Set the special hold marker ID where the song should be looped at.
-	// If the hold marker is 0, stop the song, as songs with a hold marker
-	// embedded don't have an end of track signal at the end, so that they
-	// loop instead of stopping
 	musicSlot->hold = value;
-
-	if (!value)
-		cmdStopSound(obj, 0);
 #endif
 }
 


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