[Scummvm-git-logs] scummvm master -> cea00af6739553b3348c545912b4bfec16978057

peterkohaut peterkohaut at users.noreply.github.com
Sun Mar 17 22:03:04 CET 2019


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:
bba7ab786b BLADERUNNER: Fixed integer underflow for Russian videos
e7641d51b5 BLADERUNNER: Fixes for Russian version
cea00af673 BLADERUNNER: Fixed CDFRAMES.DAT switching


Commit: bba7ab786bd47d259dac5254c03b1b0f56a7e890
    https://github.com/scummvm/scummvm/commit/bba7ab786bd47d259dac5254c03b1b0f56a7e890
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-03-17T22:01:16+01:00

Commit Message:
BLADERUNNER: Fixed integer underflow for Russian videos

Changed paths:
    engines/bladerunner/vqa_decoder.cpp


diff --git a/engines/bladerunner/vqa_decoder.cpp b/engines/bladerunner/vqa_decoder.cpp
index 38d3fd4..ddd6c98 100644
--- a/engines/bladerunner/vqa_decoder.cpp
+++ b/engines/bladerunner/vqa_decoder.cpp
@@ -347,10 +347,12 @@ bool VQADecoder::readVQHD(Common::SeekableReadStream *s, uint32 size) {
 bool VQADecoder::VQAVideoTrack::readVQFR(Common::SeekableReadStream *s, uint32 size, uint readFlags) {
 	IFFChunkHeader chd;
 
-	while (size >= 8) {
+	signed int sizeLeft = size; // we have to use signed int to avoid underflow
+
+	while (sizeLeft >= 8) {
 		if (!readIFFChunkHeader(s, &chd))
 			return false;
-		size -= roundup(chd.size) + 8;
+		sizeLeft -= roundup(chd.size) + 8;
 
 		bool rc = false;
 		switch (chd.id) {
@@ -663,10 +665,12 @@ void VQADecoder::VQAVideoTrack::decodeVideoFrame(Graphics::Surface *surface, boo
 bool VQADecoder::VQAVideoTrack::readVQFL(Common::SeekableReadStream *s, uint32 size, uint readFlags) {
 	IFFChunkHeader chd;
 
-	while (size >= 8) {
+	signed int sizeLeft = size; // we have to use signed int to avoid underflow
+
+	while (sizeLeft >= 8) {
 		if (!readIFFChunkHeader(s, &chd))
 			return false;
-		size -= roundup(chd.size) + 8;
+		sizeLeft -= roundup(chd.size) + 8;
 
 		bool rc = false;
 		switch (chd.id) {


Commit: e7641d51b5ca6f46aa16105c31bd827ec72b3bf1
    https://github.com/scummvm/scummvm/commit/e7641d51b5ca6f46aa16105c31bd827ec72b3bf1
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-03-17T22:01:16+01:00

Commit Message:
BLADERUNNER: Fixes for Russian version

Changed paths:
    engines/bladerunner/bladerunner.cpp
    engines/bladerunner/bladerunner.h
    engines/bladerunner/debugger.cpp
    engines/bladerunner/detection_tables.h
    engines/bladerunner/script/ai/hanoi.cpp
    engines/bladerunner/ui/esper.cpp


diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index 36292d0..ef91fd8 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -130,6 +130,7 @@ BladeRunnerEngine::BladeRunnerEngine(OSystem *syst, const ADGameDescription *des
 
 	_crimesDatabase = nullptr;
 
+	_language = desc->language;
 	switch (desc->language) {
 	case Common::EN_ANY:
 		_languageCode = "E";
@@ -144,7 +145,7 @@ BladeRunnerEngine::BladeRunnerEngine(OSystem *syst, const ADGameDescription *des
 		_languageCode = "I";
 		break;
 	case Common::RU_RUS:
-		_languageCode = "R";
+		_languageCode = "E"; // Russian version is built on top of English one
 		break;
 	case Common::ES_ESP:
 		_languageCode = "S";
diff --git a/engines/bladerunner/bladerunner.h b/engines/bladerunner/bladerunner.h
index 438b34e..3154ff8 100644
--- a/engines/bladerunner/bladerunner.h
+++ b/engines/bladerunner/bladerunner.h
@@ -116,7 +116,9 @@ public:
 	bool           _gameIsRunning;
 	bool           _windowIsActive;
 	int            _playerLosesControlCounter;
-	Common::String _languageCode;
+
+	Common::String   _languageCode;
+	Common::Language _language;
 
 	ActorDialogueQueue *_actorDialogueQueue;
 	ScreenEffects      *_screenEffects;
diff --git a/engines/bladerunner/debugger.cpp b/engines/bladerunner/debugger.cpp
index 08c26e3..d0cfca8 100644
--- a/engines/bladerunner/debugger.cpp
+++ b/engines/bladerunner/debugger.cpp
@@ -130,7 +130,7 @@ bool Debugger::cmdAnimation(int argc, const char **argv) {
 
 bool Debugger::cmdDraw(int argc, const char **argv) {
 	if (argc != 2) {
-		debugPrintf("Enables debug rendering of actors, screen effect, fogs, lights, scene objects, obstacles, regsions, ui elements, walk boxes, waypoints, zbuffer or disables debug rendering.\n");
+		debugPrintf("Enables debug rendering of actors, screen effect, fogs, lights, scene objects, obstacles, regions, ui elements, walk boxes, waypoints, zbuffer or disables debug rendering.\n");
 		debugPrintf("Usage: %s (act | eff | fog | lit | obj | obstacles | reg | ui | walk | way | zbuf | reset)\n", argv[0]);
 		return true;
 	}
diff --git a/engines/bladerunner/detection_tables.h b/engines/bladerunner/detection_tables.h
index 5ee96c8..45a9b81 100644
--- a/engines/bladerunner/detection_tables.h
+++ b/engines/bladerunner/detection_tables.h
@@ -86,6 +86,18 @@ static const ADGameDescription gameDescriptions[] = {
 		GUIO2(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY)
 	},
 
+	// BladeRunner (Russian - alternate version)
+	{
+		"bladerunner",
+		0,
+		AD_ENTRY1s("STARTUP.MIX", "bf42af841d9f4b643665013a348c81e0", 2483111),
+		Common::RU_RUS,
+		Common::kPlatformWindows,
+		ADGF_NO_FLAGS,
+		GUIO2(GAMEOPTION_SITCOM, GAMEOPTION_SHORTY)
+	},
+
+
 	// BladeRunner (Spanish)
 	{
 		"bladerunner",
diff --git a/engines/bladerunner/script/ai/hanoi.cpp b/engines/bladerunner/script/ai/hanoi.cpp
index 56c39c2..87003f8 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, 0);
 		Player_Loses_Control();
-		Player_Set_Combat_Mode(false);
+		Player_Set_Combat_Mode(false); // this is missing in ITA & SPA 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/ui/esper.cpp b/engines/bladerunner/ui/esper.cpp
index a5d858e..4fef77c 100644
--- a/engines/bladerunner/ui/esper.cpp
+++ b/engines/bladerunner/ui/esper.cpp
@@ -1019,9 +1019,15 @@ void ESPER::drawVideoFrame(Graphics::Surface &surface) {
 }
 
 void ESPER::drawTextCoords(Graphics::Surface &surface) {
-	_vm->_mainFont->drawColor(Common::String::format("ZM %04.0f", _zoom / _zoomMin * 2.0f  ), surface, 155, 364, 0x001F);
-	_vm->_mainFont->drawColor(Common::String::format("NS %04d",   12 * _viewport.top  +  98), surface, 260, 364, 0x001F);
-	_vm->_mainFont->drawColor(Common::String::format("EW %04d",   12 * _viewport.left + 167), surface, 364, 364, 0x001F);
+	if (_vm->_language == Common::RU_RUS) {
+		_vm->_mainFont->drawColor(Common::String::format("gh %04.0f", _zoom / _zoomMin * 2.0f  ), surface, 155, 364, 0x001F);
+		_vm->_mainFont->drawColor(Common::String::format("dh %04d",   12 * _viewport.top  +  98), surface, 260, 364, 0x001F);
+		_vm->_mainFont->drawColor(Common::String::format("uh %04d",   12 * _viewport.left + 167), surface, 364, 364, 0x001F);
+	} else {
+		_vm->_mainFont->drawColor(Common::String::format("ZM %04.0f", _zoom / _zoomMin * 2.0f  ), surface, 155, 364, 0x001F);
+		_vm->_mainFont->drawColor(Common::String::format("NS %04d",   12 * _viewport.top  +  98), surface, 260, 364, 0x001F);
+		_vm->_mainFont->drawColor(Common::String::format("EW %04d",   12 * _viewport.left + 167), surface, 364, 364, 0x001F);
+	}
 }
 
 void ESPER::drawMouse(Graphics::Surface &surface) {


Commit: cea00af6739553b3348c545912b4bfec16978057
    https://github.com/scummvm/scummvm/commit/cea00af6739553b3348c545912b4bfec16978057
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-03-17T22:01:16+01:00

Commit Message:
BLADERUNNER: Fixed CDFRAMES.DAT switching

Changed paths:
    engines/bladerunner/slice_animations.cpp


diff --git a/engines/bladerunner/slice_animations.cpp b/engines/bladerunner/slice_animations.cpp
index 078d519..5db0806 100644
--- a/engines/bladerunner/slice_animations.cpp
+++ b/engines/bladerunner/slice_animations.cpp
@@ -112,6 +112,8 @@ bool SliceAnimations::openFrames(int fileNumber) {
 
 	_framesPageFile.close();
 
+	_framesPageFile._fileNumber = fileNumber;
+
 	if (fileNumber == 1 && _framesPageFile.open("CDFRAMES.DAT")) // For Chapter1 we try both CDFRAMES.DAT and CDFRAMES1.DAT
 		return true;
 





More information about the Scummvm-git-logs mailing list