[Scummvm-git-logs] scummvm master -> 09d41af771edbb942eea78dcc89ab86c3d05abca

sev- sev at scummvm.org
Thu Oct 27 16:48:47 CEST 2016


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
ba9eeded27 DIRECTOR: More debug output to RIFX archive reader
09d41af771 DIRECTOR: Fix RIFX resource loading


Commit: ba9eeded271cba1ae68d39e6bb7d81a32c51f73c
    https://github.com/scummvm/scummvm/commit/ba9eeded271cba1ae68d39e6bb7d81a32c51f73c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-10-27T16:48:17+02:00

Commit Message:
DIRECTOR: More debug output to RIFX archive reader

Changed paths:
    engines/director/archive.cpp



diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index 8297645..a96ffa9 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -371,11 +371,12 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
 		uint32 tag = subStream.readUint32();
 		uint32 size = subStream.readUint32();
 		uint32 offset = subStream.readUint32();
-		/*uint16 flags = */ subStream.readUint16();
-		/*uint16 unk1 = */ subStream.readUint16();
-		/*uint32 unk2 = */ subStream.readUint32();
+		uint16 flags = subStream.readUint16();
+		uint16 unk1 = subStream.readUint16();
+		uint32 unk2 = subStream.readUint32();
 
-		debug(3, "Found RIFX resource index %d: '%s', %d @ 0x%08x", i, tag2str(tag), size, offset);
+		debug(3, "Found RIFX resource index %d: '%s', %d @ 0x%08x (%d), flags: %x unk1: %x unk2: %x",
+			i, tag2str(tag), size, offset, offset, flags, unk1, unk2);
 
 		Resource res;
 		res.offset = offset;
@@ -438,7 +439,7 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
 		}
 
 		const Resource &res = resources[index];
-		debug(3, "Found RIFX resource: '%s' 0x%04x, %d @ 0x%08x", tag2str(resTag), id, res.size, res.offset);
+		debug(3, "Found RIFX resource: '%s' 0x%04x, %d @ 0x%08x (%d)", tag2str(resTag), id, res.size, res.offset, res.offset);
 		_types[resTag][id] = res;
 	}
 


Commit: 09d41af771edbb942eea78dcc89ab86c3d05abca
    https://github.com/scummvm/scummvm/commit/09d41af771edbb942eea78dcc89ab86c3d05abca
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-10-27T16:48:21+02:00

Commit Message:
DIRECTOR: Fix RIFX resource loading

Changed paths:
    engines/director/archive.cpp
    engines/director/archive.h
    engines/director/score.cpp



diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index a96ffa9..9122572 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -447,4 +447,22 @@ bool RIFXArchive::openStream(Common::SeekableReadStream *stream, uint32 startOff
 	return true;
 }
 
+Common::SeekableSubReadStreamEndian *RIFXArchive::getResource(uint32 tag, uint16 id) {
+	if (!_types.contains(tag))
+		error("Archive does not contain '%s' %04x", tag2str(tag), id);
+
+	const ResourceMap &resMap = _types[tag];
+
+	if (!resMap.contains(id))
+		error("Archive does not contain '%s' %04x", tag2str(tag), id);
+
+	const Resource &res = resMap[id];
+
+	uint32 offset = res.offset + 8;
+	uint32 size = res.size;
+
+	return new Common::SeekableSubReadStreamEndian(_stream, offset, offset + size, true, DisposeAfterUse::NO);
+}
+
+
 } // End of namespace Director
diff --git a/engines/director/archive.h b/engines/director/archive.h
index 54d7086..93f4ce7 100644
--- a/engines/director/archive.h
+++ b/engines/director/archive.h
@@ -102,6 +102,7 @@ public:
 	~RIFXArchive() {}
 
 	bool openStream(Common::SeekableReadStream *stream, uint32 startOffset = 0);
+	Common::SeekableSubReadStreamEndian *getResource(uint32 tag, uint16 id);
 };
 
 } // End of namespace Director
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 1345f4b..7b03ca1 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -365,11 +365,6 @@ void Score::loadCastData(Common::SeekableSubReadStreamEndian &stream) {
 }
 
 void Score::loadLabels(Common::SeekableSubReadStreamEndian &stream) {
-	if (_vm->getVersion() >= 4) { // HACK: Skip the header. Why it is there?
-		stream.readUint32LE();
-		stream.readUint32LE();
-	}
-
 	_labels = new Common::SortedArray<Label *>(compareLabels);
 	uint16 count = stream.readUint16() + 1;
 	uint16 offset = count * 4 + 2;





More information about the Scummvm-git-logs mailing list