aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/resource.cpp32
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);