SCI32: Fix reading view, pic, and palette patches

Unlike SCI16 games, the location of data within SCI32 patch files
is calculated on a per-resource-type basis by the game engine,
instead of by reading byte 1 of the patch file.
This commit is contained in:
Colin Snover 2016-11-20 16:09:27 -06:00
parent e49cf11275
commit fe8fbf7007

View file

@ -1399,7 +1399,20 @@ void ResourceManager::processPatch(ResourceSource *source, ResourceType resource
}
byte patchType = convertResType(fileStream->readByte());
byte patchDataOffset = fileStream->readByte();
int32 patchDataOffset;
if (_volVersion < kResVersionSci2) {
patchDataOffset = fileStream->readByte();
} else if (patchType == kResourceTypeView) {
fileStream->seek(3, SEEK_SET);
patchDataOffset = fileStream->readByte() + 22 + 2;
} else if (patchType == kResourceTypePic) {
patchDataOffset = 2;
} else if (patchType == kResourceTypePalette) {
fileStream->seek(3, SEEK_SET);
patchDataOffset = fileStream->readByte() + 2;
} else {
patchDataOffset = 0;
}
delete fileStream;