summaryrefslogtreecommitdiffstats
path: root/src/core/memory/cheat_engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/memory/cheat_engine.cpp')
-rw-r--r--src/core/memory/cheat_engine.cpp20
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);
}