[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