dmnt-cheat: multi-nybble opcodes, update libstrat

This commit is contained in:
Michael Scire
2019-03-05 00:53:45 -08:00
parent 7e93ca0977
commit 7d2dd628ba
3 changed files with 12 additions and 1 deletions

View File

@@ -183,6 +183,9 @@ bool DmntCheatVm::DecodeNextOpcode(CheatVmOpcode *out) {
}
opcode.opcode = (CheatVmOpcodeType)(((first_dword >> 28) & 0xF));
if (opcode.opcode >= CheatVmOpcodeType_ExtendedWidth) {
opcode.opcode = (CheatVmOpcodeType)((((u32)opcode.opcode) << 4) | ((first_dword >> 24) & 0xF));
}
switch (opcode.opcode) {
case CheatVmOpcodeType_StoreStatic:
@@ -294,6 +297,7 @@ bool DmntCheatVm::DecodeNextOpcode(CheatVmOpcode *out) {
}
}
break;
case CheatVmOpcodeType_ExtendedWidth:
default:
/* Unrecognized instruction cannot be decoded. */
valid = false;
@@ -631,6 +635,9 @@ void DmntCheatVm::Execute(const CheatProcessMetadata *metadata) {
this->registers[cur_opcode.perform_math_reg.dst_reg_index] = res_val;
}
break;
default:
/* By default, we do a no-op. */
break;
}
}
}