diff options
Diffstat (limited to 'engines')
60 files changed, 1106 insertions, 598 deletions
diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp index 553e42f88e..8760adb19e 100644 --- a/engines/agi/detection.cpp +++ b/engines/agi/detection.cpp @@ -364,7 +364,10 @@ static const AGIGameDescription gameDescriptions[] = { GAME_P("kq3", "2.0A 1988-08-28 (CE)", "ac30b7ca5a089b5e642fbcdcbe872c12", 0x2917, GID_KQ3, Common::kPlatformApple2GS), // King's Quest 3 (Amiga) 2.15 11/15/89 # 2.333 - GAME3_PS("kq3", "2.15 1989-11-15", "dirs", "8e35bded2bc5cf20f5eec2b15523b155", 1805, 0x3086, 0, GID_KQ3, Common::kPlatformAmiga), + // Original pauses with ESC, has menus accessible with mouse. + // ver = 0x3086 -> menus accessible with ESC or mouse, bug #2835581 (KQ3: Game Crash When Leaving Tavern as Fly). + // ver = 0x3149 -> menus accessible with mouse, ESC pauses game, bug #2835581 disappears. + GAME3_PS("kq3", "2.15 1989-11-15", "dirs", "8e35bded2bc5cf20f5eec2b15523b155", 1805, 0x3149, 0, GID_KQ3, Common::kPlatformAmiga), // King's Quest 3 (PC) 1.01 11/08/86 [AGI 2.272] // Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game diff --git a/engines/agos/animation.cpp b/engines/agos/animation.cpp index dd52f42abc..efcd78e482 100644 --- a/engines/agos/animation.cpp +++ b/engines/agos/animation.cpp @@ -265,6 +265,13 @@ bool MoviePlayerDXA::load() { } void MoviePlayerDXA::playVideo() { + // Most of the videos included in the Amiga version, reduced the + // resoluton to 384 x 280, so require the screen to be cleared, + // before starting playing those videos. + if (getWidth() == 384 && getHeight() == 280) { + _vm->clearSurfaces(); + } + while (getCurFrame() < getFrameCount() && !_skipMovie && !_vm->shouldQuit()) handleNextFrame(); } diff --git a/engines/agos/event.cpp b/engines/agos/event.cpp index 2ba5d56243..5ef65e7b42 100644 --- a/engines/agos/event.cpp +++ b/engines/agos/event.cpp @@ -498,7 +498,6 @@ void AGOSEngine::delay(uint amount) { _variableArray[41] = 1; } - // Make sure backspace works right (this fixes a small issue on OS X) _keyPressed = event.kbd; break; case Common::EVENT_MOUSEMOVE: diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp index 2d9f2c91ab..9c93288e0e 100644 --- a/engines/agos/script.cpp +++ b/engines/agos/script.cpp @@ -110,7 +110,8 @@ void AGOSEngine::o_eq() { #ifdef __DS__ // HACK: Skip attempt to read Calypso's letter manually, // due to speech segment been too large to fit into memory - if (getGameType() == GType_SIMON1 && (getFeatures() & GF_TALKIE) && _currentTable) { + if (getGameType() == GType_SIMON1 && (getFeatures() & GF_TALKIE) && + getPlatform() == Common::kPlatformWindows && _currentTable) { if (_currentTable->id == 71 && tmp == 1 && tmp2 == 1) { setScriptCondition(false); return; @@ -444,7 +445,8 @@ void AGOSEngine::o_process() { #ifdef __DS__ // HACK: Skip scene of Simon reading letter from Calypso // due to speech segment been too large to fit into memory - if (getGameType() == GType_SIMON1 && (getFeatures() & GF_TALKIE) && sub->id == 2922) { + if (getGameType() == GType_SIMON1 && (getFeatures() & GF_TALKIE) && + getPlatform() == Common::kPlatformWindows && sub->id == 2922) { // set parent special _noParentNotify = true; setItemParent(derefItem(16), me()); diff --git a/engines/agos/sound.cpp b/engines/agos/sound.cpp index d20c07a8c8..3008442ed2 100644 --- a/engines/agos/sound.cpp +++ b/engines/agos/sound.cpp @@ -133,8 +133,10 @@ public: }; class VocSound : public BaseSound { + byte _flags; public: - VocSound(Audio::Mixer *mixer, File *file, uint32 base = 0, bool bigEndian = false) : BaseSound(mixer, file, base, bigEndian) {} + VocSound(Audio::Mixer *mixer, File *file, uint32 base = 0, bool bigEndian = false) : BaseSound(mixer, file, base, bigEndian), _flags(0) {} + Audio::AudioStream *makeAudioStream(uint sound); void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol = 0); }; @@ -255,14 +257,15 @@ void WavSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType typ _mixer->playInputStream(type, handle, new LoopingAudioStream(this, sound, loopSound, (flags & Audio::Mixer::FLAG_LOOP) != 0), -1, vol); } -void VocSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol) { - if (_offsets == NULL) - return; - +Audio::AudioStream *VocSound::makeAudioStream(uint sound) { _file->seek(_offsets[sound], SEEK_SET); + return Audio::makeVOCStream(*_file, _flags); +} - Audio::AudioStream *stream = Audio::makeVOCStream(*_file, flags); - _mixer->playInputStream(type, handle, stream); +void VocSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol) { + convertVolume(vol); + _flags = flags; + _mixer->playInputStream(type, handle, new LoopingAudioStream(this, sound, loopSound, (flags & Audio::Mixer::FLAG_LOOP) != 0), -1, vol); } void RawSound::playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol) { @@ -630,7 +633,8 @@ void Sound::playEffects(uint sound) { if (_effectsPaused) return; - _mixer->stopHandle(_effectsHandle); + if (_vm->getGameType() == GType_SIMON1) + _mixer->stopHandle(_effectsHandle); _effects->playSound(sound, Audio::Mixer::kSFXSoundType, &_effectsHandle, (_vm->getGameId() == GID_SIMON1CD32) ? 0 : Audio::Mixer::FLAG_UNSIGNED); } diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp index 1344be6b3a..35e87060a9 100644 --- a/engines/agos/vga.cpp +++ b/engines/agos/vga.cpp @@ -1197,7 +1197,7 @@ void AGOSEngine::vc32_saveScreen() { uint16 height = _videoWindows[4 * 4 + 3]; byte *dst = (byte *)_backGroundBuf->getBasePtr(xoffs, yoffs); - byte *src = (byte *)_window4BackScn->pixels;; + byte *src = (byte *)_window4BackScn->pixels; uint16 srcWidth = _videoWindows[4 * 4 + 2] * 16; for (; height > 0; height--) { memcpy(dst, src, width); diff --git a/engines/cruise/background.cpp b/engines/cruise/background.cpp index 6635a8d621..587c790554 100644 --- a/engines/cruise/background.cpp +++ b/engines/cruise/background.cpp @@ -30,6 +30,7 @@ namespace Cruise { uint8 colorMode = 0; uint8 *backgroundScreens[8] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; // wasn't initialized in original, but it's probably better +bool backgroundChanged[8] = { false, false, false, false, false, false, false, false }; backgroundTableStruct backgroundTable[8]; char hwPage[64000]; @@ -101,6 +102,8 @@ int loadBackground(const char *name, int idx) { return (-2); } + backgroundChanged[idx] = true; + ptrToFree = gfxModuleData.pPage10; if (loadFileSub1(&ptrToFree, name, NULL) < 0) { if (ptrToFree != gfxModuleData.pPage10) diff --git a/engines/cruise/background.h b/engines/cruise/background.h index 711e89a34a..6f9b89d3f0 100644 --- a/engines/cruise/background.h +++ b/engines/cruise/background.h @@ -36,6 +36,7 @@ struct backgroundTableStruct { extern short int cvtPalette[0x20]; extern int CVTLoaded; extern uint8 *backgroundScreens[8]; +extern bool backgroundChanged[8]; extern backgroundTableStruct backgroundTable[8]; int loadBackground(const char *name, int idx); diff --git a/engines/cruise/backgroundIncrust.cpp b/engines/cruise/backgroundIncrust.cpp index 03ed552018..78cf49c653 100644 --- a/engines/cruise/backgroundIncrust.cpp +++ b/engines/cruise/backgroundIncrust.cpp @@ -71,6 +71,8 @@ void restoreBackground(backgroundIncrustStruct *pIncrust) { if (pBackground == NULL) return; + backgroundChanged[pIncrust->backgroundIdx] = true; + int X = pIncrust->savedX; int Y = pIncrust->savedY; int width = pIncrust->saveWidth; @@ -108,6 +110,8 @@ backgroundIncrustStruct *addBackgroundIncrust(int16 overlayIdx, int16 objectIdx, backgroundPtr = backgroundScreens[backgroundIdx]; + backgroundChanged[backgroundIdx] = true; + assert(backgroundPtr != NULL); currentHead = pHead; @@ -218,6 +222,8 @@ void regenerateBackgroundIncrust(backgroundIncrustStruct *pHead) { // Poly addBackgroundIncrustSub1(frame, pl->X, pl->Y, NULL, pl->scale, (char*)backgroundScreens[pl->backgroundIdx], (char *)filesDatabase[frame].subData.ptr); } + + backgroundChanged[pl->backgroundIdx] = true; } pl = pl2; diff --git a/engines/cruise/cell.cpp b/engines/cruise/cell.cpp index 7966d5ea12..aeafed4f7a 100644 --- a/engines/cruise/cell.cpp +++ b/engines/cruise/cell.cpp @@ -176,6 +176,11 @@ void createTextObject(cellStruct *pObject, int overlayIdx, int messageIdx, int x if (ax) { pNewElement->gfxPtr = renderText(width, ax); } + + // WORKAROUND: This is needed for the new dirty rect handling so as to properly refresh the screen + // when the copy protection screen is being shown + if ((messageIdx == 0) && !strcmp(overlayTable[overlayIdx].overlayName, "XX2")) + backgroundChanged[0] = true; } void removeCell(cellStruct *objPtr, int ovlNumber, int objectIdx, int objType, int backgroundPlane) { diff --git a/engines/cruise/detection.cpp b/engines/cruise/detection.cpp index 879fad0210..1045ed3b0b 100644 --- a/engines/cruise/detection.cpp +++ b/engines/cruise/detection.cpp @@ -26,7 +26,7 @@ #include "base/plugins.h" - +#include "common/savefile.h" #include "engines/advancedDetector.h" #include "cruise/cruise.h" @@ -70,6 +70,19 @@ static const CRUISEGameDescription gameDescriptions[] = { { { "cruise", + "16 colours", + AD_ENTRY1("D1", "cd29a4cd9162076e9a18495fe56a48f3"), + Common::EN_GRB, + Common::kPlatformPC, + ADGF_NO_FLAGS, + GUIO_NONE + }, + GType_CRUISE, + 0, + }, + { + { + "cruise", "16 colors", AD_ENTRY1("D1", "41a7a4d426dbd048eb369cfee4bb2717"), Common::FR_FRA, diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 6fe82f76d4..53549bff9e 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -510,6 +510,8 @@ int16 Op_LoadBackground(void) { gfxModuleData_gfxWaitVSync(); result = loadBackground(bgName, bgIdx); + + gfxModuleData_addDirtyRect(Common::Rect(0, 0, 320, 200)); } changeCursor(CURSOR_NORMAL); @@ -788,6 +790,7 @@ int16 Op_ClearScreen(void) { if ((bgIdx >= 0) && (bgIdx < NBSCREENS) && (backgroundScreens[bgIdx])) { memset(backgroundScreens[bgIdx], 0, 320 * 200); + backgroundChanged[bgIdx] = true; strcpy(backgroundTable[0].name, ""); } @@ -922,6 +925,7 @@ int16 Op_SetActiveBackground(void) { if (newPlane >= 0 && newPlane < NBSCREENS) { if (backgroundScreens[newPlane]) { masterScreen = newPlane; + backgroundChanged[newPlane] = true; switchPal = 1; } } @@ -936,8 +940,10 @@ int16 Op_RemoveBackground(void) { if (backgroundScreens[backgroundIdx]) free(backgroundScreens[backgroundIdx]); - if (masterScreen == backgroundIdx) + if (masterScreen == backgroundIdx) { masterScreen = 0; + backgroundChanged[0] = true; + } strcpy(backgroundTable[backgroundIdx].name, ""); } else { diff --git a/engines/cruise/gfxModule.cpp b/engines/cruise/gfxModule.cpp index 003a335e42..b3ac68edae 100644 --- a/engines/cruise/gfxModule.cpp +++ b/engines/cruise/gfxModule.cpp @@ -26,6 +26,8 @@ #include "common/system.h" #include "common/endian.h" +#include "common/list.h" +#include "common/rect.h" #include "cruise/cruise.h" #include "cruise/cruise_main.h" @@ -41,6 +43,12 @@ palEntry lpalette[256]; int palDirtyMin = 256; int palDirtyMax = -1; +typedef Common::List<Common::Rect> RectList; +RectList _dirtyRects; +RectList _priorFrameRects; + +bool _dirtyRectScreen = false; + gfxModuleDataStruct gfxModuleData = { 0, // use Tandy 0, // use EGA @@ -229,7 +237,47 @@ void gfxModuleData_flipScreen(void) { flip(); } +void gfxModuleData_addDirtyRect(const Common::Rect &r) { + _dirtyRects.push_back(Common::Rect( MAX(r.left, (int16)0), MAX(r.top, (int16)0), + MIN(r.right, (int16)320), MIN(r.bottom, (int16)200))); +} + +/** + * Creates the union of two rectangles. + */ +static bool unionRectangle(Common::Rect &pDest, const Common::Rect &pSrc1, const Common::Rect &pSrc2) { + pDest.left = MIN(pSrc1.left, pSrc2.left); + pDest.top = MIN(pSrc1.top, pSrc2.top); + pDest.right = MAX(pSrc1.right, pSrc2.right); + pDest.bottom = MAX(pSrc1.bottom, pSrc2.bottom); + + return !pDest.isEmpty(); +} + +static void mergeClipRects() { + RectList::iterator rOuter, rInner; + + for (rOuter = _dirtyRects.begin(); rOuter != _dirtyRects.end(); ++rOuter) { + rInner = rOuter; + while (++rInner != _dirtyRects.end()) { + + if ((*rOuter).intersects(*rInner)) { + // these two rectangles overlap, so translate it to a bigger rectangle + // that contains both of them + unionRectangle(*rOuter, *rOuter, *rInner); + + // remove the inner rect from the list + _dirtyRects.erase(rInner); + + // move back to beginning of list + rInner = rOuter; + } + } + } +} + void flip() { + RectList::iterator dr; int i; byte paletteRGBA[256 * 4]; @@ -245,7 +293,29 @@ void flip() { palDirtyMax = -1; } - g_system->copyRectToScreen(globalScreen, 320, 0, 0, 320, 200); + // Make a copy of the prior frame's dirty rects, and then backup the current frame's rects + RectList tempList = _priorFrameRects; + _priorFrameRects = _dirtyRects; + + // Merge the prior frame's dirty rects into the current frame's list + for (dr = tempList.begin(); dr != tempList.end(); ++dr) { + Common::Rect &r = *dr; + _dirtyRects.push_back(Common::Rect(r.left, r.top, r.right, r.bottom)); + } + + // Merge any overlapping rects to simplify the drawing process + mergeClipRects(); + + // Copy any modified areas + for (dr = _dirtyRects.begin(); dr != _dirtyRects.end(); ++dr) { + Common::Rect &r = *dr; + g_system->copyRectToScreen(globalScreen + 320 * r.top + r.left, 320, + r.left, r.top, r.width(), r.height()); + } + + _dirtyRects.clear(); + + // Allow the screen to update g_system->updateScreen(); } diff --git a/engines/cruise/gfxModule.h b/engines/cruise/gfxModule.h index dc085d8b0d..308b96ab64 100644 --- a/engines/cruise/gfxModule.h +++ b/engines/cruise/gfxModule.h @@ -62,6 +62,7 @@ void gfxModuleData_flipScreen(void); void gfxModuleData_convertOldPalColor(uint16 oldColor, uint8 *pOutput); void gfxModuleData_setPalEntries(const byte *ptr, int start, int num); void gfxModuleData_setPal256(const byte *ptr); +void gfxModuleData_addDirtyRect(const Common::Rect &r); void flip(void); void drawSolidBox(int32 x1, int32 y1, int32 x2, int32 y2, uint8 colour); void resetBitmap(uint8 *dataPtr, int32 dataSize); diff --git a/engines/cruise/mainDraw.cpp b/engines/cruise/mainDraw.cpp index 047f00ee90..61e8f8d85c 100644 --- a/engines/cruise/mainDraw.cpp +++ b/engines/cruise/mainDraw.cpp @@ -1121,6 +1121,8 @@ void mainDrawPolygons(int fileIndex, cellStruct *plWork, int X, int scale, int Y if (spriteY1 == spriteY2) return; + gfxModuleData_addDirtyRect(Common::Rect(spriteX2, spriteY2, spriteX1, spriteY1)); + var_8 = 0; memset(polygonMask, 0xFF, (320*200) / 8); @@ -1177,6 +1179,8 @@ void drawMessage(const gfxEntryStruct *pGfxPtr, int globalX, int globalY, int wi globalY = 198 - pGfxPtr->height; } + gfxModuleData_addDirtyRect(Common::Rect(globalX, globalY, globalX + width, globalY + height)); + initialOuput = ouputPtr + (globalY * 320) + globalX; for (yp = 0; yp < height; yp++) { @@ -1206,6 +1210,9 @@ void drawSprite(int width, int height, cellStruct *currentObjPtr, const uint8 *d int x = 0; int y = 0; + // Flag the given area as having been changed + gfxModuleData_addDirtyRect(Common::Rect(xs, ys, xs + width - 1, ys + height - 1)); + cellStruct* plWork = currentObjPtr; int workBufferSize = height * (width / 8); @@ -1406,6 +1413,10 @@ void mainDraw(int16 param) { if (bgPtr) { gfxModuleData_gfxCopyScreen(bgPtr, gfxModuleData.pPage10); + if (backgroundChanged[masterScreen]) { + backgroundChanged[masterScreen] = false; + gfxModuleData_addDirtyRect(Common::Rect(0, 0, 320, 200)); + } } autoCellHead.next = NULL; diff --git a/engines/cruise/staticres.cpp b/engines/cruise/staticres.cpp index fa77555314..1ffdc5628a 100644 --- a/engines/cruise/staticres.cpp +++ b/engines/cruise/staticres.cpp @@ -29,28 +29,28 @@ namespace Cruise { -int actor_move[][13] = { +const int actor_move[][13] = { {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0}, // back {13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0}, // right side {25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0}, // front { -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, 0}// left side }; -int actor_end[][13] = { +const int actor_end[][13] = { {37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // stat back {38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // stat right-side {39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // stat front { -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // stat left-side }; -int actor_stat[][13] = { +const int actor_stat[][13] = { {53, 54, 55, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0}, {59, 60, 62, 63, 78, 0, 0, 0, 0, 0, 0, 0, 0}, { -78, -63, -62, -60, -59, 0, 0, 0, 0, 0, 0, 0, 0}, { -57, -56, -55, -54, -53, 0, 0, 0, 0, 0, 0, 0, 0} }; -int actor_invstat[][13] = { +const int actor_invstat[][13] = { { -53, -54, -55, -56, -57, 0, 0, 0, 0, 0, 0, 0, 0}, {57, 56, 55, 54, 53, 0, 0, 0, 0, 0, 0, 0, 0}, {78, 63, 62, 60, 59, 0, 0, 0, 0, 0, 0, 0, 0}, @@ -59,7 +59,7 @@ int actor_invstat[][13] = { // font character lookup tables -int16 english_fontCharacterTable[256] = { +const int16 english_fontCharacterTable[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -122,7 +122,7 @@ int16 english_fontCharacterTable[256] = { -1, }; -int16 german_fontCharacterTable[256] = { +const int16 german_fontCharacterTable[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -168,7 +168,7 @@ int16 german_fontCharacterTable[256] = { -1, -1, -1, -1 }; -int16 spanish_fontCharacterTable[256] = { +const int16 spanish_fontCharacterTable[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, diff --git a/engines/cruise/staticres.h b/engines/cruise/staticres.h index 964bf294dc..f17e435acd 100644 --- a/engines/cruise/staticres.h +++ b/engines/cruise/staticres.h @@ -31,17 +31,17 @@ namespace Cruise { -extern int actor_move[][13]; +extern const int actor_move[][13]; -extern int actor_end[][13]; +extern const int actor_end[][13]; -extern int actor_stat[][13]; +extern const int actor_stat[][13]; -extern int actor_invstat[][13]; +extern const int actor_invstat[][13]; -extern short int english_fontCharacterTable[256]; -extern short int german_fontCharacterTable[256]; -extern short int spanish_fontCharacterTable[256]; +extern const int16 english_fontCharacterTable[256]; +extern const int16 german_fontCharacterTable[256]; +extern const int16 spanish_fontCharacterTable[256]; #define fontCharacterTable (_vm->getLanguage() == Common::DE_DEU ? \ german_fontCharacterTable : (_vm->getLanguage() == Common::ES_ESP ? \ diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp index 082345e675..a348fbdb08 100644 --- a/engines/gob/gob.cpp +++ b/engines/gob/gob.cpp @@ -460,14 +460,14 @@ bool GobEngine::initGameParts() { case kGameTypePlaytnCk: case kGameTypeBambou: _init = new Init_v2(this); - _video = new Video_v2(this); - _inter = new Inter_v6(this); + _video = new Video_v6(this); + _inter = new Inter_Playtoons(this); _mult = new Mult_v2(this); _draw = new Draw_v2(this); _map = new Map_v2(this); - _goblin = new Goblin_v2(this); + _goblin = new Goblin_v4(this); _scenery = new Scenery_v2(this); - _saveLoad = new SaveLoad_Playtoons(this); + _saveLoad = new SaveLoad_Playtoons(this, _targetName.c_str()); break; default: diff --git a/engines/gob/inter.h b/engines/gob/inter.h index a31860885f..c3d3a26f47 100644 --- a/engines/gob/inter.h +++ b/engines/gob/inter.h @@ -547,6 +547,21 @@ protected: void probe16bitMusic(char *fileName); }; +class Inter_Playtoons : public Inter_v6 { +public: + Inter_Playtoons(GobEngine *vm); + virtual ~Inter_Playtoons() {} + +protected: + virtual void setupOpcodesDraw(); + virtual void setupOpcodesFunc(); + virtual void setupOpcodesGob(); + + bool oPlaytoons_checkData(OpFuncParams ¶ms); + void oPlaytoons_CD_20_23(); + void oPlaytoons_CD_25(); +}; + } // End of namespace Gob #endif // GOB_INTER_H diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp index b4e5bf7623..da9e55685c 100644 --- a/engines/gob/inter_v2.cpp +++ b/engines/gob/inter_v2.cpp @@ -1305,12 +1305,6 @@ bool Inter_v2::o2_checkData(OpFuncParams ¶ms) { char *file = _vm->_game->_script->getResultStr(); - // WORKAROUND: In some games (at least all the Playtoons), some files are - // read on CD (and only on CD). "@:\" is replaced by the CD drive letter. - // As the files are copied on the HDD, those characters are skipped. - if (strncmp(file, "@:\\", 3) ==0 ) - file += 3; - // WORKAROUND: For some reason, the variable indicating which TOT to load next // is overwritten in the guard house card game in Woodruff. if ((_vm->getGameType() == kGameTypeWoodruff) && !scumm_stricmp(file, "6.TOT")) diff --git a/engines/gob/module.mk b/engines/gob/module.mk index 26cc4e5d27..5b26cb97d4 100644 --- a/engines/gob/module.mk +++ b/engines/gob/module.mk @@ -30,6 +30,7 @@ MODULE_OBJS := \ inter_v2.o \ inter_bargon.o \ inter_fascin.o \ + inter_playtoons.o \ inter_v3.o \ inter_v4.o \ inter_v5.o \ diff --git a/engines/gob/save/saveload.h b/engines/gob/save/saveload.h index 1a1a47178b..4779de703c 100644 --- a/engines/gob/save/saveload.h +++ b/engines/gob/save/saveload.h @@ -251,7 +251,6 @@ protected: GameHandler *_gameHandler; NotesHandler *_notesHandler; - TempSpriteHandler *_tempSpriteHandler; ScreenshotHandler *_screenshotHandler; SaveHandler *getHandler(const char *fileName) const; @@ -450,13 +449,16 @@ protected: }; /** Save/Load class for Playtoons. */ -/** Only used for the moment to check file presence */ - class SaveLoad_Playtoons : public SaveLoad { public: - SaveLoad_Playtoons(GobEngine *vm); + static const uint32 kSlotCount = 60; + static const uint32 kSlotNameLength = 40; + + SaveLoad_Playtoons(GobEngine *vm, const char *targetName); virtual ~SaveLoad_Playtoons(); + SaveMode getSaveMode(const char *fileName) const; + protected: struct SaveFile { const char *sourceName; @@ -465,14 +467,45 @@ protected: const char *description; }; + /** Handles the save slots. */ + class GameHandler : public SaveHandler { + public: + GameHandler(GobEngine *vm, const char *target); + ~GameHandler(); + + int32 getSize(); + bool load(int16 dataVar, int32 size, int32 offset); + bool save(int16 dataVar, int32 size, int32 offset); + + private: + /** Slot file construction. */ + class File : public SlotFileIndexed { + public: + File(GobEngine *vm, const char *base); + ~File(); + + int getSlot(int32 offset) const; + int getSlotRemainder(int32 offset) const; + }; + + byte _props[500]; + /** The index. 500 bytes properties + kSlotCount * kSlotNameLength bytes. */ + byte _index[2400]; + + File *_slotFile; + + void buildIndex(byte *buffer) const; + }; + static SaveFile _saveFiles[]; - SaveMode getSaveMode(const char *fileName) const; + GameHandler *_gameHandler; + + SaveHandler *getHandler(const char *fileName) const; + const char *getDescription(const char *fileName) const; const SaveFile *getSaveFile(const char *fileName) const; - SaveFile *getSaveFile(const char *fileName); - }; } // End of namespace Gob diff --git a/engines/gob/save/saveload_playtoons.cpp b/engines/gob/save/saveload_playtoons.cpp index 3014e3f2bf..392c9a94ac 100644 --- a/engines/gob/save/saveload_playtoons.cpp +++ b/engines/gob/save/saveload_playtoons.cpp @@ -30,14 +30,17 @@ namespace Gob { SaveLoad_Playtoons::SaveFile SaveLoad_Playtoons::_saveFiles[] = { - { "disk.001", kSaveModeExists, 0, 0}, // Playtoons 1 identification file - { "disk.002", kSaveModeExists, 0, 0}, // Playtoons 2 identification file - { "disk.003", kSaveModeExists, 0, 0}, // Playtoons 3 identification file - { "disk.004", kSaveModeExists, 0, 0}, // Playtoons 4 identification file - { "disk.005", kSaveModeExists, 0, 0}, // Playtoons 5 identification file - { "disk.006", kSaveModeExists, 0, 0}, // Playtoons CK 1 identification file - { "disk.007", kSaveModeExists, 0, 0}, // Playtoons CK 2 identification file - { "disk.008", kSaveModeExists, 0, 0}, // Playtoons CK 3 identification file + { "did.inf", kSaveModeSave, 0, 0}, // + { "dan.itk", kSaveModeNone, 0, 0}, // Playtoons CK initial detection file + { "disk.001", kSaveModeExists, 0, 0}, // Playtoons 1 identification file + { "disk.002", kSaveModeExists, 0, 0}, // Playtoons 2 identification file + { "disk.003", kSaveModeExists, 0, 0}, // Playtoons 3 identification file + { "disk.004", kSaveModeExists, 0, 0}, // Playtoons 4 identification file + { "disk.005", kSaveModeExists, 0, 0}, // Playtoons 5 identification file + { "disk.006", kSaveModeExists, 0, 0}, // Playtoons CK 1 identification file + { "disk.007", kSaveModeExists, 0, 0}, // Playtoons CK 2 identification file + { "disk.008", kSaveModeExists, 0, 0}, // Playtoons CK 3 identification file +/* { "titre.001", kSaveModeExists, 0, 0}, // Playtoons 1 titles { "titre.002", kSaveModeExists, 0, 0}, // Playtoons 2 titles { "titre.003", kSaveModeExists, 0, 0}, // Playtoons 3 titles @@ -46,25 +49,237 @@ SaveLoad_Playtoons::SaveFile SaveLoad_Playtoons::_saveFiles[] = { { "titre.006", kSaveModeExists, 0, 0}, // Playtoons CK 1 empty title (???) { "titre.007", kSaveModeExists, 0, 0}, // Playtoons CK 2 empty title (???) { "titre.008", kSaveModeExists, 0, 0}, // Playtoons CK 3 empty title (???) - { "mdo.def", kSaveModeExists, 0, 0}, - { "dan.itk", kSaveModeNone, 0, 0}, - { "did.inf", kSaveModeSave, 0, 0}, + { "mdo.def", kSaveModeExists, 0, 0}, // +*/ }; -SaveLoad::SaveMode SaveLoad_Playtoons::getSaveMode(const char *fileName) const { - const SaveFile *saveFile = getSaveFile(fileName); +SaveLoad_Playtoons::GameHandler::File::File(GobEngine *vm, const char *base) : + SlotFileIndexed(vm, SaveLoad_Playtoons::kSlotCount, base, "s") { +} - if (saveFile) - return saveFile->mode; +SaveLoad_Playtoons::GameHandler::File::~File() { +} - return kSaveModeNone; +int SaveLoad_Playtoons::GameHandler::File::getSlot(int32 offset) const { + uint32 varSize = SaveHandler::getVarSize(_vm); + + if (varSize == 0) + return -1; + + return ((offset - 2900) / varSize); +} + +int SaveLoad_Playtoons::GameHandler::File::getSlotRemainder(int32 offset) const { + uint32 varSize = SaveHandler::getVarSize(_vm); + + if (varSize == 0) + return -1; + + return ((offset - 2900) % varSize); +} + + +SaveLoad_Playtoons::GameHandler::GameHandler(GobEngine *vm, const char *target) : SaveHandler(vm) { + memset(_props, 0, 500); + memset(_index, 0, 2400); + + _slotFile = new File(vm, target); +} + +SaveLoad_Playtoons::GameHandler::~GameHandler() { + delete _slotFile; +} + +int32 SaveLoad_Playtoons::GameHandler::getSize() { + uint32 varSize = SaveHandler::getVarSize(_vm); + + if (varSize == 0) + return -1; + + return _slotFile->tallyUpFiles(varSize, 2900); +} + +bool SaveLoad_Playtoons::GameHandler::load(int16 dataVar, int32 size, int32 offset) { + uint32 varSize = SaveHandler::getVarSize(_vm); + + if (varSize == 0) + return false; + + if (size == 0) { + // Indicator to load all variables + dataVar = 0; + size = varSize; + } + + if (offset < 500) { + // Properties + + if ((offset + size) > 500) { + warning("Wrong index size (%d, %d)", size, offset); + return false; + } + + _vm->_inter->_variables->copyFrom(dataVar, _props + offset, size); + + } else if (offset < 2900) { + // Save index + + if (size != 2400) { + warning("Wrong index size (%d, %d)", size, offset); + return false; + } + + buildIndex(_vm->_inter->_variables->getAddressOff8(dataVar)); + + } else { + // Save slot, whole variable block + + uint32 slot = _slotFile->getSlot(offset); + int slotRem = _slotFile->getSlotRemainder(offset); + + debugC(2, kDebugSaveLoad, "Loading from slot %d", slot); + + if ((slot >= kSlotCount) || (slotRem != 0) || + (dataVar != 0) || (((uint32) size) != varSize)) { + + warning("Invalid loading procedure (%d, %d, %d, %d, %d)", + dataVar, size, offset, slot, slotRem); + return false; + } + + Common::String slotFile = _slotFile->build(slot); + + SaveReader *reader = 0; + + // New save, load directly + reader = new SaveReader(2, slot, slotFile); + + SavePartInfo info(kSlotNameLength, (uint32) _vm->getGameType(), 0, + _vm->getEndianness(), varSize); + SavePartVars vars(_vm, varSize); + + if (!reader->load()) { + delete reader; + return false; + } + + if (!reader->readPart(0, &info)) { + delete reader; + return false; + } + if (!reader->readPart(1, &vars)) { + delete reader; + return false; + } + + // Get all variables + if (!vars.writeInto(0, 0, varSize)) { + delete reader; + return false; + } + + delete reader; + } + + return true; } -SaveLoad_Playtoons::SaveLoad_Playtoons(GobEngine *vm) : +bool SaveLoad_Playtoons::GameHandler::save(int16 dataVar, int32 size, int32 offset) { + uint32 varSize = SaveHandler::getVarSize(_vm); + + warning("Saving %d %d %d", dataVar, size, offset); + + if (varSize == 0) + return false; + + if (size == 0) { + // Indicator to save all variables + dataVar = 0; + size = varSize; + } + + if (offset < 500) { + // Properties + + if ((offset + size) > 500) { + warning("Wrong index size (%d, %d)", size, offset); + return false; + } + + _vm->_inter->_variables->copyTo(dataVar, _props + offset, size); + + } else if (offset < 2900) { + // Save index + + if (size != 2400) { + warning("Wrong index size (%d, %d)", size, offset); + return false; + } + + // Just copy the index into our buffer + _vm->_inter->_variables->copyTo(dataVar, _index, 2400); + + } else { + // Save slot, whole variable block + + uint32 slot = _slotFile->getSlot(offset); + int slotRem = _slotFile->getSlotRemainder(offset); + + debugC(2, kDebugSaveLoad, "Saving to slot %d", slot); + + if ((slot >= kSlotCount) || (slotRem != 0) || + (dataVar != 0) || (((uint32) size) != varSize)) { + + warning("Invalid saving procedure (%d, %d, %d, %d, %d)", + dataVar, size, offset, slot, slotRem); + return false; + } + + Common::String slotFile = _slotFile->build(slot); + + SaveWriter writer(2, slot, slotFile); + SavePartInfo info(kSlotNameLength, (uint32) _vm->getGameType(), 0, + _vm->getEndianness(), varSize); + SavePartVars vars(_vm, varSize); + + // Write the description + info.setDesc(_index + (slot * kSlotNameLength), kSlotNameLength); + // Write all variables + if (!vars.readFrom(0, 0, varSize)) + return false; + + if (!writer.writePart(0, &info)) + return false; + if (!writer.writePart(1, &vars)) + return false; + } + + return true; +} + +void SaveLoad_Playtoons::GameHandler::buildIndex(byte *buffer) const { + uint32 varSize = SaveHandler::getVarSize(_vm); + + if (varSize == 0) + return; + + SavePartInfo info(kSlotNameLength, (uint32) _vm->getGameType(), + 0, _vm->getEndianness(), varSize); + + _slotFile->buildIndex(buffer, info, 0); +} + + +SaveLoad_Playtoons::SaveLoad_Playtoons(GobEngine *vm, const char *targetName) : SaveLoad(vm) { + + _gameHandler = new GameHandler(vm, targetName); + + _saveFiles[0].handler = _gameHandler; } SaveLoad_Playtoons::~SaveLoad_Playtoons() { + delete _gameHandler; } const SaveLoad_Playtoons::SaveFile *SaveLoad_Playtoons::getSaveFile(const char *fileName) const { @@ -87,4 +302,31 @@ SaveLoad_Playtoons::SaveFile *SaveLoad_Playtoons::getSaveFile(const char *fileNa return 0; } +SaveHandler *SaveLoad_Playtoons::getHandler(const char *fileName) const { + const SaveFile *saveFile = getSaveFile(fileName); + + if (saveFile) + return saveFile->handler; + + return 0; +} + +const char *SaveLoad_Playtoons::getDescription(const char *fileName) const { + const SaveFile *saveFile = getSaveFile(fileName); + + if (saveFile) + return saveFile->description; + + return 0; +} + +SaveLoad::SaveMode SaveLoad_Playtoons::getSaveMode(const char *fileName) const { + const SaveFile *saveFile = getSaveFile(fileName); + + if (saveFile) + return saveFile->mode; + + return kSaveModeNone; +} + } // End of namespace Gob diff --git a/engines/gob/save/saveload_v3.cpp b/engines/gob/save/saveload_v3.cpp index 58232e6991..c24b13d27b 100644 --- a/engines/gob/save/saveload_v3.cpp +++ b/engines/gob/save/saveload_v3.cpp @@ -33,8 +33,8 @@ namespace Gob { SaveLoad_v3::SaveFile SaveLoad_v3::_saveFiles[] = { { "cat.inf", kSaveModeSave , 0, "savegame"}, { "ima.inf", kSaveModeSave , 0, "screenshot"}, - { "intro.$$$", kSaveModeSave , 0, "temporary sprite"}, { "bloc.inf", kSaveModeSave , 0, "notes"}, + { "intro.$$$", kSaveModeIgnore, 0, "temporary sprite"}, { "prot", kSaveModeIgnore, 0, 0}, { "config", kSaveModeIgnore, 0, 0} }; @@ -496,20 +496,17 @@ SaveLoad_v3::SaveLoad_v3(GobEngine *vm, const char *targetName, ScreenshotType s _screenshotHandler = new ScreenshotHandler(vm, _gameHandler, sShotType); } - _tempSpriteHandler = new TempSpriteHandler(vm); _notesHandler = new NotesHandler(2560, vm, targetName); _saveFiles[0].handler = _gameHandler; _saveFiles[1].handler = _screenshotHandler; - _saveFiles[2].handler = _tempSpriteHandler; - _saveFiles[3].handler = _notesHandler; + _saveFiles[2].handler = _notesHandler; } SaveLoad_v3::~SaveLoad_v3() { delete _screenshotHandler; delete _gameHandler; delete _notesHandler; - delete _tempSpriteHandler; } const SaveLoad_v3::SaveFile *SaveLoad_v3::getSaveFile(const char *fileName) const { diff --git a/engines/gob/video_v6.cpp b/engines/gob/video_v6.cpp index 74447f1a84..c51b027bad 100644 --- a/engines/gob/video_v6.cpp +++ b/engines/gob/video_v6.cpp @@ -39,7 +39,7 @@ Video_v6::Video_v6(GobEngine *vm) : Video_v2(vm) { } void Video_v6::setPrePalette() { - byte *tpal = (byte *) _vm->_draw->_vgaPalette;; + byte *tpal = (byte *) _vm->_draw->_vgaPalette; const byte *fpal = (const byte *) _ditherPalette; for (int i = 0; i < 256; i++) { diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp index bf515498dc..d4d4ba29ea 100644 --- a/engines/kyra/kyra_hof.cpp +++ b/engines/kyra/kyra_hof.cpp @@ -247,6 +247,8 @@ Common::Error KyraEngine_HoF::init() { } _screen->loadFont(_screen->FID_GOLDFONT_FNT, "GOLDFONT.FNT"); + _screen->setFont(_screen->FID_8_FNT); + _screen->setAnimBlockPtr(3504); _screen->setScreenDim(0); diff --git a/engines/kyra/lol.h b/engines/kyra/lol.h index 06950779b1..1c89a7a1eb 100644 --- a/engines/kyra/lol.h +++ b/engines/kyra/lol.h @@ -301,6 +301,7 @@ friend class GUI_LoL; friend class TextDisplayer_LoL; friend class TIMInterpreter_LoL; friend class Debugger_LoL; +friend class HistoryPlayer; public: LoLEngine(OSystem *system, const GameFlags &flags); ~LoLEngine(); @@ -1124,14 +1125,14 @@ private: uint16 _dmScaleH; int _lastMouseRegion; - int _seqWindowX1, _seqWindowY1, _seqWindowX2, _seqWindowY2, _seqTrigger; - int _spsWindowX, _spsWindowY, _spsWindowW, _spsWindowH; + int _seqWindowX1, _seqWindowY1, _seqWindowX2, _seqWindowY2, _seqTrigger; + int _spsWindowX, _spsWindowY, _spsWindowW, _spsWindowH; uint8 *_tempBuffer5120; - const char *const * _levelDatList; + const char * const *_levelDatList; int _levelDatListSize; - const char *const * _levelShpList; + const char * const *_levelShpList; int _levelShpListSize; const int8 *_dscUnk1; @@ -1476,6 +1477,31 @@ private: LevelTempData *_lvlTempData[29]; }; +class HistoryPlayer { +public: + HistoryPlayer(LoLEngine *vm); + ~HistoryPlayer(); + + void play(); +private: + OSystem *_system; + LoLEngine *_vm; + Screen *_screen; + + int _x, _y, _width, _height; + int _frame; + Movie *_wsa; + + void loadWsa(const char *filename); + void playWsa(bool direction); + void restoreWsaBkgd(); + + Movie *_fireWsa; + int _fireFrame; + uint32 _nextFireTime; + void updateFire(); +}; + } // end of namespace Kyra #endif diff --git a/engines/kyra/resource.h b/engines/kyra/resource.h index 07fb2e05b7..3dc6c5ff2f 100644 --- a/engines/kyra/resource.h +++ b/engines/kyra/resource.h @@ -282,16 +282,18 @@ enum kKyraResources { kLolButtonList7, kLolButtonList8, - lolLegendData, - lolMapCursorOvl, - lolMapStringId, - //lolMapPal, - - lolSpellbookAnim, - lolSpellbookCoords, - lolHealShapeFrames, - lolLightningDefs, - lolFireballCoords, + kLolLegendData, + kLolMapCursorOvl, + kLolMapStringId, + //kLolMapPal, + + kLolSpellbookAnim, + kLolSpellbookCoords, + kLolHealShapeFrames, + kLolLightningDefs, + kLolFireballCoords, + + kLolHistory, #endif // ENABLE_LOL kMaxResIDs diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp index bc1ccbb801..73a3e675e8 100644 --- a/engines/kyra/screen.cpp +++ b/engines/kyra/screen.cpp @@ -49,6 +49,8 @@ Screen::Screen(KyraEngine_v1 *vm, OSystem *system) _sjisFont = 0; memset(_fonts, 0, sizeof(_fonts)); + + _currentFont = FID_8_FNT; } Screen::~Screen() { @@ -658,10 +660,18 @@ int Screen::fadePalStep(const Palette &pal, int diff) { } void Screen::setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue) { - getPalette(0)[index * 3 + 0] = red; - getPalette(0)[index * 3 + 1] = green; - getPalette(0)[index * 3 + 2] = blue; - setScreenPalette(getPalette(0)); + Palette &pal = getPalette(0); + + const int offset = index * 3; + + if (pal[offset + 0] == red && pal[offset + 1] == green && pal[offset + 2] == blue) + return; + + pal[offset + 0] = red; + pal[offset + 1] = green; + pal[offset + 2] = blue; + + setScreenPalette(pal); } void Screen::getRealPalette(int num, uint8 *dst) { diff --git a/engines/kyra/sequences_lok.cpp b/engines/kyra/sequences_lok.cpp index 83b4dd9af4..e6dfd9efe2 100644 --- a/engines/kyra/sequences_lok.cpp +++ b/engines/kyra/sequences_lok.cpp @@ -1143,8 +1143,16 @@ void KyraEngine_LoK::seq_playEnding() { _screen->showMouse(); if (_flags.platform == Common::kPlatformAmiga) { - while (!shouldQuit()) + _screen->_charWidth = -2; + _screen->setCurPage(2); + + _screen->getPalette(2).clear(); + _screen->setScreenPalette(_screen->getPalette(2)); + + while (!shouldQuit()) { seq_playCreditsAmiga(); + delayUntil(_system->getMillis() + 300 * _tickLength); + } } else { seq_playCredits(); } @@ -1295,8 +1303,10 @@ void KyraEngine_LoK::seq_playCredits() { _screen->updateScreen(); } - if (checkInput(0, false)) + if (checkInput(0, false)) { + removeInputTop(); finished = true; + } uint32 now = _system->getMillis(); uint32 nextLoop = startLoop + _tickLength * 5; @@ -1317,17 +1327,14 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { _screen->loadBitmap("CHALET.CPS", 4, 2, &_screen->getPalette(0)); _screen->copyPage(2, 0); - _screen->setCurPage(2); - - _screen->getPalette(2).clear(); - _screen->setScreenPalette(_screen->getPalette(2)); _screen->getPalette(0).fill(16, 1, 63); _screen->fadePalette(_screen->getPalette(0), 0x5A); + _screen->updateScreen(); const char *theEnd = "THE END"; - const int width = _screen->getTextWidth(theEnd); + const int width = _screen->getTextWidth(theEnd) + 1; int x = (320 - width) / 2 + 1; _screen->copyRegion(x, 8, x, 8, width, 56, 0, 2, Screen::CR_NO_P_CHECK); @@ -1359,7 +1366,6 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { char *buffer = new char[size]; assert(buffer); memcpy(buffer, bufferTmp, size); - _staticres->unloadId(k1CreditsStrings); char stringBuffer[81]; memset(stringBuffer, 0, sizeof(stringBuffer)); @@ -1404,7 +1410,7 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { _screen->printText(stringBuffer, x + 8, 0, 31, 0); - for (int i = 0; i < fontHeight; ++i) { + for (int i = 0; i < fontHeight && !shouldQuit(); ++i) { _screen->copyRegion(0, 141, 0, 140, 320, 59, 0, 0, Screen::CR_NO_P_CHECK); _screen->copyRegion(0, i, 0, 198, 320, 3, 2, 0, Screen::CR_NO_P_CHECK); _screen->updateScreen(); @@ -1422,8 +1428,10 @@ void KyraEngine_LoK::seq_playCreditsAmiga() { *specialString = 0; } - if (checkInput(0, false)) + if (checkInput(0, false)) { + removeInputTop(); break; + } } while (++cur != buffer + size && !shouldQuit()); delete[] buffer; diff --git a/engines/kyra/sequences_lol.cpp b/engines/kyra/sequences_lol.cpp index 5826b2b09e..ae23d130ef 100644 --- a/engines/kyra/sequences_lol.cpp +++ b/engines/kyra/sequences_lol.cpp @@ -89,8 +89,10 @@ int LoLEngine::processPrologue() { showIntro(); break; - case 2: // "Lore of the Lands" (only CD version) - break; + case 2: { // "Lore of the Lands" (only CD version) + HistoryPlayer history(this); + history.play(); + } break; case 3: // Load game if (_gui->runMenu(_gui->_loadMenu)) @@ -121,7 +123,8 @@ void LoLEngine::setupPrologueData(bool load) { static const char * const fileListCD[] = { "GENERAL.PAK", "INTROVOC.PAK", "STARTUP.PAK", "INTRO1.PAK", "INTRO2.PAK", "INTRO3.PAK", "INTRO4.PAK", "INTRO5.PAK", - "INTRO6.PAK", "INTRO7.PAK", "INTRO8.PAK", "INTRO9.PAK", 0 + "INTRO6.PAK", "INTRO7.PAK", "INTRO8.PAK", "INTRO9.PAK", + "HISTORY.PAK", 0 }; static const char * const fileListFloppyExtracted[] = { @@ -683,6 +686,271 @@ void LoLEngine::showStarcraftLogo() { delete ci; } +// history player + +HistoryPlayer::HistoryPlayer(LoLEngine *vm) : _system(vm->_system), _vm(vm), _screen(vm->screen()) { + _x = _y = _width = _height = 0; + _frame = _fireFrame = 0; + _nextFireTime = 0; + + _wsa = new WSAMovie_v2(vm); + assert(_wsa); + _fireWsa = new WSAMovie_v2(vm); + assert(_fireWsa); +} + +HistoryPlayer::~HistoryPlayer() { + delete _wsa; + delete _fireWsa; +} + +void HistoryPlayer::play() { + int dataSize = 0; + const char *data = (const char *)_vm->staticres()->loadRawData(kLolHistory, dataSize); + + if (!data) + error("Could not load history data"); + + _screen->loadFont(Screen::FID_9_FNT, "FONT9P.FNT"); + + Palette pal(256); + pal.fill(0, 256, 0); + _screen->fadePalette(pal, 0x1E); + + _screen->loadBitmap("BACKGND.CPS", 8, 8, &pal); + _screen->copyRegion(0, 0, 0, 0, 320, 200, 8, 0, Screen::CR_NO_P_CHECK); + _screen->copyRegion(0, 0, 0, 0, 320, 200, 8, 2, Screen::CR_NO_P_CHECK); + _screen->updateScreen(); + + _screen->fadePalette(pal, 0x82); + + _screen->copyRegion(_x, _y, _x, _y, _width, _height, 2, 0); + _screen->updateScreen(); + + pal.fill(0, 256, 0); + _screen->setFont(Screen::FID_9_FNT); + + char tempWsaFilename[16]; + char voiceFilename[13]; + // the 'a' *has* to be lowercase + strncpy(voiceFilename, "PS_1a", sizeof(voiceFilename)); + + int part = 0; + Sound *sound = _vm->sound(); + + Common::Functor0Mem<void, HistoryPlayer> palFade(this, &HistoryPlayer::updateFire); + + for (; voiceFilename[3] <= '9' && !_vm->shouldQuit() && !_vm->skipFlag(); ++voiceFilename[3], voiceFilename[4] = 'a') { + while (!_vm->shouldQuit() && !_vm->skipFlag()) { + if (!sound->voiceFileIsPresent(voiceFilename)) + break; + + if (data[part * 15] == voiceFilename[3] && data[part * 15 + 1] == voiceFilename[4]) { + switch (part) { + case 0: + loadWsa(&data[part * 15 + 2]); + playWsa(true); + sound->voicePlay(voiceFilename); + break; + + case 1: case 2: case 8: + case 16: case 25: + sound->voicePlay(voiceFilename); + playWsa(true); + break; + + case 3: case 7: case 10: + case 17: case 23: case 26: + sound->voicePlay(voiceFilename); + playWsa(true); + restoreWsaBkgd(); + loadWsa(&data[part * 15 + 2]); + playWsa(true); + break; + + case 6: + sound->voicePlay(voiceFilename); + playWsa(false); + restoreWsaBkgd(); + loadWsa(&data[part * 15 + 2]); + playWsa(true); + _vm->delayWithTicks(30); + playWsa(true); + break; + + case 9: + sound->voicePlay(voiceFilename); + loadWsa(&data[part * 15 + 2]); + playWsa(true); + break; + + case 22: + playWsa(false); + restoreWsaBkgd(); + loadWsa(&data[part * 15 + 2]); + _vm->delayWithTicks(30); + sound->voicePlay(voiceFilename); + playWsa(true); + + strcpy(tempWsaFilename, &data[part * 15]); + + for (int i = 1; i < 4 && !_vm->shouldQuit(); ++i) { + uint32 nextTime = _system->getMillis() + 30 * _vm->tickLength(); + tempWsaFilename[8] = 'a' + i; + + loadWsa(&tempWsaFilename[2]); + _vm->delayUntil(nextTime); + + playWsa(true); + } + + tempWsaFilename[8] = 'e'; + loadWsa(&tempWsaFilename[2]); + break; + + case 29: + sound->voicePlay(voiceFilename); + playWsa(false); + restoreWsaBkgd(); + loadWsa(&data[part * 15 + 2]); + + _fireWsa->open("FIRE.WSA", 0, 0); + playWsa(true); + _fireFrame = 0; + + for (int i = 0; i < 12 && !_vm->shouldQuit(); ++i, ++_fireFrame) { + uint32 nextTime = _system->getMillis() + 3 * _vm->tickLength(); + + if (_fireFrame > 4) + _fireFrame = 0; + + _fireWsa->displayFrame(_fireFrame, 0, 75, 51, 0, 0, 0); + _screen->updateScreen(); + _vm->delayUntil(nextTime); + } + + _screen->loadPalette("DRACPAL.PAL", pal); + _screen->fadePalette(pal, 0x78, &palFade); + + while (sound->voiceIsPlaying() && !_vm->shouldQuit()) { + uint32 nextTime = _system->getMillis() + 3 * _vm->tickLength(); + + ++_fireFrame; + if (_fireFrame > 4) + _fireFrame = 0; + + _fireWsa->displayFrame(_fireFrame, 0, 75, 51, 0, 0, 0); + _screen->updateScreen(); + _vm->delayUntil(nextTime); + } + + _fireFrame = 0; + for (int i = 0; i < 10; ++i, ++_fireFrame) { + uint32 nextTime = _system->getMillis() + 3 * _vm->tickLength(); + + if (_fireFrame > 4) + _fireFrame = 0; + + _fireWsa->displayFrame(_fireFrame, 0, 75, 51, 0, 0, 0); + _screen->updateScreen(); + _vm->delayUntil(nextTime); + } + + break; + + default: + sound->voicePlay(voiceFilename); + playWsa(false); + restoreWsaBkgd(); + loadWsa(&data[part * 15 + 2]); + playWsa(true); + break; + } + + ++part; + } else { + sound->voicePlay(voiceFilename); + } + + while (sound->voiceIsPlaying() && !_vm->shouldQuit() && !_vm->skipFlag()) + _vm->delay(10); + + if (_vm->skipFlag()) { + sound->voiceStop(); + _vm->resetSkipFlag(); + } + + ++voiceFilename[4]; + } + + if (_vm->skipFlag()) + _vm->resetSkipFlag(); + } + + if (_vm->skipFlag()) + _vm->resetSkipFlag(); + + pal.fill(0, 256, 63); + if (_fireWsa->opened()) + _screen->fadePalette(pal, 0x3C, &palFade); + else + _screen->fadePalette(pal, 0x3C); + + _screen->clearPage(0); + pal.fill(0, 256, 0); + _screen->fadePalette(pal, 0x3C); +} + +void HistoryPlayer::loadWsa(const char *filename) { + if (_wsa->opened()) + _wsa->close(); + + Palette pal(256); + if (!_wsa->open(filename, 3, &pal)) + error("Could not load WSA file: '%s'", filename); + _screen->setScreenPalette(pal); + + _x = _wsa->xAdd(); + _y = _wsa->yAdd(); + _width = _wsa->width(); + _height = _wsa->height(); + _frame = 1; +} + +void HistoryPlayer::playWsa(bool direction) { + const int tickLength = _vm->tickLength(); + + for (int i = 0; i < 15 && !_vm->shouldQuit(); ++i) { + uint32 nextTime = _system->getMillis() + 3 * tickLength; + + _wsa->displayFrame(_frame, 2, 0, 0, 0, 0, 0); + _screen->copyRegion(_x, _y, _x, _y, _width, _height, 2, 0); + _screen->updateScreen(); + _vm->delayUntil(nextTime); + + if (direction) + ++_frame; + else + --_frame; + } +} + +void HistoryPlayer::restoreWsaBkgd() { + _screen->copyRegion(_x, _y, _x, _y, _width, _height, 8, 0); + _screen->copyRegion(_x, _y, _x, _y, _width, _height, 8, 2); + _screen->updateScreen(); +} + +void HistoryPlayer::updateFire() { + if (_system->getMillis() > _nextFireTime) { + _fireWsa->displayFrame(_fireFrame, 0, 75, 51, 0, 0, 0); + _fireFrame = (_fireFrame + 1) % 5; + _nextFireTime = _system->getMillis() + 4 * _vm->tickLength(); + } + + _screen->updateScreen(); +} + // outro void LoLEngine::setupEpilogueData(bool load) { diff --git a/engines/kyra/sound.cpp b/engines/kyra/sound.cpp index 83584ab454..781516282e 100644 --- a/engines/kyra/sound.cpp +++ b/engines/kyra/sound.cpp @@ -242,10 +242,15 @@ namespace { // A simple wrapper to create VOC streams the way like creating MP3, OGG/Vorbis and FLAC streams. // Possible TODO: Think of making this complete and moving it to sound/voc.cpp ? Audio::AudioStream *makeVOCStream(Common::SeekableReadStream *stream, bool disposeAfterUse, uint32 startTime, uint32 duration, uint numLoops) { + +#ifdef STREAM_AUDIO_FROM_DISK + Audio::AudioStream *as = Audio::makeVOCStream(*stream, Audio::Mixer::FLAG_UNSIGNED, 0, 0, disposeAfterUse); +#else Audio::AudioStream *as = Audio::makeVOCStream(*stream, Audio::Mixer::FLAG_UNSIGNED); if (disposeAfterUse) delete stream; +#endif return as; } diff --git a/engines/kyra/sound_midi.cpp b/engines/kyra/sound_midi.cpp index 451b77cec2..28d4844d7d 100644 --- a/engines/kyra/sound_midi.cpp +++ b/engines/kyra/sound_midi.cpp @@ -658,6 +658,9 @@ void SoundMidiPC::loadSfxFile(Common::String file) { } void SoundMidiPC::playTrack(uint8 track) { + if (!_musicEnabled) + return; + haltTrack(); Common::StackLock lock(_mutex); @@ -685,6 +688,9 @@ bool SoundMidiPC::isPlaying() { } void SoundMidiPC::playSoundEffect(uint8 track) { + if (!_sfxEnabled) + return; + Common::StackLock lock(_mutex); for (int i = 0; i < 3; ++i) { if (!_sfx[i]->isPlaying()) { diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp index 83f4b22b6d..d4882a12af 100644 --- a/engines/kyra/staticres.cpp +++ b/engines/kyra/staticres.cpp @@ -44,7 +44,7 @@ namespace Kyra { -#define RESFILE_VERSION 49 +#define RESFILE_VERSION 50 namespace { bool checkKyraDat(Common::SeekableReadStream *file) { @@ -444,16 +444,18 @@ bool StaticResource::init() { { kLolButtonList7, kLolRawDataBe16, "BUTTON7.LST" }, { kLolButtonList8, kLolRawDataBe16, "BUTTON84.LST" }, - { lolLegendData, kRawData, "MAPLGND.DEF" }, - { lolMapCursorOvl, kRawData, "MAPCURSOR.PAL" }, - { lolMapStringId, kLolRawDataBe16, "MAPSTRID.LST" }, - //{ lolMapPal, kRawData, "MAP.PAL" }, + { kLolLegendData, kRawData, "MAPLGND.DEF" }, + { kLolMapCursorOvl, kRawData, "MAPCURSOR.PAL" }, + { kLolMapStringId, kLolRawDataBe16, "MAPSTRID.LST" }, + //{ kLolMapPal, kRawData, "MAP.PAL" }, - { lolSpellbookAnim, kRawData, "MBOOKA.DEF" }, - { lolSpellbookCoords, kRawData, "MBOOKC.DEF" }, - { lolHealShapeFrames, kRawData, "MHEAL.SHP" }, - { lolLightningDefs, kRawData, "MLGHTNG.DEF" }, - { lolFireballCoords, kLolRawDataBe16, "MFIREBLL.DEF" }, + { kLolSpellbookAnim, kRawData, "MBOOKA.DEF" }, + { kLolSpellbookCoords, kRawData, "MBOOKC.DEF" }, + { kLolHealShapeFrames, kRawData, "MHEAL.SHP" }, + { kLolLightningDefs, kRawData, "MLGHTNG.DEF" }, + { kLolFireballCoords, kLolRawDataBe16, "MFIREBLL.DEF" }, + + { kLolHistory, kRawData, "HISTORY.FLS" }, { 0, 0, 0 } }; @@ -589,6 +591,7 @@ void StaticResource::unloadId(int id) { if (pos->id == id || id == -1) { const FileType *filetype = getFiletype(pos->type); (this->*(filetype->free))(pos->data, pos->size); + pos = _resList.erase(pos); if (id != -1) break; } @@ -1874,10 +1877,10 @@ void LoLEngine::initStaticResource() { _buttonList7 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList7, _buttonList7Size); _buttonList8 = (const int16 *)_staticres->loadRawDataBe16(kLolButtonList8, _buttonList8Size); - _autoMapStrings = _staticres->loadRawDataBe16(lolMapStringId, _autoMapStringsSize); + _autoMapStrings = _staticres->loadRawDataBe16(kLolMapStringId, _autoMapStringsSize); int tmpSize = 0; - const uint8 *tmp = _staticres->loadRawData(lolLegendData, tmpSize); + const uint8 *tmp = _staticres->loadRawData(kLolLegendData, tmpSize); tmpSize /= 5; if (tmp) { _defaultLegendData = new MapLegendData[tmpSize]; @@ -1888,19 +1891,19 @@ void LoLEngine::initStaticResource() { _defaultLegendData[i].stringId = READ_LE_UINT16(tmp); tmp += 2; } - _staticres->unloadId(lolLegendData); + _staticres->unloadId(kLolLegendData); } - tmp = _staticres->loadRawData(lolMapCursorOvl, tmpSize); + tmp = _staticres->loadRawData(kLolMapCursorOvl, tmpSize); _mapCursorOverlay = new uint8[tmpSize]; memcpy(_mapCursorOverlay, tmp, tmpSize); - _staticres->unloadId(lolMapCursorOvl); + _staticres->unloadId(kLolMapCursorOvl); - _updateSpellBookCoords = _staticres->loadRawData(lolSpellbookCoords, _updateSpellBookCoordsSize); - _updateSpellBookAnimData = _staticres->loadRawData(lolSpellbookAnim, _updateSpellBookAnimDataSize); - _healShapeFrames = _staticres->loadRawData(lolHealShapeFrames, _healShapeFramesSize); + _updateSpellBookCoords = _staticres->loadRawData(kLolSpellbookCoords, _updateSpellBookCoordsSize); + _updateSpellBookAnimData = _staticres->loadRawData(kLolSpellbookAnim, _updateSpellBookAnimDataSize); + _healShapeFrames = _staticres->loadRawData(kLolHealShapeFrames, _healShapeFramesSize); - tmp = _staticres->loadRawData(lolLightningDefs, tmpSize); + tmp = _staticres->loadRawData(kLolLightningDefs, tmpSize); if (tmp) { _lightningProps = new LightningProperty[5]; for (int i = 0; i < 5; i++) { @@ -1908,10 +1911,10 @@ void LoLEngine::initStaticResource() { _lightningProps[i].frameDiv = tmp[(i << 2) + 1]; _lightningProps[i].sfxId = READ_LE_UINT16(&tmp[(i << 2) + 2]); } - _staticres->unloadId(lolLightningDefs); + _staticres->unloadId(kLolLightningDefs); } - _fireBallCoords = (const int16*)_staticres->loadRawDataBe16(lolFireballCoords, _fireBallCoordsSize); + _fireBallCoords = (const int16*)_staticres->loadRawDataBe16(kLolFireballCoords, _fireBallCoordsSize); _buttonCallbacks.clear(); _buttonCallbacks.reserve(95); @@ -3417,7 +3420,7 @@ extern const byte LoKAmigaSfxIntro[] = { 0x45, 0x03, 0x00, 0x00, 0x02, 0x24, 0x6E, 0x00, 0x3C, 0x16, 0x00, 0x00, 0x26, 0x77, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // TODO: fileoffset = 0x2C55E, len = 120 * 8 @@ -3541,7 +3544,7 @@ extern const byte LoKAmigaSfxGame[] = { 0x30, 0x23, 0x00, 0x00, 0x16, 0x99, 0x50, 0x02, 0x30, 0x23, 0x00, 0x00, 0x16, 0x99, 0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x13, 0x00, 0x00, 0x01, 0x56, 0x78, 0x02, + 0x3C, 0x13, 0x00, 0x00, 0x01, 0x56, 0x78, 0x02 }; } // End of namespace Kyra diff --git a/engines/parallaction/font.cpp b/engines/parallaction/font.cpp index 9207d24e29..daa74cc7dc 100644 --- a/engines/parallaction/font.cpp +++ b/engines/parallaction/font.cpp @@ -256,7 +256,7 @@ public: byte* getData(uint16 index) { assert(index < _numGlyphs); - return _data + (_height * _widths[index]) * index;; + return _data + (_height * _widths[index]) * index; } void getRect(uint16 index, Common::Rect &r) { diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index eacae8e697..35ca688233 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -381,7 +381,7 @@ const char *selector_name(EngineState *s, int selector) { } bool Console::cmdGetVersion(int argc, const char **argv) { - DebugPrintf("Resource file version: %s\n", versionNames[_vm->getResMgr()->_sciVersion]); + DebugPrintf("Resource file version: %s\n", versionNames[_vm->getResMgr()->sciVersion()]); DebugPrintf("Emulated interpreter version: %s\n", versionNames[_vm->getVersion()]); return true; diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index d0b3919c60..7f9190444d 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -108,7 +108,6 @@ static const PlainGameDescriptor SciGameTitles[] = { {"resource.001", 0, resMd5, resSize}, \ {NULL, 0, NULL, 0}}, lang, Common::kPlatformPC, 0, GUIO_NOSPEECH}, \ 0, \ - SCI_VERSION_AUTODETECT, \ ver \ } @@ -128,7 +127,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "6fd05926c2199af0af6f72f90d0d7260", 126895}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -143,7 +141,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "d226d7d3b4f77c4a566913fc310487fc", 464348}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -158,7 +155,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "85e51acb5f9c539d66e3c8fe40e17da5", 493638}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -170,7 +166,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "2af49dbd8f2e1db4ab09f9310dc91259", 570553}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -184,7 +179,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "c0c29c51af66d65cb53f49e785a2d978", 1280907}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -196,7 +190,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "930e416bec196b9703a331d81b3d66f2", 1283812}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -208,7 +201,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "735be4e58957180cfc807d5e18fdffcd", 1433302}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -219,7 +211,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "11391434f41c834090d7a1e9488ce936", 129739}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -230,7 +221,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "acde93e58fca4f7a2a5a220558a94aa8", 272629}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -241,7 +231,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "acde93e58fca4f7a2a5a220558a94aa8", 335362}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -252,7 +241,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "62fb9256f8e7e6e65a6875efdb7939ac", 203396}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -269,7 +257,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "605b67a9ef199a9bb015745e7c004cf4", 478384}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -280,7 +267,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "d4b75e280d1c3a97cfef1b0bebff387c", 573647}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -296,7 +282,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "8613c45fc771d658e5a505b9a4a54f31", 670883}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -311,7 +296,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "64f342463f6f35ba71b3509ef696ae3f", 669188}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -329,7 +313,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "8f880a536908ab496bbc552f7f5c3738", 585255}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -340,7 +323,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "4930708722f34bfbaa4945fb08f55f61", 232523}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -355,7 +337,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "8e1a3a8c588007404b532b8dfacc1460", 729143}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -372,7 +353,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "8e1a3a8c588007404b532b8dfacc1460", 358182}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -390,25 +370,23 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "f9487732289a4f4966b4e34eea413325", 842817}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, // Conquests of the Longbow - English DOS // SCI interpreter version 1.000.510 {{"longbow", "", { - {"resource.map", 0, "36d3b81ff75b67dd4d27b7f5d3166503", 6261}, - {"resource.000", 0, "36e8fda5d0b8c49e587c8a9617959f72", 1096767}, - {"resource.001", 0, "d4c299213f8d799da1492680d12d0fb3", 1133226}, - {"resource.002", 0, "7f6ce331219d58d5087731e4475ab4f1", 1128555}, - {"resource.003", 0, "21ebe6b39b57a73fc449f67f013765aa", 972635}, - {"resource.004", 0, "9cfce07e204a329e94fda8b5657621da", 1064637}, - {"resource.005", 0, "d036df0872f2db19bca34601276be2d7", 1154950}, - {"resource.006", 0, "b367a6a59f29ee30dde1d88a5a41152d", 1042966}, - {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, - 0, - SCI_VERSION_AUTODETECT, - SCI_VERSION_1 + {"resource.map", 0, "36d3b81ff75b67dd4d27b7f5d3166503", 6261}, + {"resource.000", 0, "36e8fda5d0b8c49e587c8a9617959f72", 1096767}, + {"resource.001", 0, "d4c299213f8d799da1492680d12d0fb3", 1133226}, + {"resource.002", 0, "7f6ce331219d58d5087731e4475ab4f1", 1128555}, + {"resource.003", 0, "21ebe6b39b57a73fc449f67f013765aa", 972635}, + {"resource.004", 0, "9cfce07e204a329e94fda8b5657621da", 1064637}, + {"resource.005", 0, "d036df0872f2db19bca34601276be2d7", 1154950}, + {"resource.006", 0, "b367a6a59f29ee30dde1d88a5a41152d", 1042966}, + {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, + 0, + SCI_VERSION_1 }, // Conquests of the Longbow - English DOS Floppy (from jvprat) @@ -424,7 +402,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "21ebe6b39b57a73fc449f67f013765aa", 1284720}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -440,7 +417,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "21ebe6b39b57a73fc449f67f013765aa", 1284609}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -457,7 +433,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "8c767b3939add63d11274065e46aad04", 713158}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -468,7 +443,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "f05a20cc07eee85da8e999d0ac0f596b", 869916}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -485,7 +459,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "b367a6a59f29ee30dde1d88a5a41152d", 1123585}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -497,7 +470,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "baf9393a9bfa73098adb501e5bc5487b", 657518}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -508,7 +480,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "d908dbef56816ac6c60dd145fdeafb2b", 3536046}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -522,7 +493,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "f3146df0ad4297f5ce35aa8c4753bf6c", 586832}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -536,7 +506,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "83ac03e4bddb2c1ac2d36d2a587d0536", 1145616}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -550,7 +519,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "84dd11b6825255671c703aee5ceff620", 1175835}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -565,7 +533,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "84dd11b6825255671c703aee5ceff620", 1174993}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -579,7 +546,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "f8f767f9d6351432621c6e54c1b2ba8c", 1141520}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -590,7 +556,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "dd6f614c43c029f063e93cd243af90a4", 525992}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -601,7 +566,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "cc1d17e5637528dbe4a812699e1cbfc6", 4208192}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -612,7 +576,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "1c4093f7248240329121fdf8c0d59152", 4231946}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -623,7 +586,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "5ea8e7a3ea10cce6efd5c106dc62fd8c", 867724}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -634,7 +596,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "ee3c64ffff0ba9fb08bea2624631c598", 5490246}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -647,7 +608,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "554f65315d851184f6e38211489fdd8f", -1}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -660,7 +620,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "304b5a5781800affd2235152a5794fa8", -1}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -676,7 +635,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "45b5bf74933ac3727e4cc844446dc052", 796156}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -689,7 +647,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "45b5bf74933ac3727e4cc844446dc052", 796156}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -700,7 +657,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "4962a3c4dd44e36e78ea4a7a374c2220", 957382}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -711,7 +667,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "f1e680095424e31f7fae1255d36bacba", 40692}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -722,7 +677,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "eb3ed7477ca4110813fe1fcf35928561", 1718450}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -734,7 +688,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -745,7 +698,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 13022630}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -756,7 +708,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13077029}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -767,7 +718,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "69b7516962510f780d38519cc15fcc7c", 12581736}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -778,7 +728,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13400497}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -789,7 +738,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "091cf08910780feabc56f8551b09cb36", 13381599}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -800,7 +748,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "d04cfc7f04b6f74d13025378be49ec2b", 4640330}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, // Gabriel Knight 2 - English DOS (from jvprat) @@ -820,7 +767,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.006", 0, "8e44e03890205a7be12f45aaba9644b4", 60659424}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -834,7 +780,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "e0dd44069a62a463fd124974b915f10d", 328912}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -845,7 +790,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "e0dd44069a62a463fd124974b915f10d", 518308}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -858,7 +802,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "e0dd44069a62a463fd124974b915f10d", 439502}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, #endif @@ -871,7 +814,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "8f2dd70abe01112eca464cda818b5eb6", 196631}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -883,7 +825,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "8f2dd70abe01112eca464cda818b5eb6", 222704}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -897,7 +838,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "143df8aef214a2db34c2d48190742012", 632273}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, #endif @@ -910,7 +850,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "24db2bccda0a3c43ac4a7b5edb116c7e", 797678}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -923,7 +862,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "0a98a268ee99b92c233a0d7187c1f0fa", 845795}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -934,7 +872,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "24c10844792c54d476d272213cbac300", 675252}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -947,7 +884,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "b86daa3ba2784d1502da881eedb80d9b", 719747}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_01_VGA_ODD, SCI_VERSION_1 }, #endif @@ -963,7 +899,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "9ae2a13708d691cd42f9129173c4b39d", 820443}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_01, SCI_VERSION_01 }, @@ -974,7 +909,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "4cfb9040db152868f7cb6a1e8151c910", 296555}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -988,7 +922,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "fed9e0072ffd511d248674e60dee2099", 717478}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1004,7 +937,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "3fac034c7d130e055d05bc43a1f8d5f8", 549993}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1015,7 +947,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "143e1c14f15ad0fbfc714f648a65f661", 205330}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1030,7 +961,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "77615c595388acf3d1df8e107bfb6b52", 479562}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1047,7 +977,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "851a62d00972dc4002f472cc0d84e71d", 341038}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1064,7 +993,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "0c8566848a76eea19a6d6220914030a7", 343882}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1083,7 +1011,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "b914b5901e786327213e779725d30dd1", 778772}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1102,7 +1029,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "56546b20db11a4836f900efa6d3a3e74", 794194}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1121,7 +1047,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "11cb750f5f816445ad0f4b9f50a4f59a", 794259}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1134,7 +1059,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "b45a581ff8751e052c7e364f58d3617f", 16800210}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1152,7 +1076,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "2f48faf27666b58c276dda20f91f4a93", 1240456}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - 0, SCI_VERSION_1 }, @@ -1170,7 +1093,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "c07494f0cce7c05210893938786a955b", 1337361}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1189,7 +1111,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "7db4d0a1d8d547c0019cb7d2a6acbdd4", 1338473}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1207,7 +1128,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "dc10c107e0923b902326a040b9c166b9", 1337859}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1225,7 +1145,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "431def14ca29cdb5e6a5e84d3f38f679", 1240176}, {NULL, 0, NULL, 0}}, Common::PL_POL, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1238,7 +1157,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "54d1fdc936f98c81f9e4c19e04fb1510", 8260}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1250,7 +1168,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "3cf5de44de36191f109d425b8450efc8", 258590}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1262,7 +1179,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "756297b2155db9e43f621c6f6fb763c3", 282822}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1274,7 +1190,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "233394a5f33b475ae5975e7e9a420865", 8376352}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_1_1, SCI_VERSION_1_1 }, @@ -1287,7 +1202,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "41eed2d3893e1ca6c3695deba4e9d2e8", 267102}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1299,7 +1213,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 203882535}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1310,7 +1223,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1321,7 +1233,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "eb63ea3a2c2469dc2d777d351c626404", 206626576}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1332,7 +1243,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "51c1ead1163e19a2de8f121c39df7a76", 200764100}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1343,7 +1253,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "d9659d2cf0c269c6a9dc776707f5bea0", 2433827}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -1361,7 +1270,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "bfd870d51dc97729f0914095f58e6957", 676881}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1376,7 +1284,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 683737}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAtariST, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1387,7 +1294,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "0c8912290af0890f8d95faeb4ddb2d68", 333031}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1401,7 +1307,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 683807}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1418,7 +1323,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 317687}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1435,7 +1339,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "e45c888d9c7c04aec0a20e9f820b79ff", 317687}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1447,7 +1350,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "2b2b1b4f7584f9b38fd13f6ab95634d1", 781912}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1459,7 +1361,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "57084910bc923bff5d6d9bc1b56e9604", 5035964}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1471,7 +1372,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "82578b8d5a7e09c4c58891ca49fae35b", 5598672}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1483,7 +1383,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "795c928cd00dfec9fbc62ebcd12e1f65", 303185}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1495,7 +1394,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "71f1f0cd9f082da2e750c793a8ed9d84", 286141}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1509,7 +1407,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "685cd6c1e05a695ab1e0db826337ee2a", 553279}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1524,7 +1421,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "4a34c3367c2fe7eb380d741374da1989", 572251}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1537,7 +1433,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "85d6935ef77e6b0e16bc307640a0d913", 1088312}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1550,7 +1445,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "85b030bb66d5342b0a068f1208c431a8", 1078443}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1561,7 +1455,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "0c0768215c562d9dace4a5ca53696cf3", 359913}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1577,7 +1470,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "ac175df0ea9a2cba57f0248651856d27", 376556}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1591,7 +1483,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "b7409ab32bc3bee2d6cce887cd33f2b6", 1092160}, {NULL, 0, NULL, 0}}, Common::RU_RUS, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1606,7 +1497,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "a0d4a625311d307257da7fc43d00459d", 717844}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1618,7 +1508,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "9f5520f0297206928df0b0b36493cd33", 127532}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1634,7 +1523,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "4a24443a25e2b1492462a52809605dc2", 345683}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1650,7 +1538,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "96033f57accfca903750413fd09193c8", 345818}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1667,7 +1554,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "433911eb764089d493aed1f958a5615a", 524259}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1681,7 +1567,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "f18441027154292836b973c655fa3175", 513651}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1698,7 +1583,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "f18441027154292836b973c655fa3175", 257174}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1710,7 +1594,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "f773d79b93dfd4052ec8c1cc64c1e6ab", 268299}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1725,7 +1608,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "3827a9b17b926e12dcc336860f50612a", 691932}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1740,7 +1622,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "65f1bdaa20f6d0470e9d969f22473873", 690826}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -1758,7 +1639,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "bafc64e3144f115dc58c6aee02de98fb", 715598}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1777,7 +1657,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "59eba83ad465b08d763b44f86afa86f6", 683135}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1788,7 +1667,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "8bd8d9c0b5f455ee1269d63ce86c50dd", 531380}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1806,7 +1684,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 1030656}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1824,7 +1701,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 993408}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1843,7 +1719,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 958842}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1862,7 +1737,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "ac443fae1285fb359bf2b2bc6a7301ae", 987222}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1873,7 +1747,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "a8989a5a89e7d4f702b26b378c7a357a", 7001981}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -1884,7 +1757,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "4462fe48c7452d98fddcec327a3e738d", 5789138}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1895,7 +1767,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "57d5fe8bb9e044158514476ea7678eb0", 5754790}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1906,7 +1777,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "f6cbc6da7b90ea135883e0759848ca2c", 5773160}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1917,7 +1787,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "f6cbc6da7b90ea135883e0759848ca2c", 5776092}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1928,7 +1797,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "7884a8db9253e29e6b37a2651fd90ba3", 5733116}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1939,7 +1807,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "3733433b517ec3d14a3331d9ab3842ae", 344830}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -1951,7 +1818,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "9a9f4870504444cda863dd14d077a680", 18520872}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1962,7 +1828,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18534274}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1973,7 +1838,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "bd944d2b06614a5b39f1586906f0ee88", 18538987}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1984,7 +1848,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "89353723488219e25589165d73ed663e", 66965678}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -1995,7 +1858,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "a8c6817bb94f332ff498a71c8b47f893", 66971724}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2006,7 +1868,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "dc37c3055fffbefb494ff22b145d377b", 66964472}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2017,7 +1878,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "440b9fed89590abb4e4386ed6f948ee2", 67140181}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2028,7 +1888,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "32792f9bc1bf3633a88b382bb3f6e40d", 67071418}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2039,7 +1898,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resmap.000", 0, "6a2b2811eef82e87cde91cf1de845af8", 2695}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2050,7 +1908,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "5d7714416b612463d750fb9c5690c859", 28952}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2061,7 +1918,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "3c585827fa4a82f4c04a56a0bc52ccee", 11494351}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2074,7 +1930,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.002", 0, "175468431a979b9f317c294ce3bc1430", 94628315}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2087,7 +1942,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.002", 0, "3c8d627c555b0e3e4f1d9955bc0f0df4", 94631127}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -2099,7 +1953,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "9e33566515b18bee7915db448063bba2", 871853}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_01, SCI_VERSION_01 }, @@ -2114,7 +1967,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "f79daa70390d73746742ffcfc3dc4471", 937580}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_01, SCI_VERSION_01 }, @@ -2128,7 +1980,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "dd6cef0c592eadb7e6be9a25307c57a2", 1344719}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_01, SCI_VERSION_01 }, @@ -2141,7 +1992,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "fb552ae550ca1dac19ed8f6a3767612d", 817191}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_01, SCI_VERSION_01 }, @@ -2152,7 +2002,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "b7ecd8ae9e254e80310b5a668b276e6e", 2948975}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_01, SCI_VERSION_01 }, @@ -2164,7 +2013,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "5a0ed1d745855148364de1b3be099bac", 4369438}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2175,7 +2023,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "5a0ed1d745855148364de1b3be099bac", 2070072}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2187,7 +2034,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "1926925c95d82f0999590e93b02887c5", 15150768}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -2199,7 +2045,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "453ea81ef66a50cbe33ce06302afe47f", 229737}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2223,7 +2068,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { //{"ressci.007", 0, "3aae6559aa1df273bc542d5ac6330d75", 25859038}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2242,7 +2086,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.005", 0, "05f9fe2bee749659acb3cd2c90252fc5", 67905112}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -2254,7 +2097,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "670d0c53622429f4b11275caf7f8d292", 5459574}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2265,7 +2107,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "118f6c31a93ec7fd9a231c61125229e3", 645494}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2276,7 +2117,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "e6a918a2dd7a4bcecd8fb389f43287c2", 1698164}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2287,7 +2127,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "e6a918a2dd7a4bcecd8fb389f43287c2", 1713544}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2298,7 +2137,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "e0d5ddf34eda903a38f0837e2aa7145b", 6401433}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2312,7 +2150,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "e008f5d6e2a7c4d4a0da0173e4fa8f8b", 553970}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2323,7 +2160,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "376ef6d6eaaeed66e1424bd219c4b9ab", 215398}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2339,7 +2175,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "77f02def3094af804fd2371db25b7100", 354991}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2352,7 +2187,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "77f02def3094af804fd2371db25b7100", 591851}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2365,7 +2199,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "77f02def3094af804fd2371db25b7100", 586857}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2381,7 +2214,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "7b229fbdf30d670d0728cede3e984a7e", 838663}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2398,7 +2230,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "6258d5dd85898d8e218eb8113ebc9059", 704485}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2414,7 +2245,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "1b91e891a3c60a941dac0eecdf83375b", 1143606}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2427,7 +2257,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "5c5a551b6c86cce2ee75becb90e0b586", 624411}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2443,7 +2272,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "0c3eb84b9755852d9e795e0d5c9373c7", 1171760}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2454,7 +2282,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "527d5684016e6816157cd15d9071b11b", 1121310}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2466,7 +2293,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "fd316a09b628b7032248139003369022", 18841068}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2477,7 +2303,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "da383857b3be1e4514daeba2524359e0", 15141432}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2488,7 +2313,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6ba98bd2e436739d87ecd2a9b99cabb4", 14730155}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2499,7 +2323,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "d8892f1b8c56c8f7704325460f49b300", 3676175}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2516,7 +2339,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.004", 0, "b7e619e6ecf62fe65d5116a3a422e5f0", 46223872}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -2532,7 +2354,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 641688}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2550,7 +2371,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "7ab2bf8e224b57f75e0cd6e4ba790761", 272747}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2563,7 +2383,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "a21451ef6fa8179bd4b22c4950004c44", 769897}, {NULL, 0, NULL, 0}}, Common::JA_JPN, Common::kPlatformPC98, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_01 }, @@ -2576,7 +2395,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "a21451ef6fa8179bd4b22c4950004c44", 777575}, {NULL, 0, NULL, 0}}, Common::JA_JPN, Common::kPlatformPC98, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_01 }, @@ -2593,7 +2411,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "5f3386ef2f2b1254e4a066f5d9027324", 609529}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2608,7 +2425,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "951299a82a8134ed12c5c18118d45c2f", 644443}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -2619,7 +2435,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "ecace1a2771846b1a8aa1afdd44111a0", 6570147}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2630,7 +2445,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "ec6f5cf369054dd3e5392995e9975b9e", 768218}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2649,7 +2463,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "4c9fc1587545879295cb9627f56a2cb8", 575056}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_01 }, @@ -2664,7 +2477,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "cd2de58e27665d5853530de93fae7cd6", 983617}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_01 }, @@ -2682,7 +2494,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "cd2de58e27665d5853530de93fae7cd6", 490794}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_01 }, @@ -2693,7 +2504,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "b6c69bf6c18bf177492249fe81fc6a6d", 648702}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2704,7 +2514,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5868000}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2715,7 +2524,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "6178ad2e83e58e4671ca03315f7a6498", 5868042}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2727,7 +2535,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "a63974730d294dec0bea10057c36e506", 256014}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2738,7 +2545,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "41ba03f0b188b029132daa3ece0d3e14", 623154}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2750,7 +2556,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "f64fd6aa3977939a86ff30783dd677e1", 11004993}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2761,7 +2566,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "57f22cdc54eeb35fce1f26b31b5c3ee1", 11076197}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2772,7 +2576,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "263dce4aa34c49d3ad29bec889007b1c", 11571394}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2786,7 +2589,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "263dce4aa34c49d3ad29bec889007b1c", 11571394}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif @@ -2798,7 +2600,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "57f22cdc54eeb35fce1f26b31b5c3ee1", 11076197}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2809,7 +2610,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.001", 0, "259437fd75fdf51e8207fda8c01fa4fd", 2334384}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2824,7 +2624,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.003", 0, "2a68edd064e5e4937b5e9c74b38f2082", 6860492}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2835,7 +2634,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resmap.001", 0, "70ba2ff04a2b7fb2c52420ba7fbd47c2", 8338}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformWindows, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2846,7 +2644,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "4294c6d7510935f2e0a52e302073c951", 262654836}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2856,7 +2653,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "6751b144671e2deed919eb9d284b07eb", 262390692}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2867,7 +2663,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "3a93c6340b54e07e65d0e5583354d186", 10505469}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -2878,7 +2673,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "7fbac0807a044c9543e8ac376d200e59", 4925003}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -2891,7 +2685,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "8e10d4f05c1fd9f883384fa38a898489", 377394}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -2907,7 +2700,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "640ffe1a9acde392cc33cc1b1a528328", 806324}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2923,7 +2715,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "e19ea4ad131472f9238590f2e1d40289", 1203051}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2934,7 +2725,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "fd99ea43f57576ded7c86036996346cf", 507642}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2951,7 +2741,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "7d4ebcb745c0bf8fc42e4013f52ecd49", 1101812}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -2965,7 +2754,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.004", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 761984}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_0, SCI_VERSION_0 }, @@ -2981,7 +2769,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "6d8f34090503ce937e7dbef6cb6cdb6a", 687507}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_0, SCI_VERSION_0 }, @@ -2992,7 +2779,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.001", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 180245}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -3005,7 +2791,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "ceeda7202b96e5c85ecaa88a40a540fc", 688367}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -3018,7 +2803,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "8b55c4875298f45ea5696a5ee8f6a7fe", 703370}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -3035,7 +2819,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.007", 0, "9107c2aa5398e28b5c5406df13491f85", 344287}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, GF_FOR_SCI0_BEFORE_629, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -3048,7 +2831,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "9107c2aa5398e28b5c5406df13491f85", 693573}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }, @@ -3066,7 +2848,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "ade814bc4d56244c156d9e9bcfebbc11", 664085}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3083,7 +2864,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "67fb188b191d88efe8414af6ea297b93", 672675}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformAmiga, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3095,7 +2875,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "e1f46832cd2458796028e054a0466031", 5502009}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3107,7 +2886,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "e1f46832cd2458796028e054a0466031", 933928}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3124,7 +2902,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "e33019ac19f755ae33fbf49b4fc9066c", 1053294}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3141,7 +2918,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.006", 0, "dfb023e4e2a1e7a00fa18f9ede72a91b", 924059}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3157,7 +2933,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "5f885abd335978e2fd4e5f886d7676c8", 1102880}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3170,7 +2945,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "6dc668326cc22cb9e8bd8ca9e68d2a66", 1181249}, {NULL, 0, NULL, 0}}, Common::JA_JPN, Common::kPlatformPC98, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3183,7 +2957,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.002", 0, "6dc668326cc22cb9e8bd8ca9e68d2a66", 1181249}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC98, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3194,7 +2967,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "63247e3901ab8963d4eece73747832e0", 5157378}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3211,7 +2983,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "55fae26c2a92f16ef72c1e216e827c0f", 1098328}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3226,7 +2997,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.003", 0, "42a307941edeb1a3be31daeb2e4be90b", 1088408}, {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3243,7 +3013,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.005", 0, "b8d6efbd3235329bfe844c794097b2c9", 1098717}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1 }, @@ -3255,7 +3024,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "bb8ad78793c26bdb3f77498b1d6515a9", 125988}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3266,7 +3034,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "f4a48705764544d7cc64a7bb22a610df", 6025184}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3278,7 +3045,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.msg", 0, "7c71cfc36153cfe07b450423a51f7e68", 146282}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3289,7 +3055,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.map", 0, "5b09168baa2f6e2e22787429b2d72f54", 6492}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3301,7 +3066,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3312,7 +3076,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "c4259ab7355aead07773397b1052827d", 41150806}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3323,7 +3086,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "ab12724e078dea34b624e0d2a38dcd7c", 2272050}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3334,7 +3096,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "ba87ba91e5bdabb4169dd0df75777722", 40933685}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -3346,7 +3107,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "b3acd9b9dd7fe53c4ee133ac9a1acfab", 2103560}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3357,7 +3117,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "ecc686e0034fb4d41de077ac7167b3cf", 1947866}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3368,7 +3127,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"resource.000", 0, "b3acd9b9dd7fe53c4ee133ac9a1acfab", 586560}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformPC, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_1_1 }, @@ -3380,7 +3138,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "db3e290481c35c3224e9602e71e4a1f1", 5073868}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3391,7 +3148,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887}, {NULL, 0, NULL, 0}}, Common::EN_ANY, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3403,7 +3159,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { // TODO: depend on one of the patches? {NULL, 0, NULL, 0}}, Common::ES_ESP, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3414,7 +3169,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887}, {NULL, 0, NULL, 0}}, Common::FR_FRA, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3425,7 +3179,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887}, {NULL, 0, NULL, 0}}, Common::DE_DEU, Common::kPlatformWindows, 0, GUIO_NOSPEECH}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, @@ -3436,7 +3189,6 @@ static const struct SciGameDescription SciGameDescriptions[] = { {"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887}, {NULL, 0, NULL, 0}}, Common::IT_ITA, Common::kPlatformWindows, 0, GUIO_NONE}, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_32 }, #endif // ENABLE_SCI32 @@ -3467,7 +3219,7 @@ static const struct SciGameDescription SciGameDescriptions[] = { // FIXME: The vga demo does not have a resource.000/001 file. //FANMADE_V("SCI VGA Demo", "00b1abd87bad356b90fcdfcb6132c26f", 8, "", 0, 0), - {AD_TABLE_END_MARKER, 0, SCI_VERSION_AUTODETECT, SCI_VERSION_0} + {AD_TABLE_END_MARKER, 0, SCI_VERSION_0} }; /** @@ -3485,7 +3237,6 @@ static SciGameDescription s_fallbackDesc = { GUIO_NONE }, 0, - SCI_VERSION_AUTODETECT, SCI_VERSION_0 }; @@ -3575,9 +3326,6 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl } } - if (exePlatform == Common::kPlatformUnknown) - return 0; - // If these files aren't found, it can't be SCI if (!foundResMap && !foundRes000) return 0; @@ -3588,23 +3336,14 @@ const ADGameDescription *SciMetaEngine::fallbackDetect(const Common::FSList &fsl s_fallbackDesc.desc.language = Common::UNK_LANG; s_fallbackDesc.desc.platform = exePlatform; s_fallbackDesc.desc.flags = ADGF_NO_FLAGS; - s_fallbackDesc.version = SCI_VERSION_0; + getSciVersionFromString(exeVersionString, &s_fallbackDesc.version, s_fallbackDesc.desc.platform); printf("If this is *NOT* a fan-modified version (in particular, not a fan-made\n"); printf("translation), please, report the data above, including the following\n"); printf("version number, from the game's executable:\n"); + printf("Version: %s\n\n", exeVersionString.empty() ? "not found" : exeVersionString.c_str()); - // Try to parse the executable version - if (getSciVersionFromString(exeVersionString, &s_fallbackDesc.version, s_fallbackDesc.desc.platform)) { - printf("Detected version: %s, parsed SCI version: %s\n", - exeVersionString.c_str(), versionNames[s_fallbackDesc.version]); - - return (const ADGameDescription *)&s_fallbackDesc; - } else { - printf("Couldn't parse the interpreter version: %s (by executable scan)\n", - exeVersionString.c_str()); - return NULL; - } + return (const ADGameDescription *)&s_fallbackDesc; } bool SciMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const { diff --git a/engines/sci/engine/game.cpp b/engines/sci/engine/game.cpp index fa64957bec..2d9cf6a42b 100644 --- a/engines/sci/engine/game.cpp +++ b/engines/sci/engine/game.cpp @@ -179,7 +179,7 @@ static void _free_graphics_input(EngineState *s) { } int game_init_sound(EngineState *s, int sound_flags) { - if (s->resmgr->_sciVersion >= SCI_VERSION_01) + if (s->resmgr->sciVersion() >= SCI_VERSION_01) sound_flags |= SFX_STATE_FLAG_MULTIPLAY; s->sfx_init_flags = sound_flags; diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index 2ccd88b709..362e41a357 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -396,7 +396,7 @@ void Kernel::detectSciFeatures() { features = 0; // Initialize features based on SCI version - if (_resmgr->_sciVersion == SCI_VERSION_0) { + if (_resmgr->sciVersion() == SCI_VERSION_0) { features |= kFeatureOldScriptHeader; features |= kFeatureOldGfxFunctions; } @@ -419,10 +419,10 @@ void Kernel::detectSciFeatures() { if (tmp == "motionCue") features &= ~kFeatureOldGfxFunctions; - if (tmp == "egoMoveSpeed" && _resmgr->_sciVersion < SCI_VERSION_1_1) + if (tmp == "egoMoveSpeed" && _resmgr->sciVersion() < SCI_VERSION_1_1) features |= kFeatureLofsAbsolute; - if (tmp == "sightAngle" && _resmgr->_sciVersion == SCI_VERSION_0) + if (tmp == "sightAngle" && _resmgr->sciVersion() == SCI_VERSION_0) features |= kFeatureSci0Sci1Table; if (tmp == "setVol") @@ -642,7 +642,7 @@ void Kernel::mapFunctions() { int mapped = 0; int ignored = 0; uint functions_nr = getKernelNamesSize(); - uint max_functions_nr = (_resmgr->_sciVersion == SCI_VERSION_0) ? 0x72 : 0x7b; + uint max_functions_nr = (_resmgr->sciVersion() == SCI_VERSION_0) ? 0x72 : 0x7b; if (functions_nr < max_functions_nr) { warning("SCI version believed to have %d kernel" @@ -833,7 +833,7 @@ reg_t *kernel_dereference_reg_pointer(EngineState *s, reg_t pointer, int entries } void Kernel::setDefaultKernelNames() { - bool isSci0 = (_resmgr->_sciVersion == SCI_VERSION_0); + bool isSci0 = (_resmgr->sciVersion() == SCI_VERSION_0); int offset = 0; // Check if we have a SCI01 game which uses a SCI1 kernel table (e.g. the KQ1 demo @@ -862,7 +862,7 @@ void Kernel::setDefaultKernelNames() { } } - if (_resmgr->_sciVersion == SCI_VERSION_1_1) { + if (_resmgr->sciVersion() == SCI_VERSION_1_1) { // HACK: KQ6CD calls unimplemented function 0x26 _kernelNames[0x26] = "Dummy"; } @@ -898,10 +898,9 @@ static void vocab_get_knames11(ResourceManager *resmgr, Common::StringList &name bool Kernel::loadKernelNames() { _kernelNames.clear(); - switch (_resmgr->_sciVersion) { + switch (_resmgr->sciVersion()) { case SCI_VERSION_0: case SCI_VERSION_01: - case SCI_VERSION_01_VGA_ODD: case SCI_VERSION_1: case SCI_VERSION_1_1: setDefaultKernelNames(); diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index d5f094b540..6b481dfc25 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -693,7 +693,7 @@ int _reset_graphics_input(EngineState *s); static void reconstruct_sounds(EngineState *s) { Song *seeker; - SongIteratorType it_type = s->resmgr->_sciVersion >= SCI_VERSION_01 ? SCI_SONG_ITERATOR_TYPE_SCI1 : SCI_SONG_ITERATOR_TYPE_SCI0; + SongIteratorType it_type = s->resmgr->sciVersion() >= SCI_VERSION_01 ? SCI_SONG_ITERATOR_TYPE_SCI1 : SCI_SONG_ITERATOR_TYPE_SCI0; seeker = s->_sound._songlib._lib; diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp index b7529c33bd..667c429821 100644 --- a/engines/sci/engine/script.cpp +++ b/engines/sci/engine/script.cpp @@ -93,7 +93,6 @@ void script_adjust_opcode_formats(int res_version) { case SCI_VERSION_0: break; case SCI_VERSION_01: - case SCI_VERSION_01_VGA_ODD: case SCI_VERSION_1: case SCI_VERSION_1_1: g_opcode_formats[op_lofsa][0] = Script_Offset; diff --git a/engines/sci/engine/state.cpp b/engines/sci/engine/state.cpp index f0e9863068..fd45ef5834 100644 --- a/engines/sci/engine/state.cpp +++ b/engines/sci/engine/state.cpp @@ -27,7 +27,7 @@ namespace Sci { -EngineState::EngineState(ResourceManager *res, sci_version_t version, uint32 flags) +EngineState::EngineState(ResourceManager *res, SciVersion version, uint32 flags) : resmgr(res), _version(version), _flags(flags), _dirseeker(this) { widget_serial_counter = 0; diff --git a/engines/sci/engine/state.h b/engines/sci/engine/state.h index a814a20df8..2fa1bd82a6 100644 --- a/engines/sci/engine/state.h +++ b/engines/sci/engine/state.h @@ -126,7 +126,7 @@ public: kSegmentLength = 20 /**< Time segment length in ms */ }; - SpeedThrottler(sci_version_t version) { + SpeedThrottler(SciVersion version) { if (version >= SCI_VERSION_1_1) _maxInstructions = 3300; else if (version >= SCI_VERSION_1) @@ -161,7 +161,7 @@ private: struct EngineState : public Common::Serializable { public: - EngineState(ResourceManager *res, sci_version_t version, uint32 flags); + EngineState(ResourceManager *res, SciVersion version, uint32 flags); virtual ~EngineState(); virtual void saveLoadWithSerializer(Common::Serializer &ser); @@ -171,7 +171,7 @@ public: ResourceManager *resmgr; /**< The resource manager */ - const sci_version_t _version; /**< The approximated patchlevel of the version to emulate */ + const SciVersion _version; /**< The approximated patchlevel of the version to emulate */ const uint32 _flags; /**< Specific game flags */ Common::String _gameName; /**< Designation of the primary object (which inherits from Game) */ diff --git a/engines/sci/exereader.cpp b/engines/sci/exereader.cpp index c1d279244c..8ac5ed098e 100644 --- a/engines/sci/exereader.cpp +++ b/engines/sci/exereader.cpp @@ -276,7 +276,7 @@ Common::String readSciVersionFromExe(Common::SeekableReadStream *exeStream, Comm currentString[9] = 0; // Return the current string if it's parseable - int version; + SciVersion version; if (getSciVersionFromString(currentString, &version, platform)) { delete[] buffer; return currentString; @@ -296,61 +296,54 @@ Common::String readSciVersionFromExe(Common::SeekableReadStream *exeStream, Comm return resultString; } -bool getSciVersionFromString(Common::String versionString, int *version, Common::Platform platform) { - // Map non-numeric versions to their numeric counterparts - Common::String mappedVersion = versionString; +bool getSciVersionFromString(Common::String versionString, SciVersion *version, Common::Platform platform) { + *version = SCI_VERSION_AUTODETECT; + if (platform == Common::kPlatformAmiga) { if (versionString.hasPrefix("1.002.")) { - mappedVersion = "0.000.685"; + *version = SCI_VERSION_0; } else if (versionString.hasPrefix("1.003.")) { - mappedVersion = "0.001.010"; + *version = SCI_VERSION_01; } else if (versionString.hasPrefix("1.004.")) { - mappedVersion = "1.000.784"; + *version = SCI_VERSION_01; } else if (versionString.hasPrefix("1.005.")) { - mappedVersion = "1.000.510"; + *version = SCI_VERSION_1; } else if (versionString == "x.yyy.zzz") { // How to map it? + } else { + return false; } + } else if (versionString.hasPrefix("0.000.")) { + *version = SCI_VERSION_0; } else if (versionString.hasPrefix("S.old.")) { - // SCI 01 - mappedVersion = "0.001."; - mappedVersion += versionString.c_str() + 6; + *version = SCI_VERSION_01; + } else if (versionString.hasPrefix("1.000.")) { + *version = SCI_VERSION_1; + } else if (versionString.hasPrefix("1.001.")) { + *version = SCI_VERSION_1_1; + } else if (versionString.hasPrefix("2.000.") + || versionString.hasPrefix("2.100.") + || versionString.hasPrefix("3.000.")) { + *version = SCI_VERSION_32; } else if (versionString.hasPrefix("1.ECO.") || versionString.hasPrefix("1.SQ1.") || versionString.hasPrefix("1.SQ4.") || versionString.hasPrefix("1.LS5.") || versionString.hasPrefix("1.pq3.") - || versionString.hasPrefix("FAIRY.")) { - // SCI 1.0 - mappedVersion = "1.000."; - mappedVersion += versionString.c_str() + 6; - } else if (versionString.hasPrefix("T.A00.")) { - mappedVersion = "1.000.510"; + || versionString.hasPrefix("FAIRY.") + || versionString.hasPrefix("T.A00.")) { + *version = SCI_VERSION_1; } else if (versionString.hasPrefix("L.rry.") || versionString.hasPrefix("l.cfs.")) { - // SCI 1.1 - mappedVersion = "1.001."; - mappedVersion += versionString.c_str() + 6; - } else if (versionString == "x.yyy.yyy") { + *version = SCI_VERSION_1_1; + } else if (versionString == "x.yyy.zzz") { // How to map it? + } else { + // Unknown or not a version number + return false; } - // Parse to a version number - char *endptr[3]; - const char *ver = mappedVersion.c_str(); - int major = strtol(ver, &endptr[0], 10); - //int minor = strtol(ver + 2, &endptr[1], 10); - //int patchlevel = strtol(ver + 6, &endptr[2], 10); - - if (endptr[0] != ver + 1 || endptr[1] != ver + 5 || *endptr[2] != '\0') { - warning("Failed to parse version string '%s'", ver); - return true; - } - - //printf("Detected version: %s, parsed version: %s\n", versionString, ver); - *version = major; - - return false; + return true; } } // End of namespace Sci diff --git a/engines/sci/exereader.h b/engines/sci/exereader.h index 5349ad3724..c614c4c0da 100644 --- a/engines/sci/exereader.h +++ b/engines/sci/exereader.h @@ -33,7 +33,7 @@ namespace Sci { Common::Platform getGameExePlatform(Common::SeekableReadStream *exeStream); Common::String readSciVersionFromExe(Common::SeekableReadStream *exeStream, Common::Platform platform); -bool getSciVersionFromString(Common::String versionString, int *version, Common::Platform platform); +bool getSciVersionFromString(Common::String versionString, SciVersion *version, Common::Platform platform); } // End of namespace Sci diff --git a/engines/sci/gfx/gfx_resmgr.cpp b/engines/sci/gfx/gfx_resmgr.cpp index bf1c88b4d6..fbae7105c9 100644 --- a/engines/sci/gfx/gfx_resmgr.cpp +++ b/engines/sci/gfx/gfx_resmgr.cpp @@ -55,7 +55,7 @@ GfxResManager::GfxResManager(gfx_options_t *options, GfxDriver *driver, Resource gfxr_init_static_palette(); _portBounds = Common::Rect(0, 10, 320, 200); // default value, with a titlebar of 10px - _version = resManager->_volVersion; + _version = resManager->sciVersion(); // Workaround for QFG1 VGA (has SCI 1.1 view data with SCI 1 compression) if (_version == SCI_VERSION_1 && !strcmp(((SciEngine*)g_engine)->getGameID(), "qfg1")) { diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 943361332f..b42f36bd63 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -319,7 +319,7 @@ int sci0_get_compression_method(Common::ReadStream &stream) { return compressionMethod; } -int ResourceManager::guessSciVersion() { +SciVersion ResourceManager::guessSciVersion() { Common::File file; char filename[MAXPATHLEN]; int compression; @@ -428,7 +428,7 @@ void ResourceManager::scanNewSources() { readResourcePatches(source); break; case kSourceExtMap: - if (_mapVersion < SCI_VERSION_1) + if (_mapVersion < kResVersionSci1Late) readResourceMapSCI0(source); else readResourceMapSCI1(source); @@ -453,74 +453,72 @@ void ResourceManager::freeResourceSources() { _sources.clear(); } -ResourceManager::ResourceManager(int version, int maxMemory) { +ResourceManager::ResourceManager(int maxMemory) { _maxMemory = maxMemory; _memoryLocked = 0; _memoryLRU = 0; _LRU.clear(); _resMap.clear(); - _sciVersion = version; _audioMapSCI1 = NULL; addAppropriateSources(); - if (version != SCI_VERSION_AUTODETECT) { - _mapVersion = version; - _volVersion = version; - } else { - _mapVersion = detectMapVersion(); - _volVersion = detectVolVersion(); - if (_volVersion == 0 && _mapVersion > 0) { - warning("Volume version not detected, but map version has been detected. Setting volume version to map version"); - _volVersion = _mapVersion; - } + // FIXME: put this in an Init() function, so that we can error out if detection fails completely - if (_mapVersion == 0 && _volVersion > 0) { - warning("Map version not detected, but volume version has been detected. Setting map version to volume version"); - _mapVersion = _volVersion; - } + _mapVersion = detectMapVersion(); + _volVersion = detectVolVersion(); + if ((_volVersion == kResVersionUnknown) && (_mapVersion != kResVersionUnknown)) { + warning("Volume version not detected, but map version has been detected. Setting volume version to map version"); + _volVersion = _mapVersion; + } + + if ((_mapVersion == kResVersionUnknown) && (_volVersion != kResVersionUnknown)) { + warning("Map version not detected, but volume version has been detected. Setting map version to volume version"); + _mapVersion = _volVersion; } - debug("Using resource map version %d %s", _mapVersion, versionNames[_mapVersion]); - debug("Using volume version %d %s", _volVersion, versionNames[_volVersion]); + + debug("Resmgr: Detected resource map version %d: %s", _mapVersion, versionDescription(_mapVersion)); + debug("Resmgr: Detected volume version %d: %s", _volVersion, versionDescription(_volVersion)); scanNewSources(); addInternalSources(); scanNewSources(); - if (version == SCI_VERSION_AUTODETECT) - switch (_mapVersion) { - case SCI_VERSION_0: - if (testResource(ResourceId(kResourceTypeVocab, VOCAB_RESOURCE_SCI0_MAIN_VOCAB))) { - version = guessSciVersion() ? SCI_VERSION_01 : SCI_VERSION_0; - } else if (testResource(ResourceId(kResourceTypeVocab, VOCAB_RESOURCE_SCI1_MAIN_VOCAB))) { - version = guessSciVersion(); - if (version != SCI_VERSION_01) { - version = testResource(ResourceId(kResourceTypeVocab, 912)) ? SCI_VERSION_0 : SCI_VERSION_01; - } - } else { - version = guessSciVersion() ? SCI_VERSION_01 : SCI_VERSION_0; + switch (_mapVersion) { + case kResVersionSci0Sci1Early: + if (testResource(ResourceId(kResourceTypeVocab, VOCAB_RESOURCE_SCI0_MAIN_VOCAB))) { + _sciVersion = guessSciVersion() ? SCI_VERSION_01 : SCI_VERSION_0; + } else if (testResource(ResourceId(kResourceTypeVocab, VOCAB_RESOURCE_SCI1_MAIN_VOCAB))) { + _sciVersion = guessSciVersion(); + if (_sciVersion != SCI_VERSION_01) { + _sciVersion = testResource(ResourceId(kResourceTypeVocab, 912)) ? SCI_VERSION_0 : SCI_VERSION_01; } - break; - case SCI_VERSION_01_VGA_ODD: - version = _mapVersion; - break; - case SCI_VERSION_1: - _sciVersion = version = SCI_VERSION_1; - break; - case SCI_VERSION_1_1: - // No need to handle SCI 1.1 here - it was done in resource_map.cpp - version = SCI_VERSION_1_1; - break; - default: - version = SCI_VERSION_AUTODETECT; + } else { + _sciVersion = guessSciVersion() ? SCI_VERSION_01 : SCI_VERSION_0; } + break; + case kResVersionSci1Middle: + _sciVersion = SCI_VERSION_01; + break; + case kResVersionSci1Late: + _sciVersion = SCI_VERSION_1; + break; + case kResVersionSci11: + _sciVersion = SCI_VERSION_1_1; + break; + case kResVersionSci32: + _sciVersion = SCI_VERSION_32; + break; + default: + _sciVersion = SCI_VERSION_AUTODETECT; + } _isVGA = false; // Determine if the game is using EGA graphics or not - if (version == SCI_VERSION_0) { + if (_sciVersion == SCI_VERSION_0) { _isVGA = false; // There is no SCI0 VGA game - } else if (version >= SCI_VERSION_1_1) { + } else if (_sciVersion >= SCI_VERSION_1_1) { _isVGA = true; // There is no SCI11 EGA game } else { // SCI01 or SCI1: EGA games have the second byte of their views set @@ -538,12 +536,11 @@ ResourceManager::ResourceManager(int version, int maxMemory) { } // Workaround for QFG1 VGA (has SCI 1.1 view data with SCI 1 compression) - if (version == SCI_VERSION_1 && !strcmp(((SciEngine*)g_engine)->getGameID(), "qfg1")) { + if (_sciVersion == SCI_VERSION_1 && !strcmp(((SciEngine*)g_engine)->getGameID(), "qfg1")) { debug("Resmgr: Detected QFG1 VGA"); _isVGA = true; } - _sciVersion = version; // temporary version printout - should be reworked later switch (_sciVersion) { case SCI_VERSION_0: @@ -552,9 +549,6 @@ ResourceManager::ResourceManager(int version, int maxMemory) { case SCI_VERSION_01: debug("Resmgr: Detected SCI01"); break; - case SCI_VERSION_01_VGA_ODD: - debug("Resmgr: Detected SCI01VGA - Jones/CD or similar"); - break; case SCI_VERSION_1: debug("Resmgr: Detected SCI1"); break; @@ -713,7 +707,26 @@ void ResourceManager::unlockResource(Resource *res) { freeOldResources(); } -int ResourceManager::detectMapVersion() { +const char *ResourceManager::versionDescription(ResVersion version) const { + switch (version) { + case kResVersionUnknown: + return "Unknown"; + case kResVersionSci0Sci1Early: + return "SCI0 / Early SCI1"; + case kResVersionSci1Middle: + return "Middle SCI1"; + case kResVersionSci1Late: + return "Late SCI1"; + case kResVersionSci11: + return "SCI1.1"; + case kResVersionSci32: + return "SCI32"; + } + + return "Version not valid"; +} + +ResourceManager::ResVersion ResourceManager::detectMapVersion() { Common::File file; byte buff[6]; ResourceSource *rsrc= 0; @@ -728,7 +741,7 @@ int ResourceManager::detectMapVersion() { } if (file.isOpen() == false) { error("Failed to open resource map file"); - return SCI_VERSION_AUTODETECT; + return kResVersionUnknown; } // detection // SCI0 and SCI01 maps have last 6 bytes set to FF @@ -739,9 +752,9 @@ int ResourceManager::detectMapVersion() { file.seek(0, SEEK_SET); while (file.read(buff, 6) == 6 && !(buff[0] == 0xFF && buff[1] == 0xFF && buff[2] == 0xFF)) { if (getVolume(rsrc, (buff[5] & 0xFC) >> 2) == NULL) - return SCI_VERSION_01_VGA_ODD; + return kResVersionSci1Middle; } - return SCI_VERSION_0; + return kResVersionSci0Sci1Early; } // SCI1 and SCI1.1 maps consist of a fixed 3-byte header, a directory list (3-bytes each) that has one entry @@ -750,7 +763,7 @@ int ResourceManager::detectMapVersion() { uint16 directoryOffset = 0; uint16 lastDirectoryOffset = 0; uint16 directorySize = 0; - int mapDetected = 0; + ResVersion mapDetected = kResVersionUnknown; file.seek(0, SEEK_SET); while (!file.eos()) { directoryType = file.readByte(); @@ -763,9 +776,9 @@ int ResourceManager::detectMapVersion() { if (lastDirectoryOffset) { directorySize = directoryOffset - lastDirectoryOffset; if ((directorySize % 5) && (directorySize % 6 == 0)) - mapDetected = SCI_VERSION_1; + mapDetected = kResVersionSci1Late; if ((directorySize % 5 == 0) && (directorySize % 6)) - mapDetected = SCI_VERSION_1_1; + mapDetected = kResVersionSci11; } if (directoryType==0xFF) { // FFh entry needs to point to EOF @@ -773,7 +786,7 @@ int ResourceManager::detectMapVersion() { break; if (mapDetected) return mapDetected; - return SCI_VERSION_1; + return kResVersionSci1Late; } lastDirectoryOffset = directoryOffset; } @@ -789,13 +802,13 @@ int ResourceManager::detectMapVersion() { // last directory entry instead of the last checked directory entry. file.seek(lastDirectoryOffset - 7, SEEK_SET); if (file.readByte() == 0xFF && file.readUint16LE() == file.size()) - return SCI_VERSION_32; // TODO : check if there is a difference between these maps + return kResVersionSci32; // TODO : check if there is a difference between these maps #endif - return SCI_VERSION_AUTODETECT; + return kResVersionUnknown; } -int ResourceManager::detectVolVersion() { +ResourceManager::ResVersion ResourceManager::detectVolVersion() { Common::File file; ResourceSource *rsrc; for (Common::List<ResourceSource *>::iterator it = _sources.begin(); it != _sources.end(); ++it) { @@ -808,7 +821,7 @@ int ResourceManager::detectVolVersion() { } if (file.isOpen() == false) { error("Failed to open volume file"); - return SCI_VERSION_AUTODETECT; + return kResVersionUnknown; } // SCI0 volume format: {wResId wPacked+4 wUnpacked wCompression} = 8 bytes // SCI1 volume format: {bResType wResNumber wPacked+4 wUnpacked wCompression} = 9 bytes @@ -818,34 +831,34 @@ int ResourceManager::detectVolVersion() { // Checking 1MB of data should be enough to determine the version uint16 resId, wCompression; uint32 dwPacked, dwUnpacked; - int curVersion = SCI_VERSION_0; + ResVersion curVersion = kResVersionSci0Sci1Early; bool failed = false; // Check for SCI0, SCI1, SCI1.1 and SCI32 v2 (Gabriel Knight 1 CD) formats while (!file.eos() && file.pos() < 0x100000) { - if (curVersion > SCI_VERSION_0) + if (curVersion > kResVersionSci0Sci1Early) file.readByte(); resId = file.readUint16LE(); - dwPacked = (curVersion < SCI_VERSION_32) ? file.readUint16LE() : file.readUint32LE(); - dwUnpacked = (curVersion < SCI_VERSION_32) ? file.readUint16LE() : file.readUint32LE(); - wCompression = (curVersion < SCI_VERSION_32) ? file.readUint16LE() : file.readUint32LE(); + dwPacked = (curVersion < kResVersionSci32) ? file.readUint16LE() : file.readUint32LE(); + dwUnpacked = (curVersion < kResVersionSci32) ? file.readUint16LE() : file.readUint32LE(); + wCompression = (curVersion < kResVersionSci32) ? file.readUint16LE() : file.readUint32LE(); if (file.eos()) return curVersion; - int chk = (curVersion == SCI_VERSION_0) ? 4 : 20; - int offs = curVersion < SCI_VERSION_1_1 ? 4 : 0; - if ((curVersion < SCI_VERSION_32 && wCompression > chk) - || (curVersion == SCI_VERSION_32 && wCompression != 0 && wCompression != 32) + int chk = (curVersion == kResVersionSci0Sci1Early) ? 4 : 20; + int offs = curVersion < kResVersionSci11 ? 4 : 0; + if ((curVersion < kResVersionSci32 && wCompression > chk) + || (curVersion == kResVersionSci32 && wCompression != 0 && wCompression != 32) || (wCompression == 0 && dwPacked != dwUnpacked + offs) || (dwUnpacked < dwPacked - offs)) { // Retry with a newer SCI version - if (curVersion == SCI_VERSION_0) { - curVersion = SCI_VERSION_1; - } else if (curVersion == SCI_VERSION_1) { - curVersion = SCI_VERSION_1_1; - } else if (curVersion == SCI_VERSION_1_1) { - curVersion = SCI_VERSION_32; + if (curVersion == kResVersionSci0Sci1Early) { + curVersion = kResVersionSci1Late; + } else if (curVersion == kResVersionSci1Late) { + curVersion = kResVersionSci11; + } else if (curVersion == kResVersionSci11) { + curVersion = kResVersionSci32; } else { // All version checks failed, exit loop failed = true; @@ -856,11 +869,11 @@ int ResourceManager::detectVolVersion() { continue; } - if (curVersion < SCI_VERSION_1_1) + if (curVersion < kResVersionSci11) file.seek(dwPacked - 4, SEEK_CUR); - else if (curVersion == SCI_VERSION_1_1) + else if (curVersion == kResVersionSci11) file.seek((9 + dwPacked) % 2 ? dwPacked + 1 : dwPacked, SEEK_CUR); - else if (curVersion == SCI_VERSION_32) + else if (curVersion == kResVersionSci32) file.seek(dwPacked, SEEK_CUR);//(9 + wPacked) % 2 ? wPacked + 1 : wPacked, SEEK_CUR); } @@ -868,7 +881,7 @@ int ResourceManager::detectVolVersion() { return curVersion; // Failed to detect volume version - return SCI_VERSION_AUTODETECT; + return kResVersionUnknown; } // version-agnostic patch application @@ -997,10 +1010,8 @@ int ResourceManager::readResourceMapSCI0(ResourceSource *map) { file.seek(0, SEEK_SET); - byte bMask = 0xFC; - // FIXME: The code above seems to give correct results for Jones - //byte bMask = _mapVersion == SCI_VERSION_01_VGA_ODD ? 0xF0 : 0xFC; - byte bShift = _mapVersion == SCI_VERSION_01_VGA_ODD ? 28 : 26; + byte bMask = (_mapVersion == kResVersionSci1Middle) ? 0xF0 : 0xFC; + byte bShift = (_mapVersion == kResVersionSci1Middle) ? 28 : 26; do { id = file.readUint16LE(); @@ -1040,7 +1051,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) { resource_index_t resMap[32]; memset(resMap, 0, sizeof(resource_index_t) * 32); byte type = 0, prevtype = 0; - byte nEntrySize = _mapVersion == SCI_VERSION_1_1 ? SCI11_RESMAP_ENTRIES_SIZE : SCI1_RESMAP_ENTRIES_SIZE; + byte nEntrySize = _mapVersion == kResVersionSci11 ? SCI11_RESMAP_ENTRIES_SIZE : SCI1_RESMAP_ENTRIES_SIZE; ResourceId resId; // Read resource type and offsets to resource offsets block from .MAP file @@ -1062,7 +1073,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) { for (int i = 0; i < resMap[type].wSize; i++) { uint16 number = file.readUint16LE(); int volume_nr = 0; - if (_mapVersion == SCI_VERSION_1_1) { + if (_mapVersion == kResVersionSci11) { // offset stored in 3 bytes off = file.readUint16LE(); off |= file.readByte() << 16; @@ -1070,7 +1081,7 @@ int ResourceManager::readResourceMapSCI1(ResourceSource *map) { } else { // offset/volume stored in 4 bytes off = file.readUint32LE(); - if (_mapVersion < SCI_VERSION_1_1) { + if (_mapVersion < kResVersionSci11) { volume_nr = off >> 28; // most significant 4 bits off &= 0x0FFFFFFF; // least significant 28 bits } else { @@ -1351,7 +1362,8 @@ int ResourceManager::readResourceInfo(Resource *res, Common::File *file, ResourceType type; switch (_volVersion) { - case SCI_VERSION_0: + case kResVersionSci0Sci1Early: + case kResVersionSci1Middle: w = file->readUint16LE(); type = (ResourceType)(w >> 11); number = w & 0x7FF; @@ -1359,14 +1371,14 @@ int ResourceManager::readResourceInfo(Resource *res, Common::File *file, szUnpacked = file->readUint16LE(); wCompression = file->readUint16LE(); break; - case SCI_VERSION_1: + case kResVersionSci1Late: type = (ResourceType)(file->readByte() & 0x7F); number = file->readUint16LE(); szPacked = file->readUint16LE() - 4; szUnpacked = file->readUint16LE(); wCompression = file->readUint16LE(); break; - case SCI_VERSION_1_1: + case kResVersionSci11: type = (ResourceType)(file->readByte() & 0x7F); number = file->readUint16LE(); szPacked = file->readUint16LE(); @@ -1374,7 +1386,7 @@ int ResourceManager::readResourceInfo(Resource *res, Common::File *file, wCompression = file->readUint16LE(); break; #ifdef ENABLE_SCI32 - case SCI_VERSION_32: + case kResVersionSci32: type = (ResourceType)(file->readByte() &0x7F); number = file->readUint16LE(); szPacked = file->readUint32LE(); diff --git a/engines/sci/resource.h b/engines/sci/resource.h index b212a36710..3a51b3908e 100644 --- a/engines/sci/resource.h +++ b/engines/sci/resource.h @@ -45,6 +45,16 @@ namespace Sci { /** The maximum allowed size for a compressed or decompressed resource */ #define SCI_MAX_RESOURCE_SIZE 0x0400000 +/** SCI versions */ +enum SciVersion { + SCI_VERSION_AUTODETECT = 0, + SCI_VERSION_0 = 1, + SCI_VERSION_01 = 2, + SCI_VERSION_1 = 3, + SCI_VERSION_1_1 = 4, + SCI_VERSION_32 = 5 +}; + /** Resource status types */ enum ResourceStatus { kResStatusNoMalloc = 0, @@ -206,13 +216,24 @@ typedef Common::HashMap<ResourceId, Resource *, ResourceIdHash, ResourceIdEqualT class ResourceManager { public: - int _sciVersion; //!< SCI resource version to use */ - int _mapVersion; //!< RESOURCE.MAP version - int _volVersion; //!< RESOURCE.0xx version + enum ResVersion { + kResVersionUnknown, + kResVersionSci0Sci1Early, + kResVersionSci1Middle, + kResVersionSci1Late, + kResVersionSci11, + kResVersionSci32 + }; bool isVGA() const { return _isVGA; } /** + * Returns the SCI version as detected by the resource manager + * @return SCI version + */ + SciVersion sciVersion() const { return _sciVersion; } + + /** * Creates a new SCI resource manager. * @param version The SCI version to look for; use SCI_VERSION_AUTODETECT * in the default case. @@ -222,7 +243,7 @@ public: * for resources which are not explicitly locked. However, a warning will be * issued whenever this limit is exceeded. */ - ResourceManager(int version, int maxMemory); + ResourceManager(int maxMemory); ~ResourceManager(); /** @@ -272,6 +293,9 @@ protected: ResourceMap _resMap; Common::List<Common::File *> _volumeFiles; //!< list of opened volume files ResourceSource *_audioMapSCI1; //!< Currently loaded audio map for SCI1 + ResVersion _volVersion; //!< RESOURCE.0xx version + ResVersion _mapVersion; //!< RESOURCE.MAP version + SciVersion _sciVersion; //!< Detected SCI version */ /** * Add a path to the resource manager's list of sources. @@ -315,6 +339,13 @@ protected: int addInternalSources(); void freeResourceSources(); + /** + * Returns a string describing a ResVersion + * @param version: The resource version + * @return: The description of version + */ + const char *versionDescription(ResVersion version) const; + Common::File *getVolumeFile(const char *filename); void loadResource(Resource *res); bool loadPatch(Resource *res, Common::File &file); @@ -328,8 +359,8 @@ protected: void removeAudioResource(ResourceId resId); /**--- Resource map decoding functions ---*/ - int detectMapVersion(); - int detectVolVersion(); + ResVersion detectMapVersion(); + ResVersion detectVolVersion(); /** * Reads the SCI0 resource.map file from a local directory. @@ -372,7 +403,7 @@ protected: void addToLRU(Resource *res); void removeFromLRU(Resource *res); - int guessSciVersion(); + SciVersion guessSciVersion(); }; } // End of namespace Sci diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 65d0a4753a..b4fe197962 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -43,11 +43,10 @@ namespace Sci { class GfxDriver; -const char *versionNames[7] = { +const char *versionNames[6] = { "Autodetected", "SCI0", "SCI01", - "SCI01 VGA ODD", "SCI1", "SCI1.1", "SCI32" @@ -129,20 +128,23 @@ Common::Error SciEngine::run() { // FIXME/TODO: Move some of the stuff below to init() - const sci_version_t version = getVersion(); + SciVersion version = getVersion(); const uint32 flags = getFlags(); - int res_version = getResourceVersion(); - _resmgr = new ResourceManager(res_version, 256 * 1024); + _resmgr = new ResourceManager(256 * 1024); if (!_resmgr) { printf("No resources found, aborting...\n"); return Common::kNoGameDataFoundError; } + // When version is set to autodetect, use version as determined by resource manager + if (version == SCI_VERSION_AUTODETECT) + version = _resmgr->sciVersion(); + _kernel = new Kernel(_resmgr); _vocabulary = new Vocabulary(_resmgr); - script_adjust_opcode_formats(_resmgr->_sciVersion); + script_adjust_opcode_formats(_resmgr->sciVersion()); #if 0 printf("Mapping instruments to General Midi\n"); @@ -209,7 +211,7 @@ Common::Error SciEngine::run() { // Default config ends #endif - if (gfxop_init(_resmgr->_sciVersion, &gfx_state, &gfx_options, _resmgr)) { + if (gfxop_init(_resmgr->sciVersion(), &gfx_state, &gfx_options, _resmgr)) { warning("Graphics initialization failed. Aborting..."); return Common::kUnknownError; } @@ -262,14 +264,10 @@ const char* SciEngine::getGameID() const { return _gameDescription->desc.gameid; } -int SciEngine::getVersion() const { +SciVersion SciEngine::getVersion() const { return _gameDescription->version; } -int SciEngine::getResourceVersion() const { - return _gameDescription->res_version; -} - Common::Language SciEngine::getLanguage() const { return _gameDescription->desc.language; } diff --git a/engines/sci/sci.h b/engines/sci/sci.h index 886a579799..43c0b9f8f8 100644 --- a/engines/sci/sci.h +++ b/engines/sci/sci.h @@ -66,21 +66,10 @@ enum kDebugLevels { struct SciGameDescription { ADGameDescription desc; uint32 flags; - int res_version; - int version; + SciVersion version; }; -enum SciGameVersions { - SCI_VERSION_AUTODETECT = 0, - SCI_VERSION_0 = 1, - SCI_VERSION_01 = 2, - SCI_VERSION_01_VGA_ODD = 3, - SCI_VERSION_1 = 4, - SCI_VERSION_1_1 = 5, - SCI_VERSION_32 = 6 -}; - -extern const char *versionNames[7]; +extern const char *versionNames[6]; enum SciGameFlags { // SCI0 flags @@ -105,7 +94,7 @@ public: const char* getGameID() const; int getResourceVersion() const; - int getVersion() const; + SciVersion getVersion() const; Common::Language getLanguage() const; Common::Platform getPlatform() const; uint32 getFlags() const; diff --git a/engines/sci/sfx/softseq/adlib.cpp b/engines/sci/sfx/softseq/adlib.cpp index 41c7c63fc9..8d253a6b85 100644 --- a/engines/sci/sfx/softseq/adlib.cpp +++ b/engines/sci/sfx/softseq/adlib.cpp @@ -641,7 +641,7 @@ int MidiPlayer_Adlib::open(ResourceManager *resmgr) { static_cast<MidiDriver_Adlib *>(_driver)->loadResource(res); - return static_cast<MidiDriver_Adlib *>(_driver)->open(resmgr->_sciVersion == SCI_VERSION_0); + return static_cast<MidiDriver_Adlib *>(_driver)->open(resmgr->sciVersion() == SCI_VERSION_0); } } // End of namespace Sci diff --git a/engines/sci/vocabulary.cpp b/engines/sci/vocabulary.cpp index 5253e7885b..7201ad54ac 100644 --- a/engines/sci/vocabulary.cpp +++ b/engines/sci/vocabulary.cpp @@ -91,7 +91,7 @@ Vocabulary::Vocabulary(ResourceManager *resmgr) : _resmgr(resmgr) { debug(2, "Initializing vocabulary"); - if (_resmgr->_sciVersion <= SCI_VERSION_01 && loadParserWords()) { + if (_resmgr->sciVersion() <= SCI_VERSION_01 && loadParserWords()) { loadSuffixes(); if (loadBranches()) // Now build a GNF grammar out of this diff --git a/engines/scumm/dialogs.cpp b/engines/scumm/dialogs.cpp index 42e49afcc1..63ac952265 100644 --- a/engines/scumm/dialogs.cpp +++ b/engines/scumm/dialogs.cpp @@ -471,10 +471,13 @@ ScummMenuDialog::~ScummMenuDialog() { delete _loadDialog; } -void ScummMenuDialog::reflowLayout() { - if (!_vm->canSaveGameStateCurrently()) - _saveButton->setEnabled(false); +int ScummMenuDialog::runModal() { + _saveButton->setEnabled(_vm->canSaveGameStateCurrently()); + return ScummDialog::runModal(); +} +void ScummMenuDialog::reflowLayout() { + _saveButton->setEnabled(_vm->canSaveGameStateCurrently()); Dialog::reflowLayout(); } @@ -745,7 +748,7 @@ InfoDialog::InfoDialog(ScummEngine *scumm, int res) _message = queryResString(res); // Width and height are dummy - _text = new StaticTextWidget(this, 4, 4, 10, 10, _message, kTextAlignCenter); + _text = new StaticTextWidget(this, 0, 0, 10, 10, _message, kTextAlignCenter); } InfoDialog::InfoDialog(ScummEngine *scumm, const String& message) @@ -754,7 +757,7 @@ InfoDialog::InfoDialog(ScummEngine *scumm, const String& message) _message = message; // Width and height are dummy - _text = new StaticTextWidget(this, 4, 4, 10, 10, _message, kTextAlignCenter); + _text = new StaticTextWidget(this, 0, 0, 10, 10, _message, kTextAlignCenter); } void InfoDialog::setInfoText(const String& message) { @@ -775,7 +778,7 @@ void InfoDialog::reflowLayout() { _x = (screenW - width) / 2; _y = (screenH - height) / 2; - _text->setSize(_w - 8, _h); + _text->setSize(_w, _h); } const Common::String InfoDialog::queryResString(int stringno) { diff --git a/engines/scumm/dialogs.h b/engines/scumm/dialogs.h index d4ecbde534..85b562ed67 100644 --- a/engines/scumm/dialogs.h +++ b/engines/scumm/dialogs.h @@ -90,6 +90,7 @@ public: virtual void reflowLayout(); + int runModal(); protected: ScummEngine *_vm; diff --git a/engines/scumm/he/script_v60he.cpp b/engines/scumm/he/script_v60he.cpp index f186495f81..7c109b1dcd 100644 --- a/engines/scumm/he/script_v60he.cpp +++ b/engines/scumm/he/script_v60he.cpp @@ -115,9 +115,10 @@ int ScummEngine_v60he::convertFilePath(byte *dst, int dstSize) { int r = 0; if (dst[len - 3] == 's' && dst[len - 2] == 'g') { // Save Game File // Change filename prefix to target name, for save game files. - char saveName[20]; + char saveName[40]; + memset(saveName, 0, sizeof(saveName)); sprintf(saveName, "%s.sg%c", _targetName.c_str(), dst[len - 1]); - memcpy(dst, saveName, 20); + memcpy(dst, saveName, 40); } else if (dst[0] == '.' && dst[1] == '/') { // Game Data Path // The default game data path is set to './' by ScummVM r = 2; diff --git a/engines/sword2/sprite.cpp b/engines/sword2/sprite.cpp index 1e55792adb..39abb8efe9 100644 --- a/engines/sword2/sprite.cpp +++ b/engines/sword2/sprite.cpp @@ -341,7 +341,7 @@ void Screen::recomposeCompPsxSprite(SpriteInfo *s) { uint16 noStripes = (s->w / 254) + ((s->w % 254) ? 1 : 0); uint16 lastStripeSize = (s->w % 254) ? s->w % 254 : 254; byte *buffer = (byte *)malloc(s->w * s->h / 2); - byte *stripeBuffer = (byte *)malloc(254 * s->h);; + byte *stripeBuffer = (byte *)malloc(254 * s->h); memset(buffer, 0, s->w * s->h / 2); uint32 skipData = 0; diff --git a/engines/tinsel/actors.cpp b/engines/tinsel/actors.cpp index e9d0c9f79f..15211c60aa 100644 --- a/engines/tinsel/actors.cpp +++ b/engines/tinsel/actors.cpp @@ -1185,7 +1185,7 @@ SCNHANDLE GetActorTalkFilm(int ano) { void SetActorTalking(int ano, bool tf) { assert(ano > 0 && ano <= NumActors); // illegal actor number - actorInfo[ano - 1].bTalking = tf;; + actorInfo[ano - 1].bTalking = tf; } bool ActorIsTalking(int ano) { diff --git a/engines/tinsel/scene.cpp b/engines/tinsel/scene.cpp index 0b563376f8..a9ad9617c0 100644 --- a/engines/tinsel/scene.cpp +++ b/engines/tinsel/scene.cpp @@ -132,7 +132,7 @@ const SCENE_STRUC *GetSceneStruc(const byte *pStruc) { // Copy appropriate fields into tempStruc, and return a pointer to it const byte *p = pStruc; - memset(&tempStruc, sizeof(SCENE_STRUC), 0); + memset(&tempStruc, 0, sizeof(SCENE_STRUC)); tempStruc.numEntrance = READ_UINT32(p); p += sizeof(uint32); tempStruc.numPoly = READ_UINT32(p); p += sizeof(uint32); diff --git a/engines/tinsel/tinlib.cpp b/engines/tinsel/tinlib.cpp index 957c4f7626..b97f8841ef 100644 --- a/engines/tinsel/tinlib.cpp +++ b/engines/tinsel/tinlib.cpp @@ -359,7 +359,7 @@ typedef SCROLL_MONITOR *PSCROLL_MONITOR; */ static void ScrollMonitorProcess(CORO_PARAM, const void *param) { int Loffset, Toffset; - const SCROLL_MONITOR *psm = (const SCROLL_MONITOR *)param;; + const SCROLL_MONITOR *psm = (const SCROLL_MONITOR *)param; // COROUTINE CORO_BEGIN_CONTEXT; diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp index 09e9a0d38a..05cbcacd34 100644 --- a/engines/tucker/tucker.cpp +++ b/engines/tucker/tucker.cpp @@ -687,7 +687,7 @@ void TuckerEngine::setupNewLocation() { _fadePaletteCounter = 0; _mainLoopCounter2 = 0; _mainLoopCounter1 = 0; - _characterFacingDirection = 0;; + _characterFacingDirection = 0; _skipPanelObjectUnderCursor = 0; _locationMaskIgnore = 0; _backgroundSprOffset = 0; |