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

sev- sev at scummvm.org
Tue Mar 10 15:34:48 UTC 2020


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

Summary:
992828b2ab PRINCE: Drop platform in target generation on detection
f3b5bc7ccf PRINCE: Convert flag lookup into hashmap. This is more stable


Commit: 992828b2ab82a378dc3bb0b2c1beaa653d7f0407
    https://github.com/scummvm/scummvm/commit/992828b2ab82a378dc3bb0b2c1beaa653d7f0407
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-03-10T16:30:49+01:00

Commit Message:
PRINCE: Drop platform in target generation on detection

Changed paths:
    engines/prince/detection.cpp


diff --git a/engines/prince/detection.cpp b/engines/prince/detection.cpp
index 2332118775..5d710102d6 100644
--- a/engines/prince/detection.cpp
+++ b/engines/prince/detection.cpp
@@ -62,7 +62,7 @@ static const PrinceGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("databank.ptc", "5fa03833177331214ec1354761b1d2ee", 3565031),
 			Common::DE_DEU,
 			Common::kPlatformWindows,
-			ADGF_USEEXTRAASTITLE,
+			ADGF_USEEXTRAASTITLE | ADGF_DROPPLATFORM,
 			GUIO1(GUIO_NONE)
 		},
 		kPrinceDataDE
@@ -74,7 +74,7 @@ static const PrinceGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("databank.ptc", "48ec9806bda9d152acbea8ce31c93c49", 3435298),
 			Common::PL_POL,
 			Common::kPlatformWindows,
-			ADGF_USEEXTRAASTITLE,
+			ADGF_USEEXTRAASTITLE | ADGF_DROPPLATFORM,
 			GUIO1(GUIO_NONE)
 		},
 		kPrinceDataPL
@@ -86,7 +86,7 @@ static const PrinceGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("talktxt.dat", "02bb2372f19aca3c65896ed81b2cefb3", 125702),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			GF_EXTRACTED,
+			GF_EXTRACTED | ADGF_DROPPLATFORM,
 			GUIO1(GUIO_NONE)
 		},
 		kPrinceDataDE
@@ -98,7 +98,7 @@ static const PrinceGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("databank.ptc", "a67b55730f3d7064921bd2a59e1063a3", 3892982),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			GF_NOVOICES,
+			GF_NOVOICES | ADGF_DROPPLATFORM,
 			GUIO1(GUIO_NONE)
 		},
 		kPrinceDataDE
@@ -114,7 +114,7 @@ static const PrinceGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			GF_TRANSLATED,
+			GF_TRANSLATED | ADGF_DROPPLATFORM,
 			GUIO1(GUIO_NONE)
 		},
 		kPrinceDataDE
@@ -130,7 +130,7 @@ static const PrinceGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			GF_TRANSLATED,
+			GF_TRANSLATED | ADGF_DROPPLATFORM,
 			GUIO1(GUIO_NONE)
 		},
 		kPrinceDataPL


Commit: f3b5bc7ccfa3fc7320e1c3d88cee0c22defb16e6
    https://github.com/scummvm/scummvm/commit/f3b5bc7ccfa3fc7320e1c3d88cee0c22defb16e6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-03-10T16:30:49+01:00

Commit Message:
PRINCE: Convert flag lookup into hashmap. This is more stable

Changed paths:
    engines/prince/flags.cpp
    engines/prince/flags.h
    engines/prince/script.cpp
    engines/prince/script.h


diff --git a/engines/prince/flags.cpp b/engines/prince/flags.cpp
index 7877b276f5..5cef17dae6 100644
--- a/engines/prince/flags.cpp
+++ b/engines/prince/flags.cpp
@@ -21,32 +21,13 @@
  */
 
 #include "prince/flags.h"
-#include "prince/script.h"
 
 namespace Prince {
 
-const char *Flags::getFlagName(uint16 flagId) {
-	FlagDebug *flagd = nullptr;
-	flagd = (FlagDebug *)bsearch(&flagId, _flagNames, kFlagDebugAmount, sizeof(FlagDebug), Flags::compareFlagDebug);
-	if (flagd != nullptr) {
-		return flagd->flagName;
-	} else {
-		return "unknown_flag";
-	}
-}
-
-int Flags::compareFlagDebug(const void *a, const void *b) {
-	const uint32 *flagId = (const uint32 *)a;
-	const FlagDebug *entry = (const FlagDebug *)b;
-	if (*flagId < (uint32)entry->id) {
-		return -1;
-	} else if (*flagId > (uint32)entry->id) {
-		return 1;
-	}
-	return 0;
-}
-
-const Flags::FlagDebug Flags::_flagNames[Flags::kFlagDebugAmount] = {
+struct FlagDebug {
+	uint id;
+	char flagName[30];
+} static const flagNames[] = {
 	{ Flags::FLAGA1, "FLAGA1" },
 	{ Flags::FLAGA2, "FLAGA2" },
 	{ Flags::FLAGA3, "FLAGA3" },
@@ -417,4 +398,18 @@ const Flags::FlagDebug Flags::_flagNames[Flags::kFlagDebugAmount] = {
 	{ Flags::ESCAPED2, "ESCAPED2" },
 };
 
+
+Flags::Flags() {
+	for (uint i = 0; i < ARRAYSIZE(flagNames); i++) {
+		_flagMap[flagNames[i].id] = flagNames[i].flagName;
+	}
+}
+
+const char *Flags::getFlagName(uint16 flagId) {
+	if (_flagMap.contains(flagId))
+		return _flagMap[flagId];
+
+	return "unknown_flag";
+}
+
 } // End of namespace Prince
diff --git a/engines/prince/flags.h b/engines/prince/flags.h
index 23c0998db7..545eb330b0 100644
--- a/engines/prince/flags.h
+++ b/engines/prince/flags.h
@@ -24,13 +24,14 @@
 #define PRINCE_FLAGS_H
 
 #include "common/scummsys.h"
+#include "common/hashmap.h"
 
 namespace Prince {
 
 class Flags {
 public:
-	static int compareFlagDebug(const void *a, const void *b);
-	static const char *getFlagName(uint16 flagId);
+	Flags();
+	const char *getFlagName(uint16 flagId);
 
 	enum Id {
 		FLAGA1			=	0x8000,
@@ -407,13 +408,8 @@ public:
 		ESCAPED2	=	0x8470
 	};
 
-	struct FlagDebug {
-		Id id;
-		char flagName[30];
-	};
-
-	static const int kFlagDebugAmount = 368;
-	static const FlagDebug _flagNames[kFlagDebugAmount];
+private:
+	Common::HashMap<uint, const char *> _flagMap;
 };
 
 } // End of namespace Prince
diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp
index 80d6e85480..87e69131e1 100644
--- a/engines/prince/script.cpp
+++ b/engines/prince/script.cpp
@@ -876,14 +876,14 @@ void Interpreter::O__SETFLAG() {
 	Flags::Id flagId = readScriptFlagId();
 	int32 value = readScriptFlagValue();
 	_flags->setFlagValue((Flags::Id)(flagId), value);
-	debugInterpreter("O__SETFLAG 0x%04X (%s) = %d", flagId, Flags::getFlagName(flagId), value);
+	debugInterpreter("O__SETFLAG 0x%04X (%s) = %d", flagId, _flagMap.getFlagName(flagId), value);
 }
 
 void Interpreter::O_COMPARE() {
 	Flags::Id flagId = readScriptFlagId();
 	int32 value = readScriptFlagValue();
 	_result = _flags->getFlagValue(flagId) != value;
-	debugInterpreter("O_COMPARE flagId 0x%04X (%s), value %d == %d (%d)", flagId, Flags::getFlagName(flagId), value, _flags->getFlagValue(flagId), _result);
+	debugInterpreter("O_COMPARE flagId 0x%04X (%s), value %d == %d (%d)", flagId, _flagMap.getFlagName(flagId), value, _flags->getFlagValue(flagId), _result);
 }
 
 void Interpreter::O_JUMPZ() {
@@ -921,7 +921,7 @@ void Interpreter::O_ADDFLAG() {
 	} else {
 		_result = 0;
 	}
-	debugInterpreter("O_ADDFLAG flagId %04x (%s), value %d", flagId, Flags::getFlagName(flagId), value);
+	debugInterpreter("O_ADDFLAG flagId %04x (%s), value %d", flagId, _flagMap.getFlagName(flagId), value);
 }
 
 void Interpreter::O_TALKANIM() {
@@ -1188,7 +1188,7 @@ void Interpreter::O_COMPAREHI() {
 	} else {
 		_result = 1;
 	}
-	debugInterpreter("O_COMPAREHI flag %04x - (%s), value %d, flagValue %d, result %d", flag, Flags::getFlagName(flag), value, flagValue, _result);
+	debugInterpreter("O_COMPAREHI flag %04x - (%s), value %d, flagValue %d, result %d", flag, _flagMap.getFlagName(flag), value, flagValue, _result);
 }
 
 void Interpreter::O_COMPARELO() {
@@ -1200,7 +1200,7 @@ void Interpreter::O_COMPARELO() {
 	} else {
 		_result = 1;
 	}
-	debugInterpreter("O_COMPARELO flag %04x - (%s), value %d, flagValue %d, result %d", flag, Flags::getFlagName(flag), value, flagValue, _result);
+	debugInterpreter("O_COMPARELO flag %04x - (%s), value %d, flagValue %d, result %d", flag, _flagMap.getFlagName(flag), value, flagValue, _result);
 }
 
 // Not used in script
@@ -1301,7 +1301,7 @@ void Interpreter::O_GETHERODATA() {
 	if (hero != nullptr) {
 		_flags->setFlagValue(flagId, hero->getData((Hero::AttrId)heroOffset));
 	}
-	debugInterpreter("O_GETHERODATA flag %04x - (%s), heroId %d, heroOffset %d", flagId, Flags::getFlagName(flagId), heroId, heroOffset);
+	debugInterpreter("O_GETHERODATA flag %04x - (%s), heroId %d, heroOffset %d", flagId, _flagMap.getFlagName(flagId), heroId, heroOffset);
 }
 
 // No need of implementation here
@@ -1340,7 +1340,7 @@ void Interpreter::O_GETBACKANIMDATA() {
 	int currAnim = _vm->_backAnimList[animNumber]._seq._currRelative;
 	int16 value = _vm->_backAnimList[animNumber].backAnims[currAnim].getAnimData((Anim::AnimOffsets)(animDataOffset));
 	_flags->setFlagValue((Flags::Id)(flagId), value);
-	debugInterpreter("O_GETBACKANIMDATA flag %04X (%s), animNumber %d, animDataOffset %d, value %d", flagId, Flags::getFlagName(flagId), animNumber, animDataOffset, value);
+	debugInterpreter("O_GETBACKANIMDATA flag %04X (%s), animNumber %d, animDataOffset %d, value %d", flagId, _flagMap.getFlagName(flagId), animNumber, animDataOffset, value);
 }
 
 void Interpreter::O_GETANIMDATA() {
@@ -1350,7 +1350,7 @@ void Interpreter::O_GETANIMDATA() {
 	if (_vm->_normAnimList[anim]._animData != nullptr) {
 		_flags->setFlagValue(flagId, _vm->_normAnimList[anim].getAnimData((Anim::AnimOffsets)(animOffset)));
 	}
-	debugInterpreter("O_GETANIMDATA flag %04X (%s), anim %d, animOffset %d", flagId, Flags::getFlagName(flagId), anim, animOffset);
+	debugInterpreter("O_GETANIMDATA flag %04X (%s), anim %d, animOffset %d", flagId, _flagMap.getFlagName(flagId), anim, animOffset);
 }
 
 void Interpreter::O_SETBGCODE() {
@@ -1395,14 +1395,14 @@ void Interpreter::O_GETCHAR() {
 	Flags::Id flagId = readScriptFlagId();
 	_flags->setFlagValue(flagId, *_string);
 	_string++;
-	debugInterpreter("O_GETCHAR %04X (%s) %02x", flagId, Flags::getFlagName(flagId), _flags->getFlagValue(flagId));
+	debugInterpreter("O_GETCHAR %04X (%s) %02x", flagId, _flagMap.getFlagName(flagId), _flags->getFlagValue(flagId));
 }
 
 void Interpreter::O_SETDFLAG() {
 	Flags::Id flagId = readScriptFlagId();
 	int32 address = readScript32();
 	_flags->setFlagValue((Flags::Id)(flagId), _currentInstruction + address - 4);
-	debugInterpreter("O_SETDFLAG 0x%04X (%s) = 0x%04X", flagId, Flags::getFlagName(flagId), _currentInstruction + address - 4);
+	debugInterpreter("O_SETDFLAG 0x%04X (%s) = 0x%04X", flagId, _flagMap.getFlagName(flagId), _currentInstruction + address - 4);
 }
 
 void Interpreter::O_CALLDFLAG() {
@@ -1410,7 +1410,7 @@ void Interpreter::O_CALLDFLAG() {
 	_stack[_stacktop] = _currentInstruction;
 	_stacktop++;
 	_currentInstruction = _flags->getFlagValue(flagId);
-	debugInterpreter("O_CALLDFLAG 0x%04X (%s) = 0x%04X", flagId, Flags::getFlagName(flagId), _currentInstruction);
+	debugInterpreter("O_CALLDFLAG 0x%04X (%s) = 0x%04X", flagId, _flagMap.getFlagName(flagId), _currentInstruction);
 }
 
 void Interpreter::O_PRINTAT() {
@@ -1759,7 +1759,7 @@ void Interpreter::O_SETBACKANIMDATA() {
 	uint16 value = _flags->getFlagValue((Flags::Id)(flagId));
 	int currAnim = _vm->_backAnimList[animNumber]._seq._currRelative;
 	_vm->_backAnimList[animNumber].backAnims[currAnim].setAnimData((Anim::AnimOffsets)(animDataOffset), value);
-	debugInterpreter("O_SETBACKANIMDATA flag %04X (%s), animNumber %d, animDataOffset %d, value %d", flagId, Flags::getFlagName(flagId), animNumber, animDataOffset, value);
+	debugInterpreter("O_SETBACKANIMDATA flag %04X (%s), animNumber %d, animDataOffset %d, value %d", flagId, _flagMap.getFlagName(flagId), animNumber, animDataOffset, value);
 }
 
 void Interpreter::O_VIEWFLC() {
diff --git a/engines/prince/script.h b/engines/prince/script.h
index b8b8735ec1..5b118afc5b 100644
--- a/engines/prince/script.h
+++ b/engines/prince/script.h
@@ -229,6 +229,8 @@ private:
 	uint32 _currentString;
 	const char *_mode;
 
+	Flags _flagMap;
+
 	// Helper functions
 	uint32 step(uint32 opcodePC);
 	uint16 readScript16();




More information about the Scummvm-git-logs mailing list