mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 09:23:37 +00:00
Removed the now unused GF_SCI0_OLDGETTIME flag and simplified all of the game entries in the detector
svn-id: r44856
This commit is contained in:
parent
d95ed75789
commit
b91ae69ad2
@ -33,8 +33,6 @@
|
||||
|
||||
namespace Sci {
|
||||
|
||||
#define GF_FOR_SCI0_BEFORE_629 GF_SCI0_OLDGETTIME
|
||||
|
||||
// Titles of the games
|
||||
static const PlainGameDescriptor SciGameTitles[] = {
|
||||
{"sci", "Sierra SCI Game"},
|
||||
@ -113,17 +111,14 @@ static const PlainGameDescriptor SciGameTitles[] = {
|
||||
* The fallback game descriptor used by the SCI engine's fallbackDetector.
|
||||
* Contents of this struct are to be overwritten by the fallbackDetector.
|
||||
*/
|
||||
static SciGameDescription s_fallbackDesc = {
|
||||
{
|
||||
"",
|
||||
"",
|
||||
AD_ENTRY1(0, 0), // This should always be AD_ENTRY1(0, 0) in the fallback descriptor
|
||||
Common::UNK_LANG,
|
||||
Common::kPlatformPC,
|
||||
ADGF_NO_FLAGS,
|
||||
Common::GUIO_NONE
|
||||
},
|
||||
0
|
||||
static ADGameDescription s_fallbackDesc = {
|
||||
"",
|
||||
"",
|
||||
AD_ENTRY1(0, 0), // This should always be AD_ENTRY1(0, 0) in the fallback descriptor
|
||||
Common::UNK_LANG,
|
||||
Common::kPlatformPC,
|
||||
ADGF_NO_FLAGS,
|
||||
Common::GUIO_NONE
|
||||
};
|
||||
|
||||
|
||||
@ -131,7 +126,7 @@ static const ADParams detectionParams = {
|
||||
// Pointer to ADGameDescription or its superset structure
|
||||
(const byte *)Sci::SciGameDescriptions,
|
||||
// Size of that superset structure
|
||||
sizeof(SciGameDescription),
|
||||
sizeof(ADGameDescription),
|
||||
// Number of bytes to compute MD5 sum for
|
||||
5000,
|
||||
// List of all engine targets
|
||||
@ -196,11 +191,11 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
bool smallResource000Size = false;
|
||||
|
||||
// Set some defaults
|
||||
s_fallbackDesc.desc.extra = "";
|
||||
s_fallbackDesc.desc.language = Common::EN_ANY;
|
||||
s_fallbackDesc.desc.flags = ADGF_NO_FLAGS;
|
||||
s_fallbackDesc.desc.platform = Common::kPlatformPC; // default to PC platform
|
||||
s_fallbackDesc.desc.gameid = "sci";
|
||||
s_fallbackDesc.extra = "";
|
||||
s_fallbackDesc.language = Common::EN_ANY;
|
||||
s_fallbackDesc.flags = ADGF_NO_FLAGS;
|
||||
s_fallbackDesc.platform = Common::kPlatformPC; // default to PC platform
|
||||
s_fallbackDesc.gameid = "sci";
|
||||
|
||||
// First grab all filenames
|
||||
for (Common::FSList::const_iterator file = fslist.begin(); file != fslist.end(); ++file) {
|
||||
@ -236,8 +231,8 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
Common::SeekableReadStream *tmpStream = file->createReadStream();
|
||||
if (tmpStream->size() > 10 * 1024 * 1024) {
|
||||
// We got a CD version, so set the CD flag accordingly
|
||||
s_fallbackDesc.desc.flags |= ADGF_CD;
|
||||
s_fallbackDesc.desc.extra = "CD";
|
||||
s_fallbackDesc.flags |= ADGF_CD;
|
||||
s_fallbackDesc.extra = "CD";
|
||||
}
|
||||
delete tmpStream;
|
||||
}
|
||||
@ -257,11 +252,11 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
// The existence of any of these files indicates an Amiga game
|
||||
if (filename.contains("9.pat") || filename.contains("spal") ||
|
||||
filename.contains("patch.005") || filename.contains("bank.001"))
|
||||
s_fallbackDesc.desc.platform = Common::kPlatformAmiga;
|
||||
s_fallbackDesc.platform = Common::kPlatformAmiga;
|
||||
|
||||
// The existence of 7.pat indicates a Mac game
|
||||
if (filename.contains("7.pat"))
|
||||
s_fallbackDesc.desc.platform = Common::kPlatformMacintosh;
|
||||
s_fallbackDesc.platform = Common::kPlatformMacintosh;
|
||||
|
||||
// The data files for Atari ST versions are the same as their DOS counterparts
|
||||
}
|
||||
@ -293,12 +288,12 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
#endif
|
||||
|
||||
// EGA views
|
||||
if (gameViews == kViewEga && s_fallbackDesc.desc.platform != Common::kPlatformAmiga)
|
||||
s_fallbackDesc.desc.extra = "EGA";
|
||||
if (gameViews == kViewEga && s_fallbackDesc.platform != Common::kPlatformAmiga)
|
||||
s_fallbackDesc.extra = "EGA";
|
||||
|
||||
// Set the platform to Amiga if the game is using Amiga views
|
||||
if (gameViews == kViewAmiga)
|
||||
s_fallbackDesc.desc.platform = Common::kPlatformAmiga;
|
||||
s_fallbackDesc.platform = Common::kPlatformAmiga;
|
||||
|
||||
// Determine the game id
|
||||
SegManager *segMan = new SegManager(resMan);
|
||||
@ -312,7 +307,7 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
reg_t game_obj = segMan->lookupScriptExport(0, 0);
|
||||
const char *gameName = segMan->getObjectName(game_obj);
|
||||
debug(2, "Detected ID: \"%s\" at %04x:%04x", gameName, PRINT_REG(game_obj));
|
||||
s_fallbackDesc.desc.gameid = convertSierraGameId(gameName, &s_fallbackDesc.desc.flags);
|
||||
s_fallbackDesc.gameid = convertSierraGameId(gameName, &s_fallbackDesc.flags);
|
||||
delete segMan;
|
||||
|
||||
// Try to determine the game language
|
||||
@ -329,7 +324,7 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
if (text) {
|
||||
while (seeker < text->size) {
|
||||
if (text->data[seeker] == '#') {
|
||||
s_fallbackDesc.desc.language = charToScummVMLanguage(text->data[seeker + 1]);
|
||||
s_fallbackDesc.language = charToScummVMLanguage(text->data[seeker + 1]);
|
||||
break;
|
||||
}
|
||||
seeker++;
|
||||
@ -339,31 +334,31 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
delete resMan;
|
||||
|
||||
// Distinguish demos from full versions
|
||||
if (!strcmp(s_fallbackDesc.desc.gameid, "castlebrain") && !Common::File::exists("resource.002")) {
|
||||
if (!strcmp(s_fallbackDesc.gameid, "castlebrain") && !Common::File::exists("resource.002")) {
|
||||
// The Spanish full version doesn't have resource.002, but we can distinguish it from the
|
||||
// demo from the size of resource.000
|
||||
if (smallResource000Size)
|
||||
s_fallbackDesc.desc.flags |= ADGF_DEMO;
|
||||
s_fallbackDesc.flags |= ADGF_DEMO;
|
||||
}
|
||||
|
||||
if (!strcmp(s_fallbackDesc.desc.gameid, "islandbrain") && smallResource000Size)
|
||||
s_fallbackDesc.desc.flags |= ADGF_DEMO;
|
||||
if (!strcmp(s_fallbackDesc.gameid, "islandbrain") && smallResource000Size)
|
||||
s_fallbackDesc.flags |= ADGF_DEMO;
|
||||
|
||||
if (!strcmp(s_fallbackDesc.desc.gameid, "kq6") && smallResource000Size)
|
||||
s_fallbackDesc.desc.flags |= ADGF_DEMO;
|
||||
if (!strcmp(s_fallbackDesc.gameid, "kq6") && smallResource000Size)
|
||||
s_fallbackDesc.flags |= ADGF_DEMO;
|
||||
|
||||
// Fill in extras field
|
||||
if (!strcmp(s_fallbackDesc.desc.gameid, "lsl1sci") ||
|
||||
!strcmp(s_fallbackDesc.desc.gameid, "pq1sci") ||
|
||||
!strcmp(s_fallbackDesc.desc.gameid, "sq1sci"))
|
||||
s_fallbackDesc.desc.extra = "VGA Remake";
|
||||
if (!strcmp(s_fallbackDesc.gameid, "lsl1sci") ||
|
||||
!strcmp(s_fallbackDesc.gameid, "pq1sci") ||
|
||||
!strcmp(s_fallbackDesc.gameid, "sq1sci"))
|
||||
s_fallbackDesc.extra = "VGA Remake";
|
||||
|
||||
if (!strcmp(s_fallbackDesc.desc.gameid, "qfg1") && !Common::File::exists("resource.001"))
|
||||
s_fallbackDesc.desc.extra = "VGA Remake";
|
||||
if (!strcmp(s_fallbackDesc.gameid, "qfg1") && !Common::File::exists("resource.001"))
|
||||
s_fallbackDesc.extra = "VGA Remake";
|
||||
|
||||
// Add "demo" to the description for demos
|
||||
if (s_fallbackDesc.desc.flags & ADGF_DEMO)
|
||||
s_fallbackDesc.desc.extra = "demo";
|
||||
if (s_fallbackDesc.flags & ADGF_DEMO)
|
||||
s_fallbackDesc.extra = "demo";
|
||||
|
||||
SearchMan.remove("SCI_detection");
|
||||
|
||||
@ -371,7 +366,7 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl
|
||||
}
|
||||
|
||||
bool SciMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const {
|
||||
const SciGameDescription *desc = (const SciGameDescription *)gd;
|
||||
const ADGameDescription *desc = (const ADGameDescription *)gd;
|
||||
|
||||
*engine = new SciEngine(syst, desc);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -49,7 +49,7 @@ namespace Sci {
|
||||
|
||||
class GfxDriver;
|
||||
|
||||
SciEngine::SciEngine(OSystem *syst, const SciGameDescription *desc)
|
||||
SciEngine::SciEngine(OSystem *syst, const ADGameDescription *desc)
|
||||
: Engine(syst), _gameDescription(desc), _system(syst) {
|
||||
// Put your engine in a sane state, but do nothing big yet;
|
||||
// in particular, do not load data from files; rather, if you
|
||||
@ -236,15 +236,15 @@ Console *SciEngine::getSciDebugger() {
|
||||
}
|
||||
|
||||
const char* SciEngine::getGameID() const {
|
||||
return _gameDescription->desc.gameid;
|
||||
return _gameDescription->gameid;
|
||||
}
|
||||
|
||||
Common::Language SciEngine::getLanguage() const {
|
||||
return _gameDescription->desc.language;
|
||||
return _gameDescription->language;
|
||||
}
|
||||
|
||||
Common::Platform SciEngine::getPlatform() const {
|
||||
return _gameDescription->desc.platform;
|
||||
return _gameDescription->platform;
|
||||
}
|
||||
|
||||
uint32 SciEngine::getFlags() const {
|
||||
|
@ -63,22 +63,8 @@ enum kDebugLevels {
|
||||
kDebugLevelSci0Pic = 1 << 21
|
||||
};
|
||||
|
||||
struct SciGameDescription {
|
||||
ADGameDescription desc;
|
||||
uint32 flags;
|
||||
};
|
||||
|
||||
extern const char *versionNames[];
|
||||
|
||||
enum SciGameFlags {
|
||||
// SCI0 flags
|
||||
|
||||
/* Applies to all versions before 0.000.629
|
||||
* Older SCI versions had simpler code for GetTime()
|
||||
*/
|
||||
GF_SCI0_OLDGETTIME = (1 << 0)
|
||||
};
|
||||
|
||||
/** SCI versions */
|
||||
enum SciVersion {
|
||||
SCI_VERSION_AUTODETECT,
|
||||
@ -104,7 +90,7 @@ enum MoveCountType {
|
||||
class SciEngine : public Engine {
|
||||
friend class Console;
|
||||
public:
|
||||
SciEngine(OSystem *syst, const SciGameDescription *desc);
|
||||
SciEngine(OSystem *syst, const ADGameDescription *desc);
|
||||
~SciEngine();
|
||||
|
||||
// Engine APIs
|
||||
@ -132,7 +118,7 @@ public:
|
||||
Common::String unwrapFilename(const Common::String &name) const;
|
||||
|
||||
private:
|
||||
const SciGameDescription *_gameDescription;
|
||||
const ADGameDescription *_gameDescription;
|
||||
ResourceManager *_resMan;
|
||||
EngineState *_gamestate;
|
||||
Kernel *_kernel;
|
||||
|
Loading…
x
Reference in New Issue
Block a user