[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