From a2d7851e4ddb7c3858b5ee89b95daccf3dfa5531 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Thu, 6 Apr 2017 22:05:06 -0500 Subject: SCI32: Improve disassembly output of SCI3 property opcodes Since SCI3 scripts use selectors instead of offsets as operands to property-related opcodes, the disassembler can look up and display property names everywhere (unlike SCI2.1 and earlier, which need to know the object being operated on to look up the correct selector for a given offset). --- engines/sci/engine/scriptdebug.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'engines/sci/engine/scriptdebug.cpp') diff --git a/engines/sci/engine/scriptdebug.cpp b/engines/sci/engine/scriptdebug.cpp index 7d186eb788..09b38d1bac 100644 --- a/engines/sci/engine/scriptdebug.cpp +++ b/engines/sci/engine/scriptdebug.cpp @@ -196,6 +196,21 @@ reg_t disassemble(EngineState *s, reg32_t pos, reg_t objAddr, bool printBWTag, b } debugN(","); +#ifdef ENABLE_SCI32 + } else if (getSciVersion() == SCI_VERSION_3 && ( + opcode == op_pToa || opcode == op_aTop || + opcode == op_pTos || opcode == op_sTop || + opcode == op_ipToa || opcode == op_dpToa || + opcode == op_ipTos || opcode == op_dpTos)) { + + const char *selectorName = ""; + + if (param_value < kernel->getSelectorNamesSize()) { + selectorName = kernel->getSelectorName(param_value).c_str(); + } + + debugN("\t%s[%x]", selectorName, param_value); +#endif } else { const char *separator = defaultSeparator; -- cgit v1.2.3