diff options
author | Max Horn | 2006-04-10 21:43:49 +0000 |
---|---|---|
committer | Max Horn | 2006-04-10 21:43:49 +0000 |
commit | 8cbe1f3823d436689bb47f8ab610a342f9311ae3 (patch) | |
tree | da243c66302039407b866f3a69ba0b0cf9bb66e0 /engines/scumm | |
parent | 8271273cb5ca8041b9d8e1ddd3b029ee2995800c (diff) | |
download | scummvm-rg350-8cbe1f3823d436689bb47f8ab610a342f9311ae3.tar.gz scummvm-rg350-8cbe1f3823d436689bb47f8ab610a342f9311ae3.tar.bz2 scummvm-rg350-8cbe1f3823d436689bb47f8ab610a342f9311ae3.zip |
Merged scumm_settings into extra_versions, which in turn got renamed to gameVariantsTable
svn-id: r21768
Diffstat (limited to 'engines/scumm')
-rw-r--r-- | engines/scumm/plugin.cpp | 334 |
1 files changed, 107 insertions, 227 deletions
diff --git a/engines/scumm/plugin.cpp b/engines/scumm/plugin.cpp index b3996e2812..0d1e57d672 100644 --- a/engines/scumm/plugin.cpp +++ b/engines/scumm/plugin.cpp @@ -186,211 +186,13 @@ static const ObsoleteGameID obsoleteGameIDsTable[] = { {NULL, NULL, UNK} }; -static const GameSettings scumm_settings[] = { - /* Scumm Version 1 */ - /* Scumm Version 2 */ - - {"maniac", 0, GID_MANIAC, 2, 0, MDT_PCSPK, - GF_SMALL_HEADER | GF_NO_SCALING | GF_16COLOR | GF_USE_KEY | GF_OLD_BUNDLE, UNK}, - {"zak", 0, GID_ZAK, 2, 0, MDT_PCSPK, - GF_SMALL_HEADER | GF_NO_SCALING | GF_16COLOR | GF_USE_KEY | GF_OLD_BUNDLE, UNK}, - - /* Scumm Version 3 */ - {"indy3", 0, GID_INDY3, 3, 0, MDT_PCSPK | MDT_ADLIB, - GF_SMALL_HEADER | GF_NO_SCALING | GF_16COLOR | GF_USE_KEY | GF_OLD_BUNDLE, UNK}, - {"loom", 0, GID_LOOM, 3, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI, - GF_SMALL_HEADER | GF_NO_SCALING | GF_16COLOR | GF_USE_KEY | GF_OLD_BUNDLE, UNK}, - - /* Scumm Version 4 */ - {"pass", 0, GID_PASS, 4, 0, MDT_PCSPK | MDT_ADLIB, - GF_SMALL_HEADER | GF_USE_KEY | GF_16COLOR, Common::kPlatformPC}, - - /* Scumm version 5, small header -- we treat these as V4 games, since internally - they really are much closer to the V4 games than to all other V5 games. */ - {"monkey", 0, GID_MONKEY_VGA, 4, 0, MDT_PCSPK | MDT_ADLIB | MDT_MIDI, - GF_SMALL_HEADER | GF_USE_KEY, Common::kPlatformPC}, - - /* Scumm version 5 */ - {"monkey2", 0, GID_MONKEY2, 5, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, - GF_USE_KEY, UNK}, - - {"atlantis", 0, GID_INDY4, 5, 0, MDT_ADLIB | MDT_MIDI, - GF_USE_KEY, UNK}, - - /* Scumm Version 6 */ - {"tentacle", 0, GID_TENTACLE, 6, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, - GF_USE_KEY, UNK}, - - {"samnmax", 0, GID_SAMNMAX, 6, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, - GF_USE_KEY, UNK}, - -// {"test", "Test demo game", GID_SAMNMAX, 6, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, GF_NEW_OPCODES, Common::kPlatformUnknown}, - -#ifndef DISABLE_SCUMM_7_8 - /* Scumm Version 7 */ - {"ft", 0, GID_FT, 7, 0, MDT_NONE, - GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, UNK}, - - {"dig", 0, GID_DIG, 7, 0, MDT_NONE, - GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, UNK}, - - /* Scumm Version 8 */ - {"comi", 0, GID_CMI, 8, 0, MDT_NONE, - GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, Common::kPlatformWindows}, - -#endif - - // Humongous Entertainment Scumm Version 6 - {"puttputt", 0, GID_HEGAME, 6, 61, MDT_ADLIB | MDT_MIDI, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, - {"puttmoon", 0, GID_HEGAME, 6, 61, MDT_ADLIB | MDT_MIDI, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, - {"funpack", 0, GID_FUNPACK, 6, 61, MDT_ADLIB | MDT_MIDI, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, - {"fbpack", 0, GID_HEGAME, 6, 61, MDT_ADLIB | MDT_MIDI, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, - {"fbear", 0, GID_FBEAR, 6, 61, MDT_ADLIB | MDT_MIDI, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, - -#ifndef DISABLE_HE - {"activity", 0, GID_HEGAME, 6, 70, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Humongous Entertainment Scumm Version 7.1 - // The first version to use 640x480 resolution - // There are also 7.1 versions of freddemo, airdemo and farmdemo - {"catalog", 0, GID_HEGAME, 6, 71, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"freddi", 0, GID_HEGAME, 6, 71, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Humongous Entertainment Scumm Version 7.2 - {"airport", 0, GID_HEGAME, 6, 72, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"puttzoo", 0, GID_HEGAME, 6, 72, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Changed o_getResourceSize to cover all resource types - {"farm", 0, GID_HEGAME, 6, 73, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"jungle", 0, GID_HEGAME, 6, 73, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Humongous Entertainment Scumm Version 8.0 ? Scummsrc.80 - {"freddi2", 0, GID_HEGAME, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"pajama", 0, GID_HEGAME, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"putttime", 0, GID_HEGAME, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - {"balloon", 0, GID_HEGAME, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"dog", 0, GID_HEGAME, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"maze", 0, GID_HEGAME, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"socks", 0, GID_HEGAME, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"water", 0, GID_WATER, 6, 80, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Humongous Entertainment Scumm Version 9.0 ? Scummsys.90 - {"baseball", 0, GID_HEGAME, 6, 90, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"thinkerk", 0, GID_HEGAME, 6, 90, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"thinker1", 0, GID_HEGAME, 6, 90, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"freddi3", 0, GID_HEGAME, 6, 90, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"spyfox", 0, GID_HEGAME, 6, 90, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Humongous Entertainment Scumm Version 9.5 ? Scummsys.95 - {"pajama2", 0, GID_HEGAME, 6, 95, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"chase", 0, GID_HEGAME, 6, 95, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Humongous Entertainment Scumm Version 9.8 ? Scummsys.98 - // these and later games can easily be identified by the .(a) file instead of a .he1 - // and INIB chunk in the .he0 - {"lost", 0, GID_HEGAME, 6, 98, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"puttrace", 0, GID_PUTTRACE, 6, 98, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"bluesabctime", 0, GID_HEGAME, 6, 98, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"soccer", 0, GID_SOCCER, 6, 98, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - - // Global scripts increased to 2048 - {"freddi4", 0, GID_HEGAME, 6, 98, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_985, Common::kPlatformWindows}, - - // Humongous Entertainment Scumm Version 9.9 ? Scummsys.99 - {"football", 0, GID_FOOTBALL, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"pajama3", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - {"puttcircus", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - {"spyfox2", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - {"mustard", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - - // Added the use of fonts - {"FreddisFunShop", 0, GID_FUNSHOP, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - {"SamsFunShop", 0, GID_FUNSHOP, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - {"PuttsFunShop", 0, GID_FUNSHOP, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - - // Added 16bit color - {"baseball2001", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, - {"SoccerMLS", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, - {"freddicove", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, - {"spyozon", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, - - // Restructured the Scumm engine - {"pjgames", 0, GID_HEGAME, 6, 100, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, - - // Uses bink in external files for logos - {"Baseball2003", 0, GID_HEGAME, 6, 100, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, - {"basketball", 0, GID_HEGAME, 6, 100, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"Soccer2004", 0, GID_HEGAME, 6, 100, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, - - // Uses smacker in external files, for testing only - {"BluesBirthdayDemo", 0, GID_HEGAME, 6, 98, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"artdemo", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, - {"readdemo", 0, GID_HEGAME, 6, 99, MDT_NONE, - GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, - - -#endif - {NULL, NULL, 0, 0, 0, MDT_NONE, 0, Common::kPlatformUnknown} -}; - - // The following table contains information about variants of our various games. // We index into it with help of md5table (from scumm-md5.h), to find the correct // GameSettings for a given game variant. // -// Note: This will probably eventually be merged with the scumm_settings table. -static const GameSettings extra_versions[] = { +// The first listed variant is assumed to be the 'default' variant -- i.e. the +// variant that gets used when no explicit variant code has been specified. +static const GameSettings gameVariantsTable[] = { // The C64 version of MM is detected via the platform field and hence has no seperate entry in this list {"maniac", "V2", GID_MANIAC, 2, 0, MDT_PCSPK, GF_SMALL_HEADER | GF_NO_SCALING | GF_16COLOR | GF_USE_KEY | GF_OLD_BUNDLE, UNK}, {"maniac", "NES", GID_MANIAC, 1, 0, MDT_NONE, GF_SMALL_HEADER | GF_NO_SCALING | GF_16COLOR | GF_USE_KEY | GF_OLD_BUNDLE, Common::kPlatformNES}, @@ -421,61 +223,130 @@ static const GameSettings extra_versions[] = { {"monkey", "FM-TOWNS", GID_MONKEY, 5, 0, MDT_ADLIB, GF_USE_KEY | GF_AUDIOTRACKS, Common::kPlatformFMTowns}, {"monkey", "SEGA", GID_MONKEY, 5, 0, MDT_NONE, GF_USE_KEY | GF_AUDIOTRACKS, Common::kPlatformSegaCD}, - - /* Scumm Version 5 */ - {"monkey2", 0, GID_MONKEY2, 5, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, + {"monkey2", 0, GID_MONKEY2, 5, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, {"atlantis", 0, GID_INDY4, 5, 0, MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, - - /* Scumm Version 6 */ {"tentacle", 0, GID_TENTACLE, 6, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, - {"samnmax", 0, GID_SAMNMAX, 6, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, - + {"samnmax", 0, GID_SAMNMAX, 6, 0, /*MDT_PCSPK |*/ MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, #ifndef DISABLE_SCUMM_7_8 - /* Scumm Version 7 */ - {"ft", "", GID_FT, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, UNK}, - {"ft", "Demo", GID_FT, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEMO, UNK}, + {"ft", "", GID_FT, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, UNK}, + {"ft", "Demo", GID_FT, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEMO, UNK}, - {"dig", "", GID_DIG, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, UNK}, - {"dig", "Demo", GID_DIG, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEMO, UNK}, + {"dig", "", GID_DIG, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, UNK}, + {"dig", "Demo", GID_DIG, 7, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEMO, UNK}, - /* Scumm Version 8 */ {"comi", "", GID_CMI, 8, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE, Common::kPlatformWindows}, {"comi", "Demo", GID_CMI, 8, 0, MDT_NONE, GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEMO, Common::kPlatformWindows}, #endif + // Humongous Entertainment Scumm Version 6 + {"puttmoon", 0, GID_HEGAME, 6, 61, MDT_ADLIB | MDT_MIDI, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, + {"funpack", 0, GID_FUNPACK, 6, 61, MDT_ADLIB | MDT_MIDI, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, + {"fbpack", 0, GID_HEGAME, 6, 61, MDT_ADLIB | MDT_MIDI, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, + + {"puttputt", "HE 61", GID_HEGAME, 6, 61, MDT_ADLIB | MDT_MIDI, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, + {"puttputt", "HE 60", GID_HEGAME, 6, 60, MDT_ADLIB | MDT_MIDI, GF_USE_KEY, Common::kPlatformWindows}, + {"puttputt", "Demo", GID_PUTTDEMO, 6, 60, MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, {"fbear", "HE 61", GID_FBEAR, 6, 61, MDT_ADLIB | MDT_MIDI, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, {"fbear", "HE 70", GID_FBEAR, 6, 70, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, #ifndef DISABLE_HE + {"activity", 0, GID_HEGAME, 6, 70, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + + // Humongous Entertainment Scumm Version 7.1 + // The first version to use 640x480 resolution + // There are also 7.1 versions of freddemo, airdemo and farmdemo + {"catalog", 0, GID_HEGAME, 6, 71, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"freddi", 0, GID_HEGAME, 6, 71, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + + // Humongous Entertainment Scumm Version 7.2 + {"airport", 0, GID_HEGAME, 6, 72, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"puttzoo", 0, GID_HEGAME, 6, 72, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + + // Changed o_getResourceSize to cover all resource types + {"farm", 0, GID_HEGAME, 6, 73, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"jungle", 0, GID_HEGAME, 6, 73, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + + // Humongous Entertainment Scumm Version 8.0 ? Scummsrc.80 + {"freddi2", 0, GID_HEGAME, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"pajama", 0, GID_HEGAME, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"putttime", 0, GID_HEGAME, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + + {"balloon", 0, GID_HEGAME, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"dog", 0, GID_HEGAME, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"maze", 0, GID_HEGAME, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"socks", 0, GID_HEGAME, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"water", 0, GID_WATER, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, {"water", "HE 80", GID_WATER, 6, 80, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, {"water", "HE 99", GID_WATER, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + // Humongous Entertainment Scumm Version 9.0 ? Scummsys.90 + {"baseball", 0, GID_HEGAME, 6, 90, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"thinkerk", 0, GID_HEGAME, 6, 90, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"thinker1", 0, GID_HEGAME, 6, 90, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"freddi3", 0, GID_HEGAME, 6, 90, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"spyfox", 0, GID_HEGAME, 6, 90, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + + // Humongous Entertainment Scumm Version 9.5 ? Scummsys.95 + {"pajama2", 0, GID_HEGAME, 6, 95, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"chase", 0, GID_HEGAME, 6, 95, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + + // Humongous Entertainment Scumm Version 9.8 ? Scummsys.98 + // these and later games can easily be identified by the .(a) file instead of a .he1 + // and INIB chunk in the .he0 + {"lost", 0, GID_HEGAME, 6, 98, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, {"puttrace", "HE 98", GID_PUTTRACE, 6, 98, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, {"puttrace", "HE 98.5", GID_PUTTRACE, 6, 98, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_985, Common::kPlatformWindows}, {"puttrace", "HE 99", GID_PUTTRACE, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"bluesabctime", 0, GID_HEGAME, 6, 98, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"soccer", 0, GID_SOCCER, 6, 98, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, - {"puttputt", "HE 61", GID_HEGAME, 6, 61, MDT_ADLIB | MDT_MIDI, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformPC}, - {"puttputt", "HE 60", GID_HEGAME, 6, 60, MDT_ADLIB | MDT_MIDI, GF_USE_KEY, Common::kPlatformWindows}, - {"puttputt", "Demo", GID_PUTTDEMO, 6, 60, MDT_ADLIB | MDT_MIDI, GF_USE_KEY, UNK}, + // Global scripts increased to 2048 + {"freddi4", 0, GID_HEGAME, 6, 98, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_985, Common::kPlatformWindows}, + {"freddi4", "unenc", GID_HEGAME, 6, 98, MDT_NONE, GF_NEW_COSTUMES | GF_HE_985, Common::kPlatformWindows}, + // Humongous Entertainment Scumm Version 9.9 ? Scummsys.99 + {"football", 0, GID_FOOTBALL, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"pajama3", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, + {"puttcircus", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, + {"spyfox2", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, + {"mustard", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - // The folloowing is used for the unencrypted russian version of freddi4. - // TODO: Get rid of GF_USE_KEY and detect XOR encryption on the fly. - {"freddi4", "unenc", GID_HEGAME, 6, 98, MDT_NONE, GF_NEW_COSTUMES | GF_HE_985, Common::kPlatformWindows}, + // Added the use of fonts + {"FreddisFunShop", 0, GID_FUNSHOP, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, + {"SamsFunShop", 0, GID_FUNSHOP, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, + {"PuttsFunShop", 0, GID_FUNSHOP, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED, Common::kPlatformWindows}, - // The folloowing is used for the unencrypted russian version of freddicove. - // TODO: Get rid of GF_USE_KEY and detect XOR encryption on the fly. + // Added 16bit color + {"baseball2001", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, + {"SoccerMLS", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, + {"spyozon", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, + + {"freddicove", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, {"freddicove", "unenc", GID_HEGAME, 6, 99, MDT_NONE, GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, {"freddicove", "HE 100", GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, + // Restructured the Scumm engine + {"pjgames", 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_HE_NOSUBTITLES | GF_HE_LOCALIZED | GF_16BIT_COLOR, Common::kPlatformWindows}, + + // Uses bink in external files for logos + {"Baseball2003", 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, + {"basketball", 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"Soccer2004", 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, + + // Uses smacker in external files, for testing only + {"BluesBirthdayDemo", 0, GID_HEGAME, 6, 98, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES, Common::kPlatformWindows}, + {"artdemo", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, + {"readdemo", 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_NEW_COSTUMES | GF_16BIT_COLOR, Common::kPlatformWindows}, + + // The following are meant to be generic HE game variants and as such do // not specify a game ID. Make sure that these are last in the table, else // they'll override more specific entries that follow later on. @@ -1328,7 +1199,16 @@ DetectedGameList Engine_SCUMM_detectGames(const FSList &fslist) { typedef Common::HashMap<Common::String, bool> StringSet; StringSet fileSet; - for (g = scumm_settings; g->gameid; ++g) { + const char *lastGameid = ""; + + for (g = gameVariantsTable; g->gameid; ++g) { + // HACK: For now we only consider the first ("default") variant for + // gameids that have multiple variants. In a future version of the + // detector code, this may change. + if (0 == strcmp(lastGameid, g->gameid)) + continue; + lastGameid = g->gameid; + // Determine the 'detectname' for this game, that is, the name of a // file that *must* be presented if the directory contains the data // for this game. For example, FOA requires atlantis.000 @@ -1582,7 +1462,7 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { // Lookup the game ID in our database. If this lookup fails, then // the game ID is unknown, and we have to abort. - const GameSettings *g = scumm_settings; + const GameSettings *g = gameVariantsTable; while (g->gameid) { if (!scumm_stricmp(detector->_gameid.c_str(), g->gameid)) break; @@ -1694,7 +1574,7 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { // If a match was found, we use the information obtained from the md5table - // to walk through the extra_versions array and find a match there. + // to walk through the gameVariantsTable array and find a match there. // Otherwise, we print a warning about the MD5 being unknwon. if (elem) { // The MD5 is known and was found in our md5table. @@ -1706,8 +1586,8 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { md5, elem->gameid, gameid); } - // Compute the precise game settings using 'extra_versions'. - for (g = extra_versions; g->gameid; ++g) { + // Compute the precise game settings using 'gameVariantsTable'. + for (g = gameVariantsTable; g->gameid; ++g) { if (g->gameid[0] == 0 || !scumm_stricmp(elem->gameid, g->gameid)) { // The gameid either matches, or is empty (the latter indicates // a generic entry, used currently for generic HE specifies. |