[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