SHERLOCK: Fix Rose Tattoo scene loading problems from merge
This commit is contained in:
parent
b4b6bf63db
commit
c8cfca749a
5 changed files with 35 additions and 29 deletions
|
@ -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));
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------*/
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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);
|
||||
|
||||
if (bgHeader._descSize) {
|
||||
_descText.resize(bgHeader._descSize);
|
||||
infoStream->read(&_descText[0], bgHeader._descSize);
|
||||
}
|
||||
|
||||
if (bgHeader._seqSize) {
|
||||
_sequenceBuffer.resize(bgHeader._seqSize);
|
||||
infoStream->read(&_sequenceBuffer[0], bgHeader._seqSize);
|
||||
}
|
||||
_bgShapes[idx].load(*infoStream, _vm->getGameID() == GType_RoseTattoo);
|
||||
|
||||
if (_lzwMode)
|
||||
delete infoStream;
|
||||
|
||||
// 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)
|
||||
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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue