diff options
Diffstat (limited to 'src/core/memory/cheat_engine.cpp')
-rw-r--r-- | src/core/memory/cheat_engine.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/core/memory/cheat_engine.cpp b/src/core/memory/cheat_engine.cpp index 14d1a3840..b84b57d92 100644 --- a/src/core/memory/cheat_engine.cpp +++ b/src/core/memory/cheat_engine.cpp @@ -5,11 +5,13 @@ #include "common/hex_util.h" #include "common/microprofile.h" #include "common/swap.h" +#include "core/arm/debug.h" #include "core/core.h" #include "core/core_timing.h" #include "core/hle/kernel/k_page_table.h" #include "core/hle/kernel/k_process.h" #include "core/hle/kernel/k_process_page_table.h" +#include "core/hle/kernel/svc_types.h" #include "core/hle/service/hid/hid_server.h" #include "core/hle/service/sm/sm.h" #include "core/memory.h" @@ -63,7 +65,9 @@ void StandardVmCallbacks::MemoryWriteUnsafe(VAddr address, const void* data, u64 return; } - system.ApplicationMemory().WriteBlock(address, data, size); + if (system.ApplicationMemory().WriteBlock(address, data, size)) { + Core::InvalidateInstructionCacheRange(system.ApplicationProcess(), address, size); + } } u64 StandardVmCallbacks::HidKeysDown() { @@ -84,6 +88,20 @@ u64 StandardVmCallbacks::HidKeysDown() { return static_cast<u64>(press_state & HID::NpadButton::All); } +void StandardVmCallbacks::PauseProcess() { + if (system.ApplicationProcess()->IsSuspended()) { + return; + } + system.ApplicationProcess()->SetActivity(Kernel::Svc::ProcessActivity::Paused); +} + +void StandardVmCallbacks::ResumeProcess() { + if (!system.ApplicationProcess()->IsSuspended()) { + return; + } + system.ApplicationProcess()->SetActivity(Kernel::Svc::ProcessActivity::Runnable); +} + void StandardVmCallbacks::DebugLog(u8 id, u64 value) { LOG_INFO(CheatEngine, "Cheat triggered DebugLog: ID '{:01X}' Value '{:016X}'", id, value); } |