From 201676be5cd429a724ff9dc3b7e16fc9e8c81cfa Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Mon, 13 Nov 2023 14:05:16 -0800 Subject: [PATCH] fix REG32_SET_FIXED disassembly --- src/QuestScript.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/QuestScript.cc b/src/QuestScript.cc index 6e491442..541f1aeb 100644 --- a/src/QuestScript.cc +++ b/src/QuestScript.cc @@ -1084,6 +1084,14 @@ std::string disassemble_quest_script(const void* data, size_t size, QuestScriptV dasm_arg = string_printf("r%hhu-r%hhu", first_reg, static_cast(first_reg + arg.count - 1)); break; } + case Type::REG32_SET_FIXED: { + if (def->flags & F_PASS) { + throw logic_error("REG32_SET_FIXED cannot be pushed to arg stack"); + } + uint32_t first_reg = cmd_r.get_u32l(); + dasm_arg = string_printf("r%" PRIu32 "-r%" PRIu32, first_reg, static_cast(first_reg + arg.count - 1)); + break; + } case Type::INT8: { uint8_t v = cmd_r.get_u8(); if (def->flags & F_PASS) { @@ -1569,6 +1577,12 @@ Episode find_quest_episode_from_script(const void* data, size_t size, QuestScrip } cmd_r.skip(1); break; + case Type::REG32_SET_FIXED: + if (def->flags & F_PASS) { + throw logic_error("REG32_SET_FIXED cannot be pushed to arg stack"); + } + cmd_r.skip(4); + break; case Type::INT8: cmd_r.skip(1); break;