mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-26 13:52:21 +00:00
dmnt-cheat: multi-nybble opcodes, update libstrat
This commit is contained in:
parent
7e93ca0977
commit
7d2dd628ba
3 changed files with 12 additions and 1 deletions
|
@ -183,6 +183,9 @@ bool DmntCheatVm::DecodeNextOpcode(CheatVmOpcode *out) {
|
||||||
}
|
}
|
||||||
|
|
||||||
opcode.opcode = (CheatVmOpcodeType)(((first_dword >> 28) & 0xF));
|
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) {
|
switch (opcode.opcode) {
|
||||||
case CheatVmOpcodeType_StoreStatic:
|
case CheatVmOpcodeType_StoreStatic:
|
||||||
|
@ -294,6 +297,7 @@ bool DmntCheatVm::DecodeNextOpcode(CheatVmOpcode *out) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case CheatVmOpcodeType_ExtendedWidth:
|
||||||
default:
|
default:
|
||||||
/* Unrecognized instruction cannot be decoded. */
|
/* Unrecognized instruction cannot be decoded. */
|
||||||
valid = false;
|
valid = false;
|
||||||
|
@ -631,6 +635,9 @@ void DmntCheatVm::Execute(const CheatProcessMetadata *metadata) {
|
||||||
this->registers[cur_opcode.perform_math_reg.dst_reg_index] = res_val;
|
this->registers[cur_opcode.perform_math_reg.dst_reg_index] = res_val;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
/* By default, we do a no-op. */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -34,6 +34,10 @@ enum CheatVmOpcodeType : u32 {
|
||||||
|
|
||||||
/* These are not implemented by Gateway's VM. */
|
/* These are not implemented by Gateway's VM. */
|
||||||
CheatVmOpcodeType_PerformArithmeticRegister = 9,
|
CheatVmOpcodeType_PerformArithmeticRegister = 9,
|
||||||
|
|
||||||
|
/* This is a meta entry, and not a real opcode. */
|
||||||
|
/* This is to facilitate multi-nybble instruction decoding in the future. */
|
||||||
|
CheatVmOpcodeType_ExtendedWidth = 12,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum MemoryAccessType : u32 {
|
enum MemoryAccessType : u32 {
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 9ce1dce4400461311a17712628febd99b25ff335
|
Subproject commit 82c67a62d69f04f656da495c696f264eea6fa63a
|
Loading…
Reference in a new issue