fix REG32_SET_FIXED disassembly
This commit is contained in:
@@ -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<uint8_t>(first_reg + arg.count - 1));
|
dasm_arg = string_printf("r%hhu-r%hhu", first_reg, static_cast<uint8_t>(first_reg + arg.count - 1));
|
||||||
break;
|
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<uint32_t>(first_reg + arg.count - 1));
|
||||||
|
break;
|
||||||
|
}
|
||||||
case Type::INT8: {
|
case Type::INT8: {
|
||||||
uint8_t v = cmd_r.get_u8();
|
uint8_t v = cmd_r.get_u8();
|
||||||
if (def->flags & F_PASS) {
|
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);
|
cmd_r.skip(1);
|
||||||
break;
|
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:
|
case Type::INT8:
|
||||||
cmd_r.skip(1);
|
cmd_r.skip(1);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user