TONY: Rewamped the detection fully, so there are no false positives

This commit is contained in:
Eugene Sandulenko 2021-04-29 13:11:48 +02:00
parent 0d50189563
commit f3da93a476
No known key found for this signature in database
GPG key ID: 014D387312D34F08
2 changed files with 137 additions and 107 deletions

View file

@ -33,9 +33,17 @@ static const PlainGameDescriptor tonyGames[] = {
#include "tony/detection_tables.h"
static const char *const directoryGlobs[] = {
"roasted",
"voices",
0
};
class TonyMetaEngineDetection : public AdvancedMetaEngineDetection {
public:
TonyMetaEngineDetection() : AdvancedMetaEngineDetection(Tony::gameDescriptions, sizeof(Tony::TonyGameDescription), tonyGames) {
_maxScanDepth = 2;
_directoryGlobs = directoryGlobs;
}
const char *getEngineId() const override {

View file

@ -24,13 +24,16 @@ namespace Tony {
static const TonyGameDescription gameDescriptions[] = {
{
// Tony Tough English not installed
// Tony Tough English
{
"tony",
0,
// TODO: AdvancedDetector seems to have a problem where it thinks data1.cab is unrecognized.
// Is it perhaps because the Agos engine also has detection entries for data1.cab?
AD_ENTRY1s("data1.cab", "ce82907242166bfb594d97bdb68f96d2", 4350),
{
{ "roasted.mpc", 0, "57c4a3860cf899443c357e0078ea6f49", 366773 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "aebc6eb607ee19cc94bfe9c11898bb8c", 243003502 },
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -39,13 +42,16 @@ static const TonyGameDescription gameDescriptions[] = {
},
{
// Tony Tough Czech not installed
// Tony Tough Czech
{
"tony",
0,
// TODO: AdvancedDetector seems to have a problem where it thinks data1.cab is unrecognized.
// Is it perhaps because the Agos engine also has detection entries for data1.cab?
AD_ENTRY1s("data1.cab", "c6d5dd8f0c1241a6e3f7861b7f27bf7b", 4350),
{
{ "roasted.mpc", 0, "a8283a101878f3ca105f1f83f07e2c40", 386491 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "3384bdcb70d1e1ecedbde26e79683ede", 299019523 },
AD_LISTEND
},
Common::CZ_CZE,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -53,40 +59,17 @@ static const TonyGameDescription gameDescriptions[] = {
},
},
{
// Tony Tough English Demo
{
"tony",
"Extracted Demo",
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 14972409,
"roasted.mpc", "1e247922ec869712bfd96625bc4d3c7c", 39211),
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
},
{
// Tony Tough English Demo (Compressed)
{
"tony",
"Demo",
AD_ENTRY1s("data1.cab", "7d8b6d308f96aee3968ad7910fb11e6d", 58660608),
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_DEMO | GF_COMPRESSED,
GUIO1(GUIO_NOMIDI)
},
},
{
// Tony Tough French "Collection Aventure" provided by Strangerke
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "e890c6a41238827bdfa9874a65618b69", 374135),
{
{ "roasted.mpc", 0, "e890c6a41238827bdfa9874a65618b69", 374135 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "aebc6eb607ee19cc94bfe9c11898bb8c", 243003502 },
AD_LISTEND
},
Common::FR_FRA,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -99,8 +82,30 @@ static const TonyGameDescription gameDescriptions[] = {
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "ccf7ab939a34de1b13df538596431684", 389554),
{
{ "roasted.mpc", 0, "ccf7ab939a34de1b13df538596431684", 389554 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "6a3c2f5426ab762bf4dc9826796aa320", 279745055 },
AD_LISTEND
},
Common::DE_DEU,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
},
{
// Tony Tough German "Gamestar" provided in bug #6138
{
"tony",
0,
{
{ "roasted.mpc", 0, "187de6f88f4083808cb66342ab55a7fd", 389904 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, 0, -1 }, // FIXME
AD_LISTEND
},
Common::DE_DEU,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -113,8 +118,12 @@ static const TonyGameDescription gameDescriptions[] = {
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "1dc896cdb945170d7408598f803411c1", 380001),
{
{ "roasted.mpc", 0, "1dc896cdb945170d7408598f803411c1", 380001 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "f9f1ac8f63a909bb3ed972490dae65c4", 286130226 },
AD_LISTEND
},
Common::IT_ITA,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -127,8 +136,12 @@ static const TonyGameDescription gameDescriptions[] = {
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "6202816f991b15af82aab84e3e4be011", 380183),
{
{ "roasted.mpc", 0, "6202816f991b15af82aab84e3e4be011", 380183 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "f9f1ac8f63a909bb3ed972490dae65c4", 286130226 },
AD_LISTEND
},
Common::IT_ITA,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -136,27 +149,17 @@ static const TonyGameDescription gameDescriptions[] = {
},
},
{
// Tony Tough Polish provided by Fabio Barzagli
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "89733ea710669acc8e7900b115f4afef", 389625),
Common::PL_POL,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
},
{
// Tony Tough Polish provided by iGom bug #11546
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "c212a81e34edf92bc177a80f24780bd2", 380200),
{
{ "roasted.mpc", 0, "c212a81e34edf92bc177a80f24780bd2", 380200 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "544b1db3a41b0f89567267d0664183bb", 321349288 },
AD_LISTEND
},
Common::PL_POL,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -165,55 +168,17 @@ static const TonyGameDescription gameDescriptions[] = {
},
{
// Tony Tough German "Gamestar" provided in bug #6138
// Tony Tough Polish provided by Fabio Barzagli
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "187de6f88f4083808cb66342ab55a7fd", 389904),
Common::DE_DEU,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
},
{
// Tony Tough Czech provided in bug #6137
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "a8283a101878f3ca105f1f83f07e2c40", 386491),
Common::CZ_CZE,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
},
{
// Tony Tough English Unpacked
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "57c4a3860cf899443c357e0078ea6f49", 366773),
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
},
},
{
// Tony Tough German "Shoe Box", reported in bug #6174
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "bc3471f098e591dc509dcad401a8d8a5", 389554),
Common::EN_ANY,
{
{ "roasted.mpc", 0, "89733ea710669acc8e7900b115f4afef", 389625 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "544b1db3a41b0f89567267d0664183bb", 310906270 },
AD_LISTEND
},
Common::PL_POL,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOMIDI)
@ -225,8 +190,12 @@ static const TonyGameDescription gameDescriptions[] = {
{
"tony",
0,
AD_ENTRY2s("roasted.mpr", "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071,
"roasted.mpc", "377d6e24adeedc6c5c09c31b92231218", 391536),
{
{ "roasted.mpc", 0, "377d6e24adeedc6c5c09c31b92231218", 391536 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 135911071 },
{ "voices.vdb", 0, "af4061f49b934086710f0d41e6250a15", 325225827 },
AD_LISTEND
},
Common::RU_RUS,
Common::kPlatformWindows,
ADGF_NO_FLAGS,
@ -234,6 +203,59 @@ static const TonyGameDescription gameDescriptions[] = {
},
},
{
// Tony Tough English Demo
{
"tony",
"Extracted Demo",
{
{ "roasted.mpc", 0, "1e247922ec869712bfd96625bc4d3c7c", 39211 },
{ "roasted.mpr", 0, "06203dbbc85fdd1e6dc8fc211c1a6207", 14972409 },
{ "voices.vdb", 0, "f9f1ac8f63a909bb3ed972490dae65c4", 20189260 },
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_DEMO,
GUIO1(GUIO_NOMIDI)
},
},
#if 0
// Disabling this detection entry. The package contains _only_ standard list
// of InnoSetup files:
//
// DATA.TAG SETUP.INI _ISDEL.EXE _sys1.cab data1.cab layout.bin
// setup.bmp setup.lid SETUP.EXE _INST32I.EX_ _setup.dll _user1.cab
// lang.dat os.dat setup.ins
//
// As a result, adding this entry will lead to a false "unknown variant for tony-demo"
// For practically all games which use InnoSetup.
//
// The current AdvancedDetector code always will show the end user the detected
// game AND this entry, which is very annoying
//
// The only potential solution is to make AD work with the InnoSetup archives,
// that is, make it look inside of the archive and if it contains the matching
// file names, only then report it as an unknown variant.
{
// Tony Tough English Demo (Compressed)
{
"tony",
"Demo",
{
{ "data1.cab", 0, "7d8b6d308f96aee3968ad7910fb11e6d", 58660608 },
{ "data.tag", 0, "e9af151040745e83081e691356abeed7", 137 },
AD_LISTEND
},
Common::EN_ANY,
Common::kPlatformWindows,
ADGF_DEMO | GF_COMPRESSED,
GUIO1(GUIO_NOMIDI)
},
},
#endif
{ AD_TABLE_END_MARKER }
};