aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/sfx/midiparser.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/engines/sci/sfx/midiparser.cpp b/engines/sci/sfx/midiparser.cpp
index 59d762bda8..6e8dd56bf5 100644
--- a/engines/sci/sfx/midiparser.cpp
+++ b/engines/sci/sfx/midiparser.cpp
@@ -200,6 +200,13 @@ void MidiParser_SCI::parseNextEvent(EventInfo &info) {
info.ext.data = _position._play_pos;
_position._play_pos += info.length;
if (info.ext.type == 0x2F) {// end of track reached
+ // We deviate from SSCI here: in SSCI, the loop is cached, whereas it's
+ // read directly from the sound code here (changed in rev. r46792).
+ // Theoretically, this shouldn't matter at all, as the loop should always
+ // be in sync and should never be changed. In SCI01 and later, the loop is
+ // set from the scripts via cmdSetHandleLoop, so again if there is any
+ // problem with this approach, it'll likely be apparent in SCI0 games
+ // (but no problems have been encountered because of this so far)
int16 loop = GET_SEL32V(segMan, _pSnd->soundObj, loop);
if (loop)
loop--;