GOB: Add "Enable copy protection" engine checkbox

I only have a fraction of these (I wouldn't even recognize Adibou if I
saw it!) so I've just made the assumption that the copy protection for
Gobliiins 1, Gobliins 2, and Adibou 1 apply to all floppy versions and
none of the CD versions.

I've never seen the copy protection screen in my GOG floppy version of
Gobliiins 1 though. Also, the GOG floppy version of Goblins 3 shows a
copy protection screen, but apparently that's bypassed somehow without
checking the "copy_protection" setting?
This commit is contained in:
Torbjörn Andersson 2024-05-31 07:54:51 +02:00 committed by Eugene Sandulenko
parent d344800805
commit 7ce9f05588
5 changed files with 81 additions and 58 deletions

View File

@ -91,6 +91,8 @@ struct GOBGameDescription {
uint32 demoIndex;
};
#define GAMEOPTION_COPY_PROTECTION GUIO_GAMEOPTIONS1
} // End of namespace Gob
#endif // GOB_DETECTION_H

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 {