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

sev- noreply at scummvm.org
Sat Apr 19 10:14:21 UTC 2025


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:
ae46e89879 DIRECTOR: Dump decompiled lingo scripts
fc7d5ff613 DIRECTOR: Dump decompiled scripts along with bytecode


Commit: ae46e898791c477db2984b3b9735241199d575d2
    https://github.com/scummvm/scummvm/commit/ae46e898791c477db2984b3b9735241199d575d2
Author: BunnyBun (kethushanmukhareddy2126 at gmail.com)
Date: 2025-04-19T12:08:46+02:00

Commit Message:
DIRECTOR: Dump decompiled lingo scripts

Changed paths:
    engines/director/cast.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index e581e47bd65..faab49c99a6 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1301,6 +1301,27 @@ void Cast::loadLingoContext(Common::SeekableReadStreamEndian &stream) {
 		for (auto it = _lingodec->scripts.begin(); it != _lingodec->scripts.end(); ++it) {
 			debugC(9, kDebugCompile, "[%d/%d] %s", it->second->castID, it->first, it->second->scriptText("\n", false).c_str());
 		}
+
+		for (auto it = _lingodec->scripts.begin(); it != _lingodec->scripts.end(); ++it) {
+            Common::DumpFile out;
+            ScriptType scriptType = kMovieScript; 
+    
+            if (_loadedCast->contains(it->second->castID)) {
+                CastMember *member = _loadedCast->getVal(it->second->castID);
+                if (member && member->_type == kCastLingoScript) {
+                    scriptType = ((ScriptCastMember *)member)->_scriptType;
+                }
+            }
+
+            Common::Path lingoPath(dumpScriptName(encodePathForDump(_macName).c_str(), scriptType, it->second->castID, "lingo"));
+
+            if (out.open(lingoPath, true)) {
+                Common::String decompiled = it->second->scriptText("\n", true);
+                out.writeString(decompiled);
+                out.flush();
+                out.close();
+            }
+        }
 	}
 }
 


Commit: fc7d5ff6136997d45971337f4ff8576b8de28813
    https://github.com/scummvm/scummvm/commit/fc7d5ff6136997d45971337f4ff8576b8de28813
Author: BunnyBun (kethushanmukhareddy2126 at gmail.com)
Date: 2025-04-19T12:12:32+02:00

Commit Message:
DIRECTOR: Dump decompiled scripts along with bytecode

TODO: The script ids currently do not match those of bytecode

Changed paths:
    engines/director/cast.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index faab49c99a6..a5a974953ea 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1302,26 +1302,29 @@ void Cast::loadLingoContext(Common::SeekableReadStreamEndian &stream) {
 			debugC(9, kDebugCompile, "[%d/%d] %s", it->second->castID, it->first, it->second->scriptText("\n", false).c_str());
 		}
 
-		for (auto it = _lingodec->scripts.begin(); it != _lingodec->scripts.end(); ++it) {
-            Common::DumpFile out;
-            ScriptType scriptType = kMovieScript; 
-    
-            if (_loadedCast->contains(it->second->castID)) {
-                CastMember *member = _loadedCast->getVal(it->second->castID);
-                if (member && member->_type == kCastLingoScript) {
-                    scriptType = ((ScriptCastMember *)member)->_scriptType;
-                }
-            }
-
-            Common::Path lingoPath(dumpScriptName(encodePathForDump(_macName).c_str(), scriptType, it->second->castID, "lingo"));
-
-            if (out.open(lingoPath, true)) {
-                Common::String decompiled = it->second->scriptText("\n", true);
-                out.writeString(decompiled);
-                out.flush();
-                out.close();
-            }
-        }
+		if (ConfMan.getBool("dump_scripts")) {
+			for (auto it = _lingodec->scripts.begin(); it != _lingodec->scripts.end(); ++it) {
+				Common::DumpFile out;
+				ScriptType scriptType = kMovieScript;
+
+				if (_loadedCast->contains(it->second->castID)) {
+					CastMember *member = _loadedCast->getVal(it->second->castID);
+					if (member && member->_type == kCastLingoScript) {
+						scriptType = ((ScriptCastMember *)member)->_scriptType;
+					}
+				}
+
+				// FIXME: castID is set incorrectly for D5+
+				Common::Path lingoPath(dumpScriptName(encodePathForDump(_macName).c_str(), scriptType, it->second->castID, "lingo"));
+
+				if (out.open(lingoPath, true)) {
+					Common::String decompiled = it->second->scriptText("\n", true);
+					out.writeString(decompiled);
+					out.flush();
+					out.close();
+				}
+			}
+		}
 	}
 }
 




More information about the Scummvm-git-logs mailing list