aboutsummaryrefslogtreecommitdiff
path: root/common/gameDetector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/gameDetector.cpp')
-rw-r--r--common/gameDetector.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp
index 71399b8751..6cb0f025a8 100644
--- a/common/gameDetector.cpp
+++ b/common/gameDetector.cpp
@@ -162,26 +162,45 @@ GameDetector::GameDetector() {
_default_gfx_mode = true;
if (version_settings == NULL) {
+ int totalCount = 0;
+
// Gather & combine the target lists from the modules
+
+#ifndef DISABLE_SCUMM
const VersionSettings *scummVersions = Engine_SCUMM_targetList();
- const VersionSettings *simonVersions = Engine_SIMON_targetList();
- const VersionSettings *skyVersions = Engine_SKY_targetList();
-
int scummCount = countVersions(scummVersions);
+ totalCount += scummCount;
+#endif
+
+#ifndef DISABLE_SIMON
+ const VersionSettings *simonVersions = Engine_SIMON_targetList();
int simonCount = countVersions(simonVersions);
+ totalCount += simonCount;
+#endif
+
+#ifndef DISABLE_SKY
+ const VersionSettings *skyVersions = Engine_SKY_targetList();
int skyCount = countVersions(skyVersions);
+ totalCount += skyCount;
+#endif
- VersionSettings *v = (VersionSettings *)calloc(scummCount + simonCount + skyCount + 1, sizeof(VersionSettings));
+ VersionSettings *v = (VersionSettings *)calloc(totalCount + 1, sizeof(VersionSettings));
version_settings = v;
+#ifndef DISABLE_SCUMM
memcpy(v, scummVersions, scummCount * sizeof(VersionSettings));
v += scummCount;
+#endif
+#ifndef DISABLE_SIMON
memcpy(v, simonVersions, simonCount * sizeof(VersionSettings));
v += simonCount;
+#endif
+#ifndef DISABLE_SKY
memcpy(v, skyVersions, skyCount * sizeof(VersionSettings));
v += skyCount;
+#endif
}
}