aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/script_v6.cpp
diff options
context:
space:
mode:
authorMax Horn2010-03-08 23:36:59 +0000
committerMax Horn2010-03-08 23:36:59 +0000
commitbc2b90f43bb558bd5e0fcdc470499e4fc65ebcbb (patch)
treea59cec4f986066a66ba994afded6bde2360ebf9a /engines/scumm/script_v6.cpp
parent575ddc434c1c846780fd78b8bdf3e9dcf3a35970 (diff)
downloadscummvm-rg350-bc2b90f43bb558bd5e0fcdc470499e4fc65ebcbb.tar.gz
scummvm-rg350-bc2b90f43bb558bd5e0fcdc470499e4fc65ebcbb.tar.bz2
scummvm-rg350-bc2b90f43bb558bd5e0fcdc470499e4fc65ebcbb.zip
Workaround for bug #1878514: COMI: Glitch when turning pages in recipe book
svn-id: r48207
Diffstat (limited to 'engines/scumm/script_v6.cpp')
-rw-r--r--engines/scumm/script_v6.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index 1380c9c0ba..eda08d6280 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -745,6 +745,27 @@ void ScummEngine_v6::o6_startScript() {
return;
}
+ // WORKAROUND bug #1878514: When turning pages in the recipe book
+ // (found on Blood Island), there is a brief moment where it displays
+ // text from two different pages at the same time.
+ //
+ // The content of the books is drawing (in an endless loop) by local
+ // script 2007. Changing the page is handled by script 2006, which
+ // first stops script 2007; then switches the page; then restarts
+ // script 2007. But it fails to clear the blast texts beforehand.
+ // Hence, the next time blast text is drawn, both the old one (from
+ // the old instance of script 2007) and the new text (from the new
+ // instance) are briefly drawn simultaneously.
+ //
+ // This looks like a script bug to me (a missing call to clearTextQueue).
+ // But this could also hint at a subtle bug in ScummVM; we should check
+ // whether this bug occurs with the original engine or not.
+ if (_game.id == GID_CMI && script == 2007 &&
+ _currentRoom == 62 && vm.slot[_currentScript].number == 2006) {
+
+ removeBlastTexts();
+ }
+
runScript(script, (flags & 1) != 0, (flags & 2) != 0, args);
}