[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