[Scummvm-git-logs] scummvm master -> 32499a7c0bd8901530274832d35c5844af19c232

elasota noreply at scummvm.org
Thu Dec 22 23:58:51 UTC 2022


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:
32499a7c0b MTROPOLIS: Add detection entries for the German versions of the "Uncle Albert" series


Commit: 32499a7c0bd8901530274832d35c5844af19c232
    https://github.com/scummvm/scummvm/commit/32499a7c0bd8901530274832d35c5844af19c232
Author: Lothar Serra Mari (mail at serra.me)
Date: 2022-12-22T18:58:47-05:00

Commit Message:
MTROPOLIS: Add detection entries for the German versions of the "Uncle Albert" series

Changed paths:
    engines/mtropolis/boot.cpp
    engines/mtropolis/detection.cpp
    engines/mtropolis/detection.h
    engines/mtropolis/detection_tables.h


diff --git a/engines/mtropolis/boot.cpp b/engines/mtropolis/boot.cpp
index 49df74ed964..4fffb255801 100644
--- a/engines/mtropolis/boot.cpp
+++ b/engines/mtropolis/boot.cpp
@@ -398,6 +398,22 @@ void MTIGameDataHandler::addPlugIns(ProjectDescription &projectDesc, const Commo
 	projectDesc.addPlugIn(standardPlugIn);
 }
 
+class AlbertGameDataHandler : public GameDataHandler {
+public:
+	AlbertGameDataHandler(const Game &game, const MTropolisGameDescription &gameDesc);
+
+	void addPlugIns(ProjectDescription &projectDesc, const Common::Array<FileIdentification> &files) override;
+};
+
+AlbertGameDataHandler::AlbertGameDataHandler(const Game &game, const MTropolisGameDescription &gameDesc) : GameDataHandler(game, gameDesc) {
+}
+
+void AlbertGameDataHandler::addPlugIns(ProjectDescription &projectDesc, const Common::Array<FileIdentification> &files) {
+	Common::SharedPtr<MTropolis::PlugIn> standardPlugIn = PlugIns::createStandard();
+	static_cast<Standard::StandardPlugIn *>(standardPlugIn.get())->getHacks().allowGarbledListModData = true;
+	projectDesc.addPlugIn(standardPlugIn);
+}
+
 class SPQRGameDataHandler : public GameDataHandler {
 public:
 	SPQRGameDataHandler(const Game &game, const MTropolisGameDescription &gameDesc);
@@ -611,7 +627,7 @@ static bool loadCursorsWin(FileIdentification &f, CursorGraphicCollection &curso
 
 	Common::SharedPtr<Common::WinResources> winRes(Common::WinResources::createFromEXE(stream.get()));
 	if (!winRes) {
-		warning("Couldn't load resources from PE file");
+		warning("Couldn't load resources from PE file '%s'", f.fileName.c_str());
 		return false;
 	}
 
@@ -832,6 +848,63 @@ const char *mtiRetailWinDirectories[] = {
 	nullptr
 };
 
+const ManifestFile albert1RetailWinDeFiles[] = {
+	{"Albert.exe",   MTFT_PLAYER},
+	{"album411.MPL", MTFT_MAIN},
+	{"album412.MPX", MTFT_ADDITIONAL},
+	{"BASIC.X95",    MTFT_SPECIAL},
+	{"BITMAP.R95",   MTFT_SPECIAL},
+	{"EXTRAS.R95",   MTFT_SPECIAL},
+	{"ROTATORK.R95", MTFT_SPECIAL},
+	{nullptr, MTFT_AUTO},
+};
+
+const char *albert1RetailWinDeDirectories[] = {
+	"ALBERT",
+	"ALBERT/DATA",
+	"ALBERT/DATA/RESOURCE",
+	"DATA",
+	"DATA/RESOURCE",
+	nullptr
+};
+
+const ManifestFile albert2RetailWinDeFiles[] = {
+	{"reise.exe",    MTFT_PLAYER},
+	{"voyage1.mpl",  MTFT_MAIN},
+	{"voyage2.mpx",  MTFT_ADDITIONAL},
+	{"BASIC.X95",    MTFT_SPECIAL},
+	{"BITMAP.R95",   MTFT_SPECIAL},
+	{"EXTRAS.R95",   MTFT_SPECIAL},
+	{"ROTATORK.R95", MTFT_SPECIAL},
+	{nullptr, MTFT_AUTO},
+};
+
+const char *albert2RetailWinDeDirectories[] = {
+	"REISE",
+	"REISE/DATA",
+	"REISE/DATA/RESOURCE",
+	"DATA",
+	"DATA/RESOURCE",
+	nullptr
+};
+
+const ManifestFile albert3RetailWinDeFiles[] = {
+	{"insel.exe",     MTFT_PLAYER},
+	{"ile_myst1.mpl", MTFT_MAIN},
+	{"ILEMYST2.MPX",  MTFT_ADDITIONAL},
+	{"BASIC.X95",     MTFT_SPECIAL},
+	{"BITMAP.R95",    MTFT_SPECIAL},
+	{"EXTRAS.R95",    MTFT_SPECIAL},
+	{"ROTATORK.R95",  MTFT_SPECIAL},
+	{nullptr, MTFT_AUTO},
+};
+
+const char *albert3RetailWinDeDirectories[] = {
+	"DATA",
+	"DATA/RESOURCE",
+	nullptr
+};
+
 const ManifestFile spqrRetailWinEnFiles[] = {
 	{"SPQR32.EXE", MTFT_PLAYER},
 	{"MCURSORS.C95", MTFT_EXTENSION},
@@ -975,6 +1048,30 @@ const Game games[] = {
 		nullptr,
 		GameDataHandlerFactory<MTIGameDataHandler>::create
 	},
+	// Uncle Albert's Magical Album - German - Windows
+	{
+		MTBOOT_ALBERT1_WIN_DE,
+		albert1RetailWinDeFiles,
+		albert1RetailWinDeDirectories,
+		nullptr,
+		GameDataHandlerFactory<AlbertGameDataHandler>::create
+	},
+	// Uncle Albert's Fabulous Voyage - German - Windows
+	{
+		MTBOOT_ALBERT2_WIN_DE,
+		albert2RetailWinDeFiles,
+		albert2RetailWinDeDirectories,
+		nullptr,
+		GameDataHandlerFactory<AlbertGameDataHandler>::create
+	},
+	// Uncle Albert's Mysterious Island - German - Windows
+	{
+		MTBOOT_ALBERT3_WIN_DE,
+		albert3RetailWinDeFiles,
+		albert3RetailWinDeDirectories,
+		nullptr,
+		GameDataHandlerFactory<AlbertGameDataHandler>::create
+	},
 	// SPQR: The Empire's Darkest Hour - Retail - Windows - English
 	{
 		MTBOOT_SPQR_RETAIL_WIN,
diff --git a/engines/mtropolis/detection.cpp b/engines/mtropolis/detection.cpp
index 97ba2c228b7..c963ce5714d 100644
--- a/engines/mtropolis/detection.cpp
+++ b/engines/mtropolis/detection.cpp
@@ -29,6 +29,9 @@
 static const PlainGameDescriptor mTropolisGames[] = {
 	{"obsidian", "Obsidian"},
 	{"mti", "Muppet Treasure Island"},
+	{"albert1", "Uncle Albert's Magical Album"},
+	{"albert2", "Uncle Albert's Fabulous Voyage"},
+	{"albert3", "Uncle Albert's Mysterious Island"},
 	{"spqr", "SPQR: The Empire's Darkest Hour"},
 	{"sttgs", "Star Trek: The Game Show"},
 	{nullptr, nullptr}
@@ -41,6 +44,8 @@ static const char *directoryGlobs[] = {
 	"RESOURCE",
 	"Saved Games",
 	"MTPLAY32",
+	"Albert",
+	"DATA",
 	"GAME",
 	nullptr
 };
diff --git a/engines/mtropolis/detection.h b/engines/mtropolis/detection.h
index bd76e72d986..18df731a9b6 100644
--- a/engines/mtropolis/detection.h
+++ b/engines/mtropolis/detection.h
@@ -29,9 +29,12 @@ namespace MTropolis {
 enum MTropolisGameID {
 	GID_OBSIDIAN			= 0,
 	GID_LEARNING_MTROPOLIS	= 1,
-	GID_MTI					= 2,
-	GID_SPQR				= 3,
-	GID_STTGS				= 4,
+	GID_MTI    				= 2,
+	GID_ALBERT1				= 3,
+	GID_ALBERT2				= 4,
+	GID_ALBERT3				= 5,
+	GID_SPQR				= 6,
+	GID_STTGS				= 7,
 };
 
 // Boot IDs - These can be shared across different variants if the file list and other properties are identical.
@@ -56,6 +59,9 @@ enum MTropolisGameBootID {
 	MTBOOT_MTI_RETAIL_WIN,
 	MTBOOT_MTI_DEMO_WIN,
 
+	MTBOOT_ALBERT1_WIN_DE,
+	MTBOOT_ALBERT2_WIN_DE,
+	MTBOOT_ALBERT3_WIN_DE,
 	MTBOOT_SPQR_RETAIL_WIN,
 	MTBOOT_SPQR_RETAIL_MAC,
 
diff --git a/engines/mtropolis/detection_tables.h b/engines/mtropolis/detection_tables.h
index 1278395ba53..b02be8254b9 100644
--- a/engines/mtropolis/detection_tables.h
+++ b/engines/mtropolis/detection_tables.h
@@ -441,6 +441,87 @@ static const MTropolisGameDescription gameDescriptions[] = {
 		0,
 		MTBOOT_MTI_DEMO_WIN,
 	},
+	
+	{ // Uncle Albert's Magical Album (German, Windows)
+	  // Original title: Onkel Alberts geheimnisvolles Notizbuch
+	  // Published by Tivola, 1998
+		{
+			"albert1",
+			"",
+			{
+				{ "Albert.exe",   0, "0e513dac9d2a0d7cfcdc670cab2a9bda", 757760 },
+				{ "album411.MPL", 0, "08a742f5087d25e8ee45c2fcd57ad9a6", 17979781 },
+				{ "album412.MPX", 0, "79fabc94dafd0e0f3ab93c138c4c8c82", 298762355 },
+				// { "BASIC.X95",    0, "a1b474e90cc285bfdcfa87355f890b9e", 242688 },
+				// { "BITMAP.R95",   0, "2bf7305eca9df63dbc75f55093b84cc0", 81408 },
+				// { "CURSORS.C95",  0, "c1e2eebe7183b5ea33de7872a8ea4d2b", 87040 },
+				// { "EXTRAS.R95",   0, "c5830771609c774de9dbeaa5dff69b3e", 185344 },
+				// { "ROTATORK.R95", 0, "c271f786f028c0076635bea49a2be890", 66560 },
+				AD_LISTEND
+			},
+			Common::DE_DEU,
+			Common::kPlatformWindows,
+			ADGF_UNSTABLE,
+			GUIO0()
+		},
+		GID_ALBERT1,
+		0,
+		MTBOOT_ALBERT1_WIN_DE,
+	},
+
+	{ // Uncle Albert's Fabulous Voyage (German, Windows)
+	  // Original title: Alberts abenteuerliche Reise
+	  // Published by Tivola, 2000
+		{
+			"albert2",
+			"",
+			{
+				{ "reise.exe",    0, "0e513dac9d2a0d7cfcdc670cab2a9bda", 757760 },
+				{ "voyage1.MPL",  0, "fe202ad897cb6cf5303f2f046e8123d5", 26122297 },
+				{ "voyage2.MPX",  0, "6554893511e08bf2e0d5770b7854589f", 261888657 },
+				// { "BASIC.X95",    0, "a1b474e90cc285bfdcfa87355f890b9e", 242688 },
+				// { "BITMAP.R95",   0, "2bf7305eca9df63dbc75f55093b84cc0", 81408 },
+				// { "CURSORS.C95",  0, "c1e2eebe7183b5ea33de7872a8ea4d2b", 87040 },
+				// { "EXTRAS.R95",   0, "c5830771609c774de9dbeaa5dff69b3e", 185344 },
+				// { "ROTATORK.R95", 0, "c271f786f028c0076635bea49a2be890", 66560 },
+				AD_LISTEND
+			},
+			Common::DE_DEU,
+			Common::kPlatformWindows,
+			ADGF_UNSTABLE,
+			GUIO0()
+		},
+		GID_ALBERT2,
+		0,
+		MTBOOT_ALBERT2_WIN_DE,
+	},
+
+	{ // Uncle Albert's Mysterious Island (German, Windows)
+	  // Original title: Alberts mysteriöse Insel
+	  // Published by Tivola, 2001
+		{
+			"albert3",
+			"",
+			{
+				{ "insel.exe",      0, "0e513dac9d2a0d7cfcdc670cab2a9bda", 757760 },
+				{ "ile_myst1.MPL",  0, "44ac2e944a61303f4028408165bafeb4", 24080377 },
+				{ "ILEMYST2.MPX",   0, "ecb1d2c8b99eb5b2ac6be55893b97f50", 283748531 },
+				// { "BASIC.X95",     0, "a1b474e90cc285bfdcfa87355f890b9e", 242688 },
+				// { "BITMAP.R95",    0, "2bf7305eca9df63dbc75f55093b84cc0", 81408 },
+				// { "CURSORS.C95",   0, "c1e2eebe7183b5ea33de7872a8ea4d2b", 87040 },
+				// { "EXTRAS.R95",    0, "c5830771609c774de9dbeaa5dff69b3e", 185344 },
+				// { "ROTATORK.R95",  0, "c271f786f028c0076635bea49a2be890", 66560 },
+				AD_LISTEND
+			},
+			Common::DE_DEU,
+			Common::kPlatformWindows,
+			ADGF_UNSTABLE,
+			GUIO0()
+		},
+		GID_ALBERT3,
+		0,
+		MTBOOT_ALBERT3_WIN_DE,
+	},
 
 	{ // SPQR: The Empire's Darkest Hour Windows CD-ROM
 		{




More information about the Scummvm-git-logs mailing list