aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2015-05-23 10:39:47 -0400
committerPaul Gilbert2015-05-23 10:39:47 -0400
commitc8cfca749a5da09aead4ca0c499def9afab5317c (patch)
treed6b2d455ad31258e0113a1dfe7185f588935d5ef /engines
parentb4b6bf63dbfd3f952f4ca207467315396b53bd23 (diff)
downloadscummvm-rg350-c8cfca749a5da09aead4ca0c499def9afab5317c.tar.gz
scummvm-rg350-c8cfca749a5da09aead4ca0c499def9afab5317c.tar.bz2
scummvm-rg350-c8cfca749a5da09aead4ca0c499def9afab5317c.zip
SHERLOCK: Fix Rose Tattoo scene loading problems from merge
Diffstat (limited to 'engines')
-rw-r--r--engines/sherlock/resources.cpp9
-rw-r--r--engines/sherlock/scalpel/scalpel.cpp7
-rw-r--r--engines/sherlock/scene.cpp32
-rw-r--r--engines/sherlock/sound.cpp13
-rw-r--r--engines/sherlock/tattoo/tattoo.cpp1
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;