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

djsrv dservilla at gmail.com
Mon Aug 3 20:58:12 UTC 2020


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

Summary:
d0002d5ef1 DIRECTOR: LINGO: Uniformly use 1-indexed script id
0ccf8ab395 DIRECTOR: LINGO: Handle unused script flag


Commit: d0002d5ef1be56b8af6f053d271f39bcaf035d4f
    https://github.com/scummvm/scummvm/commit/d0002d5ef1be56b8af6f053d271f39bcaf035d4f
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-03T16:57:37-04:00

Commit Message:
DIRECTOR: LINGO: Uniformly use 1-indexed script id

Changed paths:
    engines/director/lingo/lingo-bytecode.cpp


diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index 0fefa4bb7a..f9877e2a9a 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -863,7 +863,7 @@ ScriptContext *Lingo::compileLingoV4(Common::SeekableSubReadStreamEndian &stream
 	/* uint32 length = */ stream.readUint32();
 	/* uint32 length2 = */ stream.readUint32();
 	uint16 codeStoreOffset = stream.readUint16();
-	uint16 lctxIndex = stream.readUint16();
+	uint16 scriptId = stream.readUint16() + 1;
 	// unk2
 	for (uint32 i = 0; i < 0x10; i++) {
 		stream.readByte();
@@ -914,7 +914,7 @@ ScriptContext *Lingo::compileLingoV4(Common::SeekableSubReadStreamEndian &stream
 	// initialise the script
 	ScriptType scriptType = kCastScript;
 	Common::String castName;
-	CastMember *member = g_director->getCurrentMovie()->getCastMemberByScriptId(lctxIndex + 1);
+	CastMember *member = g_director->getCurrentMovie()->getCastMemberByScriptId(scriptId);
 	uint16 castId;
 	if (member) {
 		if (member->_type == kCastLingoScript)
@@ -926,7 +926,7 @@ ScriptContext *Lingo::compileLingoV4(Common::SeekableSubReadStreamEndian &stream
 			castName = info->name;
 	} else {
 		castId = -1;
-		warning("Script %d has invalid cast member %d", lctxIndex, castId);
+		warning("Script %d has invalid cast member %d", scriptId, castId);
 	}
 
 	_assemblyArchive = archive;
@@ -937,15 +937,15 @@ ScriptContext *Lingo::compileLingoV4(Common::SeekableSubReadStreamEndian &stream
 		if (0 <= factoryNameId && factoryNameId < (int16)archive->names.size()) {
 			factoryName = archive->names[factoryNameId];
 		} else {
-			warning("Factory %d has unknown name id %d, skipping define", lctxIndex, factoryNameId);
+			warning("Factory %d has unknown name id %d, skipping define", scriptId, factoryNameId);
 			return nullptr;
 		}
-		debugC(1, kDebugCompile, "Add V4 script %d: factory '%s'", lctxIndex, factoryName.c_str());
+		debugC(1, kDebugCompile, "Add V4 script %d: factory '%s'", scriptId, factoryName.c_str());
 
 		sc = _assemblyContext = new ScriptContext(factoryName, _assemblyArchive, scriptType, castId);
 		codeFactory(factoryName);
 	} else {
-		debugC(1, kDebugCompile, "Add V4 script %d: %s %d", lctxIndex, scriptType2str(scriptType), castId);
+		debugC(1, kDebugCompile, "Add V4 script %d: %s %d", scriptId, scriptType2str(scriptType), castId);
 
 		sc = _assemblyContext = new ScriptContext(!castName.empty() ? castName : Common::String::format("%d", castId), _assemblyArchive, scriptType, castId);
 	}


Commit: 0ccf8ab3954bb15071d98c536e4697f7e19603d7
    https://github.com/scummvm/scummvm/commit/0ccf8ab3954bb15071d98c536e4697f7e19603d7
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-03T16:57:37-04:00

Commit Message:
DIRECTOR: LINGO: Handle unused script flag

Appears in Lingo Expo/Simulation/MECH.
Any scripts that have this are empty and have no cast member.

Changed paths:
    engines/director/lingo/lingo-bytecode.cpp
    engines/director/types.h


diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index f9877e2a9a..21d07acb41 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -873,10 +873,16 @@ ScriptContext *Lingo::compileLingoV4(Common::SeekableSubReadStreamEndian &stream
 	/* uint16 unk3 = */ stream.readUint16();
 	uint32 scriptFlags = stream.readUint32();
 	debugC(1, kDebugCompile, "Script flags (%d 0x%x):", scriptFlags, scriptFlags);
-	debugC(1, kDebugCompile, "unk0: %d funcsGlobal: %d varsGlobal: %d unk3: %d", (scriptFlags & kScriptFlagUnk0) != 0, (scriptFlags & kScriptFlagFuncsGlobal) != 0, (scriptFlags & kScriptFlagVarsGlobal) != 0, (scriptFlags & kScriptFlagUnk3) != 0);
+	debugC(1, kDebugCompile, "unused: %d funcsGlobal: %d varsGlobal: %d unk3: %d", (scriptFlags & kScriptFlagUnused) != 0, (scriptFlags & kScriptFlagFuncsGlobal) != 0, (scriptFlags & kScriptFlagVarsGlobal) != 0, (scriptFlags & kScriptFlagUnk3) != 0);
 	debugC(1, kDebugCompile, "factoryDef: %d unk5: %d unk6: %d unk7: %d", (scriptFlags & kScriptFlagFactoryDef) != 0, (scriptFlags & kScriptFlagUnk5) != 0, (scriptFlags & kScriptFlagUnk6) != 0, (scriptFlags & kScriptFlagUnk7) != 0);
 	debugC(1, kDebugCompile, "hasFactory: %d eventScript: %d eventScript2: %d unkB: %d", (scriptFlags & kScriptFlagHasFactory) != 0, (scriptFlags & kScriptFlagEventScript) != 0, (scriptFlags & kScriptFlagEventScript2) != 0, (scriptFlags & kScriptFlagUnkB) != 0);
 	debugC(1, kDebugCompile, "unkC: %d unkD: %d unkE: %d unkF: %d", (scriptFlags & kScriptFlagUnkC) != 0, (scriptFlags & kScriptFlagUnkD) != 0, (scriptFlags & kScriptFlagUnkE) != 0, (scriptFlags & kScriptFlagUnkF) != 0);
+
+	if (scriptFlags & kScriptFlagUnused) {
+		warning("Script %d is unused", scriptId);
+		return nullptr;
+	}
+
 	// unk4
 	for (uint32 i = 0; i < 0x4; i++) {
 		stream.readByte();
diff --git a/engines/director/types.h b/engines/director/types.h
index e25bd9039f..7f5c62915f 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -55,7 +55,7 @@ enum ScriptType {
 };
 
 enum ScriptFlag {
-	kScriptFlagUnk0			= (1 << 0x0),
+	kScriptFlagUnused		= (1 << 0x0),
 	kScriptFlagFuncsGlobal	= (1 << 0x1),
 	kScriptFlagVarsGlobal	= (1 << 0x2),	// Occurs in event scripts (which have no local vars). Correlated with use of alternate global var opcodes.
 	kScriptFlagUnk3			= (1 << 0x3),




More information about the Scummvm-git-logs mailing list