diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sherlock/resources.cpp | 9 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel.cpp | 7 | ||||
-rw-r--r-- | engines/sherlock/scene.cpp | 32 | ||||
-rw-r--r-- | engines/sherlock/sound.cpp | 13 | ||||
-rw-r--r-- | engines/sherlock/tattoo/tattoo.cpp | 1 |
5 files changed, 34 insertions, 28 deletions
diff --git a/engines/sherlock/resources.cpp b/engines/sherlock/resources.cpp index 864622e74b..4e10ba97c9 100644 --- a/engines/sherlock/resources.cpp +++ b/engines/sherlock/resources.cpp @@ -91,9 +91,12 @@ Resources::Resources(SherlockEngine *vm) : _vm(vm), _cache(vm) { if (_vm->_interactiveFl) { addToCache("vgs.lib"); addToCache("talk.lib"); - addToCache("sequence.txt"); addToCache("journal.txt"); - addToCache("portrait.lib"); + + if (IS_SERRATED_SCALPEL) { + addToCache("sequence.txt"); + addToCache("portrait.lib"); + } } } @@ -310,7 +313,7 @@ void Resources::decompressLZ(Common::SeekableReadStream &source, byte *outBuffer lzWindowPos = (lzWindowPos + 1) & 0x0FFF; } } - } while ((outSize == -1 || outBuffer < outBufferEnd) || (inSize == -1 || source.pos() < endPos)); + } while ((outSize == -1 || outBuffer < outBufferEnd) && (inSize == -1 || source.pos() < endPos)); } /*----------------------------------------------------------------*/ diff --git a/engines/sherlock/scalpel/scalpel.cpp b/engines/sherlock/scalpel/scalpel.cpp index ccc9c8abca..7209c34218 100644 --- a/engines/sherlock/scalpel/scalpel.cpp +++ b/engines/sherlock/scalpel/scalpel.cpp @@ -390,13 +390,6 @@ void ScalpelEngine::initialize() { _flags[3] = true; // Turn on Alley _flags[39] = true; // Turn on Baker Street - // Add some more files to the cache - _res->addToCache("portrait.lib"); - _res->addToCache("sequence.txt"); - _res->addToCache("EPILOGUE.SND"); - _res->addToCache("snd.snd"); - _res->addToCache("title.snd"); - if (!isDemo()) { // Load the map co-ordinates for each scene and sequence data _map->loadPoints(NUM_PLACES, &MAP_X[0], &MAP_Y[0], &MAP_TRANSLATE[0]); diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp index 2c80bfbd39..933e60d96d 100644 --- a/engines/sherlock/scene.cpp +++ b/engines/sherlock/scene.cpp @@ -311,27 +311,32 @@ bool Scene::loadScene(const Common::String &filename) { bgInfo[idx].load(*rrmStream); // Read information - if (IS_SERRATED_SCALPEL) { - Common::SeekableReadStream *infoStream = !_lzwMode ? rrmStream : - res.decompress(*rrmStream, bgHeader._numStructs * 569 + bgHeader._descSize + bgHeader._seqSize); + if (IS_ROSE_TATTOO) { + // Load shapes + Common::SeekableReadStream *infoStream = !_lzwMode ? rrmStream : res.decompress(*rrmStream, bgHeader._numStructs * 625); _bgShapes.resize(bgHeader._numStructs); for (int idx = 0; idx < bgHeader._numStructs; ++idx) - _bgShapes[idx].load(*infoStream, false); + _bgShapes[idx].load(*infoStream, _vm->getGameID() == GType_RoseTattoo); - if (bgHeader._descSize) { - _descText.resize(bgHeader._descSize); - infoStream->read(&_descText[0], bgHeader._descSize); - } + if (_lzwMode) + delete infoStream; - if (bgHeader._seqSize) { - _sequenceBuffer.resize(bgHeader._seqSize); - infoStream->read(&_sequenceBuffer[0], bgHeader._seqSize); - } + // Load description text + _descText.resize(bgHeader._descSize); + if (_lzwMode) + res.decompress(*rrmStream, (byte *)&_descText[0], bgHeader._descSize); + else + rrmStream->read(&_descText[0], bgHeader._descSize); + // Load sequences + _sequenceBuffer.resize(bgHeader._seqSize); if (_lzwMode) - delete infoStream; + res.decompress(*rrmStream, &_sequenceBuffer[0], bgHeader._seqSize); + else + rrmStream->read(&_sequenceBuffer[0], bgHeader._seqSize); } else if (!_lzwMode) { + // Serrated Scalpel uncompressed info _bgShapes.resize(bgHeader._numStructs); for (int idx = 0; idx < bgHeader._numStructs; ++idx) _bgShapes[idx].load(*rrmStream, false); @@ -346,6 +351,7 @@ bool Scene::loadScene(const Common::String &filename) { rrmStream->read(&_sequenceBuffer[0], bgHeader._seqSize); } } else { + // Serrated Scalpel compressed info Common::SeekableReadStream *infoStream; // Read shapes diff --git a/engines/sherlock/sound.cpp b/engines/sherlock/sound.cpp index 06f6a0f264..b8fe61dd29 100644 --- a/engines/sherlock/sound.cpp +++ b/engines/sherlock/sound.cpp @@ -68,11 +68,16 @@ Sound::Sound(SherlockEngine *vm, Audio::Mixer *mixer) : _vm(vm), _mixer(mixer) { _vm->_res->addToCache("TITLE.SND"); else { _vm->_res->addToCache("MUSIC.LIB"); - _vm->_res->addToCache("SND.SND"); + + if (IS_ROSE_TATTOO) { + _vm->_res->addToCache("SOUND.LIB"); + } else { + _vm->_res->addToCache("SND.SND"); - if (!_vm->isDemo()) { - _vm->_res->addToCache("TITLE.SND"); - _vm->_res->addToCache("EPILOGUE.SND"); + if (!_vm->isDemo()) { + _vm->_res->addToCache("TITLE.SND"); + _vm->_res->addToCache("EPILOGUE.SND"); + } } } } diff --git a/engines/sherlock/tattoo/tattoo.cpp b/engines/sherlock/tattoo/tattoo.cpp index 3c684ff3ee..9039e3f9d4 100644 --- a/engines/sherlock/tattoo/tattoo.cpp +++ b/engines/sherlock/tattoo/tattoo.cpp @@ -44,7 +44,6 @@ void TattooEngine::initialize() { // Add some more files to the cache _res->addToCache("walk.lib"); - _res->addToCache("sound.lib"); // Starting scene _scene->_goToScene = 91; |