[Scummvm-git-logs] scummvm master -> 81f26dd9e491d52870329db96f9ac78701fa6dc2
sev-
sev at scummvm.org
Tue Jul 27 18:55:08 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
81f26dd9e4 SCUMM: Workaround for bug #12734
Commit: 81f26dd9e491d52870329db96f9ac78701fa6dc2
https://github.com/scummvm/scummvm/commit/81f26dd9e491d52870329db96f9ac78701fa6dc2
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2021-07-27T20:55:05+02:00
Commit Message:
SCUMM: Workaround for bug #12734
In Monkey Island 2, after Rapp gives you his map piece it calls
script-109 to print a message about which map piece you just found.
But as soon as that message is displayed, it's erased by printing a
single space.
This wouldn't normally be much of a problem, but apparently in the
"ultimate talkie" version you will still hear the spoken line. This is
my attempt at bypassing the erasing.
I don't dare to patch the script itself, because I'm guessing all the
messages are hard-coded so it would have to recognize every
localization. Instead, it checks if a single space is printed from the
appropriate script, while there is a message pending and you are
carrying Rapp's map piece. I hope that's specific enough.
Changed paths:
engines/scumm/string.cpp
diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index d3a53dfc42..45ad40254b 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -55,6 +55,23 @@ namespace Scumm {
void ScummEngine::printString(int m, const byte *msg) {
switch (m) {
case 0:
+ // WORKAROUND bug #12734: The script tries to clear the currently
+ // displayed message after Rapp gives you the map, but that means
+ // you'll never see Guybrush's reaction to finding a map piece.
+ //
+ // It's a bit hard to pin down the exact case, since it happens
+ // at a few different points during the script. We limit it to
+ // when the player has the map piece.
+ //
+ // We have to do it here, because we don't want to delay the
+ // animation of Rapp turning back to Ashes.
+ if (_game.id == GID_MONKEY2 && _roomResource == 19 &&
+ vm.slot[_currentScript].number == 203 &&
+ _actorToPrintStrFor == 255 && strcmp((const char *)msg, " ") == 0 &&
+ getOwner(200) == VAR(VAR_EGO) && VAR(VAR_HAVE_MSG)) {
+ return;
+ }
+
actorTalk(msg);
break;
case 1:
More information about the Scummvm-git-logs
mailing list