aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sound/midiparser_sci.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/sound/midiparser_sci.cpp')
-rw-r--r--engines/sci/sound/midiparser_sci.cpp50
1 files changed, 27 insertions, 23 deletions
diff --git a/engines/sci/sound/midiparser_sci.cpp b/engines/sci/sound/midiparser_sci.cpp
index 9653d9ccff..2570322e73 100644
--- a/engines/sci/sound/midiparser_sci.cpp
+++ b/engines/sci/sound/midiparser_sci.cpp
@@ -440,21 +440,21 @@ void MidiParser_SCI::sendToDriver(uint32 midi) {
}
void MidiParser_SCI::parseNextEvent(EventInfo &info) {
- // Set signal AFTER waiting for delta, otherwise we would set signal too soon resulting in all sorts of bugs
+ // Set signal AFTER waiting for delta, otherwise we would set signal too soon resulting in all sorts of bugs
if (_dataincAdd) {
- _dataincAdd = false;
- _pSnd->dataInc += _dataincToAdd;
- _pSnd->signal = 0x7f + _pSnd->dataInc;
+ _dataincAdd = false;
+ _pSnd->dataInc += _dataincToAdd;
+ _pSnd->signal = 0x7f + _pSnd->dataInc;
debugC(4, kDebugLevelSound, "datainc %04x", _dataincToAdd);
}
if (_signalSet) {
- _signalSet = false;
+ _signalSet = false;
_pSnd->setSignal(_signalToSet);
- debugC(4, kDebugLevelSound, "signal %04x", _signalToSet);
+ debugC(4, kDebugLevelSound, "signal %04x", _signalToSet);
}
if (_jumpToHoldTick) {
- _jumpToHoldTick = false;
+ _jumpToHoldTick = false;
jumpToTick(_loopTick, false, false);
}
@@ -497,8 +497,10 @@ void MidiParser_SCI::parseNextEvent(EventInfo &info) {
// immediately there.
if (_soundVersion <= SCI_VERSION_0_LATE ||
_position._playTick || info.delta) {
- _signalSet = true;
- _signalToSet = info.basic.param1;
+ if (!_pSnd->inFastForward) {
+ _signalSet = true;
+ _signalToSet = info.basic.param1;
+ }
}
} else {
_loopTick = _position._playTick + info.delta;
@@ -552,20 +554,22 @@ void MidiParser_SCI::parseNextEvent(EventInfo &info) {
}
break;
case kUpdateCue:
- _dataincAdd = true;
- switch (_soundVersion) {
- case SCI_VERSION_0_EARLY:
- case SCI_VERSION_0_LATE:
- _dataincToAdd = info.basic.param2;
- break;
- case SCI_VERSION_1_EARLY:
- case SCI_VERSION_1_LATE:
- case SCI_VERSION_2_1:
- _dataincToAdd = 1;
- break;
- default:
- error("unsupported _soundVersion");
- }
+ if (!_pSnd->inFastForward) {
+ _dataincAdd = true;
+ switch (_soundVersion) {
+ case SCI_VERSION_0_EARLY:
+ case SCI_VERSION_0_LATE:
+ _dataincToAdd = info.basic.param2;
+ break;
+ case SCI_VERSION_1_EARLY:
+ case SCI_VERSION_1_LATE:
+ case SCI_VERSION_2_1:
+ _dataincToAdd = 1;
+ break;
+ default:
+ error("unsupported _soundVersion");
+ }
+ }
break;
case kResetOnPause:
_resetOnPause = info.basic.param2;