[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