diff options
-rw-r--r-- | scumm/sound.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/scumm/sound.cpp b/scumm/sound.cpp index 096a8310f1..f766ae7bd9 100644 --- a/scumm/sound.cpp +++ b/scumm/sound.cpp @@ -562,7 +562,17 @@ void Sound::processSfxQueues() { if (_scumm->VAR(_scumm->VAR_TALK_ACTOR)) { //_sfxMode & 2) { act = _scumm->VAR(_scumm->VAR_TALK_ACTOR); - finished = !_talkChannelHandle; + + // FIXME: This was changed in the process of my COMI fixes. + // Problem is, 'finished' used to indicate if speech had + // been running but now is finished. But now, it'll be set + // even if there never has been any speech running (i.e. in + // all games which don't even use speech). This will have + // to be fixed properly! For now I am just disabling + // this for V2 games. A better fix would be to introduce a second + // variable which is set whenever speech is initiated, and reset + // when it stops (i.e. when _talkChannelHandle is 0). + finished = !_talkChannelHandle && (_scumm->_version > 2); if (act != 0 && (uint) act < 0x80 && !_scumm->_string[0].no_talk_anim) { a = _scumm->derefActor(act, "processSfxQueues"); |