diff --git a/engines/gob/detection/detection.h b/engines/gob/detection/detection.h index 345171df77c..7ee0c30f72c 100644 --- a/engines/gob/detection/detection.h +++ b/engines/gob/detection/detection.h @@ -91,6 +91,8 @@ struct GOBGameDescription { uint32 demoIndex; }; +#define GAMEOPTION_COPY_PROTECTION GUIO_GAMEOPTIONS1 + } // End of namespace Gob #endif // GOB_DETECTION_H diff --git a/engines/gob/detection/tables_adibou1.h b/engines/gob/detection/tables_adibou1.h index 12df3f84033..594fc01c65e 100644 --- a/engines/gob/detection/tables_adibou1.h +++ b/engines/gob/detection/tables_adibou1.h @@ -40,7 +40,7 @@ FR_FRA, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -54,7 +54,7 @@ FR_FRA, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib | kFeatures16Colors, 0, "base.tot", 0 @@ -68,7 +68,7 @@ FR_FRA, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -115,7 +115,7 @@ EN_GRB, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -130,7 +130,7 @@ EN_GRB, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -147,7 +147,7 @@ EN_ANY, kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 diff --git a/engines/gob/detection/tables_gob1.h b/engines/gob/detection/tables_gob1.h index a0980bb128f..c676991d05d 100644 --- a/engines/gob/detection/tables_gob1.h +++ b/engines/gob/detection/tables_gob1.h @@ -40,7 +40,7 @@ UNK_LANG, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesEGA | kFeaturesAdLib, 0, 0, 0 @@ -53,7 +53,7 @@ RU_RUS, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesEGA | kFeaturesAdLib, 0, 0, 0 @@ -69,7 +69,7 @@ UNK_LANG, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 @@ -82,7 +82,7 @@ EN_GRB, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -296,7 +296,7 @@ EN_ANY, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 @@ -309,7 +309,7 @@ EN_ANY, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -322,7 +322,7 @@ DE_DEU, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -335,7 +335,7 @@ FR_FRA, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -348,7 +348,7 @@ IT_ITA, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -361,7 +361,7 @@ ES_ESP, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -374,7 +374,7 @@ JA_JPN, kPlatformMacintosh, ADGF_UNSTABLE, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -405,7 +405,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -419,7 +419,7 @@ IT_ITA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -433,7 +433,7 @@ EN_GRB, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -447,7 +447,7 @@ DE_DEU, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -461,7 +461,7 @@ ES_ESP, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -475,7 +475,7 @@ EN_GRB, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -489,7 +489,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -503,7 +503,7 @@ ES_ESP, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -517,7 +517,7 @@ IT_ITA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -531,7 +531,7 @@ DE_DEU, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -544,7 +544,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -557,7 +557,7 @@ EN_GRB, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -570,7 +570,7 @@ DE_DEU, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -583,7 +583,7 @@ IT_ITA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -596,7 +596,7 @@ ES_ESP, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 diff --git a/engines/gob/detection/tables_gob2.h b/engines/gob/detection/tables_gob2.h index b437866a0b7..5b31c98f1ea 100644 --- a/engines/gob/detection/tables_gob2.h +++ b/engines/gob/detection/tables_gob2.h @@ -40,7 +40,7 @@ EN_GRB, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -53,7 +53,7 @@ EN_USA, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -66,7 +66,7 @@ EN_USA, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -79,7 +79,7 @@ FR_FRA, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -92,7 +92,7 @@ DE_DEU, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -105,7 +105,7 @@ DE_DEU, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -118,7 +118,7 @@ IT_ITA, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -131,7 +131,7 @@ RU_RUS, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -144,7 +144,7 @@ ES_ESP, kPlatformDOS, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -346,7 +346,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -360,7 +360,7 @@ EN_USA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -374,7 +374,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -388,7 +388,7 @@ DE_DEU, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -402,7 +402,7 @@ EN_USA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -416,7 +416,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -429,7 +429,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -442,7 +442,7 @@ FR_FRA, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -455,7 +455,7 @@ DE_DEU, kPlatformWindows, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -472,7 +472,7 @@ EN_ANY, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -486,7 +486,7 @@ FR_FRA, kPlatformMacintosh, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesAdLib, 0, 0, 0 @@ -502,7 +502,7 @@ EN_GRB, kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 @@ -515,7 +515,7 @@ DE_DEU, kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 @@ -528,7 +528,7 @@ IT_ITA, kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 @@ -541,7 +541,7 @@ ES_ESP, kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 @@ -554,7 +554,7 @@ PL_POL, kPlatformAmiga, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 @@ -571,7 +571,7 @@ FR_FRA, kPlatformAtariST, ADGF_NO_FLAGS, - GUIO2(GUIO_NOSUBTITLES, GUIO_NOSPEECH) + GUIO3(GUIO_NOSUBTITLES, GUIO_NOSPEECH, GAMEOPTION_COPY_PROTECTION) }, kFeaturesNone, 0, 0, 0 diff --git a/engines/gob/metaengine.cpp b/engines/gob/metaengine.cpp index f2a2322883d..cb26adf59b7 100644 --- a/engines/gob/metaengine.cpp +++ b/engines/gob/metaengine.cpp @@ -28,6 +28,8 @@ #include "engines/advancedDetector.h" #include "engines/obsolete.h" +#include "common/translation.h" + #include "gob/gameidtotype.h" #include "gob/gob.h" #include "gob/obsolete.h" @@ -35,6 +37,21 @@ // For struct GOBGameDescription. #include "gob/detection/detection.h" +static const ADExtraGuiOptionsMap optionsList[] = { + { + GAMEOPTION_COPY_PROTECTION, + { + _s("Enable copy protection"), + _s("Enable any copy protection that would otherwise be bypassed by default."), + "copy_protection", + false, + 0, + 0 + }, + }, + AD_EXTRA_GUI_OPTIONS_TERMINATOR +}; + class GobMetaEngine : public AdvancedMetaEngine { public: const char *getName() const override { @@ -49,6 +66,10 @@ public: } Common::Error createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const override; + + const ADExtraGuiOptionsMap *getAdvancedExtraGuiOptions() const override { + return optionsList; + } }; bool GobMetaEngine::hasFeature(MetaEngineFeature f) const {