[Scummvm-git-logs] scummvm master -> 52bef2ba4307f6c751cae4e6c7d2448ab0cf7435
moralrecordings
code at moral.net.au
Wed Jul 1 15:46:34 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:
45e72aa449 DIRECTOR: LINGO: Fix bytecode loading for global scripts
52bef2ba43 DIRECTOR: LINGO: Fix name resolution for decodeInstruction
Commit: 45e72aa449cfc2c4bd657f632b90ee6aada41073
https://github.com/scummvm/scummvm/commit/45e72aa449cfc2c4bd657f632b90ee6aada41073
Author: Scott Percival (code at moral.net.au)
Date: 2020-07-01T23:45:27+08:00
Commit Message:
DIRECTOR: LINGO: Fix bytecode loading for global scripts
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 dc2d17fdac..1a9cc573a7 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -892,6 +892,9 @@ void Lingo::addCodeV4(Common::SeekableSubReadStreamEndian &stream, int archiveIn
if (info)
castName = info->name;
}
+ if (scriptFlags & kScriptFlagGlobal) {
+ scriptType = kGlobalScript;
+ }
_assemblyArchive = archiveIndex;
Commit: 52bef2ba4307f6c751cae4e6c7d2448ab0cf7435
https://github.com/scummvm/scummvm/commit/52bef2ba4307f6c751cae4e6c7d2448ab0cf7435
Author: Scott Percival (code at moral.net.au)
Date: 2020-07-01T23:45:28+08:00
Commit Message:
DIRECTOR: LINGO: Fix name resolution for decodeInstruction
Changed paths:
engines/director/lingo/lingo-bytecode.cpp
engines/director/lingo/lingo-codegen.cpp
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index 1a9cc573a7..8b1fa42985 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -1421,7 +1421,7 @@ void Lingo::addCodeV4(Common::SeekableSubReadStreamEndian &stream, int archiveIn
uint pc = 0;
while (pc < _currentAssembly->size()) {
uint spc = pc;
- Common::String instr = decodeInstruction(_currentAssembly, pc, &pc);
+ Common::String instr = decodeInstruction(_assemblyArchive, _currentAssembly, pc, &pc);
out.writeString(Common::String::format("[%5d] %s\n", spc, instr.c_str()));
}
out.writeString(Common::String::format("<end code>\n\n"));
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 75a60ce685..26fe0d4723 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -81,7 +81,7 @@ Symbol Lingo::define(Common::String &name, int nargs, ScriptData *code, Common::
uint pc = 0;
while (pc < sym.u.defn->size()) {
uint spc = pc;
- Common::String instr = g_lingo->decodeInstruction(sym.u.defn, pc, &pc);
+ Common::String instr = g_lingo->decodeInstruction(_assemblyArchive, sym.u.defn, pc, &pc);
debugC(1, kDebugCompile, "[%5d] %s", spc, instr.c_str());
}
debugC(1, kDebugCompile, "<end define code>");
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 9fc0bd16b0..8f420d9a20 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -344,7 +344,7 @@ ScriptContext *Lingo::compileLingo(const char *code, int archiveIndex, ScriptTyp
uint pc = 0;
while (pc < _currentAssembly->size()) {
uint spc = pc;
- Common::String instr = decodeInstruction(_currentAssembly, pc, &pc);
+ Common::String instr = decodeInstruction(_assemblyArchive, _currentAssembly, pc, &pc);
debugC(2, kDebugCompile, "[%5d] %s", spc, instr.c_str());
}
debugC(2, kDebugCompile, "<end code>");
@@ -376,7 +376,7 @@ ScriptContext *Lingo::compileLingo(const char *code, int archiveIndex, ScriptTyp
uint pc = 0;
while (pc < _currentAssembly->size()) {
uint spc = pc;
- Common::String instr = decodeInstruction(_currentAssembly, pc, &pc);
+ Common::String instr = decodeInstruction(_assemblyArchive, _currentAssembly, pc, &pc);
debugC(2, kDebugCompile, "[%5d] %s", spc, instr.c_str());
}
debugC(2, kDebugCompile, "<end code>");
@@ -460,7 +460,7 @@ void Lingo::printCallStack(uint pc) {
}
}
-Common::String Lingo::decodeInstruction(ScriptData *sd, uint pc, uint *newPc) {
+Common::String Lingo::decodeInstruction(int archiveIndex, ScriptData *sd, uint pc, uint *newPc) {
Symbol sym;
Common::String res;
@@ -527,7 +527,7 @@ Common::String Lingo::decodeInstruction(ScriptData *sd, uint pc, uint *newPc) {
i = (*sd)[pc++];
int v = READ_UINT32(&i);
- res += Common::String::format(" \"%s\"", getName(v).c_str());
+ res += Common::String::format(" \"%s\"", _archives[archiveIndex].names[v].c_str());
break;
}
default:
@@ -551,7 +551,7 @@ void Lingo::execute(uint pc) {
int counter = 0;
for (_pc = pc; !_abort && (*_currentScript)[_pc] != STOP;) {
- Common::String instr = decodeInstruction(_currentScript, _pc);
+ Common::String instr = decodeInstruction(_archiveIndex, _currentScript, _pc);
uint current = _pc;
if (debugChannelSet(5, kDebugLingoExec))
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 93b9496693..7a98e97270 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -379,7 +379,7 @@ public:
void executeScript(ScriptType type, uint16 id);
void printStack(const char *s, uint pc);
void printCallStack(uint pc);
- Common::String decodeInstruction(ScriptData *sd, uint pc, uint *newPC = NULL);
+ Common::String decodeInstruction(int archiveIndex, ScriptData *sd, uint pc, uint *newPC = NULL);
void initBuiltIns();
void cleanupBuiltins();
More information about the Scummvm-git-logs
mailing list