[Scummvm-git-logs] scummvm master -> 6b8aba14c84533bbbb1e282ecf386fd2cf09f230
sev-
sev at scummvm.org
Tue Jul 7 21:03:08 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6b8aba14c8 DIRECTOR: Make RIFX work properly on both Mac and Win
Commit: 6b8aba14c84533bbbb1e282ecf386fd2cf09f230
https://github.com/scummvm/scummvm/commit/6b8aba14c84533bbbb1e282ecf386fd2cf09f230
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-07T23:02:36+02:00
Commit Message:
DIRECTOR: Make RIFX work properly on both Mac and Win
Changed paths:
engines/director/archive.cpp
diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 58b32dfa6f..0c4c1edd3b 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -385,6 +385,8 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
stream->seek(startOffset);
+ uint32 moreOffset = 0;
+
uint32 headerTag = stream->readUint32BE();
if (headerTag != MKTAG('R', 'I', 'F', 'X') &&
@@ -396,8 +398,8 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
if (Common::MacResManager::isMacBinary(*stream)) {
warning("RIFXArchive::openStream(): MacBinary detected, overriding");
- startOffset += Common::MacResManager::getDataForkOffset();
- stream->seek(startOffset);
+ moreOffset = Common::MacResManager::getDataForkOffset();
+ stream->seek(startOffset + moreOffset);
headerTag = stream->readUint32BE();
}
@@ -412,7 +414,7 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
return false;
}
- Common::SeekableSubReadStreamEndian subStream(stream, startOffset + 4, stream->size(), _isBigEndian, DisposeAfterUse::NO);
+ Common::SeekableSubReadStreamEndian subStream(stream, startOffset + 4 + moreOffset, stream->size(), _isBigEndian, DisposeAfterUse::NO);
uint32 sz = subStream.readUint32(); // size
@@ -435,7 +437,6 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
free(data);
stream->seek(startOffset + 8);
- warning("dumped: %s", buf);
} else {
warning("RIFXArchive::openStream(): Can not open dump file %s", buf);
}
@@ -453,7 +454,7 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
subStream.readUint32(); // imap length
subStream.readUint32(); // unknown
- uint32 mmapOffset = subStream.readUint32() - 4;
+ uint32 mmapOffset = subStream.readUint32() - startOffset - 4;
uint32 version = subStream.readUint32(); // 0 for 4.0, 0x4c1 for 5.0, 0x4c7 for 6.0, 0x708 for 8.5, 0x742 for 10.0
warning("RIFX: version: %x type: %s", version, tag2str(rifxType));
@@ -482,7 +483,7 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
for (uint32 i = 0; i < resCount; i++) {
uint32 tag = subStream.readUint32();
uint32 size = subStream.readUint32();
- uint32 offset = subStream.readUint32() + startOffset;
+ uint32 offset = subStream.readUint32() + moreOffset;
uint16 flags = subStream.readUint16();
uint16 unk1 = subStream.readUint16();
uint32 unk2 = subStream.readUint32();
More information about the Scummvm-git-logs
mailing list