scummvm/engines/freescape/detection.cpp
2025-03-06 01:10:09 +02:00

1138 lines
30 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 "freescape/freescape.h"
#include "freescape/detection.h"
#include "freescape/games/driller/driller.h"
#include "freescape/games/eclipse/eclipse.h"
namespace Freescape {
static const PlainGameDescriptor freescapeGames[] = {
{"3dkit", "3D Kit Game"},
{"driller", "Driller"},
{"spacestationoblivion", "Space Station Oblivion"},
{"darkside", "Dark Side"},
{"totaleclipse", "Total Eclipse"},
{"totaleclipse2", "Total Eclipse 2"},
{"castlemaster", "Castle Master"},
{0, 0}
};
static const ADGameDescription gameDescriptions[] = {
// Original Freescape games
// Driller
{
"driller",
"",
AD_ENTRY1s("DRILLER.ZX.DATA", "396c1789a7da3db5058d18eb8d2d35a3", 37590),
Common::EN_ANY,
Common::kPlatformZX,
GF_ZX_RETAIL,
GUIO3(GUIO_NOMIDI, GUIO_RENDERZX, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"",
AD_ENTRY1s("DRILLER.ZX.DATA", "6876fc03e754137f428bd4d5f16452b5", 37888),
Common::EN_ANY,
Common::kPlatformZX,
GF_ZX_DISC,
GUIO3(GUIO_NOMIDI, GUIO_RENDERZX, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"",
AD_ENTRY1s("DRILLER.ZX.DATA", "2b996ab877f45414f8e2ae4c862746f3", 35214),
Common::EN_ANY,
Common::kPlatformZX,
GF_ZX_BUDGET,
GUIO3(GUIO_NOMIDI, GUIO_RENDERZX, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"Not implemented yet",
AD_ENTRY1s("DRILLER.ZX.DATA", "e571795806ed8a30df0fa3109eaa8ffb", 36000),
Common::EN_ANY,
Common::kPlatformZX,
ADGF_UNSUPPORTED | ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDERZX, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"",
AD_ENTRY1s("DRILL.BIN", "719f5157391e88b2c391c30576340637", 35320),
Common::EN_ANY,
Common::kPlatformAmstradCPC,
GF_CPC_RETAIL,
GUIO3(GUIO_NOMIDI, GUIO_RENDERCPC, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller", // Commodore Force - Jan 94
"",
AD_ENTRY1s("DRILLER.C64.DATA", "511778d3167ff7504d905df507a03ac5", 63490),
Common::EN_ANY,
Common::kPlatformC64,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller", // Original tape relase?
"",
AD_ENTRY1s("DRILLER.C64.DATA", "055b261bf28f313041bc4c23ff03c8da", 54532),
Common::EN_ANY,
Common::kPlatformC64,
ADGF_UNSTABLE | GF_C64_RETAIL,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller", // Tape re-relase
"",
AD_ENTRY1s("DRILLER.C64.DATA", "4afec6eea3887343e7f91fb21a2f2948", 43278),
Common::EN_ANY,
Common::kPlatformC64,
ADGF_UNSTABLE | GF_C64_BUDGET,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"",
{
{"DRILLER.EXE", 0, "cafc0ea0d3424640a7723af87f8bfc0b", 17427},
{"DRILLE.EXE", 0, "eb7e9e0acb72e30cf6e9ed20a6480e7a", 51944},
{"DRILLC.EXE", 0, "908dd1f8732ebcbaece7d8f0cffd8830", 43864},
{"DRILLH.EXE", 0, "033d2d45390886d0bff78cf53e83b6ed", 47496},
{"DRILLT.EXE", 0, "afce0e5e0ad8c508e0c31c3e0b18b9a5", 51096},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO5(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA, GUIO_RENDERHERCGREEN, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
// Retail release
"driller",
"",
AD_ENTRY1s("x.prg", "d002983a8b652f25b18a09425db78c4c", 293159),
Common::EN_ANY,
Common::kPlatformAtariST,
GF_ATARI_RETAIL,
GUIO3(GUIO_NOMIDI, GUIO_RENDERATARIST, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
// Budget release
"driller",
"",
AD_ENTRY1s("x.prg", "1a79e68e6c2c223c96de0ca2d65149ae", 293062),
Common::EN_ANY,
Common::kPlatformAtariST,
GF_ATARI_BUDGET,
GUIO3(GUIO_NOMIDI, GUIO_RENDERATARIST, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
// Virtual Worlds release
"driller",
"This release requires unpacking, check the wiki for instructions: https://wiki.scummvm.org/index.php?title=Driller#AtariST_releases",
{
{"d.pak", 0, "607b44b9d31e0da5668b653e03d25efe", 706},
{"dril.all", 0, "65277222effa1eb4d73b234245001d75", 158158},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSUPPORTED,
GUIO3(GUIO_NOMIDI, GUIO_RENDERATARIST, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"",
{
{"driller", 0, "13dab2e10d8e8b9a364c94a660e0d42a", 282384},
{"title.seq", 0, "4dd1b3b45110b24e8240a6132241c973", 185296},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
GF_AMIGA_RETAIL,
GUIO3(GUIO_NOMIDI, GUIO_RENDERAMIGA, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
// Virtual Worlds release
"driller",
"",
{
{"driller", 0, "45312c9ccdb567c332f953059e4819a5", 282384},
{"text", 0, "bf949a753634cdcb376e0dab9447b08b", 215},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
GF_AMIGA_RETAIL,
GUIO3(GUIO_NOMIDI, GUIO_RENDERAMIGA, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"",
{
{"driller", 0, "db1afe151d999f369ae9153d8eeaf254", 175236},
{"soundfx", 0, "cd91061a1330aef8fcd6b7dc6fa35cf9", 78680},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
GF_AMIGA_BUDGET,
GUIO3(GUIO_NOMIDI, GUIO_RENDERAMIGA, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"Rolling Demo",
{
{"drilldem.com", 0, "5188a7ae06f72263634a107685f52cbe", 889},
{"d1", 0, "edd57153197ef457f08eeea4d9339208", 16384},
{"d2", 0, "3690e6461bfc5434bab8969c6cdbb297", 41488},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDERCGA, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"Rolling Demo",
{
{"driller", 0, "f0d0e9447830e329e110e384371955fd", 162880},
{"data", 0, "0b056286d2d91f302499c97aca235462", 24220},
{"demo.cmd", 0, "7b90427c5c3c4bbb42d14076af994d50", 4096},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDERAMIGA, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"Demo",
{
{"driller", 0, "ff9b84a6526de87a301f7aba5c2d87d9", 164736},
{"data", 0, "6add87a10042d0a9fd32c62ed56b7690", 24220},
{"demo.cmd", 0, "247601bec1bfa858955749364c876609", 4096},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_DEMO | GF_AMIGA_MAGAZINE_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDERAMIGA, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"Demo",
{
{"auto_x.prg", 0, "14388ba3cfd222938e5e48f0e316b335", 158919},
{"data", 0, "6add87a10042d0a9fd32c62ed56b7690", 24220},
{"demo.cmd", 0, "7b90427c5c3c4bbb42d14076af994d50", 4096},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_DEMO | GF_ATARI_MAGAZINE_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDERATARIST, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"Rolling Demo",
{
{"x.prg", 0, "cf96e25a11bee1b57258c2fc0b315699", 157143},
{"data", 0, "0b056286d2d91f302499c97aca235462", 24220},
{"demo.cmd", 0, "7b90427c5c3c4bbb42d14076af994d50", 4096},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDERATARIST, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"driller",
"This demo requires unpacking, check the wiki for instructions: https://wiki.scummvm.org/index.php?title=Driller/Demos#AtariST_demos",
{
{"driller.prg", 0, "ae9b03e247def6f0793174b1cb4352b5", 1821},
{"data", 0, "0c927fbc6c390afd0d0c15b2d7f8766f", 10893},
{"demo.cmd", 0, "9c732dcdad26b36b537e632924cd8f0e", 745},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSUPPORTED | ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDERATARIST, GAMEOPTION_AUTOMATIC_DRILLING)
},
// Space station oblivion
{
"spacestationoblivion",
"",
{
{"OBLIVION.EXE", 0, "80783622013750d7c88fd1d35dde919a", 6765},
{"DRILLE.EXE", 0, "30edf6be0037b2b0e8c6957df62c2a02", 51944},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO4(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"spacestationoblivion",
"",
AD_ENTRY1s("x.prg", "bf546ee243c38f51d9beb25c203ccb93", 292624),
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"spacestationoblivion",
"",
AD_ENTRY1s("x.prg", "7fc6ef316be4819d88d8031738571a50", 293264),
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"spacestationoblivion",
"",
AD_ENTRY1s("oblivion", "7fc6ef316be4819d88d8031738571a50", 293264),
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"spacestationoblivion",
"",
AD_ENTRY1s("SPACESTATIONOBLIVION.C64.DATA", "85680576865e211f868885e9997a08b8", 22782),
Common::EN_ANY,
Common::kPlatformC64,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
{
"spacestationoblivion",
"",
AD_ENTRY1s("SPACESTATIONOBLIVION.C64.DATA", "2b3537e21b8b871ec074df2962999781", 64514),
Common::EN_ANY,
Common::kPlatformC64,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
// Dark Side
{
"darkside",
"",
{
{"0.DRK", 0, "9e51b8f93a9af886fb88ab92ed43cf01", 81544},
{"1.DRK", 0, "50bbaa2b19fc4072ad85efe93116e561", 280704},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSTABLE,
GUIO2(GUIO_NOMIDI, GUIO_RENDERAMIGA)
},
// Microstatus release decrypted
{
"darkside",
"",
{
{"0.DRK", 0, "5aa6473a75991f1e1217974a7844a042", 77900},
{"1.DRK", 0, "49cc73a5ca7adb26065286a7afd4d0a4", 280704},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSTABLE,
GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
},
// Cinemaware release
{
"darkside",
"",
{
{"0.DRK", 0, "e237ae052a85ff92e70bd3528442e1e4", 78298},
{"1.DRK", 0, "9e700d991054f4393b1ccef706586b5b", 223272},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSTABLE,
GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
},
// Microstatus release
{
"darkside",
"Encrypted executable with CopyLock, follow the instructions here: https://wiki.scummvm.org/index.php?title=Freescape/DRM",
{
{"0.DRK", 0, "c19bc332f6550e21e7b8ef79bcf3d99e", 81840},
{"1.DRK", 0, "9e700d991054f4393b1ccef706586b5b", 223272},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
},
{
// Stampede AtariST, Issue 1
"darkside",
"",
{
{"0.DRK", 0, "86794a6cb2d371cdf892a2173e3b7568", 47966},
{"1.DRK", 0, "9e700d991054f4393b1ccef706586b5b", 223272},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSTABLE,
GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
},
// Stampede Amiga, Issue 1, July 1990
{
"darkside",
"",
{
{"DARKSIDE", 0, "5cf22e88959284097790189cf05b1862", 84004},
{"1.DRK", 0, "49cc73a5ca7adb26065286a7afd4d0a4", 280704},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GUIO_RENDERAMIGA)
},
{
"darkside",
"",
{
{"DARKSIDE.EXE", 0, "c6c0d0186ec45e6cecd72bf5550c7f98", 1600},
{"DSIDEC.EXE", 0, "31e6c169d9270b6de8c1c2e746ac238e", 49504},
{"DSIDEH.EXE", 0, "5e18e0746647bd04f43b9db24b6a036d", 53232},
{"DSIDEE.EXE", 0, "524281f7d2dc49e0a41fcb1d38ee2559", 56800},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"darkside",
"",
{
{"DARKSIDE.EXE", 0, "477c8249665c00e001a84f94911b5960", 21325},
{"DSIDEC.EXE", 0, "d4d443777411d6141e94bbf464914251", 49504},
{"DSIDEE.EXE", 0, "9d9ba99a8b7c1ae49f9cc328bfa862dd", 56800},
{"DSIDEH.EXE", 0, "7764dadc5a0baf0960e9323a8629e321", 53232},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"darkside",
"",
{
{"DARKSIDE.EXE", 0, "5a936e23a890f4a96b6fdd865bd1f4a5", 20905},
{"DSIDEC.EXE", 0, "31e6c169d9270b6de8c1c2e746ac238e", 49504},
{"DSIDEE.EXE", 0, "524281f7d2dc49e0a41fcb1d38ee2559", 56800},
{"DSIDEH.EXE", 0, "5e18e0746647bd04f43b9db24b6a036d", 53232},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"darkside",
"Demo",
{
{"DARKSIDE.EXE", 0, "5c69b7c5586031c153cbb58fc6d2bff8", 20905},
{"DSIDEC.EXE", 0, "796c1d1a9583a0ccf5bba47813fa6a8a", 39640},
{"DSIDEE.EXE", 0, "1f3f607dad97efe1d8e979ef588bda01", 46952},
{"DSIDEH.EXE", 0, "7f45c6047798c5443f57c2002e2d2c27", 43368},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"darkside",
"Demo",
AD_ENTRY1s("DARKSIDE.ZX.DATA", "0e4d9b6e64ff24801272ff0b18a3caab", 29182),
Common::EN_ANY,
Common::kPlatformZX,
ADGF_DEMO,
GUIO2(GUIO_NOMIDI, GUIO_RENDERZX)
},
{
"darkside",
"",
AD_ENTRY1s("DARKSIDE.ZX.DATA", "e840db278f1256d1d3a1a34d49644aee", 34460),
Common::EN_ANY,
Common::kPlatformZX,
ADGF_NO_FLAGS,
GUIO2(GUIO_NOMIDI, GUIO_RENDERZX)
},
{
"darkside",
"",
AD_ENTRY1s("DARKCODE.BIN", "203ce55b7582c556c811acd6a1cf4ab6", 35385),
Common::EN_ANY,
Common::kPlatformAmstradCPC,
ADGF_NO_FLAGS,
GUIO2(GUIO_NOMIDI, GUIO_RENDERCPC)
},
{
"darkside", // Tape relese
"",
AD_ENTRY1s("DARKSIDE.C64.DATA", "c0d271d86cf4434ef7c3d823a32c0df5", 61290),
Common::EN_ANY,
Common::kPlatformC64,
ADGF_UNSTABLE,
GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
},
// Total Eclipse
{
"totaleclipse",
"Demo",
{
{"TECON.BIN", 0, "990f9a5e6d29142f98d53e53b1e43cc9", 16512},
{"TEPROG.BIN", 0, "093a3a9a65c7914b93e13675fedafcc6", 29824},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmstradCPC,
ADGF_DEMO,
GUIO2(GUIO_NOMIDI, GUIO_RENDERCPC)
},
{
"totaleclipse",
"Demo",
{
{"totaleclipse.zx.border", 0, "4df153a0c8986d1581b2aa58222c0eb8", 6912},
{"totaleclipse.zx.data", 0, "af0b6408fb63082ce2b6cd5985908be1", 28142},
{"totaleclipse.zx.title", 0, "1c1ab8a9994c1936e684b2980dba431b", 6912},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformZX,
ADGF_DEMO | GF_ZX_DEMO_MICROHOBBY,
GUIO2(GUIO_NOMIDI, GUIO_RENDERZX)
},
{
"totaleclipse",
"Demo",
{
{"totaleclipse.zx.border", 0, "4df153a0c8986d1581b2aa58222c0eb8", 6912},
{"totaleclipse.zx.data", 0, "13cd96820a65c84e63ca57c86f25881a", 29692},
{"totaleclipse.zx.title", 0, "b25897736ffcafee174f525cd1f14b42", 6912},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformZX,
ADGF_DEMO | GF_ZX_DEMO_CRASH,
GUIO2(GUIO_NOMIDI, GUIO_RENDERZX)
},
{
"totaleclipse",
"",
AD_ENTRY1s("totaleclipse.zx.data", "5bc0c4ff50407d16bb409776eda7f4a8", 36055),
Common::EN_ANY,
Common::kPlatformZX,
ADGF_NO_FLAGS,
GUIO2(GUIO_NOMIDI, GUIO_RENDERZX)
},
{
"totaleclipse2",
"",
AD_ENTRY1s("totaleclipse.zx.data", "5e80cb6a518d5ab2192b845801b1a32e", 35661),
Common::EN_ANY,
Common::kPlatformZX,
ADGF_NO_FLAGS,
GUIO2(GUIO_NOMIDI, GUIO_RENDERZX)
},
{
"totaleclipse",
"",
{
{"TECODE.BIN", 0, "369d87a5a38df89cb8aa396995bb49d5", 35794},
{"TECON.SCR", 0, "f6381a7e07b3bdcd569cb7423a269fd3", 16512},
{"TESCR.SCR", 0, "9635f9401dae0936e22c556065c254f6", 16512},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmstradCPC,
ADGF_NO_FLAGS,
GUIO2(GUIO_NOMIDI, GUIO_RENDERCPC)
},
{
"totaleclipse2",
"",
{
{"TE2.BI1", 0, "fc6e1a240e76a68e02ce1db5ad9a689a", 16512},
{"TE2.BI2", 0, "c346262234e509ba5576c0a3362bc414", 35456},
{"TE2.BI3", 0, "d73485df2eccb90592bb598693b10555", 16512},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmstradCPC,
ADGF_NO_FLAGS,
GUIO2(GUIO_NOMIDI, GUIO_RENDERCPC)
},
{
"totaleclipse2",
"",
{
{"TE2.BI1", 0, "fc6e1a240e76a68e02ce1db5ad9a689a", 16512},
{"TE2.BI2", 0, "c346262234e509ba5576c0a3362bc414", 35398},
{"TE2.BI3", 0, "d73485df2eccb90592bb598693b10555", 16512},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmstradCPC,
ADGF_NO_FLAGS,
GUIO2(GUIO_NOMIDI, GUIO_RENDERCPC)
},
{
"totaleclipse",
"",
{
{"TOTAL.EXE", 0, "959703c1cd37b0d9744c492240a8178b", 13327},
{"TOTEH.EXE", 0, "c68d59874ab2a93cc9cc1b1d3aed8f17", 60628},
{"TOTEC.EXE", 0, "6c058c48255945a12479c8420321db75", 56900},
{"TOTET.EXE", 0, "2bc2b0892ca91a77c58e9bedabf45afe", 63732},
{"TOTEE.EXE", 0, "2ba865d2bdcda0c934baec7b31fb4ab2", 64196},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
// Erbe Software release
"totaleclipse",
"",
{
{"S.EXE", 0, "959703c1cd37b0d9744c492240a8178b", 13327},
{"TOTEH.EXE", 0, "c68d59874ab2a93cc9cc1b1d3aed8f17", 60628},
{"TOTEC.EXE", 0, "6c058c48255945a12479c8420321db75", 56900},
{"TOTET.EXE", 0, "2bc2b0892ca91a77c58e9bedabf45afe", 63732},
{"TOTEE.EXE", 0, "2ba865d2bdcda0c934baec7b31fb4ab2", 64196},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"totaleclipse",
"",
{
{"0.TEC", 0, "e8b362cd913a2d58f8601e4df11a643a", 89500},
{"1.TEC", 0, "3a2e304706bde3e34ac2a730eff8567b", 305286},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GUIO_RENDERAMIGA)
},
{
// Virtual Worlds release
"totaleclipse",
"",
{
{"0.TEC", 0, "8daa244d6814f06b9a081b7bd0ec542d", 89500},
{"1.TEC", 0, "c1b022ad7284578f97aa2ff46ed3db38", 304030},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GUIO_RENDERAMIGA)
},
{
"totaleclipse",
"",
{
{"0.TEC", 0, "01a2a7b2ce34b121e7ee4dab3bdac114", 45860},
{"1.TEC", 0, "fb65655f60b11040285aa947d4ed1193", 263453},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSTABLE,
GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
},
{
// Stampede Atari, Issue 7
"totaleclipse",
"",
{
{"0.TEC", 0, "c20a3bfea7147f73dc4fcd8aecf4faf8", 49402},
{"1.TEC", 0, "fb65655f60b11040285aa947d4ed1193", 263453},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSUPPORTED,
GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
},
// Castle Master
// Tape release
{
"castlemaster",
"",
AD_ENTRY1s("castlemaster.zx.data", "e2ed83c30cd0ed7119e349d0f677ae91", 36096),
Common::EN_ANY,
Common::kPlatformZX,
ADGF_UNSTABLE,
GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERZX)
},
// Disc release
{
"castlemaster",
"",
AD_ENTRY1s("castlemaster.zx.data", "98513a4438ba93971d793a0fbc875b70", 36309),
Common::EN_ANY,
Common::kPlatformZX,
ADGF_UNSTABLE | GF_ZX_DISC,
GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERZX)
},
// Spanish release was disc-only?
{
"castlemaster",
"",
AD_ENTRY1s("castlemaster.zx.data", "3e6f6b283fa00a3073edce2392950601", 36309),
Common::ES_ESP,
Common::kPlatformZX,
ADGF_UNSTABLE | GF_ZX_DISC,
GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERZX)
},
{
"castlemaster",
"Demo",
{
{"CASTLE.EXE", 0, "cbcf475b2d993c831a34a5203d2643e1", 2022},
{"CMDC.EXE", 0, "278fd1a96c61db71d952af472164ac57", 56526},
{"CMDE.EXE", 0, "428555ba83bc64d69bc2f7cb385f04f2", 88590},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSTABLE | ADGF_DEMO,
GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
"Demo",
{
{"cm", 0, "936b6ca92be53f122bd904a3397137e2", 1552},
{"x", 0, "c8c811439da0cf8a193e35feb5b5c6dc", 353388},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSTABLE | ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERAMIGA)
},
// Stampede Amiga, Issue 1, July 1990
{
"castlemaster",
"",
{
{"cm", 0, "b7e713a0742fa09aa81c9606bbbba4af", 4068},
{"x", 0, "c8c811439da0cf8a193e35feb5b5c6dc", 353388},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_UNSTABLE | ADGF_DEMO,
GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERAMIGA)
},
{
"castlemaster",
"",
{
{"CM.BIN", 0, "b971443542d1f8cfe0b8a92054f0aa61", 39866},
{"CMLOAD.BIN", 0, "14806e71e2d14980a4ba8e3e35e66593", 16512},
{"CMSCR.BIN", 0, "75fe4a8af0ca797c51922f0ceeb8d383", 16512},
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformAmstradCPC,
ADGF_UNSTABLE,
GUIO2(GUIO_NOMIDI, GUIO_RENDERCPC)
},
{
"castlemaster",
"",
{
{"CASTLE.EXE", 0, "f1a141df0e47860246716db20d2ba061", 2806},
{"CMC.EXE", 0, "03af2b79b1aad690684cf89025c5f425", 60240},
{"CMT.EXE", 0, "a603d3f96e981ab0014b7b1a5a2dc28c", 81840},
{"CME.EXE", 0, "99d8b4dbaad1fd73c9afdde550dc5195", 92320},
{"CMH.EXE", 0, "1f3b67e649e718e239ebfd7c56e96d47", 63040},
AD_LISTEND
},
Common::UNK_LANG,
Common::kPlatformDOS,
ADGF_PIRATED,
GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
"Virtual Worlds",
{
{"CASTLE.EXE", 0, "f1a141df0e47860246716db20d2ba061", 2806},
{"CMC.EXE", 0, "7b9275df446f82fdd0c377f6ec2db546", 57168},
{"CMT.EXE", 0, "5814e68a175f74ebce0773a73e7488c7", 78768},
{"CME.EXE", 0, "d563ae1475752e6a9a81b1350abebef3", 89248},
{"CMH.EXE", 0, "26337adc7861300e5395e992e42b6329", 59968},
AD_LISTEND
},
Common::UNK_LANG, // Multi-language
Common::kPlatformDOS,
ADGF_UNSTABLE,
GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
"Virtual Worlds",
{
{"CASTLE.EXE", 0, "ee80b083151fb1d70e3045a02f0de7fd", 2688},
{"CMC.EXE", 0, "9015c244dc8a97fe55df7b235b31e00c", 57168},
{"CME.EXE", 0, "d563ae1475752e6a9a81b1350abebef3", 89248},
{"CMH.EXE", 0, "cc68c42d254b3aa0f208cd08731c6805", 59968},
{"CMT.EXE", 0, "5814e68a175f74ebce0773a73e7488c7", 78768},
AD_LISTEND
},
Common::UNK_LANG, // Multi-language
Common::kPlatformDOS,
ADGF_UNSTABLE,
GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
"Domark PC Collection",
{
{"X.EXE", 0, "d51d7db1e06814cbf763c43f411df616", 2157},
{"CMC.EXE", 0, "7b9275df446f82fdd0c377f6ec2db546", 57168},
{"CMT.EXE", 0, "78002e4b6c14e0a7924317d27e868985", 40685},
{"CME.EXE", 0, "494268dea6d8580a7f27afb2a8157cc0", 46557},
{"CMH.EXE", 0, "03b6f4c5b8931259e42e229de06ac5fc", 35645},
AD_LISTEND
},
Common::UNK_LANG, // Multi-language
Common::kPlatformDOS,
ADGF_UNSTABLE,
GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
"CD release",
{
{"CASTLE.EXE", 0, "7601f74572b3c99bfc8d3f6d9d43d356", 29804},
{"CMC.EXE", 0, "c7f651402307693048604e0f47c5c9e9", 57216},
{"CME.EXE", 0, "e01f1561cbdc48d0a20823fdb852bdf1", 89296},
{"CMH.EXE", 0, "76ac58ed66451689e84823706e000b6e", 60016},
{"CMT.EXE", 0, "8c8621b5927d090bb7a4dca8d39cbfcf", 78816},
AD_LISTEND
},
Common::UNK_LANG, // Multi-language
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
{
"castlemaster",
"",
{
{"CASTLE.EXE", 0, "42a7d46b418d68e75e31c1cb9d89af14", 2678},
{"CMC.EXE", 0, "9015c244dc8a97fe55df7b235b31e00c", 57168},
{"CMT.EXE", 0, "5814e68a175f74ebce0773a73e7488c7", 78768},
{"CME.EXE", 0, "d563ae1475752e6a9a81b1350abebef3", 89248},
{"CMH.EXE", 0, "cc68c42d254b3aa0f208cd08731c6805", 59968},
AD_LISTEND
},
Common::ES_ESP,
Common::kPlatformDOS,
ADGF_UNSTABLE,
GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
},
// 3D Construction Kit games
{
"3dkit",
"The 3-D Kit Game",
AD_ENTRY1s("3DKIT.RUN", "f35147729a2f5b6852a504223aeb6a57", 112158),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"3D House",
AD_ENTRY1s("3DHOUSE.RUN", "3d3320e71831ce533a7107fdd2cf5be3", 100816),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"3D House v2",
AD_ENTRY1s("3DHOUSE2.RUN", "136f5285bf198967934d3d0b45a6a29b", 100816),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"3D Trek",
AD_ENTRY1s("3DTREK.RUN", "6a5785fbbfca62d194fc426a6d5d20fd", 99758),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Adam's Game v1.2",
AD_ENTRY1s("ADAM.RUN", "1420a0beefb51495e18630bd71b35765", 85850),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"B-Dream",
AD_ENTRY1s("BDREAM.RUN", "f373fd71fda0c460c09329631cf6189f", 97194),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Desert Sands v1.3",
AD_ENTRY1s("SANDS.RUN", "de4f0391d43ce48b0bb6f589dfe470f5", 73964),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"EarthNap",
AD_ENTRY1s("EARTHNAP.RUN", "57cbd38e200ff256f4dba5207ec5abb6", 101158),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Eerie Estates",
AD_ENTRY1s("EERIE.RUN", "5455621ccac85393579aa71670d9d9d8", 105314),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Gaynor Ave. House",
AD_ENTRY1s("GAYNOR4.RUN", "06b38e2cffc1218a74a59bffbb8bc6c5", 85730),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"The House",
AD_ENTRY1s("THEHOUSE.RUN", "f8aae4ddd56599a40392911df4cc5e63", 96282),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Lost",
AD_ENTRY1s("LOST.RUN", "3c8a84f3c5eba28cad6de6edfa6f9afb", 86004),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Menace of Dr. Spoil Sport",
AD_ENTRY1s("MODSS.RUN", "409ac1100a15447e742ec1415b2741c3", 91176),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Mino Dino Demo",
AD_ENTRY1s("DINODEMO.RUN", "9da4c0e3940a0d2735bfcb589ec50001", 73526),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Rubber Room v1.0",
AD_ENTRY1s("RUBROOM.RUN", "81b31463957a2951fd356010bdaba520", 71830),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Tour Graceland v1.0",
AD_ENTRY1s("BINGO.RUN", "10ed84e92bf71d147dc86f7c06b7c0f4", 115260),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Virtual Reality Studio Demo",
AD_ENTRY1s("DEMO.RUN", "73c56a77ce637673d5f83bb5909cbc26", 95746),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
// 3D Construction Kit II games
{
"3dkit",
"3D House v4",
AD_ENTRY2s("3DHOUSE4.EXE", "49f7a832104ae76d38851d1b4fd8f0a1", 8859,
"RUNNER.3WD", "cc0bfa95f695d2b7eadc1d6f3dd6e8f9", 62434),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"Anarchy Academy",
AD_ENTRY2s("ANARCHY.PRG", "78d543be4aad9608093c1e91bc100307", 270,
"RUNNER.DAT", "1cf7c049ee59503dd7218b0f45828132", 42802),
Common::EN_ANY,
Common::kPlatformAtariST,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
{
"3dkit",
"The World of Stairs",
AD_ENTRY2s("RUNNER.EXE", "8d20d849694fb098b5fa7883f770a122", 96439,
"RUNNER.3WD", "daf373f23a122dd1b7eda48f33d3aa54", 44694),
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_UNSUPPORTED,
GUIO1(GUIO_NOMIDI)
},
AD_TABLE_END_MARKER
};
} // End of namespace Freescape
static const DebugChannelDef debugFlagList[] = {
{Freescape::kFreescapeDebugMove, "move", ""},
{Freescape::kFreescapeDebugParser, "parser", ""},
{Freescape::kFreescapeDebugCode, "code", ""},
{Freescape::kFreescapeDebugMedia, "media", ""},
{Freescape::kFreescapeDebugGroup, "group", ""},
DEBUG_CHANNEL_END
};
class FreescapeMetaEngineDetection : public AdvancedMetaEngineDetection<ADGameDescription> {
public:
FreescapeMetaEngineDetection() : AdvancedMetaEngineDetection(Freescape::gameDescriptions, Freescape::freescapeGames) {
_guiOptions = GUIO7(GUIO_NOMIDI, GAMEOPTION_EXTENDED_TIMER, GAMEOPTION_DISABLE_DEMO_MODE, GAMEOPTION_DISABLE_SENSORS, GAMEOPTION_DISABLE_FALLING, GAMEOPTION_INVERT_Y, GAMEOPTION_AUTHENTIC_GRAPHICS);
}
const char *getName() const override {
return "freescape";
}
const char *getEngineName() const override {
return "Freescape";
}
const char *getOriginalCopyright() const override {
return "Copyright (C) 1987 Incentive Software";
}
const DebugChannelDef *getDebugChannels() const override {
return debugFlagList;
}
DetectedGame toDetectedGame(const ADDetectedGame &adGame, ADDetectedGameExtraInfo *extraInfo) const override;
};
DetectedGame FreescapeMetaEngineDetection::toDetectedGame(const ADDetectedGame &adGame, ADDetectedGameExtraInfo *extraInfo) const {
DetectedGame game = AdvancedMetaEngineDetection::toDetectedGame(adGame);
// The AdvancedDetector model only allows specifying a single supported game language.
if (game.gameId == "castlemaster" && game.language == Common::UNK_LANG) {
game.appendGUIOptions(Common::getGameGUIOptionsDescriptionLanguage(Common::EN_ANY));
game.appendGUIOptions(Common::getGameGUIOptionsDescriptionLanguage(Common::FR_FRA));
game.appendGUIOptions(Common::getGameGUIOptionsDescriptionLanguage(Common::DE_DEU));
}
return game;
}
REGISTER_PLUGIN_STATIC(FREESCAPE_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, FreescapeMetaEngineDetection);