[Scummvm-git-logs] scummvm master -> ce83118549b0166d83c3487a8708ad2e486c1db4
npjg
noreply at scummvm.org
Thu Jan 2 02:46:21 UTC 2025
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:
0f472a9b59 MEDIASTATION: Add detection for known titles (US English only).
ce83118549 MEDIASTATION: Find game files when they are in the data subdirectory.
Commit: 0f472a9b5983e471fc89e3ce4e28f250e732e735
https://github.com/scummvm/scummvm/commit/0f472a9b5983e471fc89e3ce4e28f250e732e735
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2025-01-01T21:45:57-05:00
Commit Message:
MEDIASTATION: Add detection for known titles (US English only).
There are lots of other localizations of these titles that are known, but all titles seem to have a US English localization.
Changed paths:
engines/mediastation/detection.cpp
engines/mediastation/detection_tables.h
diff --git a/engines/mediastation/detection.cpp b/engines/mediastation/detection.cpp
index a88cee1ce07..1be70089e13 100644
--- a/engines/mediastation/detection.cpp
+++ b/engines/mediastation/detection.cpp
@@ -43,8 +43,23 @@ const DebugChannelDef MediaStationMetaEngineDetection::debugFlagList[] = {
DEBUG_CHANNEL_END
};
+// Most Media Station titles follow this file structure from the root directory
+// of the CD-ROM:
+// - [TITLE].EXE (main game executable, name vares based on game)
+// - DATA/ (subdirectory that holds actual game data including bytecode)
+// - 100.CXT
+// - ... other CXTs, varies per title
+static const char *const directoryGlobs[] = {
+ "DATA", // For most titles
+ "program", // For D.W. the Picky Eater
+ "PZDATA", // For Puzzle Castle demo
+ nullptr
+};
+
MediaStationMetaEngineDetection::MediaStationMetaEngineDetection() : AdvancedMetaEngineDetection(
MediaStation::gameDescriptions, MediaStation::mediastationGames) {
+ _maxScanDepth = 3;
+ _directoryGlobs = directoryGlobs;
}
REGISTER_PLUGIN_STATIC(MEDIASTATION_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, MediaStationMetaEngineDetection);
diff --git a/engines/mediastation/detection_tables.h b/engines/mediastation/detection_tables.h
index 5224962d9ca..74f7cb69f27 100644
--- a/engines/mediastation/detection_tables.h
+++ b/engines/mediastation/detection_tables.h
@@ -22,12 +22,34 @@
namespace MediaStation {
const PlainGameDescriptor mediastationGames[] = {
- // Sample Title
- { "mediastation", "Media Station Game" },
-
// Commercially released games
+ { "georgeshrinks", "George Shrinks Interactive Storybook" },
+ { "mousecookie", "If You Give a Mouse a Cookie Interactive Storybook" },
+ { "lionking", "Disney's Animated Storybook: The Lion King" },
+ { "lambchop", "Lambchop Loves Music" },
+ { "frogprince", "Fractured Fairy Tales: The Frog Prince" },
+ { "honeytree", "Disney's Animated Storybook: Winnie the Pooh and the Honey Tree" },
+ { "notredame", "Disney's Animated Storybook: The Hunchback of Notre Dame" },
+ { "puzzlecastle", "Puzzle Castle" },
+ { "ibmcrayola", "IBM/Crayola Print Factory" },
+ { "ibmcrayolaholiday", "IBM/Crayola Print Factory Holiday Activity Pack" },
+ { "101dalmatians", "Disney's Animated Storybook: 101 Dalmatians" },
+ { "rupertsinteractiveadventures", "Rupert's Interactive Adventures" },
+ { "herculesasb", "Disney's Animated Storybook: Hercules" },
+ { "barbieasrapunzel", "Magic Fairy Tales: Barbie as Rapunzel" },
+ { "tonkasearchandrescue", "Tonka Search and Rescue" },
+ { "arielstorystudio", "Disney presents Ariel's Story Studio" },
+ { "tonkagarage", "Tonka Garage" },
+ { "dwpickyeater", "D.W. the Picky Eater" },
+ { "tonkaworkshop", "Tonka Workshop" },
+ { "tonkaraceway", "Tonka Raceway" },
+ { "stuartlittlebigcity", "Stuart Little: Big City Adventures"},
+
+ // Released demos
+ { "puzzlecastledemo", "Puzzle Castle Demo" }, // From Frog Prince CD-ROM
- // Internal betas/unreleased games
+ // For development purposes - detect any folder as a game
+ { "mediastation", "Media Station Game" },
{ 0, 0 }
};
@@ -43,6 +65,283 @@ const ADGameDescription gameDescriptions[] = {
GUIO1(GUIO_NOASPECT)
},
+ // Commercially released games
+ {
+ "georgeshrinks",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "5b7c08398fe6ae016db9d94ad9240241", 6744,
+ "103.CXT", "e7d563ff79f1b1416e5f1e0c803f78ec", 1474802
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "mousecookie",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "11d11b2067519d8368175cc8e8caa94f", 59454,
+ "100.CXT", "cac48b9bb5f327d035a831cd15f1688c", 1762032
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "lionking",
+ "2.0GB",
+ AD_ENTRY2s(
+ "BOOT.STM", "c90200e52bcaad52524520d461caef2b", 29884,
+ "100.CXT", "ce40843604b8c52701694cd543072a88", 3253600
+ ),
+ Common::EN_GRB,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "lambchop",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "c90200e52bcaad52524520d461caef2b", 29884,
+ "100.CXT", "ce40843604b8c52701694cd543072a88", 3253600
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "frogprince",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "1c6d14c87790d009702be8ba4e4e5906", 13652,
+ "100.CXT", "a5ec9a32c3741a20b82e1793e76234b2", 1630762
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "honeytree",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "694bcc9887f159137f3a0d937cfbbb08", 53904,
+ "100.CXT", "fde1e528d69fbd060dfc2691320bc05b", 1971658
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "notredame",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "7949e1253a62531e53963a2fffe57211", 55300,
+ "100.CXT", "54c11a94888a1b747e1c8935b7315889", 4766278
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "puzzlecastle",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "7b0faf38da2d76df40b4085eed6f4fc8", 22080,
+ "100.CXT", "ebc4b6247b742733c81456dfd299aa55", 3346944
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "puzzlecastledemo",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "b7ce005e0d67021f792ebb73e7fbe34c", 5960,
+ "100.CXT", "cc64a6fcb3af2736d622658cff3ef2b5", 1262
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "ibmcrayola",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "359542015c6665c70252cf21a8467cdb", 11044,
+ "100.CXT", "42bffe4165640dd1e64a6e8565f48af3", 5125226
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "ibmcrayolaholiday",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "50f30298bf700f357d98c4390f75cb7a", 10932,
+ "100.CXT", "8110f70f1d01d0f42cac9b1bb6d2de12", 4967390
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "101dalmatians",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "50f30298bf700f357d98c4390f75cb7a", 10932,
+ "100.CXT", "8110f70f1d01d0f42cac9b1bb6d2de12", 4967390
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "rupertsinteractiveadventures",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "051ff838587d43edc9836dc3a9888c16", 13112,
+ "100.CXT", "65326647eedc2ad9a8c0ccef274b3389", 5180650
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "herculesasb",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "afc773416e46e30873f743e234794957", 26924,
+ "100.CXT", "56875e1640320909e9697f11b5a8c9a6", 4895998
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "barbieasrapunzel",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "eef6bdf54d2ae25af0ec29361fd4c126", 17530,
+ "100.CXT", "f0bcc27b61bfb33328db2dd537b2b6e3", 1688902
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "tonkasearchandrescue",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "eef6bdf54d2ae25af0ec29361fd4c126", 17530,
+ "100.CXT", "f0bcc27b61bfb33328db2dd537b2b6e3", 1688902
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "arielstorystudio",
+ "1.0",
+ AD_ENTRY2s(
+ "BOOT.STM", "297670b908f887ed6c97b364406575d0", 65480,
+ "100.CXT", "c12c5b784ad931eca293a9816c11043b", 6532022
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "arielstorystudio",
+ "1.1",
+ AD_ENTRY2s(
+ "BOOT.STM", "7d53a551efde620fe5b332d7b1f009ab", 65450,
+ "100.CXT", "993252bca0aa6791ca3da30b1ae6f5f8", 6532022
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "tonkagarage",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "fc8863bb302e94d3b778b3a97556601b", 25208,
+ "100.CXT", "13683c2a06275920181d9dda5b2b69e7", 2691398
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "dwpickyeater",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "80cc94e3e894ee8c5a22a9c07a33d891", 26402,
+ "100.CXT", "e65e359ab25d7a639cf369a01b9a21c0", 2163750
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "tonkaworkshop",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "15e6d32925f557f3196fd0bb79b25375", 38190,
+ "100.CXT", "1cb35998f2e044eee59a96120b3bda6c", 2691398
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "tonkaraceway",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "da512cb9bcd18465294e544ed790881c", 12272,
+ "100.CXT", "30802327b29fbfa722a707c3d3b0f8f8", 2691398
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+ {
+ "stuartlittlebigcity",
+ nullptr,
+ AD_ENTRY2s(
+ "BOOT.STM", "992787bf30104a4b7aa2ead64dda21ff", 10974,
+ "100.CXT", "21f44a1d1de6abf8bd67341c155dfead", 2691398
+ ),
+ Common::EN_USA,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
AD_TABLE_END_MARKER
};
Commit: ce83118549b0166d83c3487a8708ad2e486c1db4
https://github.com/scummvm/scummvm/commit/ce83118549b0166d83c3487a8708ad2e486c1db4
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2025-01-01T21:45:57-05:00
Commit Message:
MEDIASTATION: Find game files when they are in the data subdirectory.
Without this, the new detection tables cannot find any files when the root game directory is passed in, which is necessary in future to get the game executable too for cursor extraction.
Changed paths:
engines/mediastation/detection.cpp
engines/mediastation/mediastation.cpp
engines/mediastation/mediastation.h
diff --git a/engines/mediastation/detection.cpp b/engines/mediastation/detection.cpp
index 1be70089e13..b456cf893b0 100644
--- a/engines/mediastation/detection.cpp
+++ b/engines/mediastation/detection.cpp
@@ -43,23 +43,10 @@ const DebugChannelDef MediaStationMetaEngineDetection::debugFlagList[] = {
DEBUG_CHANNEL_END
};
-// Most Media Station titles follow this file structure from the root directory
-// of the CD-ROM:
-// - [TITLE].EXE (main game executable, name vares based on game)
-// - DATA/ (subdirectory that holds actual game data including bytecode)
-// - 100.CXT
-// - ... other CXTs, varies per title
-static const char *const directoryGlobs[] = {
- "DATA", // For most titles
- "program", // For D.W. the Picky Eater
- "PZDATA", // For Puzzle Castle demo
- nullptr
-};
-
MediaStationMetaEngineDetection::MediaStationMetaEngineDetection() : AdvancedMetaEngineDetection(
MediaStation::gameDescriptions, MediaStation::mediastationGames) {
_maxScanDepth = 3;
- _directoryGlobs = directoryGlobs;
+ _directoryGlobs = MediaStation::directoryGlobs;
}
REGISTER_PLUGIN_STATIC(MEDIASTATION_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, MediaStationMetaEngineDetection);
diff --git a/engines/mediastation/mediastation.cpp b/engines/mediastation/mediastation.cpp
index 5ebd389dfa1..e7ad7685b18 100644
--- a/engines/mediastation/mediastation.cpp
+++ b/engines/mediastation/mediastation.cpp
@@ -45,6 +45,13 @@ MediaStationEngine::MediaStationEngine(OSystem *syst, const ADGameDescription *g
_randomSource("MediaStation") {
g_engine = this;
_mixer = g_system->getMixer();
+
+ _gameDataDir = Common::FSNode(ConfMan.getPath("path"));
+ SearchMan.addDirectory(_gameDataDir, 0, 3);
+ for (uint i = 0; MediaStation::directoryGlobs[i]; i++) {
+ Common::String directoryGlob = directoryGlobs[i];
+ SearchMan.addSubDirectoryMatching(_gameDataDir, directoryGlob, 0, 5);
+ }
}
MediaStationEngine::~MediaStationEngine() {
diff --git a/engines/mediastation/mediastation.h b/engines/mediastation/mediastation.h
index b1f951db88b..f446f6c0104 100644
--- a/engines/mediastation/mediastation.h
+++ b/engines/mediastation/mediastation.h
@@ -46,6 +46,19 @@ namespace MediaStation {
struct MediaStationGameDescription;
+// Most Media Station titles follow this file structure from the root directory
+// of the CD-ROM:
+// - [TITLE].EXE (main game executable, name vares based on game)
+// - DATA/ (subdirectory that holds actual game data including bytecode)
+// - 100.CXT
+// - ... other CXTs, varies per title
+static const char *const directoryGlobs[] = {
+ "DATA", // For most titles
+ "program", // For D.W. the Picky Eater
+ "PZDATA", // For Puzzle Castle demo
+ nullptr
+};
+
class MediaStationEngine : public Engine {
public:
MediaStationEngine(OSystem *syst, const ADGameDescription *gameDesc);
@@ -79,6 +92,7 @@ protected:
private:
Common::Event e;
+ Common::FSNode _gameDataDir;
const ADGameDescription *_gameDescription;
Common::RandomSource _randomSource;
Boot *_boot = nullptr;
More information about the Scummvm-git-logs
mailing list