diff options
-rw-r--r-- | engines/sci/resource.cpp | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 089b466729..ccf576d51d 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -1465,18 +1465,21 @@ void ResourceManager::processPatch(ResourceSource *source, ResourceType resource }; int32 patchDataOffset = kResourceHeaderSize; - if (_volVersion < kResVersionSci2) { + if (_volVersion < kResVersionSci11) { patchDataOffset += fileStream->readByte(); - } -#ifdef ENABLE_SCI32 - else { + } else { switch (patchType) { case kResourceTypeView: fileStream->seek(3, SEEK_SET); patchDataOffset += fileStream->readByte() + kViewHeaderSize + kExtraHeaderSize; break; case kResourceTypePic: - patchDataOffset += kExtraHeaderSize; + if (_volVersion < kResVersionSci2) { + fileStream->seek(3, SEEK_SET); + patchDataOffset += fileStream->readByte() + kViewHeaderSize + kExtraHeaderSize; + } else { + patchDataOffset += kExtraHeaderSize; + } break; case kResourceTypePalette: fileStream->seek(3, SEEK_SET); @@ -1499,7 +1502,6 @@ void ResourceManager::processPatch(ResourceSource *source, ResourceType resource break; } } -#endif delete fileStream; @@ -1509,24 +1511,6 @@ void ResourceManager::processPatch(ResourceSource *source, ResourceType resource return; } - // Fixes SQ5/German, patch file special case logic taken from SCI View disassembly - if (patchDataOffset & 0x80) { - switch ((patchDataOffset - kResourceHeaderSize) & 0x7F) { - case 0: - patchDataOffset = kResourceHeaderSize + 24; - break; - case 1: - patchDataOffset = kResourceHeaderSize + 2; - break; - case 4: - patchDataOffset = kResourceHeaderSize + 8; - break; - default: - error("Resource patch unsupported special case %X", patchDataOffset & 0x7F); - return; - } - } - if (patchDataOffset >= fsize) { debug("Patching %s failed - patch starting at offset %d can't be in file of size %d", source->getLocationName().c_str(), patchDataOffset, fsize); |