aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/scumm.cpp
diff options
context:
space:
mode:
authorMax Horn2006-02-20 16:35:37 +0000
committerMax Horn2006-02-20 16:35:37 +0000
commita6e5f6fd2cdb574e09fb3bd120b1e8efa034f0cb (patch)
treec07ed6b90f38bb9d21198ed271e17a54a1dea751 /engines/scumm/scumm.cpp
parent6176252117fccfbd315915b671a867550df6b4b5 (diff)
downloadscummvm-rg350-a6e5f6fd2cdb574e09fb3bd120b1e8efa034f0cb.tar.gz
scummvm-rg350-a6e5f6fd2cdb574e09fb3bd120b1e8efa034f0cb.tar.bz2
scummvm-rg350-a6e5f6fd2cdb574e09fb3bd120b1e8efa034f0cb.zip
Added / corrected some comments, and moved ScummGameSettings to scumm.h
svn-id: r20794
Diffstat (limited to 'engines/scumm/scumm.cpp')
-rw-r--r--engines/scumm/scumm.cpp35
1 files changed, 13 insertions, 22 deletions
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 41c4f2b7aa..0127c73d5c 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -181,20 +181,10 @@ static const char *findDescriptionFromGameID(const char *gameid) {
error("Unknown gameid encountered in findDescriptionFromGameID");
}
-struct ScummGameSettings {
- const char *gameid;
- const char *extra;
- byte id, version, heversion;
- int midi; // MidiDriverFlags values
- uint32 features;
- Common::Platform platform;
-
- GameSettings toGameSettings() const {
- GameSettings dummy = { gameid, findDescriptionFromGameID(gameid) };
- return dummy;
- }
-};
-
+GameSettings toGameSettings(const ScummGameSettings &g) {
+ GameSettings dummy = { g.gameid, findDescriptionFromGameID(g.gameid) };
+ return dummy;
+}
enum {
// We only compute the MD5 of the first megabyte of our data files.
@@ -3351,23 +3341,23 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
if (substLastIndex > 0 && // HE Mac versions.
(substResFileNameTable[substLastIndex].genMethod == kGenMac ||
substResFileNameTable[substLastIndex].genMethod == kGenMacNoParens)) {
- detectedGames.push_back(DetectedGame(g->toGameSettings(),
+ detectedGames.push_back(DetectedGame(toGameSettings(*g),
Common::UNK_LANG,
Common::kPlatformMacintosh));
fileSet[file->path()] = true;
} else if (substLastIndex == 0 && g->id == GID_MANIAC &&
(buf[0] == 0xbc || buf[0] == 0xa0)) {
- detectedGames.push_back(DetectedGame(g->toGameSettings(),
+ detectedGames.push_back(DetectedGame(toGameSettings(*g),
Common::UNK_LANG,
Common::kPlatformNES));
} else if ((g->id == GID_MANIAC || g->id == GID_ZAK) &&
((buf[0] == 0x31 && buf[1] == 0x0a) ||
(buf[0] == 0xcd && buf[1] == 0xfe))) {
- detectedGames.push_back(DetectedGame(g->toGameSettings(),
+ detectedGames.push_back(DetectedGame(toGameSettings(*g),
Common::UNK_LANG,
Common::kPlatformC64));
} else {
- detectedGames.push_back(g->toGameSettings());
+ detectedGames.push_back(toGameSettings(*g));
fileSet[file->path()] = false;
}
break;
@@ -3409,9 +3399,9 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) {
assert(g->gameid);
// Insert the 'enhanced' game data into the candidate list
if (iter->_value == true) // This was HE Mac game
- detectedGames.push_back(DetectedGame(g->toGameSettings(), elem->language, Common::kPlatformMacintosh));
+ detectedGames.push_back(DetectedGame(toGameSettings(*g), elem->language, Common::kPlatformMacintosh));
else
- detectedGames.push_back(DetectedGame(g->toGameSettings(), elem->language, elem->platform));
+ detectedGames.push_back(DetectedGame(toGameSettings(*g), elem->language, elem->platform));
exactMatch = true;
}
}
@@ -3587,9 +3577,10 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) {
g = multiple_versions_md5_settings;
while (g->gameid) {
if (!scumm_stricmp(md5, g->gameid)) {
- // Match found
+ // Match found. Copy the data and ensure that we use the correct
+ // gameid (since we abused that field to store the MD5).
game = *g;
- game.gameid = gameid; // FIXME: Fingolfin wonders what this line is good for?
+ game.gameid = gameid;
if (game.extra) {
Common::String desc(findDescriptionFromGameID(gameid));
desc += " (";