From 72f65b3946278661db95fc02511444ff1658a3bf Mon Sep 17 00:00:00 2001 From: md5 Date: Sun, 27 Feb 2011 16:48:53 +0200 Subject: SCI: Renamed SCI_VERSION_1_EGA to SCI_VERSION_1_EGA_ONLY This renaming allows us to better distinguish that this version is for games that only had an EGA version, and avoid confusion with newer SCI1 game releases with EGA graphics (e.g. KQ5 EGA). The only game with this SCI version is QFG2, a SCI1 EGA game with a parser. Also, added some games for each SCI version. --- engines/sci/engine/kernel_tables.h | 2 +- engines/sci/engine/kmovement.cpp | 6 +++--- engines/sci/engine/kparse.cpp | 2 +- engines/sci/engine/static_selectors.cpp | 4 ++-- engines/sci/graphics/animate.cpp | 4 ++-- engines/sci/graphics/view.cpp | 2 +- engines/sci/parser/vocabulary.cpp | 2 +- engines/sci/resource.cpp | 10 +++++----- engines/sci/sci.cpp | 2 +- engines/sci/sci.h | 24 ++++++++++++++---------- engines/sci/sound/drivers/midi.cpp | 2 +- engines/sci/sound/music.cpp | 2 +- 12 files changed, 33 insertions(+), 29 deletions(-) diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 71892a8bea..6dd08d78ff 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -56,7 +56,7 @@ struct SciKernelMapSubEntry { #define SIG_SCIALL SCI_VERSION_NONE, SCI_VERSION_NONE #define SIG_SCI0 SCI_VERSION_NONE, SCI_VERSION_01 -#define SIG_SCI1 SCI_VERSION_1_EGA, SCI_VERSION_1_LATE +#define SIG_SCI1 SCI_VERSION_1_EGA_ONLY, SCI_VERSION_1_LATE #define SIG_SCI11 SCI_VERSION_1_1, SCI_VERSION_1_1 #define SIG_SINCE_SCI11 SCI_VERSION_1_1, SCI_VERSION_NONE #define SIG_SCI21 SCI_VERSION_2_1, SCI_VERSION_3 diff --git a/engines/sci/engine/kmovement.cpp b/engines/sci/engine/kmovement.cpp index 53a3a53a8a..bc22397c15 100644 --- a/engines/sci/engine/kmovement.cpp +++ b/engines/sci/engine/kmovement.cpp @@ -275,7 +275,7 @@ reg_t kDoBresen(EngineState *s, int argc, reg_t *argv) { bool completed = false; bool handleMoveCount = g_sci->_features->handleMoveCount(); - if (getSciVersion() >= SCI_VERSION_1_EGA) { + if (getSciVersion() >= SCI_VERSION_1_EGA_ONLY) { uint client_signal = readSelectorValue(segMan, client, SELECTOR(signal)); writeSelectorValue(segMan, client, SELECTOR(signal), client_signal & ~kSignalHitObstacle); } @@ -307,7 +307,7 @@ reg_t kDoBresen(EngineState *s, int argc, reg_t *argv) { int16 mover_org_i2 = mover_i2; int16 mover_org_di = mover_di; - if ((getSciVersion() >= SCI_VERSION_1_EGA)) { + if ((getSciVersion() >= SCI_VERSION_1_EGA_ONLY)) { // save current position into mover writeSelectorValue(segMan, mover, SELECTOR(xLast), client_x); writeSelectorValue(segMan, mover, SELECTOR(yLast), client_y); @@ -374,7 +374,7 @@ reg_t kDoBresen(EngineState *s, int argc, reg_t *argv) { writeSelectorValue(segMan, mover, SELECTOR(b_i2), mover_i2); writeSelectorValue(segMan, mover, SELECTOR(b_di), mover_di); - if (getSciVersion() == SCI_VERSION_1_EGA) { + if (getSciVersion() == SCI_VERSION_1_EGA_ONLY) { // We need to compare directly in here, complete may have happened during // the current move if ((client_x == mover_x) && (client_y == mover_y)) diff --git a/engines/sci/engine/kparse.cpp b/engines/sci/engine/kparse.cpp index e8f8ee7152..c0a5e95811 100644 --- a/engines/sci/engine/kparse.cpp +++ b/engines/sci/engine/kparse.cpp @@ -169,7 +169,7 @@ reg_t kSetSynonyms(EngineState *s, int argc, reg_t *argv) { Vocabulary *voc = g_sci->getVocabulary(); // Only SCI0-SCI1 EGA games had a parser. In newer versions, this is a stub - if (getSciVersion() > SCI_VERSION_1_EGA) + if (getSciVersion() > SCI_VERSION_1_EGA_ONLY) return s->r_acc; voc->clearSynonyms(); diff --git a/engines/sci/engine/static_selectors.cpp b/engines/sci/engine/static_selectors.cpp index 4bb61a0658..96507e3e1b 100644 --- a/engines/sci/engine/static_selectors.cpp +++ b/engines/sci/engine/static_selectors.cpp @@ -185,7 +185,7 @@ Common::StringArray Kernel::checkStaticSelectorNames() { // dispose comes right after init names[initSelectorPos + 1] = "dispose"; - if ((getSciVersion() >= SCI_VERSION_1_EGA)) { + if ((getSciVersion() >= SCI_VERSION_1_EGA_ONLY)) { // Find the xLast and yLast selectors, used in kDoBresen // xLast and yLast always come between illegalBits and xStep @@ -205,7 +205,7 @@ Common::StringArray Kernel::checkStaticSelectorNames() { names[xLastSelectorPos] = "xLast"; names[yLastSelectorPos] = "yLast"; - } // if ((getSciVersion() >= SCI_VERSION_1_EGA)) + } // if ((getSciVersion() >= SCI_VERSION_1_EGA_ONLY)) } // if (actorClass) _segMan->uninstantiateScript(998); diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp index 0eb7b954a4..d8dd43afb1 100644 --- a/engines/sci/graphics/animate.cpp +++ b/engines/sci/graphics/animate.cpp @@ -637,10 +637,10 @@ void GfxAnimate::kernelAnimate(reg_t listReference, bool cycle, int argc, reg_t // beginUpdate()/endUpdate() were introduced SCI1. // Calling those for SCI0 will work most of the time but breaks minor // stuff like percentage bar of qfg1ega at the character skill screen. - if (getSciVersion() >= SCI_VERSION_1_EGA) + if (getSciVersion() >= SCI_VERSION_1_EGA_ONLY) _ports->beginUpdate(_ports->_picWind); update(); - if (getSciVersion() >= SCI_VERSION_1_EGA) + if (getSciVersion() >= SCI_VERSION_1_EGA_ONLY) _ports->endUpdate(_ports->_picWind); } diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp index 2956ea786e..8eacecd1f9 100644 --- a/engines/sci/graphics/view.cpp +++ b/engines/sci/graphics/view.cpp @@ -132,7 +132,7 @@ void GfxView::initData(GuiResourceId resourceId) { // SCI1 VGA conversion games (which will get detected as SCI1EARLY/MIDDLE/LATE) have some views // with broken mapping tables. I guess those games won't use the mapping, so I rather disable it // for them - if (getSciVersion() == SCI_VERSION_1_EGA) { + if (getSciVersion() == SCI_VERSION_1_EGA_ONLY) { _EGAmapping = &_resourceData[palOffset]; for (EGAmapNr = 0; EGAmapNr < SCI_VIEW_EGAMAPPING_COUNT; EGAmapNr++) { if (memcmp(_EGAmapping, EGAmappingStraight, SCI_VIEW_EGAMAPPING_SIZE) != 0) diff --git a/engines/sci/parser/vocabulary.cpp b/engines/sci/parser/vocabulary.cpp index 8d59df5d58..25043401cc 100644 --- a/engines/sci/parser/vocabulary.cpp +++ b/engines/sci/parser/vocabulary.cpp @@ -63,7 +63,7 @@ Vocabulary::Vocabulary(ResourceManager *resMan, bool foreign) : _resMan(resMan), _resourceIdBranches += 10; } - if (getSciVersion() <= SCI_VERSION_1_EGA && loadParserWords()) { + if (getSciVersion() <= SCI_VERSION_1_EGA_ONLY && loadParserWords()) { loadSuffixes(); if (loadBranches()) // Now build a GNF grammar out of this diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index a16f7126c3..1b3b481762 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -67,7 +67,7 @@ const char *getSciVersionDesc(SciVersion version) { return "Late SCI0"; case SCI_VERSION_01: return "SCI01"; - case SCI_VERSION_1_EGA: + case SCI_VERSION_1_EGA_ONLY: return "SCI1 EGA"; case SCI_VERSION_1_EARLY: return "Early SCI1"; @@ -2127,9 +2127,9 @@ void ResourceManager::detectSciVersion() { if (viewCompression != kCompLZW) { // If it's a different compression type from kCompLZW, the game is probably - // SCI_VERSION_1_EGA or later. If the views are uncompressed, it is + // SCI_VERSION_1_EGA_ONLY or later. If the views are uncompressed, it is // likely not an early disk game. - s_sciVersion = SCI_VERSION_1_EGA; + s_sciVersion = SCI_VERSION_1_EGA_ONLY; oldDecompressors = false; } @@ -2243,9 +2243,9 @@ void ResourceManager::detectSciVersion() { return; } - // New decompressors. It's either SCI_VERSION_1_EGA or SCI_VERSION_1_EARLY. + // New decompressors. It's either SCI_VERSION_1_EGA_ONLY or SCI_VERSION_1_EARLY. if (hasSci1Voc900()) { - s_sciVersion = SCI_VERSION_1_EGA; + s_sciVersion = SCI_VERSION_1_EGA_ONLY; return; } diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index b8a04066ac..b460b06662 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -227,7 +227,7 @@ Common::Error SciEngine::run() { _features = new GameFeatures(segMan, _kernel); // Only SCI0, SCI01 and SCI1 EGA games used a parser - _vocabulary = (getSciVersion() <= SCI_VERSION_1_EGA) ? new Vocabulary(_resMan, false) : NULL; + _vocabulary = (getSciVersion() <= SCI_VERSION_1_EGA_ONLY) ? new Vocabulary(_resMan, false) : NULL; // Also, XMAS1990 apparently had a parser too. Refer to http://forums.scummvm.org/viewtopic.php?t=9135 if (getGameId() == GID_CHRISTMAS1990) _vocabulary = new Vocabulary(_resMan, false); diff --git a/engines/sci/sci.h b/engines/sci/sci.h index b3e398325f..72fbe0c71f 100644 --- a/engines/sci/sci.h +++ b/engines/sci/sci.h @@ -180,20 +180,24 @@ enum SciGameId { GID_FANMADE // FIXME: Do we really need/want this? }; -/** SCI versions */ +/** + * SCI versions + * For more information, check here: + * http://wiki.scummvm.org/index.php/Sierra_Game_Versions#SCI_Games + */ enum SciVersion { SCI_VERSION_NONE, - SCI_VERSION_0_EARLY, // Early KQ4, 1988 xmas card + SCI_VERSION_0_EARLY, // KQ4 early, LSL2 early, XMAS card 1988 SCI_VERSION_0_LATE, // KQ4, LSL2, LSL3, SQ3 etc SCI_VERSION_01, // KQ1 and multilingual games (S.old.*) - SCI_VERSION_1_EGA, // EGA with parser, QFG2 - SCI_VERSION_1_EARLY, // KQ5. (EGA/VGA) - SCI_VERSION_1_MIDDLE, // LSL1, JONESCD. (EGA?/VGA) - SCI_VERSION_1_LATE, // ECO1, LSL5. (EGA/VGA) - SCI_VERSION_1_1, // KQ6, ECO2 - SCI_VERSION_2, // GK1, PQ4 (Floppy), QFG4 (Floppy) - SCI_VERSION_2_1, // GK2, KQ7, SQ6, Torin - SCI_VERSION_3 // LSL7, RAMA, Lighthouse + SCI_VERSION_1_EGA_ONLY, // SCI 1 EGA with parser (i.e. QFG2 only) + SCI_VERSION_1_EARLY, // KQ5 floppy, SQ4 floppy, XMAS card 1990, Fairy tales, Jones floppy + SCI_VERSION_1_MIDDLE, // LSL1, Jones CD + SCI_VERSION_1_LATE, // Dr. Brain 1, EcoQuest 1, Longbow, PQ3, SQ1, LSL5, KQ5 CD + SCI_VERSION_1_1, // Dr. Brain 2, EcoQuest 1 CD, EcoQuest 2, KQ6, QFG3, SQ4CD, XMAS 1992 and many more + SCI_VERSION_2, // GK1, PQ4 floppy, QFG4 floppy + SCI_VERSION_2_1, // GK2, KQ7, LSL6 hires, MUMG Deluxe, Phantasmagoria 1, PQ4CD, PQ:SWAT, QFG4CD, Shivers 1, SQ6, Torin + SCI_VERSION_3 // LSL7, Lighthouse, RAMA, Phantasmagoria 2 }; /** Supported languages */ diff --git a/engines/sci/sound/drivers/midi.cpp b/engines/sci/sound/drivers/midi.cpp index c350d3826f..65ccaecc6f 100644 --- a/engines/sci/sound/drivers/midi.cpp +++ b/engines/sci/sound/drivers/midi.cpp @@ -955,7 +955,7 @@ int MidiPlayer_Midi::open(ResourceManager *resMan) { // TODO: The MT-32 <-> GM mapping hasn't been worked on for SCI1 games. Throw // a warning to the user - if (getSciVersion() >= SCI_VERSION_1_EGA) + if (getSciVersion() >= SCI_VERSION_1_EGA_ONLY) warning("The automatic mapping for General MIDI hasn't been worked on for " "SCI1 games. Music might sound wrong or broken. Please choose another " "music driver for this game (e.g. Adlib or MT-32) if you are " diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index f0963e7d64..a08525d760 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -75,7 +75,7 @@ void SciMusic::init() { deviceFlags |= MDT_PREFER_GM; // Currently our CMS implementation only supports SCI1(.1) - if (getSciVersion() >= SCI_VERSION_1_EGA && getSciVersion() <= SCI_VERSION_1_1) + if (getSciVersion() >= SCI_VERSION_1_EGA_ONLY && getSciVersion() <= SCI_VERSION_1_1) deviceFlags |= MDT_CMS; uint32 dev = MidiDriver::detectDevice(deviceFlags); -- cgit v1.2.3