[Scummvm-cvs-logs] SF.net SVN: scummvm:[36132] scummvm/trunk

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Jan 29 23:13:02 CET 2009


Revision: 36132
          http://scummvm.svn.sourceforge.net/scummvm/?rev=36132&view=rev
Author:   fingolfin
Date:     2009-01-29 22:13:01 +0000 (Thu, 29 Jan 2009)

Log Message:
-----------
Moved AdvancedDetector from common/ to engines/

Modified Paths:
--------------
    scummvm/trunk/common/module.mk
    scummvm/trunk/engines/agi/detection.cpp
    scummvm/trunk/engines/agos/detection.cpp
    scummvm/trunk/engines/agos/detection_tables.h
    scummvm/trunk/engines/cine/detection.cpp
    scummvm/trunk/engines/cruise/detection.cpp
    scummvm/trunk/engines/drascula/detection.cpp
    scummvm/trunk/engines/gob/detection.cpp
    scummvm/trunk/engines/groovie/detection.cpp
    scummvm/trunk/engines/groovie/groovie.h
    scummvm/trunk/engines/igor/detection.cpp
    scummvm/trunk/engines/kyra/detection.cpp
    scummvm/trunk/engines/lure/detection.cpp
    scummvm/trunk/engines/m4/detection.cpp
    scummvm/trunk/engines/made/detection.cpp
    scummvm/trunk/engines/module.mk
    scummvm/trunk/engines/parallaction/detection.cpp
    scummvm/trunk/engines/saga/detection.cpp
    scummvm/trunk/engines/saga/detection_tables.h
    scummvm/trunk/engines/saga/resource.cpp
    scummvm/trunk/engines/saga/resource_hrs.cpp
    scummvm/trunk/engines/saga/resource_res.cpp
    scummvm/trunk/engines/saga/resource_rsc.cpp
    scummvm/trunk/engines/saga/saga.h
    scummvm/trunk/engines/scumm/detection.cpp
    scummvm/trunk/engines/scumm/detection_tables.h
    scummvm/trunk/engines/sky/detection.cpp
    scummvm/trunk/engines/tinsel/detection.cpp
    scummvm/trunk/engines/touche/detection.cpp
    scummvm/trunk/engines/tucker/detection.cpp

Added Paths:
-----------
    scummvm/trunk/engines/advancedDetector.cpp
    scummvm/trunk/engines/advancedDetector.h

Removed Paths:
-------------
    scummvm/trunk/common/advancedDetector.cpp
    scummvm/trunk/common/advancedDetector.h

Deleted: scummvm/trunk/common/advancedDetector.cpp
===================================================================
--- scummvm/trunk/common/advancedDetector.cpp	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/common/advancedDetector.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -1,519 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#include "base/plugins.h"
-
-#include "common/util.h"
-#include "common/hash-str.h"
-#include "common/file.h"
-#include "common/md5.h"
-#include "common/advancedDetector.h"
-#include "common/config-manager.h"
-
-namespace Common {
-
-/**
- * A list of pointers to ADGameDescription structs (or subclasses thereof).
- */
-typedef Array<const ADGameDescription*> ADGameDescList;
-
-
-/**
- * Detect games in specified directory.
- * Parameters language and platform are used to pass on values
- * specified by the user. I.e. this is used to restrict search scope.
- *
- * @param fslist	FSList to scan or NULL for scanning all specified
- *  default directories.
- * @param params	a ADParams struct containing various parameters
- * @param language	restrict results to specified language only
- * @param platform	restrict results to specified platform only
- * @return	list of ADGameDescription (or subclass) pointers corresponding to matched games
- */
-static ADGameDescList detectGame(const FSList &fslist, const Common::ADParams &params, Language language, Platform platform, const Common::String extra);
-
-
-/**
- * Returns list of targets supported by the engine.
- * Distinguishes engines with single ID
- */
-static GameList gameIDList(const Common::ADParams &params) {
-	if (params.singleid != NULL) {
-		GameList gl;
-
-		const PlainGameDescriptor *g = params.list;
-		while (g->gameid) {
-			if (0 == scumm_stricmp(params.singleid, g->gameid)) {
-				gl.push_back(GameDescriptor(g->gameid, g->description));
-
-				return gl;
-			}
-			g++;
-		}
-		error("Engine %s doesn't have its singleid specified in ids list", params.singleid);
-	}
-
-	return GameList(params.list);
-}
-
-static void upgradeTargetIfNecessary(const Common::ADParams &params) {
-	if (params.obsoleteList == 0)
-		return;
-
-	String gameid = ConfMan.get("gameid");
-
-	for (const Common::ADObsoleteGameID *o = params.obsoleteList; o->from; ++o) {
-		if (gameid.equalsIgnoreCase(o->from)) {
-			gameid = o->to;
-			ConfMan.set("gameid", gameid);
-
-			if (o->platform != Common::kPlatformUnknown)
-				ConfMan.set("platform", Common::getPlatformCode(o->platform));
-
-			warning("Target upgraded from %s to %s", o->from, o->to);
-
-			// WORKAROUND: Fix for bug #1719463: "DETECTOR: Launching
-			// undefined target adds launcher entry"
-			if (ConfMan.hasKey("id_came_from_command_line")) {
-				warning("Target came from command line. Skipping save");
-			} else {
-				ConfMan.flushToDisk();
-			}
-			break;
-		}
-	}
-}
-
-namespace AdvancedDetector {
-
-GameDescriptor findGameID(
-	const char *gameid,
-	const PlainGameDescriptor *list,
-	const Common::ADObsoleteGameID *obsoleteList
-	) {
-	// First search the list of supported game IDs for a match.
-	const PlainGameDescriptor *g = findPlainGameDescriptor(gameid, list);
-	if (g)
-		return GameDescriptor(*g);
-
-	// If we didn't find the gameid in the main list, check if it
-	// is an obsolete game id.
-	if (obsoleteList != 0) {
-		const Common::ADObsoleteGameID *o = obsoleteList;
-		while (o->from) {
-			if (0 == scumm_stricmp(gameid, o->from)) {
-				g = findPlainGameDescriptor(o->to, list);
-				if (g && g->description)
-					return GameDescriptor(gameid, "Obsolete game ID (" + Common::String(g->description) + ")");
-				else
-					return GameDescriptor(gameid, "Obsolete game ID");
-			}
-			o++;
-		}
-	}
-
-	// No match found
-	return GameDescriptor();
-}
-
-}	// End of namespace AdvancedDetector
-
-static GameDescriptor toGameDescriptor(const ADGameDescription &g, const PlainGameDescriptor *sg) {
-	const char *title = 0;
-
-	while (sg->gameid) {
-		if (!scumm_stricmp(g.gameid, sg->gameid))
-			title = sg->description;
-		sg++;
-	}
-
-	GameDescriptor gd(g.gameid, title, g.language, g.platform);
-	gd.updateDesc(g.extra);
-	return gd;
-}
-
-/**
- * Generate a preferred target value as
- *   GAMEID-PLAFORM-LANG
- * or (if ADGF_DEMO has been set)
- *   GAMEID-demo-PLAFORM-LANG
- */
-static String generatePreferredTarget(const String &id, const ADGameDescription *desc) {
-	String res(id);
-
-	if (desc->flags & ADGF_DEMO) {
-		res = res + "-demo";
-	}
-
-	if (desc->flags & ADGF_CD) {
-		res = res + "-cd";
-	}
-
-	if (desc->platform != kPlatformPC && desc->platform != kPlatformUnknown) {
-		res = res + "-" + getPlatformAbbrev(desc->platform);
-	}
-
-	if (desc->language != EN_ANY && desc->language != UNK_LANG && !(desc->flags & ADGF_DROPLANGUAGE)) {
-		res = res + "-" + getLanguageCode(desc->language);
-	}
-
-	return res;
-}
-
-static void updateGameDescriptor(GameDescriptor &desc, const ADGameDescription *realDesc, const Common::ADParams &params) {
-	if (params.singleid != NULL) {
-		desc["preferredtarget"] = desc["gameid"];
-		desc["gameid"] = params.singleid;
-	}
-
-	if (!(params.flags & kADFlagDontAugmentPreferredTarget)) {
-		if (!desc.contains("preferredtarget"))
-			desc["preferredtarget"] = desc["gameid"];
-
-		desc["preferredtarget"] = generatePreferredTarget(desc["preferredtarget"], realDesc);
-	}
-
-	if (params.flags & kADFlagUseExtraAsHint)
-		desc["extra"] = realDesc->extra;
-}
-
-GameList AdvancedMetaEngine::detectGames(const FSList &fslist) const {
-	ADGameDescList matches = detectGame(fslist, params, Common::UNK_LANG, Common::kPlatformUnknown, "");
-	GameList detectedGames;
-
-	// Use fallback detector if there were no matches by other means
-	if (matches.empty()) {
-		const Common::ADGameDescription *fallbackDesc = fallbackDetect(fslist);
-		if (fallbackDesc != 0) {
-			GameDescriptor desc(toGameDescriptor(*fallbackDesc, params.list));
-			updateGameDescriptor(desc, fallbackDesc, params);
-			detectedGames.push_back(desc);
-		}
-	} else for (uint i = 0; i < matches.size(); i++) { // Otherwise use the found matches
-		GameDescriptor desc(toGameDescriptor(*matches[i], params.list));
-		updateGameDescriptor(desc, matches[i], params);
-		detectedGames.push_back(desc);
-	}
-
-	return detectedGames;
-}
-
-Common::Error AdvancedMetaEngine::createInstance(OSystem *syst, Engine **engine) const {
-	assert(engine);
-	upgradeTargetIfNecessary(params);
-
-	const ADGameDescription *agdDesc = 0;
-	Common::Language language = Common::UNK_LANG;
-	Common::Platform platform = Common::kPlatformUnknown;
-	Common::String extra;
-
-	if (ConfMan.hasKey("language"))
-		language = Common::parseLanguage(ConfMan.get("language"));
-	if (ConfMan.hasKey("platform"))
-		platform = Common::parsePlatform(ConfMan.get("platform"));
-	if (params.flags & kADFlagUseExtraAsHint)
-		if (ConfMan.hasKey("extra"))
-			extra = ConfMan.get("extra");
-
-	Common::String gameid = ConfMan.get("gameid");
-
-	Common::String path;
-	if (ConfMan.hasKey("path")) {
-		path = ConfMan.get("path");
-	} else {
-		path = ".";
-		warning("No path was provided. Assuming the data files are in the current directory");
-	}
-	FSNode dir(path);
-	FSList files;
-	if (!dir.isDirectory() || !dir.getChildren(files, FSNode::kListAll)) {
-		warning("Game data path does not exist or is not a directory (%s)", path.c_str());
-		return kNoGameDataFoundError;
-	}
-
-	ADGameDescList matches = detectGame(files, params, language, platform, extra);
-
-	if (params.singleid == NULL) {
-		for (uint i = 0; i < matches.size(); i++) {
-			if (matches[i]->gameid == gameid) {
-				agdDesc = matches[i];
-				break;
-			}
-		}
-	} else if (matches.size() > 0) {
-		agdDesc = matches[0];
-	}
-
-	if (agdDesc == 0) {
-		// Use fallback detector if there were no matches by other means
-		agdDesc = fallbackDetect(files);
-		if (agdDesc != 0) {
-			// Seems we found a fallback match. But first perform a basic
-			// sanity check: the gameid must match.
-			if (params.singleid == NULL && agdDesc->gameid != gameid)
-				agdDesc = 0;
-		}
-	}
-
-	if (agdDesc == 0) {
-		return kNoGameDataFoundError;
-	}
-
-	debug(2, "Running %s", toGameDescriptor(*agdDesc, params.list).description().c_str());
-	if (!createInstance(syst, engine, agdDesc)) {
-		return kNoGameDataFoundError;
-	}
-	return kNoError;
-}
-
-struct SizeMD5 {
-	int size;
-	char md5[32+1];
-};
-
-typedef HashMap<String, SizeMD5, IgnoreCase_Hash, IgnoreCase_EqualTo> SizeMD5Map;
-typedef HashMap<String, FSNode, IgnoreCase_Hash, IgnoreCase_EqualTo> FileMap;
-
-static void reportUnknown(const SizeMD5Map &filesSizeMD5) {
-	// TODO: This message should be cleaned up / made more specific.
-	// For example, we should specify at least which engine triggered this.
-	//
-	// Might also be helpful to display the full path (for when this is used
-	// from the mass detector).
-	printf("Your game version appears to be unknown. Please, report the following\n");
-	printf("data to the ScummVM team along with name of the game you tried to add\n");
-	printf("and its version/language/etc.:\n");
-
-	for (SizeMD5Map::const_iterator file = filesSizeMD5.begin(); file != filesSizeMD5.end(); ++file)
-		printf("  \"%s\", \"%s\", %d\n", file->_key.c_str(), file->_value.md5, file->_value.size);
-
-	printf("\n");
-}
-
-static ADGameDescList detectGameFilebased(const FileMap &allFiles, const Common::ADParams &params);
-
-static ADGameDescList detectGame(const FSList &fslist, const Common::ADParams &params, Language language, Platform platform, const Common::String extra) {
-	FileMap allFiles;
-	SizeMD5Map filesSizeMD5;
-
-	const ADGameFileDescription *fileDesc;
-	const ADGameDescription *g;
-	const byte *descPtr;
-
-	debug(3, "Starting detection");
-
-	// First we compose a hashmap of all files in fslist.
-	// Includes nifty stuff like removing trailing dots and ignoring case.
-	for (FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
-		if (file->isDirectory())
-			continue;
-
-		String tstr = file->getName();
-
-		// Strip any trailing dot
-		if (tstr.lastChar() == '.')
-			tstr.deleteLastChar();
-
-		allFiles[tstr] = *file;	// Record the presence of this file
-	}
-
-	// Check which files are included in some ADGameDescription *and* present
-	// in fslist. Compute MD5s and file sizes for these files.
-	for (descPtr = params.descs; ((const ADGameDescription *)descPtr)->gameid != 0; descPtr += params.descItemSize) {
-		g = (const ADGameDescription *)descPtr;
-
-		for (fileDesc = g->filesDescriptions; fileDesc->fileName; fileDesc++) {
-			String fname = fileDesc->fileName;
-			if (allFiles.contains(fname) && !filesSizeMD5.contains(fname)) {
-				debug(3, "+ %s", fname.c_str());
-
-				SizeMD5 tmp;
-				if (!md5_file_string(allFiles[fname], tmp.md5, params.md5Bytes))
-					tmp.md5[0] = 0;
-
-				debug(3, "> '%s': '%s'", fname.c_str(), tmp.md5);
-
-				File testFile;
-				if (testFile.open(allFiles[fname]))
-					tmp.size = (int32)testFile.size();
-				else
-					tmp.size = -1;
-
-				filesSizeMD5[fname] = tmp;
-			}
-		}
-	}
-
-	ADGameDescList matched;
-	int maxFilesMatched = 0;
-
-	// MD5 based matching
-	uint i;
-	for (i = 0, descPtr = params.descs; ((const ADGameDescription *)descPtr)->gameid != 0; descPtr += params.descItemSize, ++i) {
-		g = (const ADGameDescription *)descPtr;
-		bool fileMissing = false;
-
-		// Do not even bother to look at entries which do not have matching
-		// language and platform (if specified).
-		if ((language != UNK_LANG && g->language != UNK_LANG && g->language != language) ||
-			(platform != kPlatformUnknown && g->platform != kPlatformUnknown && g->platform != platform)) {
-			continue;
-		}
-
-		if ((params.flags & kADFlagUseExtraAsHint) && !extra.empty() && g->extra != extra)
-			continue;
-
-		// Try to match all files for this game
-		for (fileDesc = g->filesDescriptions; fileDesc->fileName; fileDesc++) {
-			String tstr = fileDesc->fileName;
-
-			if (!filesSizeMD5.contains(tstr)) {
-				fileMissing = true;
-				break;
-			}
-
-			if (fileDesc->md5 != NULL && 0 != strcmp(fileDesc->md5, filesSizeMD5[tstr].md5)) {
-				debug(3, "MD5 Mismatch. Skipping (%s) (%s)", fileDesc->md5, filesSizeMD5[tstr].md5);
-				fileMissing = true;
-				break;
-			}
-
-			if (fileDesc->fileSize != -1 && fileDesc->fileSize != filesSizeMD5[tstr].size) {
-				debug(3, "Size Mismatch. Skipping");
-				fileMissing = true;
-				break;
-			}
-
-			debug(3, "Matched file: %s", tstr.c_str());
-		}
-		if (!fileMissing) {
-			debug(2, "Found game: %s (%s %s/%s) (%d)", g->gameid, g->extra,
-			 getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
-
-			// Count the number of matching files. Then, only keep those
-			// entries which match a maximal amount of files.
-			int curFilesMatched = 0;
-			for (fileDesc = g->filesDescriptions; fileDesc->fileName; fileDesc++)
-				curFilesMatched++;
-
-			if (curFilesMatched > maxFilesMatched) {
-				debug(2, " ... new best match, removing all previous candidates");
-				maxFilesMatched = curFilesMatched;
-
-				for (uint j = 0; j < matched.size();) {
-					if (matched[j]->flags & ADGF_KEEPMATCH)
-						 ++j;
-					else
-						matched.remove_at(j);
-				}
-				matched.push_back(g);
-			} else if (curFilesMatched == maxFilesMatched) {
-				matched.push_back(g);
-			} else {
-				debug(2, " ... skipped");
-			}
-
-		} else {
-			debug(5, "Skipping game: %s (%s %s/%s) (%d)", g->gameid, g->extra,
-			 getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
-		}
-	}
-
-	// We didn't find a match
-	if (matched.empty()) {
-		if (!filesSizeMD5.empty())
-			reportUnknown(filesSizeMD5);
-
-		// Filename based fallback
-		if (params.fileBasedFallback != 0)
-			matched = detectGameFilebased(allFiles, params);
-	}
-
-	return matched;
-}
-
-/**
- * Check for each ADFileBasedFallback record whether all files listed
- * in it are present. If multiple pass this test, we pick the one with
- * the maximal number of matching files. In case of a tie, the entry
- * coming first in the list is chosen.
- */
-static ADGameDescList detectGameFilebased(const FileMap &allFiles, const Common::ADParams &params) {
-	const ADFileBasedFallback *ptr;
-	const char* const* filenames;
-
-	int maxNumMatchedFiles = 0;
-	const ADGameDescription *matchedDesc = 0;
-
-	for (ptr = params.fileBasedFallback; ptr->desc; ++ptr) {
-		const ADGameDescription *agdesc = (const ADGameDescription *)ptr->desc;
-		int numMatchedFiles = 0;
-		bool fileMissing = false;
-
-		for (filenames = ptr->filenames; *filenames; ++filenames) {
-			debug(3, "++ %s", *filenames);
-			if (!allFiles.contains(*filenames)) {
-				fileMissing = true;
-				break;
-			}
-
-			numMatchedFiles++;
-		}
-
-		if (!fileMissing) {
-			debug(4, "Matched: %s", agdesc->gameid);
-
-			if (numMatchedFiles > maxNumMatchedFiles) {
-				matchedDesc = agdesc;
-				maxNumMatchedFiles = numMatchedFiles;
-
-				debug(4, "and overriden");
-			}
-		}
-	}
-
-	ADGameDescList matched;
-
-	if (matchedDesc) { // We got a match
-		matched.push_back(matchedDesc);
-		if (params.flags & kADFlagPrintWarningOnFileBasedFallback) {
-			printf("Your game version has been detected using filename matching as a\n");
-			printf("variant of %s.\n", matchedDesc->gameid);
-			printf("If this is an original and unmodified version, please report any\n");
-			printf("information previously printed by ScummVM to the team.\n");
-		}
-	}
-
-	return matched;
-}
-
-GameList AdvancedMetaEngine::getSupportedGames() const {
-	return gameIDList(params);
-}
-GameDescriptor AdvancedMetaEngine::findGame(const char *gameid) const {
-	return AdvancedDetector::findGameID(gameid, params.list, params.obsoleteList);
-}
-
-}	// End of namespace Common

Deleted: scummvm/trunk/common/advancedDetector.h
===================================================================
--- scummvm/trunk/common/advancedDetector.h	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/common/advancedDetector.h	2009-01-29 22:13:01 UTC (rev 36132)
@@ -1,221 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-#ifndef COMMON_ADVANCED_DETECTOR_H
-#define COMMON_ADVANCED_DETECTOR_H
-
-#include "common/fs.h"
-#include "common/error.h"
-
-#include "engines/metaengine.h"
-
-namespace Common {
-
-struct ADGameFileDescription {
-	const char *fileName;
-	uint16 fileType; // Optional. Not used during detection, only by engines.
-	const char *md5; // Optional. May be NULL.
-	int32 fileSize;  // Optional. Set to -1 to ignore.
-};
-
-#define AD_ENTRY1(f, x) {{ f, 0, x, -1}, {NULL, 0, NULL, 0}}
-#define AD_ENTRY1s(f, x, s) {{ f, 0, x, s}, {NULL, 0, NULL, 0}}
-
-enum ADGameFlags {
-	ADGF_NO_FLAGS = 0,
-	ADGF_KEEPMATCH = (1 << 27), // this entry is kept even when there are matched
-								// entries with more files
-	ADGF_DROPLANGUAGE = (1 << 28), // don't add language to gameid
-	ADGF_CD = (1 << 29),    // add "-cd" to gameid
-	ADGF_DEMO = (1 << 30)   // add "-demo" to gameid
-};
-
-struct ADGameDescription {
-	const char *gameid;
-	const char *extra;
-	ADGameFileDescription filesDescriptions[14];
-	Language language;
-	Platform platform;
-
-	/**
-	 * A bitmask of extra flags. The top 8 bits are reserved for generic flags
-	 * defined in the ADGameFlags. This leaves 24 flags to be used by client
-	 * code.
-	 */
-	uint32 flags;
-};
-
-/**
- * End marker for a table of ADGameDescription structs. Use this to
- * terminate a list to be passed to the AdvancedDetector API.
- */
-#define AD_TABLE_END_MARKER	\
-	{ NULL, NULL, { { NULL, 0, NULL, 0 } }, Common::UNK_LANG, Common::kPlatformUnknown, Common::ADGF_NO_FLAGS }
-
-
-struct ADObsoleteGameID {
-	const char *from;
-	const char *to;
-	Common::Platform platform;
-};
-
-struct ADFileBasedFallback {
-	/**
-	 * Pointer to an ADGameDescription or subclass thereof which will get
-	 * returned if there's a detection match.
-	 */
-	const void *desc;
-
-	/**
-	 * A zero-terminated list of filenames used for matching. All files in
-	 * the list must be present to get a detection match.
-	 */
-	const char *filenames[10];
-};
-
-
-enum ADFlags {
-	/**
-	 * Generate/augment preferred target with information on the language (if
-	 * not equal to english) and platform (if not equal to PC).
-	 */
-	kADFlagDontAugmentPreferredTarget = (1 << 0),
-	kADFlagPrintWarningOnFileBasedFallback = (1 << 1),
-	kADFlagUseExtraAsHint = (1 << 2)
-};
-
-/**
- * A structure containing all parameters for the AdvancedDetector.
- * Typically, an engine will have a single instance of this which is
- * used by its AdvancedMetaEngine subclass as a parameter to the
- * primary AdvancedMetaEngine constructor.
- */
-struct ADParams {
-	/**
-	 * Pointer to an array of objects which are either ADGameDescription
-	 * or superset structures (i.e. start with an ADGameDescription member.
-	 * The list is terminated by an entry with a gameid equal to 0
-	 * (see AD_TABLE_END_MARKER).
-	 */
-	const byte *descs;
-
-	/**
-	 * The size of a single entry of the above descs array. Always
-	 * must be >= sizeof(ADGameDescription).
-	 */
-	uint descItemSize;
-
-	/**
-	 * The number of bytes to compute MD5 sum for. The AdvancedDetector
-	 * is primarily based on computing and matching MD5 checksums of files.
-	 * Since doing that for large files can be slow, it can be restricted
-	 * to a subset of all files.
-	 * Typically this will be set to something between 5 and 50 kilobyte,
-	 * but arbitrary non-zero values are possible.
-	 */
-	uint md5Bytes;
-
-	/**
-	 * A list of all gameids (and their corresponding descriptions) supported
-	 * by this engine.
-	 */
-	const PlainGameDescriptor *list;
-
-	/**
-	 * Structure for autoupgrading obsolete targets (optional).
-	 *
-	 * @todo Properly explain this.
-	 */
-	const Common::ADObsoleteGameID *obsoleteList;
-
-	/**
-	 * Name of single gameid (optional).
-	 *
-	 * @todo Properly explain this -- what does it do?
-	 */
-	const char *singleid;
-
-	/**
-	 * List of files for file-based fallback detection (optional).
-	 * This is used if the regular MD5 based detection failed to
-	 * detect anything.
-	 * As usual this list is terminated by an all-zero entry.
-	 *
-	 * @todo Properly explain this
-	 */
-	const ADFileBasedFallback *fileBasedFallback;
-
-	/**
-	 * A bitmask of flags which can be used to configure the behavior
-	 * of the AdvancedDetector. Refer to ADFlags for a list of flags
-	 * that can be ORed together and passed here.
-	 */
-	uint32 flags;
-};
-
-
-namespace AdvancedDetector {
-
-/**
- * Scan through the game descriptors specified in params and search for
- * 'gameid' in there. If a match is found, returns a GameDescriptor
- * with gameid and description set.
- */
-GameDescriptor findGameID(
-	const char *gameid,
-	const PlainGameDescriptor *list,
-	const Common::ADObsoleteGameID *obsoleteList = 0
-	);
-
-} // End of namespace AdvancedDetector
-
-/**
- * A MetaEngine implementation based around the advanced detector code.
- */
-class AdvancedMetaEngine : public MetaEngine {
-	const Common::ADParams ¶ms;
-public:
-	AdvancedMetaEngine(const Common::ADParams &dp) : params(dp) {}
-
-	virtual GameList getSupportedGames() const;
-	virtual GameDescriptor findGame(const char *gameid) const;
-	virtual GameList detectGames(const FSList &fslist) const;
-	virtual Common::Error createInstance(OSystem *syst, Engine **engine) const;
-
-	// To be provided by subclasses
-	virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const = 0;
-
-	/**
-	 * An (optional) generic fallback detect function which is invoked
-	 * if both the regular MD5 based detection as well as the file
-	 * based fallback failed to detect anything.
-	 */
-	virtual const Common::ADGameDescription *fallbackDetect(const FSList &fslist) const {
-		return 0;
-	}
-};
-
-}	// End of namespace Common
-
-#endif

Modified: scummvm/trunk/common/module.mk
===================================================================
--- scummvm/trunk/common/module.mk	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/common/module.mk	2009-01-29 22:13:01 UTC (rev 36132)
@@ -1,7 +1,6 @@
 MODULE := common
 
 MODULE_OBJS := \
-	advancedDetector.o \
 	archive.o \
 	config-file.o \
 	config-manager.o \

Copied: scummvm/trunk/engines/advancedDetector.cpp (from rev 36127, scummvm/trunk/common/advancedDetector.cpp)
===================================================================
--- scummvm/trunk/engines/advancedDetector.cpp	                        (rev 0)
+++ scummvm/trunk/engines/advancedDetector.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -0,0 +1,515 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include "base/plugins.h"
+
+#include "common/util.h"
+#include "common/hash-str.h"
+#include "common/file.h"
+#include "common/md5.h"
+#include "engines/advancedDetector.h"
+#include "common/config-manager.h"
+
+/**
+ * A list of pointers to ADGameDescription structs (or subclasses thereof).
+ */
+typedef Common::Array<const ADGameDescription*> ADGameDescList;
+
+
+/**
+ * Detect games in specified directory.
+ * Parameters language and platform are used to pass on values
+ * specified by the user. I.e. this is used to restrict search scope.
+ *
+ * @param fslist	FSList to scan or NULL for scanning all specified
+ *  default directories.
+ * @param params	a ADParams struct containing various parameters
+ * @param language	restrict results to specified language only
+ * @param platform	restrict results to specified platform only
+ * @return	list of ADGameDescription (or subclass) pointers corresponding to matched games
+ */
+static ADGameDescList detectGame(const Common::FSList &fslist, const ADParams &params, Common::Language language, Common::Platform platform, const Common::String extra);
+
+
+/**
+ * Returns list of targets supported by the engine.
+ * Distinguishes engines with single ID
+ */
+static GameList gameIDList(const ADParams &params) {
+	if (params.singleid != NULL) {
+		GameList gl;
+
+		const PlainGameDescriptor *g = params.list;
+		while (g->gameid) {
+			if (0 == scumm_stricmp(params.singleid, g->gameid)) {
+				gl.push_back(GameDescriptor(g->gameid, g->description));
+
+				return gl;
+			}
+			g++;
+		}
+		error("Engine %s doesn't have its singleid specified in ids list", params.singleid);
+	}
+
+	return GameList(params.list);
+}
+
+static void upgradeTargetIfNecessary(const ADParams &params) {
+	if (params.obsoleteList == 0)
+		return;
+
+	Common::String gameid = ConfMan.get("gameid");
+
+	for (const ADObsoleteGameID *o = params.obsoleteList; o->from; ++o) {
+		if (gameid.equalsIgnoreCase(o->from)) {
+			gameid = o->to;
+			ConfMan.set("gameid", gameid);
+
+			if (o->platform != Common::kPlatformUnknown)
+				ConfMan.set("platform", Common::getPlatformCode(o->platform));
+
+			warning("Target upgraded from %s to %s", o->from, o->to);
+
+			// WORKAROUND: Fix for bug #1719463: "DETECTOR: Launching
+			// undefined target adds launcher entry"
+			if (ConfMan.hasKey("id_came_from_command_line")) {
+				warning("Target came from command line. Skipping save");
+			} else {
+				ConfMan.flushToDisk();
+			}
+			break;
+		}
+	}
+}
+
+namespace AdvancedDetector {
+
+GameDescriptor findGameID(
+	const char *gameid,
+	const PlainGameDescriptor *list,
+	const ADObsoleteGameID *obsoleteList
+	) {
+	// First search the list of supported game IDs for a match.
+	const PlainGameDescriptor *g = findPlainGameDescriptor(gameid, list);
+	if (g)
+		return GameDescriptor(*g);
+
+	// If we didn't find the gameid in the main list, check if it
+	// is an obsolete game id.
+	if (obsoleteList != 0) {
+		const ADObsoleteGameID *o = obsoleteList;
+		while (o->from) {
+			if (0 == scumm_stricmp(gameid, o->from)) {
+				g = findPlainGameDescriptor(o->to, list);
+				if (g && g->description)
+					return GameDescriptor(gameid, "Obsolete game ID (" + Common::String(g->description) + ")");
+				else
+					return GameDescriptor(gameid, "Obsolete game ID");
+			}
+			o++;
+		}
+	}
+
+	// No match found
+	return GameDescriptor();
+}
+
+}	// End of namespace AdvancedDetector
+
+static GameDescriptor toGameDescriptor(const ADGameDescription &g, const PlainGameDescriptor *sg) {
+	const char *title = 0;
+
+	while (sg->gameid) {
+		if (!scumm_stricmp(g.gameid, sg->gameid))
+			title = sg->description;
+		sg++;
+	}
+
+	GameDescriptor gd(g.gameid, title, g.language, g.platform);
+	gd.updateDesc(g.extra);
+	return gd;
+}
+
+/**
+ * Generate a preferred target value as
+ *   GAMEID-PLAFORM-LANG
+ * or (if ADGF_DEMO has been set)
+ *   GAMEID-demo-PLAFORM-LANG
+ */
+static Common::String generatePreferredTarget(const Common::String &id, const ADGameDescription *desc) {
+	Common::String res(id);
+
+	if (desc->flags & ADGF_DEMO) {
+		res = res + "-demo";
+	}
+
+	if (desc->flags & ADGF_CD) {
+		res = res + "-cd";
+	}
+
+	if (desc->platform != Common::kPlatformPC && desc->platform != Common::kPlatformUnknown) {
+		res = res + "-" + getPlatformAbbrev(desc->platform);
+	}
+
+	if (desc->language != Common::EN_ANY && desc->language != Common::UNK_LANG && !(desc->flags & ADGF_DROPLANGUAGE)) {
+		res = res + "-" + getLanguageCode(desc->language);
+	}
+
+	return res;
+}
+
+static void updateGameDescriptor(GameDescriptor &desc, const ADGameDescription *realDesc, const ADParams &params) {
+	if (params.singleid != NULL) {
+		desc["preferredtarget"] = desc["gameid"];
+		desc["gameid"] = params.singleid;
+	}
+
+	if (!(params.flags & kADFlagDontAugmentPreferredTarget)) {
+		if (!desc.contains("preferredtarget"))
+			desc["preferredtarget"] = desc["gameid"];
+
+		desc["preferredtarget"] = generatePreferredTarget(desc["preferredtarget"], realDesc);
+	}
+
+	if (params.flags & kADFlagUseExtraAsHint)
+		desc["extra"] = realDesc->extra;
+}
+
+GameList AdvancedMetaEngine::detectGames(const Common::FSList &fslist) const {
+	ADGameDescList matches = detectGame(fslist, params, Common::UNK_LANG, Common::kPlatformUnknown, "");
+	GameList detectedGames;
+
+	// Use fallback detector if there were no matches by other means
+	if (matches.empty()) {
+		const ADGameDescription *fallbackDesc = fallbackDetect(fslist);
+		if (fallbackDesc != 0) {
+			GameDescriptor desc(toGameDescriptor(*fallbackDesc, params.list));
+			updateGameDescriptor(desc, fallbackDesc, params);
+			detectedGames.push_back(desc);
+		}
+	} else for (uint i = 0; i < matches.size(); i++) { // Otherwise use the found matches
+		GameDescriptor desc(toGameDescriptor(*matches[i], params.list));
+		updateGameDescriptor(desc, matches[i], params);
+		detectedGames.push_back(desc);
+	}
+
+	return detectedGames;
+}
+
+Common::Error AdvancedMetaEngine::createInstance(OSystem *syst, Engine **engine) const {
+	assert(engine);
+	upgradeTargetIfNecessary(params);
+
+	const ADGameDescription *agdDesc = 0;
+	Common::Language language = Common::UNK_LANG;
+	Common::Platform platform = Common::kPlatformUnknown;
+	Common::String extra;
+
+	if (ConfMan.hasKey("language"))
+		language = Common::parseLanguage(ConfMan.get("language"));
+	if (ConfMan.hasKey("platform"))
+		platform = Common::parsePlatform(ConfMan.get("platform"));
+	if (params.flags & kADFlagUseExtraAsHint)
+		if (ConfMan.hasKey("extra"))
+			extra = ConfMan.get("extra");
+
+	Common::String gameid = ConfMan.get("gameid");
+
+	Common::String path;
+	if (ConfMan.hasKey("path")) {
+		path = ConfMan.get("path");
+	} else {
+		path = ".";
+		warning("No path was provided. Assuming the data files are in the current directory");
+	}
+	Common::FSNode dir(path);
+	Common::FSList files;
+	if (!dir.isDirectory() || !dir.getChildren(files, Common::FSNode::kListAll)) {
+		warning("Game data path does not exist or is not a directory (%s)", path.c_str());
+		return Common::kNoGameDataFoundError;
+	}
+
+	ADGameDescList matches = detectGame(files, params, language, platform, extra);
+
+	if (params.singleid == NULL) {
+		for (uint i = 0; i < matches.size(); i++) {
+			if (matches[i]->gameid == gameid) {
+				agdDesc = matches[i];
+				break;
+			}
+		}
+	} else if (matches.size() > 0) {
+		agdDesc = matches[0];
+	}
+
+	if (agdDesc == 0) {
+		// Use fallback detector if there were no matches by other means
+		agdDesc = fallbackDetect(files);
+		if (agdDesc != 0) {
+			// Seems we found a fallback match. But first perform a basic
+			// sanity check: the gameid must match.
+			if (params.singleid == NULL && agdDesc->gameid != gameid)
+				agdDesc = 0;
+		}
+	}
+
+	if (agdDesc == 0) {
+		return Common::kNoGameDataFoundError;
+	}
+
+	debug(2, "Running %s", toGameDescriptor(*agdDesc, params.list).description().c_str());
+	if (!createInstance(syst, engine, agdDesc)) {
+		return Common::kNoGameDataFoundError;
+	}
+	return Common::kNoError;
+}
+
+struct SizeMD5 {
+	int size;
+	char md5[32+1];
+};
+
+typedef Common::HashMap<Common::String, SizeMD5, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> SizeMD5Map;
+typedef Common::HashMap<Common::String, Common::FSNode, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> FileMap;
+
+static void reportUnknown(const SizeMD5Map &filesSizeMD5) {
+	// TODO: This message should be cleaned up / made more specific.
+	// For example, we should specify at least which engine triggered this.
+	//
+	// Might also be helpful to display the full path (for when this is used
+	// from the mass detector).
+	printf("Your game version appears to be unknown. Please, report the following\n");
+	printf("data to the ScummVM team along with name of the game you tried to add\n");
+	printf("and its version/language/etc.:\n");
+
+	for (SizeMD5Map::const_iterator file = filesSizeMD5.begin(); file != filesSizeMD5.end(); ++file)
+		printf("  \"%s\", \"%s\", %d\n", file->_key.c_str(), file->_value.md5, file->_value.size);
+
+	printf("\n");
+}
+
+static ADGameDescList detectGameFilebased(const FileMap &allFiles, const ADParams &params);
+
+static ADGameDescList detectGame(const Common::FSList &fslist, const ADParams &params, Common::Language language, Common::Platform platform, const Common::String extra) {
+	FileMap allFiles;
+	SizeMD5Map filesSizeMD5;
+
+	const ADGameFileDescription *fileDesc;
+	const ADGameDescription *g;
+	const byte *descPtr;
+
+	debug(3, "Starting detection");
+
+	// First we compose a hashmap of all files in fslist.
+	// Includes nifty stuff like removing trailing dots and ignoring case.
+	for (Common::FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
+		if (file->isDirectory())
+			continue;
+
+		Common::String tstr = file->getName();
+
+		// Strip any trailing dot
+		if (tstr.lastChar() == '.')
+			tstr.deleteLastChar();
+
+		allFiles[tstr] = *file;	// Record the presence of this file
+	}
+
+	// Check which files are included in some ADGameDescription *and* present
+	// in fslist. Compute MD5s and file sizes for these files.
+	for (descPtr = params.descs; ((const ADGameDescription *)descPtr)->gameid != 0; descPtr += params.descItemSize) {
+		g = (const ADGameDescription *)descPtr;
+
+		for (fileDesc = g->filesDescriptions; fileDesc->fileName; fileDesc++) {
+			Common::String fname = fileDesc->fileName;
+			if (allFiles.contains(fname) && !filesSizeMD5.contains(fname)) {
+				debug(3, "+ %s", fname.c_str());
+
+				SizeMD5 tmp;
+				if (!md5_file_string(allFiles[fname], tmp.md5, params.md5Bytes))
+					tmp.md5[0] = 0;
+
+				debug(3, "> '%s': '%s'", fname.c_str(), tmp.md5);
+
+				Common::File testFile;
+				if (testFile.open(allFiles[fname]))
+					tmp.size = (int32)testFile.size();
+				else
+					tmp.size = -1;
+
+				filesSizeMD5[fname] = tmp;
+			}
+		}
+	}
+
+	ADGameDescList matched;
+	int maxFilesMatched = 0;
+
+	// MD5 based matching
+	uint i;
+	for (i = 0, descPtr = params.descs; ((const ADGameDescription *)descPtr)->gameid != 0; descPtr += params.descItemSize, ++i) {
+		g = (const ADGameDescription *)descPtr;
+		bool fileMissing = false;
+
+		// Do not even bother to look at entries which do not have matching
+		// language and platform (if specified).
+		if ((language != Common::UNK_LANG && g->language != Common::UNK_LANG && g->language != language) ||
+			(platform != Common::kPlatformUnknown && g->platform != Common::kPlatformUnknown && g->platform != platform)) {
+			continue;
+		}
+
+		if ((params.flags & kADFlagUseExtraAsHint) && !extra.empty() && g->extra != extra)
+			continue;
+
+		// Try to match all files for this game
+		for (fileDesc = g->filesDescriptions; fileDesc->fileName; fileDesc++) {
+			Common::String tstr = fileDesc->fileName;
+
+			if (!filesSizeMD5.contains(tstr)) {
+				fileMissing = true;
+				break;
+			}
+
+			if (fileDesc->md5 != NULL && 0 != strcmp(fileDesc->md5, filesSizeMD5[tstr].md5)) {
+				debug(3, "MD5 Mismatch. Skipping (%s) (%s)", fileDesc->md5, filesSizeMD5[tstr].md5);
+				fileMissing = true;
+				break;
+			}
+
+			if (fileDesc->fileSize != -1 && fileDesc->fileSize != filesSizeMD5[tstr].size) {
+				debug(3, "Size Mismatch. Skipping");
+				fileMissing = true;
+				break;
+			}
+
+			debug(3, "Matched file: %s", tstr.c_str());
+		}
+		if (!fileMissing) {
+			debug(2, "Found game: %s (%s %s/%s) (%d)", g->gameid, g->extra,
+			 getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
+
+			// Count the number of matching files. Then, only keep those
+			// entries which match a maximal amount of files.
+			int curFilesMatched = 0;
+			for (fileDesc = g->filesDescriptions; fileDesc->fileName; fileDesc++)
+				curFilesMatched++;
+
+			if (curFilesMatched > maxFilesMatched) {
+				debug(2, " ... new best match, removing all previous candidates");
+				maxFilesMatched = curFilesMatched;
+
+				for (uint j = 0; j < matched.size();) {
+					if (matched[j]->flags & ADGF_KEEPMATCH)
+						 ++j;
+					else
+						matched.remove_at(j);
+				}
+				matched.push_back(g);
+			} else if (curFilesMatched == maxFilesMatched) {
+				matched.push_back(g);
+			} else {
+				debug(2, " ... skipped");
+			}
+
+		} else {
+			debug(5, "Skipping game: %s (%s %s/%s) (%d)", g->gameid, g->extra,
+			 getPlatformDescription(g->platform), getLanguageDescription(g->language), i);
+		}
+	}
+
+	// We didn't find a match
+	if (matched.empty()) {
+		if (!filesSizeMD5.empty())
+			reportUnknown(filesSizeMD5);
+
+		// Filename based fallback
+		if (params.fileBasedFallback != 0)
+			matched = detectGameFilebased(allFiles, params);
+	}
+
+	return matched;
+}
+
+/**
+ * Check for each ADFileBasedFallback record whether all files listed
+ * in it are present. If multiple pass this test, we pick the one with
+ * the maximal number of matching files. In case of a tie, the entry
+ * coming first in the list is chosen.
+ */
+static ADGameDescList detectGameFilebased(const FileMap &allFiles, const ADParams &params) {
+	const ADFileBasedFallback *ptr;
+	const char* const* filenames;
+
+	int maxNumMatchedFiles = 0;
+	const ADGameDescription *matchedDesc = 0;
+
+	for (ptr = params.fileBasedFallback; ptr->desc; ++ptr) {
+		const ADGameDescription *agdesc = (const ADGameDescription *)ptr->desc;
+		int numMatchedFiles = 0;
+		bool fileMissing = false;
+
+		for (filenames = ptr->filenames; *filenames; ++filenames) {
+			debug(3, "++ %s", *filenames);
+			if (!allFiles.contains(*filenames)) {
+				fileMissing = true;
+				break;
+			}
+
+			numMatchedFiles++;
+		}
+
+		if (!fileMissing) {
+			debug(4, "Matched: %s", agdesc->gameid);
+
+			if (numMatchedFiles > maxNumMatchedFiles) {
+				matchedDesc = agdesc;
+				maxNumMatchedFiles = numMatchedFiles;
+
+				debug(4, "and overriden");
+			}
+		}
+	}
+
+	ADGameDescList matched;
+
+	if (matchedDesc) { // We got a match
+		matched.push_back(matchedDesc);
+		if (params.flags & kADFlagPrintWarningOnFileBasedFallback) {
+			printf("Your game version has been detected using filename matching as a\n");
+			printf("variant of %s.\n", matchedDesc->gameid);
+			printf("If this is an original and unmodified version, please report any\n");
+			printf("information previously printed by ScummVM to the team.\n");
+		}
+	}
+
+	return matched;
+}
+
+GameList AdvancedMetaEngine::getSupportedGames() const {
+	return gameIDList(params);
+}
+GameDescriptor AdvancedMetaEngine::findGame(const char *gameid) const {
+	return AdvancedDetector::findGameID(gameid, params.list, params.obsoleteList);
+}

Copied: scummvm/trunk/engines/advancedDetector.h (from rev 36127, scummvm/trunk/common/advancedDetector.h)
===================================================================
--- scummvm/trunk/engines/advancedDetector.h	                        (rev 0)
+++ scummvm/trunk/engines/advancedDetector.h	2009-01-29 22:13:01 UTC (rev 36132)
@@ -0,0 +1,218 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+#ifndef ENGINES_ADVANCED_DETECTOR_H
+#define ENGINES_ADVANCED_DETECTOR_H
+
+#include "common/fs.h"
+#include "common/error.h"
+
+#include "engines/metaengine.h"
+
+
+struct ADGameFileDescription {
+	const char *fileName;
+	uint16 fileType; // Optional. Not used during detection, only by engines.
+	const char *md5; // Optional. May be NULL.
+	int32 fileSize;  // Optional. Set to -1 to ignore.
+};
+
+#define AD_ENTRY1(f, x) {{ f, 0, x, -1}, {NULL, 0, NULL, 0}}
+#define AD_ENTRY1s(f, x, s) {{ f, 0, x, s}, {NULL, 0, NULL, 0}}
+
+enum ADGameFlags {
+	ADGF_NO_FLAGS = 0,
+	ADGF_KEEPMATCH = (1 << 27), // this entry is kept even when there are matched
+								// entries with more files
+	ADGF_DROPLANGUAGE = (1 << 28), // don't add language to gameid
+	ADGF_CD = (1 << 29),    // add "-cd" to gameid
+	ADGF_DEMO = (1 << 30)   // add "-demo" to gameid
+};
+
+struct ADGameDescription {
+	const char *gameid;
+	const char *extra;
+	ADGameFileDescription filesDescriptions[14];
+	Common::Language language;
+	Common::Platform platform;
+
+	/**
+	 * A bitmask of extra flags. The top 8 bits are reserved for generic flags
+	 * defined in the ADGameFlags. This leaves 24 flags to be used by client
+	 * code.
+	 */
+	uint32 flags;
+};
+
+/**
+ * End marker for a table of ADGameDescription structs. Use this to
+ * terminate a list to be passed to the AdvancedDetector API.
+ */
+#define AD_TABLE_END_MARKER	\
+	{ NULL, NULL, { { NULL, 0, NULL, 0 } }, Common::UNK_LANG, Common::kPlatformUnknown, ADGF_NO_FLAGS }
+
+
+struct ADObsoleteGameID {
+	const char *from;
+	const char *to;
+	Common::Platform platform;
+};
+
+struct ADFileBasedFallback {
+	/**
+	 * Pointer to an ADGameDescription or subclass thereof which will get
+	 * returned if there's a detection match.
+	 */
+	const void *desc;
+
+	/**
+	 * A zero-terminated list of filenames used for matching. All files in
+	 * the list must be present to get a detection match.
+	 */
+	const char *filenames[10];
+};
+
+
+enum ADFlags {
+	/**
+	 * Generate/augment preferred target with information on the language (if
+	 * not equal to english) and platform (if not equal to PC).
+	 */
+	kADFlagDontAugmentPreferredTarget = (1 << 0),
+	kADFlagPrintWarningOnFileBasedFallback = (1 << 1),
+	kADFlagUseExtraAsHint = (1 << 2)
+};
+
+/**
+ * A structure containing all parameters for the AdvancedDetector.
+ * Typically, an engine will have a single instance of this which is
+ * used by its AdvancedMetaEngine subclass as a parameter to the
+ * primary AdvancedMetaEngine constructor.
+ */
+struct ADParams {
+	/**
+	 * Pointer to an array of objects which are either ADGameDescription
+	 * or superset structures (i.e. start with an ADGameDescription member.
+	 * The list is terminated by an entry with a gameid equal to 0
+	 * (see AD_TABLE_END_MARKER).
+	 */
+	const byte *descs;
+
+	/**
+	 * The size of a single entry of the above descs array. Always
+	 * must be >= sizeof(ADGameDescription).
+	 */
+	uint descItemSize;
+
+	/**
+	 * The number of bytes to compute MD5 sum for. The AdvancedDetector
+	 * is primarily based on computing and matching MD5 checksums of files.
+	 * Since doing that for large files can be slow, it can be restricted
+	 * to a subset of all files.
+	 * Typically this will be set to something between 5 and 50 kilobyte,
+	 * but arbitrary non-zero values are possible.
+	 */
+	uint md5Bytes;
+
+	/**
+	 * A list of all gameids (and their corresponding descriptions) supported
+	 * by this engine.
+	 */
+	const PlainGameDescriptor *list;
+
+	/**
+	 * Structure for autoupgrading obsolete targets (optional).
+	 *
+	 * @todo Properly explain this.
+	 */
+	const ADObsoleteGameID *obsoleteList;
+
+	/**
+	 * Name of single gameid (optional).
+	 *
+	 * @todo Properly explain this -- what does it do?
+	 */
+	const char *singleid;
+
+	/**
+	 * List of files for file-based fallback detection (optional).
+	 * This is used if the regular MD5 based detection failed to
+	 * detect anything.
+	 * As usual this list is terminated by an all-zero entry.
+	 *
+	 * @todo Properly explain this
+	 */
+	const ADFileBasedFallback *fileBasedFallback;
+
+	/**
+	 * A bitmask of flags which can be used to configure the behavior
+	 * of the AdvancedDetector. Refer to ADFlags for a list of flags
+	 * that can be ORed together and passed here.
+	 */
+	uint32 flags;
+};
+
+
+namespace AdvancedDetector {
+
+/**
+ * Scan through the game descriptors specified in params and search for
+ * 'gameid' in there. If a match is found, returns a GameDescriptor
+ * with gameid and description set.
+ */
+GameDescriptor findGameID(
+	const char *gameid,
+	const PlainGameDescriptor *list,
+	const ADObsoleteGameID *obsoleteList = 0
+	);
+
+} // End of namespace AdvancedDetector
+
+/**
+ * A MetaEngine implementation based around the advanced detector code.
+ */
+class AdvancedMetaEngine : public MetaEngine {
+	const ADParams ¶ms;
+public:
+	AdvancedMetaEngine(const ADParams &dp) : params(dp) {}
+
+	virtual GameList getSupportedGames() const;
+	virtual GameDescriptor findGame(const char *gameid) const;
+	virtual GameList detectGames(const Common::FSList &fslist) const;
+	virtual Common::Error createInstance(OSystem *syst, Engine **engine) const;
+
+	// To be provided by subclasses
+	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const = 0;
+
+	/**
+	 * An (optional) generic fallback detect function which is invoked
+	 * if both the regular MD5 based detection as well as the file
+	 * based fallback failed to detect anything.
+	 */
+	virtual const ADGameDescription *fallbackDetect(const Common::FSList &fslist) const {
+		return 0;
+	}
+};
+
+#endif

Modified: scummvm/trunk/engines/agi/detection.cpp
===================================================================
--- scummvm/trunk/engines/agi/detection.cpp	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/engines/agi/detection.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -25,7 +25,7 @@
 
 #include "base/plugins.h"
 
-#include "common/advancedDetector.h"
+#include "engines/advancedDetector.h"
 #include "common/config-manager.h"
 #include "common/file.h"
 #include "graphics/thumbnail.h"
@@ -38,7 +38,7 @@
 namespace Agi {
 
 struct AGIGameDescription {
-	Common::ADGameDescription desc;
+	ADGameDescription desc;
 
 	int gameID;
 	int gameType;
@@ -114,7 +114,7 @@
 			AD_ENTRY1s(fname,md5,size),		\
 			lang, \
 			platform, \
-			Common::ADGF_NO_FLAGS \
+			ADGF_NO_FLAGS \
 		}, \
 		gid, \
 		interp, \
@@ -237,7 +237,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GID_GOLDRUSH,
 		GType_V3,
@@ -484,7 +484,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GID_SQ2,
 		GType_V2,
@@ -612,7 +612,7 @@
 			AD_ENTRY1("logdir", "421da3a18004122a966d64ab6bd86d2e"),
 			Common::RU_RUS,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GID_FANMADE,
 		GType_V2,
@@ -628,7 +628,7 @@
 			AD_ENTRY1("logdir", "aaea5b4a348acb669d13b0e6f22d4dc9"),
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GID_GETOUTTASQ,
 		GType_V2,
@@ -787,7 +787,7 @@
 		AD_ENTRY1(0, 0), // This should always be AD_ENTRY1(0, 0) in the fallback descriptor
 		Common::UNK_LANG,
 		Common::kPlatformPC,
-		Common::ADGF_NO_FLAGS
+		ADGF_NO_FLAGS
 	},
 	GID_FANMADE,
 	GType_V2,
@@ -795,7 +795,7 @@
 	0x2917,
 };
 
-static const Common::ADParams detectionParams = {
+static const ADParams detectionParams = {
 	// Pointer to ADGameDescription or its superset structure
 	(const byte *)Agi::gameDescriptions,
 	// Size of that superset structure
@@ -818,12 +818,12 @@
 
 using namespace Agi;
 
-class AgiMetaEngine : public Common::AdvancedMetaEngine {
+class AgiMetaEngine : public AdvancedMetaEngine {
 	mutable Common::String	_gameid;
 	mutable Common::String	_extra;
 
 public:
-	AgiMetaEngine() : Common::AdvancedMetaEngine(detectionParams) {}
+	AgiMetaEngine() : AdvancedMetaEngine(detectionParams) {}
 
 	virtual const char *getName() const {
 		return "AGI preAGI + v2 + v3 Engine";
@@ -833,13 +833,13 @@
 	}
 
 	virtual bool hasFeature(MetaEngineFeature f) const;
-	virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
+	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
 	virtual SaveStateList listSaves(const char *target) const;
 	virtual int getMaximumSaveSlot() const;
 	virtual void removeSaveState(const char *target, int slot) const;
 	SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
 
-	const Common::ADGameDescription *fallbackDetect(const Common::FSList &fslist) const;
+	const ADGameDescription *fallbackDetect(const Common::FSList &fslist) const;
 };
 
 bool AgiMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -860,7 +860,7 @@
 }
 
 
-bool AgiMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const {
+bool AgiMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
 	const Agi::AGIGameDescription *gd = (const Agi::AGIGameDescription *)desc;
 	bool res = true;
 
@@ -977,7 +977,7 @@
 	return SaveStateDescriptor();
 }
 
-const Common::ADGameDescription *AgiMetaEngine::fallbackDetect(const Common::FSList &fslist) const {
+const ADGameDescription *AgiMetaEngine::fallbackDetect(const Common::FSList &fslist) const {
 	typedef Common::HashMap<Common::String, int32> IntMap;
 	IntMap allFiles;
 	bool matchedUsingFilenames = false;
@@ -994,7 +994,7 @@
 	// Set the default values for the fallback descriptor's ADGameDescription part.
 	g_fallbackDesc.desc.language = Common::UNK_LANG;
 	g_fallbackDesc.desc.platform = Common::kPlatformPC;
-	g_fallbackDesc.desc.flags = Common::ADGF_NO_FLAGS;
+	g_fallbackDesc.desc.flags = ADGF_NO_FLAGS;
 
 	// Set default values for the fallback descriptor's AGIGameDescription part.
 	g_fallbackDesc.gameID = GID_FANMADE;
@@ -1135,7 +1135,7 @@
 		printf("If this is an original and unmodified version or new made Fanmade game,\n");
 		printf("please report any, information previously printed by ScummVM to the team.\n");
 
-		return (const Common::ADGameDescription *)&g_fallbackDesc;
+		return (const ADGameDescription *)&g_fallbackDesc;
 	}
 
 	return 0;

Modified: scummvm/trunk/engines/agos/detection.cpp
===================================================================
--- scummvm/trunk/engines/agos/detection.cpp	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/engines/agos/detection.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -25,7 +25,7 @@
 
 #include "base/plugins.h"
 
-#include "common/advancedDetector.h"
+#include "engines/advancedDetector.h"
 #include "common/config-manager.h"
 #include "common/savefile.h"
 #include "common/system.h"
@@ -35,7 +35,7 @@
 namespace AGOS {
 
 struct AGOSGameDescription {
-	Common::ADGameDescription desc;
+	ADGameDescription desc;
 
 	int gameType;
 	int gameId;
@@ -49,7 +49,7 @@
  * corresponding new target and platform combination.
  *
  */
-static const Common::ADObsoleteGameID obsoleteGameIDsTable[] = {
+static const ADObsoleteGameID obsoleteGameIDsTable[] = {
 	{"simon1acorn", "simon1", Common::kPlatformAcorn},
 	{"simon1amiga", "simon1", Common::kPlatformAmiga},
 	{"simon1cd32", "simon1", Common::kPlatformAmiga},
@@ -80,7 +80,7 @@
 
 #include "agos/detection_tables.h"
 
-static const Common::ADParams detectionParams = {
+static const ADParams detectionParams = {
 	// Pointer to ADGameDescription or its superset structure
 	(const byte *)AGOS::gameDescriptions,
 	// Size of that superset structure
@@ -99,9 +99,9 @@
 	0
 };
 
-class AgosMetaEngine : public Common::AdvancedMetaEngine {
+class AgosMetaEngine : public AdvancedMetaEngine {
 public:
-	AgosMetaEngine() : Common::AdvancedMetaEngine(detectionParams) {}
+	AgosMetaEngine() : AdvancedMetaEngine(detectionParams) {}
 
 	virtual const char *getName() const {
 		return "AGOS";
@@ -112,7 +112,7 @@
 	}
 
 	virtual bool hasFeature(MetaEngineFeature f) const;
-	virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
+	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
 	virtual SaveStateList listSaves(const char *target) const;
 	virtual int getMaximumSaveSlot() const;
 };
@@ -127,7 +127,7 @@
 		(f == kSupportsRTL);
 }
 
-bool AgosMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const {
+bool AgosMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
 	const AGOS::AGOSGameDescription *gd = (const AGOS::AGOSGameDescription *)desc;
 	bool res = true;
 

Modified: scummvm/trunk/engines/agos/detection_tables.h
===================================================================
--- scummvm/trunk/engines/agos/detection_tables.h	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/engines/agos/detection_tables.h	2009-01-29 22:13:01 UTC (rev 36132)
@@ -40,7 +40,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_ELVIRA1,
@@ -60,7 +60,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -80,7 +80,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -100,7 +100,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -122,7 +122,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAtariST,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_ELVIRA1,
@@ -144,7 +144,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -166,7 +166,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -188,7 +188,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -210,7 +210,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -232,7 +232,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -254,7 +254,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA1,
@@ -279,7 +279,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -304,7 +304,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -329,7 +329,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -354,7 +354,7 @@
 			},
 			Common::IT_ITA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -379,7 +379,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -404,7 +404,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -429,7 +429,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -455,7 +455,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -480,7 +480,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -505,7 +505,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -530,7 +530,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -555,7 +555,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -580,7 +580,7 @@
 			},
 			Common::IT_ITA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -605,7 +605,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -630,7 +630,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_ELVIRA2,
@@ -656,7 +656,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_WW,
@@ -682,7 +682,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_WW,
@@ -704,7 +704,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_WW,
@@ -732,7 +732,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_WW,
@@ -760,7 +760,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_WW,
@@ -783,7 +783,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAcorn,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -807,7 +807,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAcorn,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_SIMON1,
@@ -831,7 +831,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAcorn,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -854,7 +854,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -877,7 +877,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_SIMON1,
@@ -900,7 +900,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -923,7 +923,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -946,7 +946,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -969,7 +969,7 @@
 			},
 			Common::IT_ITA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -992,7 +992,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1015,7 +1015,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1038,7 +1038,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_SIMON1,
@@ -1061,7 +1061,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1084,7 +1084,7 @@
 			},
 			Common::CZ_CZE,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1107,7 +1107,7 @@
 			},
 			Common::RU_RUS,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1130,7 +1130,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1153,7 +1153,7 @@
 			},
 			Common::CZ_CZE,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1176,7 +1176,7 @@
 			},
 			Common::RU_RUS,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1199,7 +1199,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1222,7 +1222,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1245,7 +1245,7 @@
 			},
 			Common::IT_ITA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1268,7 +1268,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1292,7 +1292,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_SIMON1,
@@ -1316,7 +1316,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1340,7 +1340,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1364,7 +1364,7 @@
 			},
 			Common::RU_RUS,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1388,7 +1388,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1412,7 +1412,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1436,7 +1436,7 @@
 			},
 			Common::HB_ISR,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1460,7 +1460,7 @@
 			},
 			Common::IT_ITA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1485,7 +1485,7 @@
 			// FIXME: DOS version which uses WAV format
 			Common::IT_ITA,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1509,7 +1509,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1533,7 +1533,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1557,7 +1557,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON1,
@@ -1581,7 +1581,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1605,7 +1605,7 @@
 			},
 			Common::RU_RUS,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1629,7 +1629,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1653,7 +1653,7 @@
 			},
 			Common::IT_ITA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1677,7 +1677,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_SIMON2,
@@ -1701,7 +1701,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 
 		GType_SIMON2,
@@ -1725,7 +1725,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1749,7 +1749,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1773,7 +1773,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1797,7 +1797,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1821,7 +1821,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1845,7 +1845,7 @@
 			},
 			Common::HB_ISR,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1870,7 +1870,7 @@
 			// FIXME: DOS version which uses WAV format
 			Common::IT_ITA,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1894,7 +1894,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1918,7 +1918,7 @@
 			},
 			Common::CZ_CZE,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1942,7 +1942,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1966,7 +1966,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -1990,7 +1990,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -2014,7 +2014,7 @@
 			},
 			Common::PL_POL,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_SIMON2,
@@ -2037,7 +2037,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2060,7 +2060,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2083,7 +2083,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2106,7 +2106,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2129,7 +2129,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2152,7 +2152,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2174,7 +2174,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2196,7 +2196,7 @@
 			},
 			Common::PL_POL,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2218,7 +2218,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2240,7 +2240,7 @@
 			},
 			Common::FR_FRA,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2262,7 +2262,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2284,7 +2284,7 @@
 			},
 			Common::IT_ITA,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2306,7 +2306,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_FF,
@@ -2326,7 +2326,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_PP,
@@ -2346,7 +2346,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_PP,
@@ -2366,7 +2366,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_PP,
@@ -2386,7 +2386,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_PP,
@@ -2406,7 +2406,7 @@
 			},
 			Common::DE_DEU,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_PP,
@@ -2426,7 +2426,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformWindows,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 
 		GType_PP,

Modified: scummvm/trunk/engines/cine/detection.cpp
===================================================================
--- scummvm/trunk/engines/cine/detection.cpp	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/engines/cine/detection.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -27,7 +27,7 @@
 
 #include "base/plugins.h"
 
-#include "common/advancedDetector.h"
+#include "engines/advancedDetector.h"
 #include "common/system.h"
 
 #include "cine/cine.h"
@@ -36,7 +36,7 @@
 namespace Cine {
 
 struct CINEGameDescription {
-	Common::ADGameDescription desc;
+	ADGameDescription desc;
 
 	int gameType;
 	uint32 features;
@@ -56,7 +56,7 @@
 	{0, 0}
 };
 
-static const Common::ADObsoleteGameID obsoleteGameIDsTable[] = {
+static const ADObsoleteGameID obsoleteGameIDsTable[] = {
 	{"fw", "cine", Common::kPlatformUnknown},
 	{"os", "cine", Common::kPlatformUnknown},
 	{0, 0, Common::kPlatformUnknown}
@@ -72,7 +72,7 @@
 			AD_ENTRY1("part01", "61d003202d301c29dd399acfb1354310"),
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -91,7 +91,7 @@
 			},
 			Common::EN_USA,
 			Common::kPlatformPC,
-			Common::ADGF_CD
+			ADGF_CD
 		},
 		GType_FW,
 		GF_CD | GF_CRYPTED_BOOT_PRC,
@@ -105,7 +105,7 @@
 			AD_ENTRY1("part01", "91d7271155520eae6915a9dd2dac120c"),
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -118,7 +118,7 @@
 			AD_ENTRY1("part01", "f5e98fcca3fb5e7afa284c81c39d8b14"),
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		GF_ALT_FONT,
@@ -131,7 +131,7 @@
 			AD_ENTRY1("part01", "570109f965c7f53984b98c83d86eb206"),
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		GF_ALT_FONT,
@@ -144,7 +144,7 @@
 			AD_ENTRY1("part01", "5d1acb97abe9591f9008e00d07add95a"),
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -157,7 +157,7 @@
 			AD_ENTRY1("part01", "57afd280b598b4180fda6689fbedc4b8"),
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -170,7 +170,7 @@
 			AD_ENTRY1("part01", "3a87a913e0e33963a48a7f822ca0eb0e"),
 			Common::DE_DEU,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		GF_ALT_FONT,
@@ -183,7 +183,7 @@
 			AD_ENTRY1("part01", "5ad0007ccd5f7b3dd6b15ea7f281f9e1"),
 			Common::ES_ESP,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -196,7 +196,7 @@
 			AD_ENTRY1("part01", "460f2da8793bc581a2d4b6fc19ccb5ae"),
 			Common::FR_FRA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -209,7 +209,7 @@
 			AD_ENTRY1("part01", "1c8e5207743172134409ac58860021af"),
 			Common::IT_ITA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -226,7 +226,7 @@
 			},
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		GType_FW,
 		0,
@@ -239,7 +239,7 @@
 			AD_ENTRY1("part01", "36050db13af57e462ca1adc4df99de4e"),
 			Common::EN_ANY,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -252,7 +252,7 @@
 			AD_ENTRY1("part01", "ef245573b7dab0d4825ceb98e37cef4d"),
 			Common::FR_FRA,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_FW,
 		0,
@@ -265,7 +265,7 @@
 			AD_ENTRY1("procs00",	"d6752e7d25924cb866b61eb7cb0c8b56"),
 			Common::EN_GRB,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -280,7 +280,7 @@
 			AD_ENTRY1("procs1", "9629129b86979fa592c1787385bf3695"),
 			Common::EN_GRB,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -293,7 +293,7 @@
 			AD_ENTRY1("procs1", "d8c3a9d05a63e4cfa801826a7063a126"),
 			Common::EN_USA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -306,7 +306,7 @@
 			AD_ENTRY1("procs00", "862a75d76fb7fffec30e52be9ad1c474"),
 			Common::EN_USA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		GF_CD,
@@ -319,7 +319,7 @@
 			AD_ENTRY1("procs1", "39b91ae35d1297ce0a76a1a803ca1593"),
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -332,7 +332,7 @@
 			AD_ENTRY1("procs1", "74c2dabd9d212525fca8875a5f6d8994"),
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -349,7 +349,7 @@
 			},
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		GF_CD,
@@ -362,7 +362,7 @@
 			AD_ENTRY1("procs00", "f143567f08cfd1a9b1c9a41c89eadfef"),
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -375,7 +375,7 @@
 			AD_ENTRY1("procs1", "da066e6b8dd93f2502c2a3755f08dc12"),
 			Common::IT_ITA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -388,7 +388,7 @@
 			AD_ENTRY1("procs0", "a9da5531ead0ebf9ad387fa588c0cbb0"),
 			Common::EN_GRB,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -401,7 +401,7 @@
 			AD_ENTRY1("procs0", "8a429ced2f4acff8a15ae125174042e8"),
 			Common::EN_GRB,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -414,7 +414,7 @@
 			AD_ENTRY1("procs0", "d5f27e33fc29c879f36f15b86ccfa58c"),
 			Common::EN_USA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -427,7 +427,7 @@
 			AD_ENTRY1("procs0", "8b7dce249821d3a62b314399c4334347"),
 			Common::DE_DEU,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -440,7 +440,7 @@
 			AD_ENTRY1("procs0", "35fc295ddd0af9da932d256ba799a4b0"),
 			Common::ES_ESP,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -453,7 +453,7 @@
 			AD_ENTRY1("procs0", "d4ea4a97e01fa67ea066f9e785050ed2"),
 			Common::FR_FRA,
 			Common::kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -466,7 +466,7 @@
 			AD_ENTRY1("demo", "8d3a750d1c840b1b1071e42f9e6f6aa2"),
 			Common::EN_GRB,
 			Common::kPlatformAmiga,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		GType_OS,
 		GF_DEMO,
@@ -479,7 +479,7 @@
 			AD_ENTRY1("procs0", "1501d5ae364b2814a33ed19347c3fcae"),
 			Common::EN_GRB,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -492,7 +492,7 @@
 			AD_ENTRY1("procs0", "2148d25de3219dd4a36580ca735d0afa"),
 			Common::FR_FRA,
 			Common::kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_OS,
 		0,
@@ -503,7 +503,7 @@
 
 } // End of namespace Cine
 
-static const Common::ADParams detectionParams = {
+static const ADParams detectionParams = {
 	// Pointer to ADGameDescription or its superset structure
 	(const byte *)Cine::gameDescriptions,
 	// Size of that superset structure
@@ -522,9 +522,9 @@
 	0
 };
 
-class CineMetaEngine : public Common::AdvancedMetaEngine {
+class CineMetaEngine : public AdvancedMetaEngine {
 public:
-	CineMetaEngine() : Common::AdvancedMetaEngine(detectionParams) {}
+	CineMetaEngine() : AdvancedMetaEngine(detectionParams) {}
 
 	virtual const char *getName() const {
 		return "Cinematique evo 1 engine";
@@ -534,7 +534,7 @@
 		return "Future Wars & Operation Stealth (C) Delphine Software";
 	}
 
-	virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
+	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
 	virtual bool hasFeature(MetaEngineFeature f) const;
 	virtual SaveStateList listSaves(const char *target) const;
 	virtual int getMaximumSaveSlot() const;
@@ -555,7 +555,7 @@
 		(f == kSupportsSavingDuringRuntime);
 }
 
-bool CineMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const {
+bool CineMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
 	const Cine::CINEGameDescription *gd = (const Cine::CINEGameDescription *)desc;
 	if (gd) {
 		*engine = new Cine::CineEngine(syst, gd);

Modified: scummvm/trunk/engines/cruise/detection.cpp
===================================================================
--- scummvm/trunk/engines/cruise/detection.cpp	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/engines/cruise/detection.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -27,14 +27,14 @@
 
 #include "base/plugins.h"
 
-#include "common/advancedDetector.h"
+#include "engines/advancedDetector.h"
 
 #include "cruise/cruise.h"
 
 namespace Cruise {
 
 struct CRUISEGameDescription {
-	Common::ADGameDescription desc;
+	ADGameDescription desc;
 
 	int gameType;
 	uint32 features;
@@ -61,7 +61,7 @@
 	{0, 0}
 };
 
-static const Common::ADObsoleteGameID obsoleteGameIDsTable[] = {
+static const ADObsoleteGameID obsoleteGameIDsTable[] = {
 	{"cruise", "cruise", Common::kPlatformUnknown},
 	{0, 0, Common::kPlatformUnknown}
 };
@@ -76,7 +76,7 @@
 			AD_ENTRY1("D1", "41a7a4d426dbd048eb369cfee4bb2717"),
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_CRUISE,
 		0,
@@ -88,7 +88,7 @@
 			AD_ENTRY1("D1", "a90d2b9ead6b4d812cd14268672cf178"),
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_CRUISE,
 		0,
@@ -100,7 +100,7 @@
 			AD_ENTRY1("D1", "e258865807ea31b2d523340e6f0a606b"),
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_CRUISE,
 		0,
@@ -112,7 +112,7 @@
 			AD_ENTRY1("D1", "f2a26522d49983c4ae32bcccbb801b02"),
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_CRUISE,
 		0,
@@ -124,7 +124,7 @@
 			AD_ENTRY1("D1", "e19a4ab2e24a69087e4ea994a5506231"),
 			Common::IT_ITA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_CRUISE,
 		0,
@@ -136,7 +136,7 @@
 			AD_ENTRY1("D1", "9a302ada55600d96061fda1d63a6ccda"),
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		GType_CRUISE,
 		0,
@@ -146,7 +146,7 @@
 
 }
 
-static const Common::ADParams detectionParams = {
+static const ADParams detectionParams = {
 	// Pointer to ADGameDescription or its superset structure
 	(const byte *)Cruise::gameDescriptions,
 	// Size of that superset structure
@@ -165,9 +165,9 @@
 	0
 };
 
-class CruiseMetaEngine : public Common::AdvancedMetaEngine {
+class CruiseMetaEngine : public AdvancedMetaEngine {
 public:
-	CruiseMetaEngine() : Common::AdvancedMetaEngine(detectionParams) {}
+	CruiseMetaEngine() : AdvancedMetaEngine(detectionParams) {}
 
 	virtual const char *getName() const {
 		return "Cinematique evo 2 engine";
@@ -177,10 +177,10 @@
 		return "Cruise for a Corpse (C) Delphine Software";
 	}
 
-	virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
+	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
 };
 
-bool CruiseMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const {
+bool CruiseMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
 	const Cruise::CRUISEGameDescription *gd = (const Cruise::CRUISEGameDescription *)desc;
 	if (gd) {
 		*engine = new Cruise::CruiseEngine(syst, gd);

Modified: scummvm/trunk/engines/drascula/detection.cpp
===================================================================
--- scummvm/trunk/engines/drascula/detection.cpp	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/engines/drascula/detection.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -25,7 +25,7 @@
 
 #include "base/plugins.h"
 
-#include "common/advancedDetector.h"
+#include "engines/advancedDetector.h"
 #include "common/file.h"
 
 #include "drascula/drascula.h"
@@ -34,7 +34,7 @@
 namespace Drascula {
 
 struct DrasculaGameDescription {
-	Common::ADGameDescription desc;
+	ADGameDescription desc;
 };
 
 uint32 DrasculaEngine::getFeatures() const {
@@ -46,7 +46,7 @@
 }
 
 void DrasculaEngine::loadArchives() {
-	const Common::ADGameFileDescription *ag;
+	const ADGameFileDescription *ag;
 
 	if (getFeatures() & GF_PACKED) {
 		for (ag = _gameDescription->desc.filesDescriptions; ag->fileName; ag++)
@@ -76,7 +76,7 @@
 			AD_ENTRY1s("14.ald", "09b2735953edcd43af115c65ae00b10e", 1595),
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 	},
 
@@ -88,7 +88,7 @@
 			AD_ENTRY1s("packet.001", "c6a8697396e213a18472542d5f547cb4", 32847563),
 			Common::EN_ANY,
 			Common::kPlatformPC,
-			Common::ADGF_KEEPMATCH | GF_PACKED
+			ADGF_KEEPMATCH | GF_PACKED
 		},
 	},
 
@@ -144,7 +144,7 @@
 			AD_ENTRY1s("14.ald", "0746ed1a5cc8d9728f790c29813f4b43", 23059),
 			Common::ES_ESP,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 	},
 
@@ -156,7 +156,7 @@
 			AD_ENTRY1s("14.ald", "72e46089033d56bad1c179ac36e2a9d2", 610),
 			Common::DE_DEU,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 	},
 
@@ -168,7 +168,7 @@
 			AD_ENTRY1s("14.ald", "eeeee96b82169003630e08992248296c", 608),
 			Common::FR_FRA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 	},
 
@@ -191,7 +191,7 @@
 			AD_ENTRY1s("14.ald", "02b49a18328d0bf2efe6ba658c9c7a1d", 2098),
 			Common::IT_ITA,
 			Common::kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 	},
 
@@ -232,7 +232,7 @@
 
 } // End of namespace Drascula
 
-static const Common::ADParams detectionParams = {
+static const ADParams detectionParams = {
 	// Pointer to ADGameDescription or its superset structure
 	(const byte *)Drascula::gameDescriptions,
 	// Size of that superset structure
@@ -251,9 +251,9 @@
 	0
 };
 
-class DrasculaMetaEngine : public Common::AdvancedMetaEngine {
+class DrasculaMetaEngine : public AdvancedMetaEngine {
 public:
-	DrasculaMetaEngine() : Common::AdvancedMetaEngine(detectionParams) {}
+	DrasculaMetaEngine() : AdvancedMetaEngine(detectionParams) {}
 
 	virtual const char *getName() const {
 		return "Drascula Engine";
@@ -263,10 +263,10 @@
 		return "Drascula Engine (C) 2000 Alcachofa Soft, 1996 (C) Digital Dreams Multimedia, 1994 (C) Emilio de Paz";
 	}
 
-	virtual bool createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const;
+	virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const;
 };
 
-bool DrasculaMetaEngine::createInstance(OSystem *syst, Engine **engine, const Common::ADGameDescription *desc) const {
+bool DrasculaMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
 	const Drascula::DrasculaGameDescription *gd = (const Drascula::DrasculaGameDescription *)desc;
 	if (gd) {
 		*engine = new Drascula::DrasculaEngine(syst, gd);

Modified: scummvm/trunk/engines/gob/detection.cpp
===================================================================
--- scummvm/trunk/engines/gob/detection.cpp	2009-01-29 22:09:06 UTC (rev 36131)
+++ scummvm/trunk/engines/gob/detection.cpp	2009-01-29 22:13:01 UTC (rev 36132)
@@ -24,14 +24,14 @@
  */
 
 #include "base/plugins.h"
-#include "common/advancedDetector.h"
+#include "engines/advancedDetector.h"
 
 #include "gob/gob.h"
 
 namespace Gob {
 
 struct GOBGameDescription {
-	Common::ADGameDescription desc;
+	ADGameDescription desc;
 
 	GameType gameType;
 	int32 features;
@@ -77,7 +77,7 @@
 			AD_ENTRY1("intro.stk", "c65e9cc8ba23a38456242e1f2b1caad4"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesEGA,
@@ -90,7 +90,7 @@
 			AD_ENTRY1("intro.stk", "f9233283a0be2464248d83e14b95f09c"),
 			RU_RUS,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesEGA,
@@ -103,7 +103,7 @@
 			AD_ENTRY1("intro.stk", "26a9118c0770fa5ac93a9626761600b2"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
@@ -116,7 +116,7 @@
 			AD_ENTRY1s("intro.stk", "e157cb59c6d330ca70d12ab0ef1dd12b", 288972),
 			EN_GRB,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
@@ -129,7 +129,7 @@
 			AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -142,7 +142,7 @@
 			AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -155,7 +155,7 @@
 			AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -168,7 +168,7 @@
 			AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"),
 			IT_ITA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -181,7 +181,7 @@
 			AD_ENTRY1("intro.stk", "2fbf4b5b82bbaee87eb45d4404c28998"),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -194,7 +194,7 @@
 			AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -207,7 +207,7 @@
 			AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -220,7 +220,7 @@
 			AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -233,7 +233,7 @@
 			AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"),
 			IT_ITA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -246,7 +246,7 @@
 			AD_ENTRY1("intro.stk", "8bd873137b6831c896ee8ad217a6a398"),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesCD,
@@ -259,7 +259,7 @@
 			AD_ENTRY1("intro.stk", "972f22c6ff8144a6636423f0354ca549"),
 			UNK_LANG,
 			kPlatformAmiga,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
@@ -272,7 +272,7 @@
 			AD_ENTRY1("intro.stk", "e72bd1e3828c7dec4c8a3e58c48bdfdb"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
@@ -285,7 +285,7 @@
 			AD_ENTRY1s("intro.stk", "a796096280d5efd48cf8e7dfbe426eb5", 193595),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
@@ -298,7 +298,7 @@
 			AD_ENTRY1s("intro.stk", "6d837c6380d8f4d984c9f6cc0026df4f", 192712),
 			EN_ANY,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesNone,
@@ -311,7 +311,7 @@
 			AD_ENTRY1("intro.stk", "00a42a7d2d22e6b6ab1b8c673c4ed267"),
 			EN_ANY,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
@@ -324,7 +324,7 @@
 			AD_ENTRY1("intro.stk", "00a42a7d2d22e6b6ab1b8c673c4ed267"),
 			DE_DEU,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
@@ -337,7 +337,7 @@
 			AD_ENTRY1("intro.stk", "00a42a7d2d22e6b6ab1b8c673c4ed267"),
 			FR_FRA,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
@@ -350,7 +350,7 @@
 			AD_ENTRY1("intro.stk", "00a42a7d2d22e6b6ab1b8c673c4ed267"),
 			IT_ITA,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
@@ -363,7 +363,7 @@
 			AD_ENTRY1("intro.stk", "00a42a7d2d22e6b6ab1b8c673c4ed267"),
 			ES_ESP,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob1,
 		kFeaturesAdlib,
@@ -376,7 +376,7 @@
 			AD_ENTRY1s("intro.stk", "a13ecb4f6d8fd881ebbcc02e45cb5475", 837275),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -393,7 +393,7 @@
 			},
 			FR_FRA,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -406,7 +406,7 @@
 			AD_ENTRY1s("intro.stk", "5f53c56e3aa2f1e76c2e4f0caa15887f", 829232),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -419,7 +419,7 @@
 			AD_ENTRY1("intro.stk", "b45b984ee8017efd6ea965b9becd4d66"),
 			EN_GRB,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -436,7 +436,7 @@
 			},
 			UNK_LANG,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -449,7 +449,7 @@
 			AD_ENTRY1("intro.stk", "dedb5d31d8c8050a8cf77abedcc53dae"),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -462,7 +462,7 @@
 			AD_ENTRY1s("intro.stk", "25a99827cd59751a80bed9620fb677a0", 893302),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -475,7 +475,7 @@
 			AD_ENTRY1("intro.stk", "a13892cdf4badda85a6f6fb47603a128"),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -488,7 +488,7 @@
 			AD_ENTRY1("intro.stk", "cd3e1df8b273636ee32e34b7064f50e8"),
 			RU_RUS,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -501,7 +501,7 @@
 			AD_ENTRY1s("intro.stk", "eebf2810122cfd17399260cd1468e994", 554014),
 			EN_ANY,
 			kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
@@ -514,7 +514,7 @@
 			AD_ENTRY1("intro.stk", "d28b9e9b41f31acfa58dcd12406c7b2c"),
 			DE_DEU,
 			kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
@@ -527,7 +527,7 @@
 			AD_ENTRY1("intro.stk", "3e4e7db0d201587dd2df4003b2993ef6"),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -540,7 +540,7 @@
 			AD_ENTRY1s("intro.stk", "4b13c02d1069b86bcfec80f4e474b98b", 554680),
 			FR_FRA,
 			kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
@@ -553,7 +553,7 @@
 			AD_ENTRY1("intro.stk", "9de5fbb41cf97182109e5fecc9d90347"),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
@@ -566,7 +566,7 @@
 			AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"),
 			EN_ANY,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
@@ -579,7 +579,7 @@
 			AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
@@ -592,7 +592,7 @@
 			AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
@@ -605,7 +605,7 @@
 			AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"),
 			IT_ITA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
@@ -618,7 +618,7 @@
 			AD_ENTRY1("intro.stk", "24a6b32757752ccb1917ce92fd7c2a04"),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesCD,
@@ -631,7 +631,7 @@
 			AD_ENTRY1("intro.stk", "8b1c98ff2ab2e14f47a1b891e9b92217"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -644,7 +644,7 @@
 			AD_ENTRY1("intro.stk", "cf1c95b2939bd8ff58a25c756cb6125e"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -657,7 +657,7 @@
 			AD_ENTRY1("intro.stk", "4b278c2678ea01383fd5ca114d947eea"),
 			UNK_LANG,
 			kPlatformAmiga,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
@@ -670,7 +670,7 @@
 			AD_ENTRY1s("intro.stk", "9fa85aea959fa8c582085855fbd99346", 553063),
 			UNK_LANG,
 			kPlatformAmiga,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeGob2,
 		kFeaturesNone,
@@ -683,7 +683,7 @@
 			AD_ENTRY1("intro.stk", "2bb8878a8042244dd2b96ff682381baa"),
 			EN_GRB,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -696,7 +696,7 @@
 			AD_ENTRY1s("intro.stk", "de92e5c6a8c163007ffceebef6e67f7d", 7117568),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -709,7 +709,7 @@
 			AD_ENTRY1s("intro.stk", "6d60f9205ecfbd8735da2ee7823a70dc", 7014426),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -726,7 +726,7 @@
 			},
 			EN_GRB,
 			kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
@@ -743,7 +743,7 @@
 			},
 			EN_GRB,
 			kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
@@ -756,7 +756,7 @@
 			AD_ENTRY1s("intro.stk", "af83debf2cbea21faa591c7b4608fe92", 458192),
 			DE_DEU,
 			kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
@@ -769,7 +769,7 @@
 			AD_ENTRY1s("intro.stk", "257fe669705ac4971efdfd5656eef16a", 457719),
 			FR_FRA,
 			kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
@@ -782,7 +782,7 @@
 			AD_ENTRY1s("intro.stk", "dffd1ab98fe76150d6933329ca6f4cc4", 459458),
 			FR_FRA,
 			kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
@@ -795,7 +795,7 @@
 			AD_ENTRY1("intro.stk", "e6d13fb3b858cb4f78a8780d184d5b2c"),
 			FR_FRA,
 			kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesNone,
@@ -808,7 +808,7 @@
 			AD_ENTRY1("intro.stk", "4b10525a3782aa7ecd9d833b5c1d308b"),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -821,7 +821,7 @@
 			AD_ENTRY1("intro.stk", "63170e71f04faba88673b3f510f9c4c8"),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -834,7 +834,7 @@
 			AD_ENTRY1s("intro.stk", "8b57cd510da8a3bbd99e3a0297a8ebd1", 7018771),
 			IT_ITA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -847,7 +847,7 @@
 			AD_ENTRY1("intro.stk", "2e9c2898f6bf206ede801e3b2e7ee428"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -860,7 +860,7 @@
 			AD_ENTRY1("intro.stk", "15fb91a1b9b09684b28ac75edf66e504"),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeWeen,
 		kFeaturesAdlib,
@@ -873,7 +873,7 @@
 			AD_ENTRY1("intro.stk", "da3c54be18ab73fbdb32db24624a9c23"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
@@ -886,7 +886,7 @@
 			AD_ENTRY1s("intro.stk", "2f54b330d21f65b04b7c1f8cca76426c", 262109),
 			FR_FRA,
 			kPlatformAtariST,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
@@ -899,7 +899,7 @@
 			AD_ENTRY1s("intro.stk", "11103b304286c23945560b391fd37e7d", 3181890),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
@@ -912,7 +912,7 @@
 			AD_ENTRY1s("intro.stk", "da3c54be18ab73fbdb32db24624a9c23", 3181825),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
@@ -925,7 +925,7 @@
 			AD_ENTRY1s("intro.stk", "569d679fe41d49972d34c9fce5930dda", 269825),
 			EN_ANY,
 			kPlatformAmiga,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
@@ -938,7 +938,7 @@
 			AD_ENTRY1s("intro.stk", "00f6b4e2ee26e5c40b488e2df5adcf03", 3975580),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
@@ -951,7 +951,7 @@
 			AD_ENTRY1s("intro.stk", "da3c54be18ab73fbdb32db24624a9c23", 3181825),
 			IT_ITA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeBargon,
 		kFeaturesNone,
@@ -964,7 +964,7 @@
 			AD_ENTRY1s("intro.stk", "e453bea7b28a67c930764d945f64d898", 3913628),
 			EN_ANY,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob2,
 		kFeaturesAdlib,
@@ -977,7 +977,7 @@
 			AD_ENTRY1s("intro.stk", "7b7f48490dedc8a7cb999388e2fadbe3", 3930674),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
@@ -990,7 +990,7 @@
 			AD_ENTRY1s("intro.stk", "3712e7527ba8ce5637d2aadf62783005", 72318),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
@@ -1003,7 +1003,7 @@
 			AD_ENTRY1s("intro.stk", "f1f78b663893b58887add182a77df151", 3944090),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
@@ -1016,7 +1016,7 @@
 			AD_ENTRY1s("intro.stk", "cd322cb3c64ef2ba2f2134aa2122cfe9", 3936700),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
@@ -1033,7 +1033,7 @@
 			},
 			FR_FRA,
 			kPlatformMacintosh,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
@@ -1046,7 +1046,7 @@
 			AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1059,7 +1059,7 @@
 			AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1072,7 +1072,7 @@
 			AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170),
 			IT_ITA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1085,7 +1085,7 @@
 			AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1098,7 +1098,7 @@
 			AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1111,7 +1111,7 @@
 			AD_ENTRY1s("intro.stk", "6263d09e996c1b4e84ef2d650b820e57", 4831170),
 			EN_GRB,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1124,7 +1124,7 @@
 			AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904),
 			EN_USA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1137,7 +1137,7 @@
 			AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904),
 			FR_FRA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1150,7 +1150,7 @@
 			AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904),
 			IT_ITA,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1163,7 +1163,7 @@
 			AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904),
 			DE_DEU,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1176,7 +1176,7 @@
 			AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904),
 			ES_ESP,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1189,7 +1189,7 @@
 			AD_ENTRY1s("intro.stk", "795be7011ec31bf5bb8ce4efdb9ee5d3", 4838904),
 			EN_GRB,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeLostInTime,
 		kFeaturesCD,
@@ -1202,7 +1202,7 @@
 			AD_ENTRY1("demo.stk", "c06f8cc20eb239d4c71f225ce3093edf"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
@@ -1215,7 +1215,7 @@
 			AD_ENTRY1("demo.stk", "2eba8abd9e3878c57307576012dd2fec"),
 			UNK_LANG,
 			kPlatformPC,
-			Common::ADGF_DEMO
+			ADGF_DEMO
 		},
 		kGameTypeLostInTime,
 		kFeaturesAdlib,
@@ -1228,7 +1228,7 @@
 			AD_ENTRY1s("intro.stk", "32b0f57f5ae79a9ae97e8011df38af42", 157084),
 			EN_GRB,
 			kPlatformPC,
-			Common::ADGF_NO_FLAGS
+			ADGF_NO_FLAGS
 		},
 		kGameTypeGob3,
 		kFeaturesAdlib,
@@ -1241,7 +1241,7 @@

@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list