[Scummvm-git-logs] scummvm master -> 2dc0208a38d60b0e9431455c860d709995fcb004

sev- sev at scummvm.org
Tue Jul 7 22:30:31 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:
2dc0208a38 DIRECTOR: Parse 'vers' chunk from Mac Projectors


Commit: 2dc0208a38d60b0e9431455c860d709995fcb004
    https://github.com/scummvm/scummvm/commit/2dc0208a38d60b0e9431455c860d709995fcb004
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-07-08T00:30:12+02:00

Commit Message:
DIRECTOR: Parse 'vers' chunk from Mac Projectors

Changed paths:
    engines/director/resource.cpp


diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 3b2bbf66b0..ccee3abf9f 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -73,6 +73,32 @@ Common::Error Stage::loadInitialMovie() {
 	if (_mainArchive->hasResource(MKTAG('B', 'N', 'D', 'L'), "Projector")) {
 		warning("Detected Projector file");
 
+		if (_mainArchive->hasResource(MKTAG('v', 'e', 'r', 's'), -1)) {
+			Common::Array<uint16> vers = _mainArchive->getResourceIDList(MKTAG('v', 'e', 'r', 's'));
+			for (Common::Array<uint16>::iterator iterator = vers.begin(); iterator != vers.end(); ++iterator) {
+				Common::SeekableSubReadStreamEndian *vvers = _mainArchive->getResource(MKTAG('v', 'e', 'r', 's'), *iterator);
+				byte majorVer = vvers->readByte();
+				byte minorVer = vvers->readByte();
+				byte devStage = vvers->readByte();
+				const char *devStr;
+				switch (devStage) {
+				case 0x20: devStr = "Prealpha"; break;
+				case 0x40: devStr = "Alpha";    break;
+				case 0x60: devStr = "Beta";     break;
+				case 0x80: devStr = "Final";    break;
+				default:   devStr = "";
+				}
+
+				byte preReleaseVer = vvers->readByte();
+				uint16 region = vvers->readUint16BE();
+				Common::String str = vvers->readPascalString();
+				Common::String msg = vvers->readPascalString();
+
+				debug(0, "Detected vers %d.%d %s.%d region %d '%s' '%s'", majorVer, minorVer, devStr,
+					preReleaseVer, region, str.c_str(), msg.c_str());
+			}
+		}
+
 		if (_mainArchive->hasResource(MKTAG('X', 'C', 'O', 'D'), -1)) {
 			Common::Array<uint16> xcod = _mainArchive->getResourceIDList(MKTAG('X', 'C', 'O', 'D'));
 			for (Common::Array<uint16>::iterator iterator = xcod.begin(); iterator != xcod.end(); ++iterator) {




More information about the Scummvm-git-logs mailing list