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:
parent
e49cf11275
commit
fe8fbf7007
1 changed files with 14 additions and 1 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue