scummvm/engines/hypno/detection.cpp
2023-02-28 17:43:26 +01:00

303 lines
8.8 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "base/plugins.h"
#include "engines/advancedDetector.h"
#include "hypno/hypno.h"
#include "hypno/detection.h"
static const DebugChannelDef debugFlagList[] = {
{Hypno::kHypnoDebugMedia, "media", "Media debug channel"},
{Hypno::kHypnoDebugParser, "parser", "Parser debug channel"},
{Hypno::kHypnoDebugScene, "scene", "Scene debug channel"},
{Hypno::kHypnoDebugArcade, "arcade", "Arcade debug channel"},
DEBUG_CHANNEL_END};
namespace Hypno {
static const PlainGameDescriptor hypnoGames[] = {
{"sinistersix", "Marvel Comics Spider-Man: The Sinister Six"},
{"wetlands", "Wetlands"},
{"soldierboyz", "Soldier Boyz"},
{"teacher", "Bruce Coville's My Teacher Is an Alien"},
{nullptr, nullptr}};
static const ADGameDescription gameDescriptions[] = {
{
"sinistersix", // Demo from the US release
"Demo",
AD_ENTRY2s("DATA.Z", "2a9c7cf8920ec794482f0a5873102da5", 1285960,
"DCINE1.SMK", "1ff3db09d148e8dd8b56d2e87e7296b8", 493752),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"sinistersix", // US release
nullptr,
AD_ENTRY2s("DATA.Z", "a1f71005a45e6ee454bb0bf3868dff54", 8766307,
"MISSIONS.LIB", "585704e26094cbaf14fbee90798e8d5d", 119945),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"sinistersix", // ES release
nullptr,
AD_ENTRY2s("SPIDER.EXE", "dbd912d6f6724c6d44775fc19cfa8ca0", 483871,
"MISSIONS.LIB", "585704e26094cbaf14fbee90798e8d5d", 119945),
Common::ES_ESP,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"sinistersix", // DE release
nullptr,
AD_ENTRY2s("Setup1.Sax", "86b6ae45f45a8273ef3116be6bac01f5", 9591164,
"MISSIONS.LIB", "585704e26094cbaf14fbee90798e8d5d", 119945),
Common::DE_DEU,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"sinistersix", // IT release
nullptr,
AD_ENTRY2s("DATA.Z", "8e1aa1ab39e38c4f1bf67c0b330b3991", 8740866,
"MISSIONS.LIB", "585704e26094cbaf14fbee90798e8d5d", 119945),
Common::IT_ITA,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"sinistersix", // HE release
nullptr,
AD_ENTRY2s("SPIDER.EXE", "dbd912d6f6724c6d44775fc19cfa8ca0", 483359,
"MISSIONS.LIB", "585704e26094cbaf14fbee90798e8d5d", 119945),
Common::HE_ISR,
Common::kPlatformDOS,
ADGF_UNSTABLE,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Wetlands Demo Disc (November 1995)
"Demo",
AD_ENTRY3s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 642231,
"wetdemo.exe", "15a6b1b3819ef002438df340509b5373", 458319,
"demo.exe", "15a6b1b3819ef002438df340509b5373", 533221),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Wetlands Demo from a Hebrew magazine
"DemoHebrew",
AD_ENTRY3s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 629503,
"wetdemo.exe", "15a6b1b3819ef002438df340509b5373", 458319,
"demo.exe", "15a6b1b3819ef002438df340509b5373", 533221),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Personal Computer World (UK) (May 1996) - Chapter 11 demo
"PCWDemo",
AD_ENTRY2s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 553355,
"missions.lib", "6ffa658f22a00b6e17d7f920fcc13578", 12469),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // PC Gamer Disc 12 (November 1995) - Chapter 31 demo
"PCGDemo",
AD_ENTRY2s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 553355,
"missions.lib", "34b922fac8f64546c0690aa83f09e98e", 40891),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Génération 4 (FR) - Number 81 (October 1995) - Chapters 31/52 demo
"Gen4",
AD_ENTRY2s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 629503,
"missions.lib", "34b922fac8f64546c0690aa83f09e98e", 40891),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Might and Magic Trilogy CD (November 1995) - Chapters 31/52 demo
"M&MCD",
AD_ENTRY2s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 642231,
"missions.lib", "7e3e5b23ade5ef0df88e9d31f5d669e6", 10188),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Non Interactive: PC Review 49 (November 1995)
"NonInteractive",
AD_ENTRY2s("playsmks.exe", "edc5b0c0caf3d5b01d344cb555d9a085", 422607,
"wetmusic.81m", "0d99c63ce19633d09569b1fdcdff1505", 2833439),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Non Interactive: Joystick HS 7 (September 1995)
"NonInteractiveJoystick",
AD_ENTRY2s("playsmks.exe", "edc5b0c0caf3d5b01d344cb555d9a085", 422607,
"c44_22k.raw", "4b2279af59ce3049cc5177b0047e8447", 5247618),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Wetlands (US)
nullptr,
AD_ENTRY2s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 647447,
"missions.lib", "aeaaa8b26ab17e37f060334a311a3ff6", 309793),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Wetlands 1.1 (US)
nullptr,
AD_ENTRY2s("wetlands.exe", "15a6b1b3819ef002438df340509b5373", 647411,
"missions.lib", "aeaaa8b26ab17e37f060334a311a3ff6", 309793),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Wetlands (FR)
nullptr,
AD_ENTRY2s("wetlands.exe", "edc5b0c0caf3d5b01d344cb555d9a085", 629575,
"missions.lib", "aeaaa8b26ab17e37f060334a311a3ff6", 309793),
Common::FR_FRA,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Wetlands (ES)
nullptr,
AD_ENTRY2s("wetlands.exe", "8d0f3630523da827bb25e665b7d3f879", 644055,
"missions.lib", "aeaaa8b26ab17e37f060334a311a3ff6", 309793),
Common::ES_ESP,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"wetlands", // Wetlands (KO)
nullptr,
AD_ENTRY2s("wetlands.exe", "edc5b0c0caf3d5b01d344cb555d9a085", 360151,
"missions.lib", "aeaaa8b26ab17e37f060334a311a3ff6", 309793),
Common::KO_KOR,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"soldierboyz", // Solidier Boyz (US)
nullptr,
AD_ENTRY2s("boyz.exe", "bac1d734f2606dbdd0816dfa7a5cf518", 263347,
"setup.exe", "bac1d734f2606dbdd0816dfa7a5cf518", 160740),
Common::EN_USA,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
{
"teacher", // Bruce Coville's My Teacher Is an Alien Demo - PC Collector 10 (July 1997)
"Demo",
AD_ENTRY2s("teacher.exe", "7650ab104a21e2ca33a1d0d54a51e9d1", 258560,
"demomenu.smk", "abb06755ff1d345b11b0f2c2d42e5dc7", 2424),
Common::EN_USA,
Common::kPlatformWindows,
ADGF_UNSTABLE | ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
AD_TABLE_END_MARKER
};
} // End of namespace Hypno
static const char *const directoryGlobs[] = {
"boyz",
"spider",
"wetlands",
"sixdemo",
"demo",
"factory",
"movie",
"c_misc",
"data",
"demo",
nullptr
};
class HypnoMetaEngineDetection : public AdvancedMetaEngineDetection {
public:
HypnoMetaEngineDetection() : AdvancedMetaEngineDetection(Hypno::gameDescriptions, sizeof(ADGameDescription), Hypno::hypnoGames) {
_guiOptions = GUIO6(GUIO_NOMIDI, GAMEOPTION_ORIGINAL_CHEATS, GAMEOPTION_INFINITE_HEALTH, GAMEOPTION_INFINITE_AMMO, GAMEOPTION_UNLOCK_ALL_LEVELS, GAMEOPTION_RESTORED_CONTENT);
_maxScanDepth = 3;
_directoryGlobs = directoryGlobs;
}
const char *getName() const override {
return "hypno";
}
const char *getEngineName() const override {
return "Hypno";
}
const char *getOriginalCopyright() const override {
return "Marvel Comics Spider-Man: The Sinister Six (C) Brooklyn Multimedia\n"
"Wetlands (C) Hypnotix, Inc.\n"
"Soldier Boyz (C) Hypnotix, Inc., Motion Picture Corporation of America Interactive";
}
const DebugChannelDef *getDebugChannels() const override {
return debugFlagList;
}
};
REGISTER_PLUGIN_STATIC(HYPNO_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, HypnoMetaEngineDetection);