[Scummvm-git-logs] scummvm master -> c71c4949c10cde46845d25b4b511434c3cf1941d

sev- noreply at scummvm.org
Mon Aug 4 18:36:07 UTC 2025


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

Summary:
aebceba712 DIRECTOR: Fix reading castId in `Script::read()`
f504c55491 DIRECTOR: Dump Scripts with names more consistent with ProjectorRays
c71c4949c1 DIRECTOR: Change default script type while dumping scripts


Commit: aebceba712c3f072fea8a8308cff070e33de570e
    https://github.com/scummvm/scummvm/commit/aebceba712c3f072fea8a8308cff070e33de570e
Author: Malhar (themalharbdv2046 at gmail.com)
Date: 2025-08-04T20:36:03+02:00

Commit Message:
DIRECTOR: Fix reading castId in `Script::read()`

Changed paths:
    engines/director/lingo/lingodec/script.cpp
    engines/director/lingo/lingodec/script.h


diff --git a/engines/director/lingo/lingodec/script.cpp b/engines/director/lingo/lingodec/script.cpp
index 77949bb2ae1..1f48ccf09f9 100644
--- a/engines/director/lingo/lingodec/script.cpp
+++ b/engines/director/lingo/lingodec/script.cpp
@@ -36,7 +36,8 @@ void Script::read(Common::SeekableReadStream &stream) {
 	stream.seek(38);
 	/* 38 */ scriptFlags = stream.readUint32BE();
 	/* 42 */ unk42 = stream.readSint16BE();
-	/* 44 */ castID = stream.readSint32BE();
+	/* 44 */ unk43 = stream.readSint16BE();
+	/* 46 */ castID = stream.readSint16BE();
 	/* 48 */ factoryNameID = stream.readSint16BE();
 	/* 50 */ handlerVectorsCount = stream.readUint16BE();
 	/* 52 */ handlerVectorsOffset = stream.readUint32BE();
diff --git a/engines/director/lingo/lingodec/script.h b/engines/director/lingo/lingodec/script.h
index 53cb6bcdbd7..591857c6124 100644
--- a/engines/director/lingo/lingodec/script.h
+++ b/engines/director/lingo/lingodec/script.h
@@ -45,7 +45,8 @@ struct Script {
 
 	/* 38 */ uint32 scriptFlags;
 	/* 42 */ int16 unk42;
-	/* 44 */ int32 castID;
+	/* 44 */ int16 unk43;
+	/* 46 */ int16 castID;
 	/* 48 */ int16 factoryNameID;
 	/* 50 */ uint16 handlerVectorsCount;
 	/* 52 */ uint32 handlerVectorsOffset;


Commit: f504c55491da2e3f34afdf6bbf33bce0e5e0162d
    https://github.com/scummvm/scummvm/commit/f504c55491da2e3f34afdf6bbf33bce0e5e0162d
Author: Malhar (themalharbdv2046 at gmail.com)
Date: 2025-08-04T20:36:03+02:00

Commit Message:
DIRECTOR: Dump Scripts with names more consistent with ProjectorRays

Changed paths:
    engines/director/cast.cpp
    engines/director/util.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index fb8bb4808f9..c6f1aa3a853 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1635,11 +1635,11 @@ void Cast::loadLingoContext(Common::SeekableReadStreamEndian &stream) {
 					}
 				}
 
-				// FIXME: castID is set incorrectly for D5+
-				Common::Path lingoPath(dumpScriptName(encodePathForDump(_macName).c_str(), scriptType, it->second->castID, "lingo"));
+				Common::String filename = encodePathForDump(_macName);
+				Common::Path lingoPath(dumpScriptName(filename.c_str(), scriptType, it->second->castID, "lingo"));
 
 				if (out.open(lingoPath, true)) {
-					Common::String decompiled = it->second->scriptText("\n", true);
+					Common::String decompiled = it->second->scriptText("\n", false);
 					out.writeString(decompiled);
 					out.flush();
 					out.close();
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 0e5b04a48b0..24d36ed02e2 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -1152,22 +1152,22 @@ Common::Path dumpScriptName(const char *prefix, int type, int id, const char *ex
 
 	switch (type) {
 	case kNoneScript:
-		typeName = "unknown";
+		typeName = "UnknownScript";
 		break;
 	case kMovieScript:
-		typeName = "movie";
+		typeName = "MovieScript";
 		break;
 	case kCastScript:
-		typeName = "cast";
+		typeName = "CastScript";
 		break;
 	case kEventScript:
-		typeName = "event";
+		typeName = "EventScript";
 		break;
 	case kScoreScript:
-		typeName = "score";
+		typeName = "ScoreScript";
 		break;
 	case kParentScript:
-		typeName = "parent";
+		typeName = "ParentScript";
 		break;
 	default:
 		error("dumpScriptName(): Incorrect call (type %d)", type);


Commit: c71c4949c10cde46845d25b4b511434c3cf1941d
    https://github.com/scummvm/scummvm/commit/c71c4949c10cde46845d25b4b511434c3cf1941d
Author: Malhar (themalharbdv2046 at gmail.com)
Date: 2025-08-04T20:36:03+02:00

Commit Message:
DIRECTOR: Change default script type while dumping scripts

If a cast member associated with a script is not a Script Cast member
type, then the script is a CastScript, not a MovieScript

Changed paths:
    engines/director/cast.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index c6f1aa3a853..a68ecbb35e3 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1626,12 +1626,14 @@ void Cast::loadLingoContext(Common::SeekableReadStreamEndian &stream) {
 		if (ConfMan.getBool("dump_scripts")) {
 			for (auto it = _lingodec->scripts.begin(); it != _lingodec->scripts.end(); ++it) {
 				Common::DumpFile out;
-				ScriptType scriptType = kMovieScript;
+				ScriptType scriptType = kNoneScript;
 
 				if (_loadedCast->contains(it->second->castID)) {
 					CastMember *member = _loadedCast->getVal(it->second->castID);
 					if (member && member->_type == kCastLingoScript) {
 						scriptType = ((ScriptCastMember *)member)->_scriptType;
+					} else {
+						scriptType = kCastScript;
 					}
 				}
 




More information about the Scummvm-git-logs mailing list