[Scummvm-git-logs] scummvm master -> 95714e95ceef75e162f39c5d1da8c7f413d2e335

antoniou79 a.antoniou79 at gmail.com
Sun Feb 2 22:02:47 UTC 2020


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

Summary:
3a5dcc13eb BLADERUNNER: Fix missing KIA line in SPA/ITA localizations
882dd06f52 BLADERUNNER: More fixes for cut or muted lines across localizations
95714e95ce BLADERUNNER: More fixes and notes for missing quotes in localizations


Commit: 3a5dcc13eb2848e193c578b1493b231667a85dc1
    https://github.com/scummvm/scummvm/commit/3a5dcc13eb2848e193c578b1493b231667a85dc1
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2020-02-03T00:01:15+02:00

Commit Message:
BLADERUNNER: Fix missing KIA line in SPA/ITA localizations

Credits to IlDucci from the Spanish translation team.

This is the same line from Officer Leary in RC01, after canvassing the area.

Changed paths:
    engines/bladerunner/script/kia_script.cpp


diff --git a/engines/bladerunner/script/kia_script.cpp b/engines/bladerunner/script/kia_script.cpp
index f40a677..df49a7e 100644
--- a/engines/bladerunner/script/kia_script.cpp
+++ b/engines/bladerunner/script/kia_script.cpp
@@ -108,7 +108,18 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 		KIA_Play_Actor_Dialogue(kActorRunciter, 290);
 		break;
 	case kClueCrowdInterviewA:
-		KIA_Play_Actor_Dialogue(kActorOfficerLeary, 100);
+		if (_vm->_cutContent
+			&& (_vm->_language == Common::ES_ESP
+				|| _vm->_language == Common::IT_ITA)
+		) {
+			// Same fix as in RC01:
+			// this is the second half of the sentence about Lucy hanging around with Zuben ("a fat guy")
+			// in ENG, DEU and FRA it is redundant, but it's needed in ESP and ITA
+			KIA_Play_Actor_Dialogue(kActorOfficerLeary, 100);
+			KIA_Play_Actor_Dialogue(kActorOfficerLeary, 110);
+		} else {
+			KIA_Play_Actor_Dialogue(kActorOfficerLeary, 100);
+		}
 		break;
 	case kClueCrowdInterviewB:
 		KIA_Play_Actor_Dialogue(kActorOfficerLeary, 120);


Commit: 882dd06f523d6fe10ddd1fd015c063602e0456ff
    https://github.com/scummvm/scummvm/commit/882dd06f523d6fe10ddd1fd015c063602e0456ff
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2020-02-03T00:01:15+02:00

Commit Message:
BLADERUNNER: More fixes for cut or muted lines across localizations

Based on notes from IlDucci from the Spanish translation team and mine

Changed paths:
    engines/bladerunner/detection_tables.h
    engines/bladerunner/script/ai/hanoi.cpp
    engines/bladerunner/script/kia_script.cpp
    engines/bladerunner/script/scene/ps07.cpp
    engines/bladerunner/script/scene/ps09.cpp
    engines/bladerunner/script/scene/rc01.cpp
    engines/bladerunner/script/scene/tb07.cpp
    engines/bladerunner/script/vk_script.cpp
    engines/bladerunner/ui/kia_section_settings.cpp


diff --git a/engines/bladerunner/detection_tables.h b/engines/bladerunner/detection_tables.h
index 7af030b..6ffce36 100644
--- a/engines/bladerunner/detection_tables.h
+++ b/engines/bladerunner/detection_tables.h
@@ -33,7 +33,7 @@
 namespace BladeRunner {
 
 static const ADGameDescription gameDescriptions[] = {
-	// BladeRunner (English)
+	// BladeRunner (English) - ENG
 	{
 		"bladerunner",
 		0,
@@ -44,7 +44,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (German)
+	// BladeRunner (German) - DEU
 	{
 		"bladerunner",
 		0,
@@ -55,7 +55,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (French) - Bug #9722
+	// BladeRunner (French) - FRA - Bug #9722
 	{
 		"bladerunner",
 		0,
@@ -66,7 +66,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Italian)
+	// BladeRunner (Italian) - ITA
 	{
 		"bladerunner",
 		0,
@@ -77,7 +77,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc.)
+	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc.) - RUS
 	{
 		"bladerunner",
 		0,
@@ -88,7 +88,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R3)
+	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R3) - RUS
 	{
 		"bladerunner",
 		0,
@@ -99,7 +99,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R4)
+	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R4) - RUS
 	{
 		"bladerunner",
 		0,
@@ -110,7 +110,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Spanish)
+	// BladeRunner (Spanish) - ESP
 	{
 		"bladerunner",
 		0,
@@ -123,7 +123,7 @@ static const ADGameDescription gameDescriptions[] = {
 
 	// Versions with restored content
 
-	// BladeRunner (English)
+	// BladeRunner (English) - ENG
 	{
 		"bladerunner-final",
 		0,
@@ -134,7 +134,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (German)
+	// BladeRunner (German) - DEU
 	{
 		"bladerunner-final",
 		0,
@@ -145,7 +145,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (French)
+	// BladeRunner (French) - FRA
 	{
 		"bladerunner-final",
 		0,
@@ -156,7 +156,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Italian)
+	// BladeRunner (Italian) - ITA
 	{
 		"bladerunner-final",
 		0,
@@ -167,7 +167,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc.)
+	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc.) - RUS
 	{
 		"bladerunner-final",
 		0,
@@ -178,7 +178,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R3)
+	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R3) - RUS
 	{
 		"bladerunner-final",
 		0,
@@ -189,7 +189,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R4)
+	// BladeRunner (Russian - Fargus Multimedia + Home Systems, Inc. + Siberian Studio, R4) - RUS
 	{
 		"bladerunner-final",
 		0,
@@ -200,7 +200,7 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO5(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY, GAMEOPTION_FRAMELIMITER_NODELAYMILLIS, GAMEOPTION_FRAMELIMITER_FPS, GUIO_NOMIDI)
 	},
 
-	// BladeRunner (Spanish)
+	// BladeRunner (Spanish) - ESP
 	{
 		"bladerunner-final",
 		0,
diff --git a/engines/bladerunner/script/ai/hanoi.cpp b/engines/bladerunner/script/ai/hanoi.cpp
index c13e83d..a069d39 100644
--- a/engines/bladerunner/script/ai/hanoi.cpp
+++ b/engines/bladerunner/script/ai/hanoi.cpp
@@ -291,7 +291,7 @@ bool AIScriptHanoi::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		Game_Flag_Set(kFlagNR03McCoyThrownOut);
 		AI_Countdown_Timer_Reset(kActorHanoi, kActorTimerAIScriptCustomTask0);
 		Player_Loses_Control();
-		Player_Set_Combat_Mode(false); // this is missing in ITA & SPA versions of the game
+		Player_Set_Combat_Mode(false); // this is missing in ITA and ESP versions of the game
 		Actor_Force_Stop_Walking(kActorMcCoy);
 		Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
 		Actor_Set_Invisible(kActorMcCoy, true);
diff --git a/engines/bladerunner/script/kia_script.cpp b/engines/bladerunner/script/kia_script.cpp
index df49a7e..7bed3ac 100644
--- a/engines/bladerunner/script/kia_script.cpp
+++ b/engines/bladerunner/script/kia_script.cpp
@@ -109,11 +109,11 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 		break;
 	case kClueCrowdInterviewA:
 		if (_vm->_cutContent
-			&& (_vm->_language == Common::ES_ESP
-				|| _vm->_language == Common::IT_ITA)
+		    && (_vm->_language == Common::ES_ESP
+		        || _vm->_language == Common::IT_ITA)
 		) {
 			// Same fix as in RC01:
-			// this is the second half of the sentence about Lucy hanging around with Zuben ("a fat guy")
+			// Quote 110 is the second half of the sentence about Lucy hanging around with Zuben ("a fat guy")
 			// in ENG, DEU and FRA it is redundant, but it's needed in ESP and ITA
 			KIA_Play_Actor_Dialogue(kActorOfficerLeary, 100);
 			KIA_Play_Actor_Dialogue(kActorOfficerLeary, 110);
@@ -788,7 +788,25 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 	case kClueCrimeSceneNotes:
 		KIA_Play_Actor_Dialogue(kActorSteele, 3310);
 		KIA_Play_Actor_Dialogue(kActorSteele, 3320);
-		KIA_Play_Actor_Dialogue(kActorSteele, 3330);
+		if (_vm->_cutContent
+		    && (_vm->_language == Common::ES_ESP
+		        || _vm->_language == Common::IT_ITA)
+		) {
+			//
+			// in ITA and ESP the 3340 quote is the second half of the sentence starting in previous quote (3330)
+			KIA_Play_Actor_Dialogue(kActorSteele, 3330);
+			KIA_Play_Actor_Dialogue(kActorSteele, 3340);
+		} else if (_vm->_cutContent
+		           && _vm->_language == Common::FR_FRA
+		) {
+			// in FRA the 3340 quote has the full sentence rendering the previous quote (3330) redundant
+			// FRA (Restored Content) version needs only 3340
+			KIA_Play_Actor_Dialogue(kActorSteele, 3340);
+		} else {
+			// ENG and DEU and non-restored content versions need only 3330
+			// the 3340 quote is *BOOP* in the ENG and DEU versions
+			KIA_Play_Actor_Dialogue(kActorSteele, 3330);
+		}
 		KIA_Play_Actor_Dialogue(kActorSteele, 3350);
 		KIA_Play_Actor_Dialogue(kActorSteele, 3360);
 		KIA_Play_Actor_Dialogue(kActorSteele, 3370);
@@ -809,7 +827,19 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 		KIA_Play_Actor_Dialogue(kActorSteele, 3470);
 		KIA_Play_Actor_Dialogue(kActorGrigorian, 1300);
 		KIA_Play_Actor_Dialogue(kActorGrigorian, 1310);
-		KIA_Play_Actor_Dialogue(kActorSteele, 3480);
+		if (_vm->_cutContent
+		    && (_vm->_language == Common::ES_ESP
+		        || _vm->_language == Common::IT_ITA)
+		) {
+			//
+			// in ITA and ESP the 3490 quote is the second half of the sentence starting in previous quote (3480)
+			KIA_Play_Actor_Dialogue(kActorSteele, 3480);
+			KIA_Play_Actor_Dialogue(kActorSteele, 3490);
+		} else {
+			// the 3490 quote is *BOOP* in the ENG and DEU versions
+			// the 3490 quote is also redundant in FRA version, since it's only the first half of the previous quote (3480)
+			KIA_Play_Actor_Dialogue(kActorSteele, 3480);
+		}
 		KIA_Play_Actor_Dialogue(kActorSteele, 3500);
 		KIA_Play_Actor_Dialogue(kActorGrigorian, 1320);
 		KIA_Play_Actor_Dialogue(kActorGrigorian, 1330);
diff --git a/engines/bladerunner/script/scene/ps07.cpp b/engines/bladerunner/script/scene/ps07.cpp
index 678770c..c94cf1c 100644
--- a/engines/bladerunner/script/scene/ps07.cpp
+++ b/engines/bladerunner/script/scene/ps07.cpp
@@ -157,7 +157,12 @@ bool SceneScriptPS07::ClickedOnActor(int actorId) {
 				Actor_Says(kActorKlein, 170, 14);
 				Actor_Says(kActorMcCoy, 4180, 13);
 				Actor_Says(kActorKlein, 180, 12);
+#if BLADERUNNER_ORIGINAL_BUGS
 				Actor_Says(kActorKlein, 190, 13);
+#else
+				// Dino's quote 190 is continued in quote 200, and needs 0.0f pause to sound better flowing
+				Actor_Says_With_Pause(kActorKlein, 190, 0.0f, 13);
+#endif // BLADERUNNER_ORIGINAL_BUGS
 				Actor_Says(kActorKlein, 200, 16);
 				Actor_Says(kActorMcCoy, 4185, 18);
 				Actor_Says(kActorKlein, 210, 12);
diff --git a/engines/bladerunner/script/scene/ps09.cpp b/engines/bladerunner/script/scene/ps09.cpp
index c5a0143..40c38d7 100644
--- a/engines/bladerunner/script/scene/ps09.cpp
+++ b/engines/bladerunner/script/scene/ps09.cpp
@@ -356,10 +356,40 @@ void SceneScriptPS09::dialogueWithGrigorian() {
 			Actor_Says(kActorGrigorian, 170, 15);
 			Actor_Says(kActorGrigorian, 180, 16);
 			Actor_Says(kActorMcCoy, 4315, 18);
-			if (_vm->_cutContent) {
-				Actor_Says(kActorGrigorian, 190, kAnimationModeTalk); // Everything and anything.
+			if (_vm->_cutContent
+			    && (_vm->_language == Common::ES_ESP
+			        || _vm->_language == Common::IT_ITA)
+			) {
+				// In ESP and ITA versions:
+				// Quote 190 is the full quote.
+				// "Everything and anything. Guns so new that even the police had hardly used them I heard."
+				// Quote 200 is muted in ESP and becomes redundant in ITA
+				Actor_Says(kActorGrigorian, 190, kAnimationModeTalk);
+				// TODO: When mixing ESP or ITA voiceover with subtitles from other languages,
+				//       those subtitles would have to be merged with the 190 quote
+				//       in order to show up in the ESP amd ITA version
+				//       Also, the spoken quote appears in ESP version only in restored content mode!
+			} else if (_vm->_cutContent) {
+				// TODO is RUS version covered by this case?
+				// In ENG, FRA and DEU versions:
+				// Quote 190 is the first half:
+				// "Everything and anything."
+				// and quote 200 is the second half:
+				// "Guns so new that even the police had hardly used them I heard."
+				Actor_Says(kActorGrigorian, 190, kAnimationModeTalk);
+				Actor_Says(kActorGrigorian, 200, 13);
+			} else {
+				// vanilla version (non-restored content)
+				// This plays only the second half of the full quote in ENG, FRA, DEU and ITA versions
+#if BLADERUNNER_ORIGINAL_BUGS
+				Actor_Says(kActorGrigorian, 200, 13);
+#else
+				// Quote 200 is muted in the ESP version
+				if (_vm->_language != Common::ES_ESP) {
+					Actor_Says(kActorGrigorian, 200, 13);
+				}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 			}
-			Actor_Says(kActorGrigorian, 200, 13);
 			return;
 		}
 		break;
@@ -367,12 +397,32 @@ void SceneScriptPS09::dialogueWithGrigorian() {
 	case 180: // CARS
 		Actor_Says(kActorMcCoy, 4270, 18);
 		Actor_Says(kActorMcCoy, 4255, kAnimationModeTalk);
+#if BLADERUNNER_ORIGINAL_BUGS
 		Actor_Says(kActorGrigorian, 210, 12);
 		Actor_Says(kActorGrigorian, 220, 13);
 		Actor_Says(kActorGrigorian, 230, 14);
+#else
+		if (_vm->_language != Common::ES_ESP) {
+			Actor_Says(kActorGrigorian, 210, 12);
+			Actor_Says(kActorGrigorian, 220, 13);
+			// pause (after the quote is spoken) is set to 0.0f here
+			// Grigorian is interrupted by McCoy here, so there shouldn't be any pause after his quote
+			Actor_Says_With_Pause(kActorGrigorian, 230, 0.0f, 14);
+		} else {
+			// In ESP version, quote 210 contains the full quote,
+			// and quotes 220 and 230 are muted.
+			// The pause (after the quote is spoken) is set to 0.0f here, because Grigorian is interrupted in the end
+			Actor_Says_With_Pause(kActorGrigorian, 210, 0.0f, 12);
+			// we skip the muted quotes for the ESP version
+			// TODO: When mixing ESP voiceover with subtitles from other languages,
+			//       those subtitles would have to be merged with the previous full quote (210)
+			//       in order to show up in the ESP version
+		}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 		Actor_Says(kActorMcCoy, 4320, 14);
 		if (_vm->_cutContent) {
-			Actor_Says(kActorMcCoy, 4325, kAnimationModeTalk); // What else do you guys do besides wave signs
+			// "What else do you guys do besides wave signs"
+			Actor_Says(kActorMcCoy, 4325, kAnimationModeTalk);
 		}
 		Actor_Says(kActorGrigorian, 240, 16);
 		Actor_Says(kActorGrigorian, 250, 15);
@@ -380,7 +430,15 @@ void SceneScriptPS09::dialogueWithGrigorian() {
 		Actor_Says(kActorGrigorian, 260, 13);
 		Actor_Says(kActorGrigorian, 270, 12);
 		if (_vm->_cutContent) {
-			Actor_Says(kActorGrigorian, 280, 12); // A way for the slaves to escape
+			// In the ESP version quote 280 is muted. The previous quote (270) already contains the full quote.
+			// Essentially, the full quote is not removed content in the vanilla ESP version
+			// TODO: When mixing ESP voiceover with subtitles from other languages,
+			//       those subtitles would have to be merged with the previous full quote (270)
+			//       in order to show up in the ESP version
+			if (_vm->_language != Common::ES_ESP) {
+				// "A way for the slaves to escape"
+				Actor_Says(kActorGrigorian, 280, 12);
+			}
 		}
 		Actor_Says(kActorMcCoy, 4335, 18);
 		Actor_Says(kActorGrigorian, 290, 15);
@@ -410,10 +468,31 @@ void SceneScriptPS09::dialogueWithGrigorian() {
 		} else {
 			Actor_Says(kActorGrigorian, 320, 13);
 			if (_vm->_cutContent) {
-				Actor_Says(kActorGrigorian, 330, kAnimationModeTalk); // Friends with access to vehicles
+				// In the ESP version quote 330 is muted. The previous quote (320) already contains the full quote.
+				// Essentially, the full quote is not removed content in the vanilla ESP version
+				// TODO: When mixing ESP voiceover with subtitles from other languages,
+				//       those subtitles would have to be merged with the previous full quote (320)
+				//       in order to show up in the ESP version
+				if (_vm->_language != Common::ES_ESP) {
+					// "Friends with access to vehicles"
+					Actor_Says(kActorGrigorian, 330, kAnimationModeTalk);
+				}
 			}
+#if BLADERUNNER_ORIGINAL_BUGS
 			Actor_Says(kActorGrigorian, 340, 14);
 			Actor_Says(kActorGrigorian, 350, 12);
+#else
+			if (_vm->_language != Common::ES_ESP) {
+				Actor_Says(kActorGrigorian, 340, 14);
+				Actor_Says_With_Pause(kActorGrigorian, 350, 0.0f, 12);
+			} else {
+				// quote 350 is muted in ESP version. The quote 340 contains the full quote
+				// TODO: When mixing ESP voiceover with subtitles from other languages,
+				//       those subtitles would have to be merged with the previous full quote (340)
+				//       in order to show up in the ESP version
+				Actor_Says_With_Pause(kActorGrigorian, 340, 0.0f, 14);
+			}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 			Actor_Says(kActorMcCoy, 4375, 18);
 		}
 		break;
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index 928a89f..c90ff65 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -214,7 +214,17 @@ void SceneScriptRC01::SceneLoaded() {
 		Actor_Voice_Over(1830, kActorVoiceOver);
 		Actor_Voice_Over(1850, kActorVoiceOver);
 		if (!Game_Flag_Query(kFlagDirectorsCut)) {
+#if BLADERUNNER_ORIGINAL_BUGS
 			Actor_Voice_Over(1860, kActorVoiceOver);
+#else
+			// Quote 1860 is muted in the DEU version
+			// TODO: When mixing DEU voiceover with subtitles from other languages,
+			//       those subtitles would have to be merged with the previous quote
+			//       in order to show up in the DEU version
+			if (_vm->_language != Common::DE_DEU) {
+				Actor_Voice_Over(1860, kActorVoiceOver);
+			}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 			I_Sez("MG: Is David Leary a self-respecting human or is he powered by rechargeable");
 			I_Sez("batteries?\n");
 		}
@@ -340,7 +350,7 @@ bool SceneScriptRC01::ClickedOnActor(int actorId) {
 					    && (_vm->_language == Common::ES_ESP
 					        || _vm->_language == Common::IT_ITA)
 					) {
-						// this is the second half of the sentence about Lucy hanging around with Zuben ("a fat guy")
+						// Quote 110 is the second half of the sentence about Lucy hanging around with Zuben ("a fat guy")
 						// in ENG, DEU and FRA it is redundant, but it's needed in ESP and ITA
 						Actor_Says_With_Pause(kActorOfficerLeary, 100, 0.0f, 15);
 						Actor_Says(kActorOfficerLeary, 110, kAnimationModeTalk);
diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp
index dd70cb2..1a9d172 100644
--- a/engines/bladerunner/script/scene/tb07.cpp
+++ b/engines/bladerunner/script/scene/tb07.cpp
@@ -258,7 +258,7 @@ void SceneScriptTB07::McCoyTalkWithRachaelAndTyrell() {
 	    && (_vm->_language == Common::ES_ESP
 	        || _vm->_language == Common::IT_ITA)
 	) {
-		// this is the second half of the sentence about Tyrell having important meetings to attend to
+		// Quote 560 is the second half of the sentence about Tyrell having important meetings to attend to
 		// In ENG, DEU and FRA it is redundant because it, instead, re-uses a cut line from the removed elevator scene "Copies, only copies"
 		// However, it's needed in ESP and ITA
 		Actor_Says_With_Pause(kActorRachael, 550, 0.0f, 13);
diff --git a/engines/bladerunner/script/vk_script.cpp b/engines/bladerunner/script/vk_script.cpp
index 71954c2..ca6047e 100644
--- a/engines/bladerunner/script/vk_script.cpp
+++ b/engines/bladerunner/script/vk_script.cpp
@@ -1522,8 +1522,20 @@ void VKScript::askDektora(int questionId) {
 		} else {
 			VK_Subject_Reacts(90, 15, -5, 10);
 			VK_Play_Speech_Line(kActorDektora, 1870, 0.5f);
+#if BLADERUNNER_ORIGINAL_BUGS
 			VK_Play_Speech_Line(kActorMcCoy, 8532, 0.5f);
 			VK_Play_Speech_Line(kActorDektora, 1890, 0.5f);
+#else
+			// Quotes 8532 (McCoy) and 1890 (Dektora) are muted in the ESP version
+			// They are completely missing from the ESP version (they don't appear elsewhere).
+			// The quotes here are:
+			// McCoy: "That's not a single word."
+			// Dektora: "All right. Aggressive. Powerful."
+			if (_vm->_language != Common::ES_ESP) {
+				VK_Play_Speech_Line(kActorMcCoy, 8532, 0.5f);
+				VK_Play_Speech_Line(kActorDektora, 1890, 0.5f);
+			}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 		}
 		break;
 	case 7475:                          // Medium 01
diff --git a/engines/bladerunner/ui/kia_section_settings.cpp b/engines/bladerunner/ui/kia_section_settings.cpp
index 34f63d5..001579a 100644
--- a/engines/bladerunner/ui/kia_section_settings.cpp
+++ b/engines/bladerunner/ui/kia_section_settings.cpp
@@ -66,11 +66,14 @@ KIASectionSettings::KIASectionSettings(BladeRunnerEngine *vm)
 #endif
 
 	if (_vm->_language == Common::RU_RUS) {
-		_directorsCut         = new UICheckBox(_vm, checkBoxCallback, this, Common::Rect(180, 364, 436, 374), 0, false); // expanded click-bounding box x-axis
-		_subtitlesEnable      = new UICheckBox(_vm, checkBoxCallback, this, Common::Rect(276, 376, 345, 386), 0, false); // moved to new line
+		// expanded click-bounding box x-axis
+		_directorsCut         = new UICheckBox(_vm, checkBoxCallback, this, Common::Rect(180, 364, 436, 374), 0, false);
+		// moved to new line
+		_subtitlesEnable      = new UICheckBox(_vm, checkBoxCallback, this, Common::Rect(276, 376, 345, 386), 0, false);
 	} else {
 		_directorsCut         = new UICheckBox(_vm, checkBoxCallback, this, Common::Rect(180, 364, 270, 374), 0, false);
-		_subtitlesEnable      = new UICheckBox(_vm, checkBoxCallback, this, Common::Rect(311, 364, 380, 374), 0, false); // moved further to the right to avoid overlap with 'Designer's Cut' in some language versions (ESP)
+		// moved further to the right to avoid overlap with 'Designer's Cut' in some language versions (ESP)
+		_subtitlesEnable      = new UICheckBox(_vm, checkBoxCallback, this, Common::Rect(311, 364, 380, 374), 0, false);
 	}
 	_playerAgendaSelector = new UIImagePicker(_vm, 5);
 
@@ -215,7 +218,8 @@ void KIASectionSettings::draw(Graphics::Surface &surface) {
 				subtitlesTranslation = "Sottotitoli";
 				break;
 			case Common::ES_ESP:
-				subtitlesTranslation = "Subt\xa1tulos"; // the spanish text must have accented í
+				// the spanish text must have accented í
+				subtitlesTranslation = "Subt\xa1tulos";
 				break;
 			case Common::RU_RUS:
 				// субтитры
@@ -228,13 +232,15 @@ void KIASectionSettings::draw(Graphics::Surface &surface) {
 				}
 				break;
 		}
-
-		const char *textSubtitles  = strcmp(_vm->_textOptions->getText(42), "") == 0 ? subtitlesTranslation : _vm->_textOptions->getText(42); // +1 to the max of original index of textOptions which is 41
+		// +1 to the max of original index of textOptions which is 41
+		const char *textSubtitles  = strcmp(_vm->_textOptions->getText(42), "") == 0 ? subtitlesTranslation : _vm->_textOptions->getText(42);
 
 		if (_vm->_language == Common::RU_RUS) {
-			_vm->_mainFont->drawString(&surface, textSubtitles, 288, 376, surface.w, surface.format.RGBToColor(232, 208, 136)); // special case for Russian version, put the option in a new line to avoid overlap
+			// special case for Russian version, put the option in a new line to avoid overlap
+			_vm->_mainFont->drawString(&surface, textSubtitles, 288, 376, surface.w, surface.format.RGBToColor(232, 208, 136));
 		} else {
-			_vm->_mainFont->drawString(&surface, textSubtitles, 323, 365, surface.w, surface.format.RGBToColor(232, 208, 136)); // moved further to the right to avoid overlap with 'Designer's Cut' in some language versions (ESP)
+			// moved further to the right to avoid overlap with 'Designer's Cut' in some language versions (ESP)
+			_vm->_mainFont->drawString(&surface, textSubtitles, 323, 365, surface.w, surface.format.RGBToColor(232, 208, 136));
 		}
 	}
 


Commit: 95714e95ceef75e162f39c5d1da8c7f413d2e335
    https://github.com/scummvm/scummvm/commit/95714e95ceef75e162f39c5d1da8c7f413d2e335
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2020-02-03T00:01:15+02:00

Commit Message:
BLADERUNNER: More fixes and notes for missing quotes in localizations

With the help of IlDucci's notes.

Changed paths:
    engines/bladerunner/script/ai/blimp_guy.cpp
    engines/bladerunner/script/ai/free_slot_a.cpp
    engines/bladerunner/script/ai/free_slot_b.cpp
    engines/bladerunner/script/kia_script.cpp
    engines/bladerunner/script/scene/ps07.cpp
    engines/bladerunner/script/scene/rc01.cpp
    engines/bladerunner/script/scene/rc02.cpp


diff --git a/engines/bladerunner/script/ai/blimp_guy.cpp b/engines/bladerunner/script/ai/blimp_guy.cpp
index 9dc104e..433e183 100644
--- a/engines/bladerunner/script/ai/blimp_guy.cpp
+++ b/engines/bladerunner/script/ai/blimp_guy.cpp
@@ -24,6 +24,43 @@
 
 namespace BladeRunner {
 
+// Notes:
+// kActorBlimpGuy's speech appears
+// in specific scenes:
+//  - AR01, AR02
+//  - BB01
+//  - CT01, CT02, CT03, CT04, CT06, CT07, CT08, CT12
+//  - DR01, DR04
+//  - MA05
+//  - RC03
+// and one cutscene:
+//  - TB_FLY
+// In the in-game scene his speech is played as ambient sound using Ambient_Sounds_Add_Speech_Sound()
+// It is thus not subtitled as of yet.
+// TODO: maybe if we support dual subtitles being displayed on-screen
+// The Blimp Guy's speech in the TB_FLY VQA cutscene is subtitled.
+//
+// The FRA and ESP versions do not use the Blimp's horn sound at all during any of the announcements
+//
+// From the available quotes for kActorBlimpGuy, only quotes with id 0, 20, 40, 50 are used.
+// Quote 10 is unused:
+//    "A new life awaits you in the Off-World colonies."
+//    "The chance to begin again in a golden land of opportunity and adventure."
+//    - In ENG and DEU versions it is identical with the second half of quote id 0 and thus redundant
+//    - In FRA, ESP and ITA versions it is the missing second half of quote id 0 and is thus "required"
+//      TODO: Figure out a way to restore this quote as a continuation of the previous quote
+//            given that this is ambient sound!
+//
+// Quote 30 is unused:
+//    Roughly translates to: "What are you waiting for? Emigrate to the colonies!"
+//    - In ENG version this is a *boop* sound
+//    - In DEU version this is the start of a new announcement (the Blimp horn plays)
+//    - In ITA version this should be a continuation of an announcement (the Blimp horn does not play)
+//    - In FRA and ESP version this can be either a new announcement or a continuation of the previous announcement
+//      (the Blimp horn does not play ever in FRA and ESP versions)
+//      TODO: Figure out a way to restore this quote as a continuation of the previous quote
+//            given that this is ambient sound!
+//
 AIScriptBlimpGuy::AIScriptBlimpGuy(BladeRunnerEngine *vm) : AIScriptBase(vm) {
 }
 
diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp
index 441100b..a529572 100644
--- a/engines/bladerunner/script/ai/free_slot_a.cpp
+++ b/engines/bladerunner/script/ai/free_slot_a.cpp
@@ -213,6 +213,10 @@ void AIScriptFreeSlotA::ClickedByPlayer() {
 		if (_vm->_cutContent && !Game_Flag_Query(kFlagMcCoyCommentsOnHoodooRats)) {
 			Game_Flag_Set(kFlagMcCoyCommentsOnHoodooRats);
 			Actor_Voice_Over(1060, kActorVoiceOver);  // Hoodoo rats
+			// Note: Quote 1070 is *boop* in ENG version.
+			// However, it is similar to 1060 quote in FRA, DEU, ESP and ITA versions
+			//          with the only difference being not mentioning the "Hoodoo Rats" name.
+			//          It uses a generic "rats" in its place.
 			Actor_Voice_Over(1080, kActorVoiceOver);
 			Actor_Voice_Over(1090, kActorVoiceOver);
 		} else {
diff --git a/engines/bladerunner/script/ai/free_slot_b.cpp b/engines/bladerunner/script/ai/free_slot_b.cpp
index e6cb0e2..72dd2f5 100644
--- a/engines/bladerunner/script/ai/free_slot_b.cpp
+++ b/engines/bladerunner/script/ai/free_slot_b.cpp
@@ -158,6 +158,10 @@ void AIScriptFreeSlotB::ClickedByPlayer() {
 	if (_vm->_cutContent && !Game_Flag_Query(kFlagMcCoyCommentsOnHoodooRats)) {
 		Game_Flag_Set(kFlagMcCoyCommentsOnHoodooRats);
 		Actor_Voice_Over(1060, kActorVoiceOver);  // Hoodoo rats
+		// Note: Quote 1070 is *boop* in ENG version.
+		// However, it is similar to 1060 quote in FRA, DEU, ESP and ITA versions
+		//          with the only difference being not mentioning the "Hoodoo Rats" name.
+		//          It uses a generic "rats" in its place.
 		Actor_Voice_Over(1080, kActorVoiceOver);
 		Actor_Voice_Over(1090, kActorVoiceOver);
 	} else {
diff --git a/engines/bladerunner/script/kia_script.cpp b/engines/bladerunner/script/kia_script.cpp
index 7bed3ac..3bdd2be 100644
--- a/engines/bladerunner/script/kia_script.cpp
+++ b/engines/bladerunner/script/kia_script.cpp
@@ -84,6 +84,16 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 		break;
 	case kClueLabCorpses:
 		KIA_Play_Actor_Dialogue(kActorKlein, 140);
+		// Similar fix to PS07:
+		// quote 150 is *boop* in ENG version
+		// it is redundant in DEU and FRA versions (identical to second half of quote 140)
+		// it is required in ESP and ITA versions. It is the missing second half of quote 140.
+		if (_vm->_cutContent
+		    && (_vm->_language == Common::ES_ESP
+		        || _vm->_language == Common::IT_ITA)
+		) {
+			KIA_Play_Actor_Dialogue(kActorKlein, 150);
+		}
 		break;
 	case kClueLabShellCasings:
 		KIA_Play_Actor_Dialogue(kActorKlein, 50);
diff --git a/engines/bladerunner/script/scene/ps07.cpp b/engines/bladerunner/script/scene/ps07.cpp
index c94cf1c..86c1875 100644
--- a/engines/bladerunner/script/scene/ps07.cpp
+++ b/engines/bladerunner/script/scene/ps07.cpp
@@ -139,6 +139,15 @@ bool SceneScriptPS07::ClickedOnActor(int actorId) {
 				Actor_Says(kActorKlein, 130, 15);
 				Actor_Says(kActorMcCoy, 4160, 13);
 				Actor_Says(kActorKlein, 140, 16);
+				// quote 150 is *boop* in ENG version
+				// it is redundant in DEU and FRA versions (identical to second half of quote 140)
+				// it is required in ESP and ITA versions. It is the missing second half of quote 140.
+				if (_vm->_cutContent
+				    && (_vm->_language == Common::ES_ESP
+				        || _vm->_language == Common::IT_ITA)
+				) {
+					Actor_Says(kActorKlein, 150, kAnimationModeTalk);
+				}
 				Actor_Says(kActorMcCoy, 4165, 18);
 				Actor_Says(kActorKlein, 160, 13);
 				Actor_Says(kActorMcCoy, 4170, 19);
@@ -182,6 +191,14 @@ bool SceneScriptPS07::ClickedOnActor(int actorId) {
 				if (_vm->_cutContent) {
 					Actor_Says(kActorMcCoy, 4195, 13);
 					Actor_Says(kActorKlein, 240, 16); // Car VIN
+					// quote 250 is *boop* in ENG version
+					// it is redundant in DEU and FRA versions (identical to second half of quote 240)
+					// it is required in ESP and ITA versions. It is the missing second half of quote 240.
+					if (_vm->_language == Common::ES_ESP
+					    || _vm->_language == Common::IT_ITA
+					) {
+						Actor_Says(kActorKlein, 250, kAnimationModeTalk);
+					}
 				}
 				Actor_Set_Goal_Number(kActorKlein, kGoalKleinMovingInLab01);
 				return true;
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index c90ff65..ec9f874 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -218,9 +218,8 @@ void SceneScriptRC01::SceneLoaded() {
 			Actor_Voice_Over(1860, kActorVoiceOver);
 #else
 			// Quote 1860 is muted in the DEU version
-			// TODO: When mixing DEU voiceover with subtitles from other languages,
-			//       those subtitles would have to be merged with the previous quote
-			//       in order to show up in the DEU version
+			// The quote "No self-respecting human would own one of those frauds."
+			// is completely missing from the DEU sound files (it's not part of the previous quote)
 			if (_vm->_language != Common::DE_DEU) {
 				Actor_Voice_Over(1860, kActorVoiceOver);
 			}
diff --git a/engines/bladerunner/script/scene/rc02.cpp b/engines/bladerunner/script/scene/rc02.cpp
index 9595b51..426a3ce 100644
--- a/engines/bladerunner/script/scene/rc02.cpp
+++ b/engines/bladerunner/script/scene/rc02.cpp
@@ -184,6 +184,19 @@ bool SceneScriptRC02::ClickedOn3DObject(const char *objectName, bool a2) {
 		    || (Player_Query_Agenda() == kPlayerAgendaErratic && Random_Query(0, 1) == 1)
 		) {
 			Actor_Voice_Over(1940, kActorVoiceOver);
+			// Note: Quote 1950 is *boop* in ENG version
+			//       However it is voiced in FRA, DEU, ESP and ITA versions
+			//       In ESP and FRA this quote roughly translates to:
+			//       "Seeing them slaughtered was worse than any of my nightmares."
+			//       In DEU and ITA it seems to be the second (missing) half of the previous quote (1940)
+			//       and it is required for those.
+			if (_vm->_language == Common::FR_FRA
+			    || _vm->_language == Common::DE_DEU
+			    || _vm->_language == Common::ES_ESP
+			    || _vm->_language == Common::IT_ITA
+			) {
+				Actor_Voice_Over(1950, kActorVoiceOver);
+			}
 		} else {
 			Actor_Voice_Over(9010, kActorMcCoy);
 			Actor_Voice_Over(9015, kActorMcCoy);




More information about the Scummvm-git-logs mailing list