mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-30 18:34:38 +01:00
dmnt: revise per WerWolv's feedback.
This commit is contained in:
parent
11b8a92458
commit
79d7e9197c
@ -237,10 +237,15 @@ namespace ams::dmnt::cheat::impl {
|
|||||||
this->LogToDebugFile("Act[%02x]: %d\n", i, opcode->save_restore_regmask.should_operate[i]);
|
this->LogToDebugFile("Act[%02x]: %d\n", i, opcode->save_restore_regmask.should_operate[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CheatVmOpcodeType_LoadStaticRegister:
|
case CheatVmOpcodeType_ReadWriteStaticRegister:
|
||||||
this->LogToDebugFile("Opcode: Load Static Register\n");
|
this->LogToDebugFile("Opcode: Read/Write Static Register\n");
|
||||||
this->LogToDebugFile("Reg Idx: %x\n", opcode->load_static_reg.idx);
|
if (opcode->rw_static_reg.static_idx < NumReadableStaticRegisters) {
|
||||||
this->LogToDebugFile("Stc Idx: %x\n", opcode->load_static_reg.static_idx);
|
this->LogToDebugFile("Op Type: ReadStaticRegister\n");
|
||||||
|
} else {
|
||||||
|
this->LogToDebugFile("Op Type: WriteStaticRegister\n");
|
||||||
|
}
|
||||||
|
this->LogToDebugFile("Reg Idx: %x\n", opcode->rw_static_reg.idx);
|
||||||
|
this->LogToDebugFile("Stc Idx: %x\n", opcode->rw_static_reg.static_idx);
|
||||||
break;
|
break;
|
||||||
case CheatVmOpcodeType_BreakProcess:
|
case CheatVmOpcodeType_BreakProcess:
|
||||||
this->LogToDebugFile("Opcode: Break Cheat Process\n");
|
this->LogToDebugFile("Opcode: Break Cheat Process\n");
|
||||||
@ -581,14 +586,14 @@ namespace ams::dmnt::cheat::impl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CheatVmOpcodeType_LoadStaticRegister:
|
case CheatVmOpcodeType_ReadWriteStaticRegister:
|
||||||
{
|
{
|
||||||
/* C3000XXx */
|
/* C3000XXx */
|
||||||
/* C3 = opcode 0xC3. */
|
/* C3 = opcode 0xC3. */
|
||||||
/* XX = static register index. */
|
/* XX = static register index. */
|
||||||
/* x = register index. */
|
/* x = register index. */
|
||||||
opcode.load_static_reg.static_idx = ((first_dword >> 4) & 0xFF);
|
opcode.rw_static_reg.static_idx = ((first_dword >> 4) & 0xFF);
|
||||||
opcode.load_static_reg.idx = (first_dword & 0xF);
|
opcode.rw_static_reg.idx = (first_dword & 0xF);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CheatVmOpcodeType_BreakProcess:
|
case CheatVmOpcodeType_BreakProcess:
|
||||||
@ -1209,9 +1214,14 @@ namespace ams::dmnt::cheat::impl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CheatVmOpcodeType_LoadStaticRegister:
|
case CheatVmOpcodeType_ReadWriteStaticRegister:
|
||||||
/* Load a register with a static register. */
|
if (cur_opcode.rw_static_reg.static_idx < NumReadableStaticRegisters) {
|
||||||
this->registers[cur_opcode.load_static_reg.idx] = this->static_registers[cur_opcode.load_static_reg.static_idx];
|
/* Load a register with a static register. */
|
||||||
|
this->registers[cur_opcode.rw_static_reg.idx] = this->static_registers[cur_opcode.rw_static_reg.static_idx];
|
||||||
|
} else {
|
||||||
|
/* Store a register to a static register. */
|
||||||
|
this->static_registers[cur_opcode.rw_static_reg.static_idx] = this->registers[cur_opcode.rw_static_reg.idx];
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case CheatVmOpcodeType_BreakProcess:
|
case CheatVmOpcodeType_BreakProcess:
|
||||||
dmnt::cheat::impl::BreakCheatProcessUnsafe();
|
dmnt::cheat::impl::BreakCheatProcessUnsafe();
|
||||||
|
@ -42,7 +42,7 @@ namespace ams::dmnt::cheat::impl {
|
|||||||
CheatVmOpcodeType_BeginRegisterConditionalBlock = 0xC0,
|
CheatVmOpcodeType_BeginRegisterConditionalBlock = 0xC0,
|
||||||
CheatVmOpcodeType_SaveRestoreRegister = 0xC1,
|
CheatVmOpcodeType_SaveRestoreRegister = 0xC1,
|
||||||
CheatVmOpcodeType_SaveRestoreRegisterMask = 0xC2,
|
CheatVmOpcodeType_SaveRestoreRegisterMask = 0xC2,
|
||||||
CheatVmOpcodeType_LoadStaticRegister = 0xC3,
|
CheatVmOpcodeType_ReadWriteStaticRegister = 0xC3,
|
||||||
|
|
||||||
/* This is a meta entry, and not a real opcode. */
|
/* This is a meta entry, and not a real opcode. */
|
||||||
/* This is to facilitate multi-nybble instruction decoding. */
|
/* This is to facilitate multi-nybble instruction decoding. */
|
||||||
@ -226,7 +226,7 @@ namespace ams::dmnt::cheat::impl {
|
|||||||
bool should_operate[0x10];
|
bool should_operate[0x10];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LoadStaticRegisterOpcode {
|
struct ReadWriteStaticRegisterOpcode {
|
||||||
u32 static_idx;
|
u32 static_idx;
|
||||||
u32 idx;
|
u32 idx;
|
||||||
};
|
};
|
||||||
@ -260,7 +260,7 @@ namespace ams::dmnt::cheat::impl {
|
|||||||
BeginRegisterConditionalOpcode begin_reg_cond;
|
BeginRegisterConditionalOpcode begin_reg_cond;
|
||||||
SaveRestoreRegisterOpcode save_restore_reg;
|
SaveRestoreRegisterOpcode save_restore_reg;
|
||||||
SaveRestoreRegisterMaskOpcode save_restore_regmask;
|
SaveRestoreRegisterMaskOpcode save_restore_regmask;
|
||||||
LoadStaticRegisterOpcode load_static_reg;
|
ReadWriteStaticRegisterOpcode rw_static_reg;
|
||||||
DebugLogOpcode debug_log;
|
DebugLogOpcode debug_log;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -269,7 +269,9 @@ namespace ams::dmnt::cheat::impl {
|
|||||||
public:
|
public:
|
||||||
constexpr static size_t MaximumProgramOpcodeCount = 0x400;
|
constexpr static size_t MaximumProgramOpcodeCount = 0x400;
|
||||||
constexpr static size_t NumRegisters = 0x10;
|
constexpr static size_t NumRegisters = 0x10;
|
||||||
constexpr static size_t NumStaticRegisters = 0x100;
|
constexpr static size_t NumReadableStaticRegisters = 0x80;
|
||||||
|
constexpr static size_t NumWritableStaticRegisters = 0x80;
|
||||||
|
constexpr static size_t NumStaticRegisters = NumReadableStaticRegisters + NumWritableStaticRegisters;
|
||||||
private:
|
private:
|
||||||
size_t num_opcodes = 0;
|
size_t num_opcodes = 0;
|
||||||
size_t instruction_ptr = 0;
|
size_t instruction_ptr = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user