diff options
author | Paweł Kołodziejski | 2003-04-06 19:41:34 +0000 |
---|---|---|
committer | Paweł Kołodziejski | 2003-04-06 19:41:34 +0000 |
commit | d56673b8456ba5a5174c628cc1705a5309bea2ec (patch) | |
tree | 21bcb2c80df31a38b0d10eb6b5006f17ed20b444 | |
parent | 9d1769665647454bb7cb7ab4649dd143024051a2 (diff) | |
download | scummvm-rg350-d56673b8456ba5a5174c628cc1705a5309bea2ec.tar.gz scummvm-rg350-d56673b8456ba5a5174c628cc1705a5309bea2ec.tar.bz2 scummvm-rg350-d56673b8456ba5a5174c628cc1705a5309bea2ec.zip |
fixed detection of early scumm games
svn-id: r6923
-rw-r--r-- | common/gameDetector.h | 4 | ||||
-rw-r--r-- | scumm/scumm.h | 1 | ||||
-rw-r--r-- | scumm/scummvm.cpp | 55 |
3 files changed, 34 insertions, 26 deletions
diff --git a/common/gameDetector.h b/common/gameDetector.h index fd2f4e90b6..6c6d6eee5e 100644 --- a/common/gameDetector.h +++ b/common/gameDetector.h @@ -86,6 +86,10 @@ enum GameFeatures { GF_HUMONGOUS = 1 << 15, GF_NEW_COSTUMES = 1 << 16, GF_DEFAULT_TO_1X_SCALER = 1 << 17, + GF_AFTER_V2 = 1 << 18, + GF_AFTER_V3 = 1 << 19, + GF_AFTER_V4 = 1 << 20, + GF_AFTER_V5 = 1 << 21, GF_HAS_ROOMTABLE = GF_AFTER_V7, GF_USE_ANGLES = GF_AFTER_V7, diff --git a/scumm/scumm.h b/scumm/scumm.h index 7d35b3c8e2..2494fcd94e 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -170,6 +170,7 @@ enum ScummGameId { GID_LOOM256, GID_ZAK256, GID_INDY3_256, + GID_INDY3, GID_LOOM, GID_FT, GID_DIG, diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index afa940e525..7c2071f6ea 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -61,42 +61,43 @@ static const VersionSettings scumm_settings[] = { /* Scumm Version 2 */ {"maniac", "Maniac Mansion", GID_MANIAC, 2, 0, 0, - GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALLING, "MANIACEX.EXE"}, -// {"zak", "Zak McKracken and the Alien Mindbenders", GID_ZAK, 2, 0, 0, -// GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALLING, "ZAKEXE.EXE"}, -// {"indy3", "Indiana Jones and the Last Crusade", GID_INDY3, 2, 0, 0,}, + GF_AFTER_V2 | GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALLING, "MANIAC.EXE"}, +// {"zak", "Zak McKracken and the Alien Mindbenders", GID_ZAK, 2, 0, 0, +// GF_AFTER_V2 | GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALLING, "ZAK.EXE"}, +// {"indy3EGA", "Indiana Jones and the Last Crusade", GID_INDY3, 2, 0, 0,}, +// GF_AFTER_V2 | GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALLING, "INDY3.EXE"}, /* Scumm Version 3 */ {"indy3", "Indiana Jones and the Last Crusade (256)", GID_INDY3_256, 3, 0, 22, - GF_SMALL_HEADER | GF_SMALL_NAMES | GF_OLD256 | GF_NO_SCALLING | GF_ADLIB_DEFAULT, "00.LFL"}, + GF_AFTER_V3 | GF_SMALL_HEADER | GF_SMALL_NAMES | GF_OLD256 | GF_NO_SCALLING | GF_ADLIB_DEFAULT, "00.LFL"}, {"zak256", "Zak McKracken and the Alien Mindbenders (256)", GID_ZAK256, 3, 0, 0, - GF_SMALL_HEADER | GF_SMALL_NAMES | GF_OLD256 | GF_AUDIOTRACKS | GF_NO_SCALLING, "00.LFL"}, + GF_AFTER_V3 | GF_SMALL_HEADER | GF_SMALL_NAMES | GF_OLD256 | GF_AUDIOTRACKS | GF_NO_SCALLING, "00.LFL"}, {"loom", "Loom", GID_LOOM, 3, 5, 40, - GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_OLD_BUNDLE | GF_16COLOR | GF_NO_SCALLING, "00.LFL"}, + GF_AFTER_V3 | GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_OLD_BUNDLE | GF_16COLOR | GF_NO_SCALLING, "00.LFL"}, /* Scumm Version 4 */ {"monkeyEGA", "Monkey Island 1 (EGA)", GID_MONKEY_EGA, 4, 0, 67, - GF_SMALL_HEADER | GF_USE_KEY | GF_16COLOR, 0}, // EGA version + GF_AFTER_V4 | GF_SMALL_HEADER | GF_USE_KEY | GF_16COLOR, 0}, /* Scumm version 5 */ {"monkeyVGA", "Monkey Island 1 (256 color Floppy version)", GID_MONKEY_VGA, 5, 0, 16, - GF_SMALL_HEADER | GF_USE_KEY | GF_ADLIB_DEFAULT, "000.LFL"}, + GF_AFTER_V4 | GF_SMALL_HEADER | GF_USE_KEY | GF_ADLIB_DEFAULT, "000.LFL"}, {"loomcd", "Loom (256 color CD version)", GID_LOOM256, 5, 1, 42, - GF_SMALL_HEADER | GF_USE_KEY | GF_AUDIOTRACKS | GF_ADLIB_DEFAULT, "000.LFL"}, + GF_AFTER_V4 | GF_SMALL_HEADER | GF_USE_KEY | GF_AUDIOTRACKS | GF_ADLIB_DEFAULT, "000.LFL"}, {"monkey", "Monkey Island 1", GID_MONKEY, 5, 2, 2, - GF_USE_KEY | GF_AUDIOTRACKS | GF_ADLIB_DEFAULT, 0}, + GF_AFTER_V5 | GF_USE_KEY | GF_AUDIOTRACKS | GF_ADLIB_DEFAULT, 0}, {"monkey1", "Monkey Island 1 (alt)", GID_MONKEY, 5, 2, 2, - GF_USE_KEY | GF_AUDIOTRACKS | GF_ADLIB_DEFAULT, 0}, + GF_AFTER_V5 | GF_USE_KEY | GF_AUDIOTRACKS | GF_ADLIB_DEFAULT, 0}, {"monkey2", "Monkey Island 2: LeChuck's revenge", GID_MONKEY2, 5, 2, 2, - GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, + GF_AFTER_V5 | GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, {"mi2demo", "Monkey Island 2: LeChuck's revenge (Demo)", GID_MONKEY2, 5, 2, 2, - GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, + GF_AFTER_V5 | GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, {"atlantis", "Indiana Jones and the Fate of Atlantis", GID_INDY4, 5, 5, 0, - GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, + GF_AFTER_V5 | GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, {"playfate", "Indiana Jones and the Fate of Atlantis (Demo)", GID_INDY4, 5, 5, 0, - GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, + GF_AFTER_V5 | GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, {"fate", "Indiana Jones and the Fate of Atlantis (Demo)", GID_INDY4, 5, 5, 0, - GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, + GF_AFTER_V5 | GF_USE_KEY | GF_ADLIB_DEFAULT, 0}, /* Scumm Version 6 */ {"puttputt", "Putt-Putt Joins The Parade (DOS)", GID_SAMNMAX, 6, 1, 1, @@ -153,20 +154,22 @@ Engine *Engine_SCUMM_create(GameDetector *detector, OSystem *syst) { if (detector->_amiga) detector->_features |= GF_AMIGA; - if (detector->_features & GF_OLD_BUNDLE) - engine = new Scumm_v2(detector, syst); - else if (detector->_features & GF_OLD256) - engine = new Scumm_v3(detector, syst); - else if (detector->_features & GF_SMALL_HEADER) // this forces loomCD as v4 - engine = new Scumm_v4(detector, syst); - else if (detector->_features & GF_AFTER_V8) + if (detector->_features & GF_AFTER_V8) engine = new Scumm_v8(detector, syst); else if (detector->_features & GF_AFTER_V7) engine = new Scumm_v7(detector, syst); - else if (detector->_features & GF_AFTER_V6) // this forces SamnmaxCD as v6 + else if (detector->_features & GF_AFTER_V6) engine = new Scumm_v6(detector, syst); - else + else if (detector->_features & GF_AFTER_V5) engine = new Scumm_v5(detector, syst); + else if (detector->_features & GF_AFTER_V4) + engine = new Scumm_v4(detector, syst); + else if (detector->_features & GF_AFTER_V3) + engine = new Scumm_v3(detector, syst); + else if (detector->_features & GF_AFTER_V2) + engine = new Scumm_v2(detector, syst); + else + error("Engine_SCUMM_create(): Unknown version of game engine"); return engine; } |