diff options
author | Eugene Sandulenko | 2019-12-08 00:19:41 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-12-08 00:20:33 +0100 |
commit | b8a84f1507b840e36de666029e7b0673fd5c4e3c (patch) | |
tree | 0fe0067e572662c34351a5324a303088723b7f9c /engines/director/lingo/lingo-codegen.cpp | |
parent | 254b48e1bd747f0d2d409ed8f10d490947a429db (diff) | |
download | scummvm-rg350-b8a84f1507b840e36de666029e7b0673fd5c4e3c.tar.gz scummvm-rg350-b8a84f1507b840e36de666029e7b0673fd5c4e3c.tar.bz2 scummvm-rg350-b8a84f1507b840e36de666029e7b0673fd5c4e3c.zip |
DIRECTOR: LINGO: Fix code decompilation offsets
Diffstat (limited to 'engines/director/lingo/lingo-codegen.cpp')
-rw-r--r-- | engines/director/lingo/lingo-codegen.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp index 16560efb7a..e1e77c990a 100644 --- a/engines/director/lingo/lingo-codegen.cpp +++ b/engines/director/lingo/lingo-codegen.cpp @@ -95,6 +95,7 @@ Common::String Lingo::decodeInstruction(ScriptData *sd, uint pc, uint *newPc) { res = _functions[(void *)sym.u.s]->name; const char *pars = _functions[(void *)sym.u.s]->proto; inst i; + uint start = pc; while (*pars) { switch (*pars++) { @@ -120,7 +121,7 @@ Common::String Lingo::decodeInstruction(ScriptData *sd, uint pc, uint *newPc) { i = (*sd)[pc++]; int v = READ_UINT32(&i); - res += Common::String::format(" [%5d]", v); + res += Common::String::format(" [%5d]", v + start - 1); break; } case 's': @@ -254,8 +255,9 @@ Symbol *Lingo::define(Common::String &name, int start, int nargs, Common::String if (debugChannelSet(1, kDebugLingoCompile)) { uint pc = 0; while (pc < sym->u.defn->size()) { + uint spc = pc; Common::String instr = g_lingo->decodeInstruction(sym->u.defn, pc, &pc); - debugC(1, kDebugLingoCompile, "[%5d] %s", pc, instr.c_str()); + debugC(1, kDebugLingoCompile, "[%5d] %s", spc, instr.c_str()); } debugC(1, kDebugLingoCompile, "<end define code>"); } |