[Scummvm-git-logs] scummvm master -> 0d69b41a23bc3095cccc2acafc10f4b7382c258f

sev- noreply at scummvm.org
Thu Apr 9 22:53:37 UTC 2026


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

Summary:
622336ad5f DIRECTOR: Fix config loading for some D6+ movies
0d69b41a23 DIRECTOR: LINGODEC: Synced with the latest code


Commit: 622336ad5f233076d39fbbc6dc8baad975fa328a
    https://github.com/scummvm/scummvm/commit/622336ad5f233076d39fbbc6dc8baad975fa328a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-04-10T00:53:24+02:00

Commit Message:
DIRECTOR: Fix config loading for some D6+ movies

We tried to read VWCF chunk and it was 0 bytes in some of those
movies. This led to incorrect file version loading and multiple
failures.

Changed paths:
    engines/director/cast.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index a3dcf15a9b6..f5c3a0dd7af 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -346,11 +346,11 @@ bool Cast::loadConfig() {
 		return false;
 	}
 	Common::SeekableReadStreamEndian *stream = nullptr;
-	const char *chunkTag = "VWCF";
-	stream = _castArchive->getMovieResourceIfPresent(MKTAG('V', 'W', 'C', 'F'));
+	const char *chunkTag = "DRCF";
+	stream = _castArchive->getMovieResourceIfPresent(MKTAG('D', 'R', 'C', 'F'));
 	if (!stream) {
-		stream = _castArchive->getMovieResourceIfPresent(MKTAG('D', 'R', 'C', 'F'));
-		chunkTag = "DRCF";
+		chunkTag = "VWCF";
+		stream = _castArchive->getMovieResourceIfPresent(MKTAG('V', 'W', 'C', 'F'));
 	}
 	if (!stream) {
 		warning("Cast::loadConfig(): Wrong format. VWCF resource missing");


Commit: 0d69b41a23bc3095cccc2acafc10f4b7382c258f
    https://github.com/scummvm/scummvm/commit/0d69b41a23bc3095cccc2acafc10f4b7382c258f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-04-10T00:53:25+02:00

Commit Message:
DIRECTOR: LINGODEC: Synced with the latest code

This commit is equuvalent to

  commit cdc3bca38984c35f984476e3adfd17f8f5ddaf66
  Author: djsrv <dservilla at gmail.com>
  Date:   Sun Jul 20 13:22:19 2025 -0500

      Handle parenthesized chunk expr arguments

And in general, this is brought in sync with 6f9bcebf626b43719abe2affcbbcb041d154d666
on ProjectorRay's master

Changed paths:
    engines/director/lingo/lingodec/codewritervisitor.cpp


diff --git a/engines/director/lingo/lingodec/codewritervisitor.cpp b/engines/director/lingo/lingodec/codewritervisitor.cpp
index 78a8a3b5ea6..7176f5c44a3 100644
--- a/engines/director/lingo/lingodec/codewritervisitor.cpp
+++ b/engines/director/lingo/lingodec/codewritervisitor.cpp
@@ -269,13 +269,35 @@ void CodeWriterVisitor::visit(const CaseLabelNode &node) {
 void CodeWriterVisitor::visit(const ChunkExprNode &node) {
 	write(StandardNames::chunkTypeNames[node.type]);
 	write(" ");
+	bool parenFirst = node.first->hasSpaces(_dot);
+	if (parenFirst) {
+		write("(");
+	}
 	node.first->accept(*this);
+	if (parenFirst) {
+		write(")");
+	}
 	if (!(node.last->type == kLiteralNode && node.last->getValue()->type == kDatumInt && node.last->getValue()->i == 0)) {
 		write(" to ");
+		bool parenLast = node.last->hasSpaces(_dot);
+		if (parenLast) {
+			write("(");
+		}
 		node.last->accept(*this);
+		if (parenLast) {
+			write(")");
+		}
 	}
 	write(" of ");
+	bool stringIsBiggerChunk = node.string->type == kChunkExprNode && static_cast<ChunkExprNode *>(node.string.get())->type > node.type;
+	bool parenString = !stringIsBiggerChunk && node.string->hasSpaces(_dot);
+	if (parenString) {
+		write("(");
+	}
 	node.string->accept(*this); // TODO: we want the string to always be verbose
+	if (parenString) {
+		write(")");
+	}
 }
 void CodeWriterVisitor::visit(const InverseOpNode &node) {
 	write("-");




More information about the Scummvm-git-logs mailing list