[Scummvm-git-logs] scummvm master -> 6d8eba977d2b707b0d508983e1180ddb8acace65

eriktorbjorn noreply at scummvm.org
Thu Apr 21 09:22:33 UTC 2022


This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
54fd5caac8 SCUMM: Adjust timings for German Sam & Max intro. (Bug #13378)
127976b510 SCUMM: Adjust timings for Italian Sam & Max intro.
8ec3b93160 SCUMM: Adjust timings for French Sam & Max CD intro.
aeb1a9c339 SCUMM: Adjust timings for English Sam & Max intro.
b1c8ca11be SCUMM: Adjust timings for Spanish Sam & Max intro.
8cedcb3901 SCUMM: Adjust timings for German Sam & Max Floppy intro. (Bug #13378)
5280abc4d7 SCUMM: Adjust timings for French Sam & Max Floppy intro
6d8eba977d SCUMM: Adjust timings for Italian Sam & Max Floppy intro.


Commit: 54fd5caac8e77b98ed3d738604fdb9a34ec7561d
    https://github.com/scummvm/scummvm/commit/54fd5caac8e77b98ed3d738604fdb9a34ec7561d
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for German Sam & Max intro. (Bug #13378)

Changed paths:
    engines/scumm/script.cpp
    engines/scumm/script_v6.cpp
    engines/scumm/string.cpp


diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp
index f763b967056..77c8144e318 100644
--- a/engines/scumm/script.cpp
+++ b/engines/scumm/script.cpp
@@ -648,6 +648,21 @@ void ScummEngine::writeVar(uint var, int value) {
 			}
 		}
 
+		// WORKAROUND bug #13378: For whatever reason, the German and
+		// Italian talkie versions (I can't check the floppy versions)
+		// set the game to run much too fast in some parts of the intro.
+		// Some differences are natural because of the different lengths
+		// of the spoken lines, but 1 or 2 is too fast.
+		//
+		// Any modifications here depend on knowing if the script will
+		// set the timer value back to something sensible afterwards.
+
+		if (_game.id == GID_SAMNMAX && vm.slot[_currentScript].number == 65 && var == VAR_TIMER_NEXT && _enableEnhancements) {
+			// "Wirst Du brutzeln, wie eine grobe Bratwurst!"
+			if (value == 1 && _language == Common::DE_DEU)
+				value = 4;
+		}
+
 		_scummVars[var] = value;
 
 		// Unlike the PC version, the Macintosh version of Loom appears
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index 9885639632e..6402f52301a 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -1115,6 +1115,20 @@ void ScummEngine_v6::o6_setCameraAt() {
 
 void ScummEngine_v6::o6_loadRoom() {
 	int room = pop();
+
+	// WORKAROUND bug #13378: During Sam's reactions to Max beating up the
+	// scientist in the intro, we sometimes have to slow down animations
+	// artificially. This is where we speed them back up again.
+	if (_game.id == GID_SAMNMAX && vm.slot[_currentScript].number == 65 && room == 6 && _enableEnhancements) {
+		int actors[] = { 2, 3, 10 };
+
+		for (int i = 0; i < ARRAYSIZE(actors); i++) {
+			Actor *a = derefActorSafe(actors[i], "o6_animateActor");
+			if (a && a->getAnimSpeed() > 0)
+				a->setAnimSpeed(0);
+		}
+	}
+
 	startScene(room, nullptr, 0);
 	if (_game.heversion >= 61) {
 		setCameraAt(camera._cur.x, 0);
diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index 325aadccdf6..d87eeb8e33c 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -72,6 +72,22 @@ void ScummEngine::printString(int m, const byte *msg) {
 			return;
 		}
 
+		// WORKAROUND bug #13378: Sam's reactions during the intro run
+		// much too quick for the subtitles in some localizations. We
+		// get around this by slowing down that entire animation, while
+		// leaving the reset of the animations unchanged.
+		//
+		// The animation speed is not very fine grained, though.
+		if (_game.id == GID_SAMNMAX && vm.slot[_currentScript].number == 65 && _enableEnhancements) {
+			if (_language == Common::DE_DEU) {
+				if (memcmp(msg + 16, "Ohh!", 4) == 0) {
+					Actor *a = derefActorSafe(2, "printString");
+					if (a)
+						a->setAnimSpeed(3);
+				}
+			}
+		}
+
 		actorTalk(msg);
 		break;
 	case 1:
@@ -167,6 +183,89 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 			_keepText = false;
 			_msgCount = 0;
 			endLoop = true;
+
+			// WORKAROUND bug #13378: Some of the speech is badly
+			// synced to the subtitles, particularly in the
+			// localized versions. This happens because a single
+			// speech line is used for a text that's broken up by
+			// one or more embedded "wait" codes. Rather than
+			// relying on the calculated talk delay, hard-code
+			// better ones.
+			if (_game.id == GID_SAMNMAX && _enableEnhancements && isScriptRunning(65)) {
+				typedef struct {
+					const char *str;
+					const int16 talkDelay;
+					const byte action;
+				} TimingAdjustment;
+
+				TimingAdjustment *adjustments;
+				int numAdjustments;
+
+				// We identify the broken up strings that need
+				// adjustment by the upcoming text.
+
+				TimingAdjustment timingAdjustmentsDE[] = {
+					{ "Und daf\x81r^",    110, 0 },
+					{ "Es ist blo\xe1^",  120, 0 },
+					{ "Hey.",             130, 0 },
+					{ "Klasse Schlag!",   150, 0 },
+					{ "Uiii!",            185, 1 },
+					{ "H\x84h?",          150, 0 },
+					{ "Kann ich seine",   110, 0 },
+					{ "Warum, glaubst",   110, 0 },
+					{ "Vielleicht",       90,  0 },
+					{ "Kann ich fahren?", 240, 0 }
+				};
+
+				switch (_language) {
+				case Common::DE_DEU:
+					adjustments = timingAdjustmentsDE;
+					numAdjustments = ARRAYSIZE(timingAdjustmentsDE);
+					break;
+				default:
+					adjustments = nullptr;
+					numAdjustments = 0;
+					break;
+				}
+
+				byte action = 0;
+
+				for (int i = 0; i < numAdjustments; i++) {
+					int len = strlen(adjustments[i].str);
+					if (memcmp(buffer, adjustments[i].str, len) == 0) {
+						_talkDelay = adjustments[i].talkDelay;
+						action = adjustments[i].action;
+						break;
+					}
+				}
+
+				if (_language == Common::DE_DEU) {
+					Actor *act;
+
+					switch (action) {
+					case 1:
+						act = derefActorSafe(2, "handleNextCharsetCode");
+						if (act)
+							act->setAnimSpeed(2);
+
+						// The actor speaks so slowly that the background
+						// animations have run their course. Try to restart
+						// them, even though it won't be quite seamless.
+
+						int actors[] = { 3, 10 };
+
+						for (int i = 0; i < ARRAYSIZE(actors); i++) {
+							act = derefActorSafe(actors[i], "handleNextCharsetCode");
+							if (act) {
+								act->startAnimActor(act->_initFrame);
+								act->animateActor(249);
+							}
+						}
+						break;
+					}
+				}
+			}
+
 			break;
 		case 8:
 			// Ignore this code here. Occurs e.g. in MI2 when you


Commit: 127976b510d41e13e493bb6367a89b81bbcecaf3
    https://github.com/scummvm/scummvm/commit/127976b510d41e13e493bb6367a89b81bbcecaf3
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for Italian Sam & Max intro.

Changed paths:
    engines/scumm/script.cpp
    engines/scumm/string.cpp


diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp
index 77c8144e318..a0bbb298f77 100644
--- a/engines/scumm/script.cpp
+++ b/engines/scumm/script.cpp
@@ -661,6 +661,12 @@ void ScummEngine::writeVar(uint var, int value) {
 			// "Wirst Du brutzeln, wie eine grobe Bratwurst!"
 			if (value == 1 && _language == Common::DE_DEU)
 				value = 4;
+
+			// Max beats up the scientist. This was probably to
+			// match the subtitles to the speech better, but this
+			// is just too much!
+			if (value == 2 && _language == Common::IT_ITA)
+				value = 3;
 		}
 
 		_scummVars[var] = value;
diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index d87eeb8e33c..6d2087f5f05 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -72,19 +72,32 @@ void ScummEngine::printString(int m, const byte *msg) {
 			return;
 		}
 
-		// WORKAROUND bug #13378: Sam's reactions during the intro run
-		// much too quick for the subtitles in some localizations. We
-		// get around this by slowing down that entire animation, while
-		// leaving the reset of the animations unchanged.
-		//
-		// The animation speed is not very fine grained, though.
+		// WORKAROUND bug #13378: In the German version, Sam's reactions
+		// to Max beating up the scientist run much too quick for the
+		// animation to match. We get around this by slowing down that
+		// animation.
+ 		//
+		// In the italian version, the whole scene is sped up to keep up
+		// with Sam's speech. We compensate for this by slowing down the
+		// other animations.
 		if (_game.id == GID_SAMNMAX && vm.slot[_currentScript].number == 65 && _enableEnhancements) {
+			Actor *a;
+
 			if (_language == Common::DE_DEU) {
 				if (memcmp(msg + 16, "Ohh!", 4) == 0) {
-					Actor *a = derefActorSafe(2, "printString");
+					a = derefActorSafe(2, "printString");
 					if (a)
 						a->setAnimSpeed(3);
 				}
+			} else if (_language == Common::IT_ITA) {
+				if (memcmp(msg + 16, "Ooh.", 4) == 0) {
+					a = derefActorSafe(3, "printString");
+					if (a)
+						a->setAnimSpeed(2);
+					a = derefActorSafe(10, "printString");
+				if (a)
+						a->setAnimSpeed(2);
+				}
 			}
 		}
 
@@ -217,11 +230,30 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					{ "Kann ich fahren?", 240, 0 }
 				};
 
+				TimingAdjustment timingAdjustmentsIT[] = {
+					{ "E per questo^",    120, 0 },
+					{ "Forse sei",        75,  0 },
+					{ "^imprevedibile.",  170, 0 },
+					{ "Oh.",              20,  0 },
+					{ "Ehi, bel colpo.",  30,  0 },
+					{ "Yikes!",           90,  0 },
+					{ "Huh?",             50,  0 },
+					{ "Posso tenere",     100, 0 },
+					{ "Perch\x82 pensi",  120, 0 },
+					{ "Andiamocene",      250, 0 },
+					{ "Forse possiamo",   90,  0 },
+					{ "Ti dispiace",      200, 0 }
+				};
+
 				switch (_language) {
 				case Common::DE_DEU:
 					adjustments = timingAdjustmentsDE;
 					numAdjustments = ARRAYSIZE(timingAdjustmentsDE);
 					break;
+				case Common::IT_ITA:
+					adjustments = timingAdjustmentsIT;
+					numAdjustments = ARRAYSIZE(timingAdjustmentsIT);
+					break;
 				default:
 					adjustments = nullptr;
 					numAdjustments = 0;


Commit: 8ec3b931603b8306e4420eb6b1f84ef638a7b97d
    https://github.com/scummvm/scummvm/commit/8ec3b931603b8306e4420eb6b1f84ef638a7b97d
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for French Sam & Max CD intro.

The Floppy version uses different actors.

Changed paths:
    engines/scumm/string.cpp


diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index 6d2087f5f05..cdda3a2c034 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -245,6 +245,16 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					{ "Ti dispiace",      200, 0 }
 				};
 
+				TimingAdjustment timingAdjustmentsFRCD[] = {
+					{ "Oh.",              85,  0 },
+					{ "H\x82, pas mal.",  80,  0 },
+					{ "Yiik!",            110, 0 },
+					{ "Je peux garder",   130, 0 },
+					{ "Pourquoi est-ce",  120, 0 },
+					{ "Nous pourrons",    80,  0 },
+					{ "Je peux conduire", 220, 0 }
+				};
+
 				switch (_language) {
 				case Common::DE_DEU:
 					adjustments = timingAdjustmentsDE;
@@ -254,6 +264,12 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					adjustments = timingAdjustmentsIT;
 					numAdjustments = ARRAYSIZE(timingAdjustmentsIT);
 					break;
+				case Common::FR_FRA:
+					if (strcmp(_game.variant, "Floppy") != 0) {
+						adjustments = timingAdjustmentsFRCD;
+						numAdjustments = ARRAYSIZE(timingAdjustmentsFRCD);
+					}
+					break;
 				default:
 					adjustments = nullptr;
 					numAdjustments = 0;


Commit: aeb1a9c339fc7570b954622da1565fa38a889ad0
    https://github.com/scummvm/scummvm/commit/aeb1a9c339fc7570b954622da1565fa38a889ad0
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for English Sam & Max intro.

Changed paths:
    engines/scumm/string.cpp


diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index cdda3a2c034..b9f2c92bced 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -217,6 +217,17 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 				// We identify the broken up strings that need
 				// adjustment by the upcoming text.
 
+				TimingAdjustment timingAdjustmentsEN[] = {
+					{ "It's just that",   100, 0 },
+					{ "you're TOO nice",  90,  0 },
+					{ "^unpredictable.",  170, 0 },
+					{ "Yikes!",           120, 0 },
+					{ "Huh?",             90,  0 },
+					{ "Why do you",       110, 0 },
+					{ "Maybe we can",     75,  0 },
+					{ "Mind if I drive?", 160, 0 }
+				};
+
 				TimingAdjustment timingAdjustmentsDE[] = {
 					{ "Und daf\x81r^",    110, 0 },
 					{ "Es ist blo\xe1^",  120, 0 },
@@ -256,6 +267,10 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 				};
 
 				switch (_language) {
+				case Common::EN_ANY:
+					adjustments = timingAdjustmentsEN;
+					numAdjustments = ARRAYSIZE(timingAdjustmentsEN);
+					break;
 				case Common::DE_DEU:
 					adjustments = timingAdjustmentsDE;
 					numAdjustments = ARRAYSIZE(timingAdjustmentsDE);


Commit: b1c8ca11be882afd0f8192ff6167ebd1fde95ac9
    https://github.com/scummvm/scummvm/commit/b1c8ca11be882afd0f8192ff6167ebd1fde95ac9
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for Spanish Sam & Max intro.

Changed paths:
    engines/scumm/string.cpp


diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index b9f2c92bced..40423afac14 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -266,6 +266,16 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					{ "Je peux conduire", 220, 0 }
 				};
 
+				TimingAdjustment timingAdjustmentsES[] = {
+					{ "Y por eso^",       130, 0 },
+					{ "es simplemente",   100, 0 },
+					{ "eres DEMASIADO",   90,  0 },
+					{ "\xa8Hug?",         110, 0 },
+					{ "\xa8Por qu\x82",   110, 0 },
+					{ "Tal vez podamos",  75,  0 },
+					{ "\xa8Te importa",   160, 0 }
+				};
+
 				switch (_language) {
 				case Common::EN_ANY:
 					adjustments = timingAdjustmentsEN;
@@ -285,6 +295,10 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 						numAdjustments = ARRAYSIZE(timingAdjustmentsFRCD);
 					}
 					break;
+				case Common::ES_ESP:
+					adjustments = timingAdjustmentsES;
+					numAdjustments = ARRAYSIZE(timingAdjustmentsES);
+					break;
 				default:
 					adjustments = nullptr;
 					numAdjustments = 0;


Commit: 8cedcb390100d26c2f34f7ad7cc2c62bf0664da6
    https://github.com/scummvm/scummvm/commit/8cedcb390100d26c2f34f7ad7cc2c62bf0664da6
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for German Sam & Max Floppy intro. (Bug #13378)

The floppy intro uses different actors for Sam and Max themselves. There
is no need to slow down Sam's animation while Max beats up the
scientist, and the timing adjustments had to be re-done. The rest of the
workarounds from the CD version still apply.

Changed paths:
    engines/scumm/string.cpp


diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index 40423afac14..928c5c64803 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -72,10 +72,10 @@ void ScummEngine::printString(int m, const byte *msg) {
 			return;
 		}
 
-		// WORKAROUND bug #13378: In the German version, Sam's reactions
-		// to Max beating up the scientist run much too quick for the
-		// animation to match. We get around this by slowing down that
-		// animation.
+		// WORKAROUND bug #13378: In the German CD version, Sam's
+		// reactions to Max beating up the scientist run much too quick
+		// for the animation to match. We get around this by slowing
+		// down that animation.
  		//
 		// In the italian version, the whole scene is sped up to keep up
 		// with Sam's speech. We compensate for this by slowing down the
@@ -83,7 +83,7 @@ void ScummEngine::printString(int m, const byte *msg) {
 		if (_game.id == GID_SAMNMAX && vm.slot[_currentScript].number == 65 && _enableEnhancements) {
 			Actor *a;
 
-			if (_language == Common::DE_DEU) {
+			if (_language == Common::DE_DEU && strcmp(_game.variant, "Floppy") != 0) {
 				if (memcmp(msg + 16, "Ohh!", 4) == 0) {
 					a = derefActorSafe(2, "printString");
 					if (a)
@@ -228,7 +228,21 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					{ "Mind if I drive?", 160, 0 }
 				};
 
-				TimingAdjustment timingAdjustmentsDE[] = {
+				TimingAdjustment timingAdjustmentsDEFloppy[] = {
+					{ "Und daf\x81r^",    110, 0 },
+					{ "Es ist blo\xe1^",  120, 0 },
+					{ "Hey.",             50,  0 },
+					{ "Klasse Schlag!",   30,  0 },
+					{ "Uiii!",            80,  0 },
+					{ "H\x84h?",          60,  0 },
+					{ "Kann ich seine",   110, 0 },
+					{ "Warum, glaubst",   110, 0 },
+					{ "La\xe1 uns von",   220, 0 },
+					{ "Vielleicht",       90,  0 },
+					{ "Kann ich fahren?", 220, 0 }
+				};
+
+				TimingAdjustment timingAdjustmentsDECD[] = {
 					{ "Und daf\x81r^",    110, 0 },
 					{ "Es ist blo\xe1^",  120, 0 },
 					{ "Hey.",             130, 0 },
@@ -282,8 +296,13 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					numAdjustments = ARRAYSIZE(timingAdjustmentsEN);
 					break;
 				case Common::DE_DEU:
-					adjustments = timingAdjustmentsDE;
-					numAdjustments = ARRAYSIZE(timingAdjustmentsDE);
+					if (strcmp(_game.variant, "Floppy") == 0) {
+						adjustments = timingAdjustmentsDEFloppy;
+						numAdjustments = ARRAYSIZE(timingAdjustmentsDEFloppy);
+					} else {
+						adjustments = timingAdjustmentsDECD;
+						numAdjustments = ARRAYSIZE(timingAdjustmentsDECD);
+					}
 					break;
 				case Common::IT_ITA:
 					adjustments = timingAdjustmentsIT;


Commit: 5280abc4d7912207450ced06fa24fa22f834f37d
    https://github.com/scummvm/scummvm/commit/5280abc4d7912207450ced06fa24fa22f834f37d
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for French Sam & Max Floppy intro

These timings were provided by dwatteau, and not a moment too soon. I'm
getting thoroughly sick and tired of watching the intro over and over!

Changed paths:
    engines/scumm/string.cpp


diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index 928c5c64803..206ca960d1d 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -270,6 +270,18 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					{ "Ti dispiace",      200, 0 }
 				};
 
+				TimingAdjustment timingAdjustmentsFRFloppy[] = {
+					{ "Et pour me",       120, 0 },
+					{ "C'est que^euh^",   100, 0 },
+					{ "vous \x88tes",     65,  0 },
+					{ "^impr\x82visible", 170, 0 },
+					{ "Pourquoi est-ce",  100, 0 },
+					{ "Filons de cet",    190, 0 },
+					{ "Nous pourrons",    65,  0 },
+					{ "Je peux conduire", 170, 0 },
+					{ "Je n'oublierai",   90,  0 }
+				};
+
 				TimingAdjustment timingAdjustmentsFRCD[] = {
 					{ "Oh.",              85,  0 },
 					{ "H\x82, pas mal.",  80,  0 },
@@ -309,7 +321,10 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					numAdjustments = ARRAYSIZE(timingAdjustmentsIT);
 					break;
 				case Common::FR_FRA:
-					if (strcmp(_game.variant, "Floppy") != 0) {
+					if (strcmp(_game.variant, "Floppy") == 0) {
+						adjustments = timingAdjustmentsFRFloppy;
+						numAdjustments = ARRAYSIZE(timingAdjustmentsFRFloppy);
+					} else {
 						adjustments = timingAdjustmentsFRCD;
 						numAdjustments = ARRAYSIZE(timingAdjustmentsFRCD);
 					}


Commit: 6d8eba977d2b707b0d508983e1180ddb8acace65
    https://github.com/scummvm/scummvm/commit/6d8eba977d2b707b0d508983e1180ddb8acace65
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-21T11:22:26+02:00

Commit Message:
SCUMM: Adjust timings for Italian Sam & Max Floppy intro.

This version uses English speech, and doesn't need the workaround for
the fight animation speeds. But several lines still had to be re-timed.

Changed paths:
    engines/scumm/script.cpp
    engines/scumm/string.cpp


diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp
index a0bbb298f77..5c2d1f12343 100644
--- a/engines/scumm/script.cpp
+++ b/engines/scumm/script.cpp
@@ -664,7 +664,9 @@ void ScummEngine::writeVar(uint var, int value) {
 
 			// Max beats up the scientist. This was probably to
 			// match the subtitles to the speech better, but this
-			// is just too much!
+			// is just too much! The floppy version doesn't do this
+			// but there's no need to explicitly test this since
+			// the script never sets the value to 2 there.
 			if (value == 2 && _language == Common::IT_ITA)
 				value = 3;
 		}
diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index 206ca960d1d..98e910d245b 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -77,9 +77,9 @@ void ScummEngine::printString(int m, const byte *msg) {
 		// for the animation to match. We get around this by slowing
 		// down that animation.
  		//
-		// In the italian version, the whole scene is sped up to keep up
-		// with Sam's speech. We compensate for this by slowing down the
-		// other animations.
+		// In the italian CD version, the whole scene is sped up to
+		// keep up with Sam's speech. We compensate for this by slowing
+		// down the other animations.
 		if (_game.id == GID_SAMNMAX && vm.slot[_currentScript].number == 65 && _enableEnhancements) {
 			Actor *a;
 
@@ -89,7 +89,7 @@ void ScummEngine::printString(int m, const byte *msg) {
 					if (a)
 						a->setAnimSpeed(3);
 				}
-			} else if (_language == Common::IT_ITA) {
+			} else if (_language == Common::IT_ITA && strcmp(_game.variant, "Floppy") != 0) {
 				if (memcmp(msg + 16, "Ooh.", 4) == 0) {
 					a = derefActorSafe(3, "printString");
 					if (a)
@@ -255,7 +255,18 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					{ "Kann ich fahren?", 240, 0 }
 				};
 
-				TimingAdjustment timingAdjustmentsIT[] = {
+				TimingAdjustment timingAdjustmentsITFloppy[] = {
+					{ "E per questo^",    140, 0 },
+					{ "E' che^ecco^",     100, 0 },
+					{ "^imprevedibile.",  170, 0 },
+					{ "Huh?",             110, 0 },
+					{ "Perch\x82 pensi",  90,  0 },
+					{ "Andiamocene da",   230, 0 },
+					{ "Forse possiamo",   75,  0 },
+					{ "Ti dispiace",      160, 0 }
+				};
+
+				TimingAdjustment timingAdjustmentsITCD[] = {
 					{ "E per questo^",    120, 0 },
 					{ "Forse sei",        75,  0 },
 					{ "^imprevedibile.",  170, 0 },
@@ -317,8 +328,13 @@ bool ScummEngine::handleNextCharsetCode(Actor *a, int *code) {
 					}
 					break;
 				case Common::IT_ITA:
-					adjustments = timingAdjustmentsIT;
-					numAdjustments = ARRAYSIZE(timingAdjustmentsIT);
+					if (strcmp(_game.variant, "Floppy") == 0) {
+						adjustments = timingAdjustmentsITFloppy;
+						numAdjustments = ARRAYSIZE(timingAdjustmentsITFloppy);
+					} else {
+						adjustments = timingAdjustmentsITCD;
+						numAdjustments = ARRAYSIZE(timingAdjustmentsITCD);
+					}
 					break;
 				case Common::FR_FRA:
 					if (strcmp(_game.variant, "Floppy") == 0) {




More information about the Scummvm-git-logs mailing list