aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute
diff options
context:
space:
mode:
authorPawel Kolodziejski2014-07-22 21:22:45 +0200
committerPawel Kolodziejski2014-07-22 21:22:45 +0200
commit78258151ea16202ca6fd2587565d477657972a96 (patch)
tree4b4d8da731666ce30f6623bc0417330745c6fc2d /engines/wintermute
parent04ed4d3a8df92e6ee7b7d55051117add2f16903d (diff)
downloadscummvm-rg350-78258151ea16202ca6fd2587565d477657972a96.tar.gz
scummvm-rg350-78258151ea16202ca6fd2587565d477657972a96.tar.bz2
scummvm-rg350-78258151ea16202ca6fd2587565d477657972a96.zip
WME: added few more games. added ability to detect from exe files.
Diffstat (limited to 'engines/wintermute')
-rw-r--r--engines/wintermute/base/base_file_manager.cpp9
-rw-r--r--engines/wintermute/base/base_file_manager.h1
-rw-r--r--engines/wintermute/detection_tables.h111
3 files changed, 114 insertions, 7 deletions
diff --git a/engines/wintermute/base/base_file_manager.cpp b/engines/wintermute/base/base_file_manager.cpp
index 1f78303f52..58684b66a0 100644
--- a/engines/wintermute/base/base_file_manager.cpp
+++ b/engines/wintermute/base/base_file_manager.cpp
@@ -209,10 +209,15 @@ bool BaseFileManager::registerPackages() {
// than the equivalent of using equalsIgnoreCase.
Common::String fileName = fileIt->getName();
fileName.toLowercase();
+ bool searchSignature = false;
- if (!fileName.hasSuffix(".dcp")) {
+ if (!fileName.hasSuffix(".dcp") && !fileName.hasSuffix(".exe")) {
continue;
}
+ if (fileName.hasSuffix(".exe")) {
+ searchSignature = true;
+ }
+
// HACK: for Reversion1, avoid loading xlanguage_pt.dcp from the main folder:
if (_language != Common::PT_BRA && targetName.hasPrefix("reversion1")) {
if (fileName == "xlanguage_pt.dcp") {
@@ -263,7 +268,7 @@ bool BaseFileManager::registerPackages() {
}
}
debugC(kWintermuteDebugFileAccess, "Registering %s %s", fileIt->getPath().c_str(), fileIt->getName().c_str());
- registerPackage((*fileIt));
+ registerPackage((*fileIt), "", searchSignature);
}
}
diff --git a/engines/wintermute/base/base_file_manager.h b/engines/wintermute/base/base_file_manager.h
index 653721c8f5..d953e44704 100644
--- a/engines/wintermute/base/base_file_manager.h
+++ b/engines/wintermute/base/base_file_manager.h
@@ -63,7 +63,6 @@ private:
Common::SeekableReadStream *openFileRaw(const Common::String &filename);
Common::SeekableReadStream *openPkgFile(const Common::String &filename);
Common::FSList _packagePaths;
- bool findPackageSignature(Common::SeekableReadStream *f, uint32 *offset);
bool registerPackage(Common::FSNode package, const Common::String &filename = "", bool searchSignature = false);
bool _detectionMode;
Common::SearchSet _packages;
diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index 6087e60ece..8206ca9643 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -39,41 +39,50 @@ static const PlainGameDescriptor wintermuteGames[] = {
{"carolreed8", "Carol Reed 8 - Amber's Blood"},
{"carolreed9", "Carol Reed 9 - Cold Case Summer"},
{"chivalry", "Chivalry is Not Dead"},
- {"corrosion", "Corrosion: Cold Winter Waiting"},
+ {"conspiracao", "Conspiracao Dumont"},
+ {"corrosion", "Corrosion: Cold Winter Waiting"},
{"deadcity", "Dead City"},
{"dreaming", "Des Reves Elastiques Avec Mille Insectes Nommes Georges"},
{"dirtysplit", "Dirty Split"},
{"dreamscape", "Dreamscape"},
{"escapemansion", "Escape from the Mansion"},
+ {"four", "Four"},
{"framed", "Framed"},
{"ghostsheet", "Ghost in the Sheet"},
{"hamlet", "Hamlet or the last game without MMORPS features, shaders and product placement"},
{"helga", "Helga Deep In Trouble"},
{"jamesperis", "James Peris: No License Nor Control"},
{"kulivocko", "Kulivocko"},
+ {"lifein3minutes", "Life In 3 Minutes"},
{"lonelyrobot", "Project Lonely Robot"},
{"looky", "Looky"},
{"julia", "J.U.L.I.A."},
{"mirage", "Mirage"},
+ {"nighttrain", "Night Train"},
{"oknytt", "Oknytt"},
{"paintaria", "Paintaria"},
{"pigeons", "Pigeons in the Park"},
{"projectdoom", "Project: Doom"},
+ {"projectjoe", "Project Joe"},
{"reversion1", "Reversion: The Escape"},
{"reversion2", "Reversion: The Meeting"},
- {"rhiannon", "Rhiannon: Curse of the four Branches"},
- {"ritter", "1 1/2 Ritter: Auf der Suche nach der hinreissenden Herzelinde"},
+ {"rhiannon", "Rhiannon: Curse of the four Branches"},
+ {"ritter", "1 1/2 Ritter: Auf der Suche nach der hinreissenden Herzelinde"},
{"rosemary", "Rosemary"},
+ {"satanandson", "Satan and Son"},
{"securanote", "Securanote"},
{"shaban", "Shaban"},
{"shinestar", "The Shine of a Star"},
{"spaceinvaders", "Space Invaders"},
{"spacemadness", "Space Madness"},
+ {"sofiasdebt", "Sofia's Debt"},
+ {"theancientmark1", "The Ancient Mark - Episode 1"},
{"thebox", "The Box"},
- {"thekite", "The Kite"},
+ {"thekite", "The Kite"},
{"tib", "Fairy Tales About Toshechka and Boshechka"},
{"tradestory", "The Trader of Stories"},
{"twc", "the white chamber"},
+ {"war", "War"},
{"vsevolod", "Vsevolod"},
{"wintermute", "Wintermute engine game"},
{"wtetris", "Wilma Tetris"},
@@ -275,6 +284,17 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_TESTING,
GUIO0()
},
+ // Conspiracao Dumont
+ {
+ "conspiracao",
+ "",
+ AD_ENTRY1s("ConspiracaoDumont.exe", "106f3f2c8f18bb5ffffeed634ace256c", 32908032),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE |
+ ADGF_DEMO,
+ GUIO0()
+ },
// Corrosion: Cold Winter Waiting
{
"corrosion",
@@ -466,6 +486,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Four
+ {
+ "four",
+ "",
+ AD_ENTRY1s("data.dcp", "ec05cd5e37c9a524053b8859635a4234", 62599855),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// Framed
{
"framed",
@@ -645,6 +675,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_DEMO,
GUIO0()
},
+ // Life In 3 Minutes
+ {
+ "lifein3minutes",
+ "",
+ AD_ENTRY1s("data.dcp", "c6368950e37a95bf098b02b4eaa5b929", 141787214),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// Looky Demo (English)
{
"looky",
@@ -709,6 +749,17 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Night Train Demo
+ {
+ "nighttrain",
+ "",
+ AD_ENTRY1s("data.dcp", "5a027ef84b083a730c9a4c85ec1d3a32", 131760816),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE |
+ ADGF_DEMO,
+ GUIO0()
+ },
// Paintaria
{
"paintaria",
@@ -739,6 +790,17 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Project Joe
+ {
+ "projectjoe",
+ "",
+ AD_ENTRY1s("data.dcp", "ada3c08542901295076b5349e655e73f", 160780037),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE |
+ ADGF_DEMO,
+ GUIO0()
+ },
// Project Lonely Robot
{
"lonelyrobot",
@@ -1138,6 +1200,17 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Satan and Son
+ {
+ "satanandson",
+ "",
+ AD_ENTRY1s("data.dcp", "16a6ba8174b697bbba9299619d1e20c4", 67539054),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE |
+ ADGF_DEMO,
+ GUIO0()
+ },
// Rosemary
{
"rosemary",
@@ -1178,6 +1251,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // Sofia's Debt
+ {
+ "sofiasdebt",
+ "",
+ AD_ENTRY1s("SD.exe", "e9515f9ba1a2925bb6733476a826a650", 9915047),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// Space Invaders (Demo)
{
"spaceinvaders",
@@ -1199,6 +1282,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO0()
},
+ // The Ancient Mark - Episode 1
+ {
+ "theancientmark1",
+ "",
+ AD_ENTRY1s("data.dcp", "ca04c26f03b2bd307368b306b297ddd7", 364664692),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// The Box
{
"thebox",
@@ -1301,6 +1394,16 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_DEMO,
GUIO0()
},
+ // War
+ {
+ "war",
+ "",
+ AD_ENTRY1s("data.dcp", "003e317cda6d0137bbd5e5d7f089ee4d", 32591890),
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ ADGF_UNSTABLE,
+ GUIO0()
+ },
// Wilma Tetris
{
"wtetris",