From b7491393b2b444e569ee3d8d70254a5ada5d607c Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Fri, 24 Apr 2020 17:24:15 -0700 Subject: [PATCH] dmnt: move stuff around slightly, add client bindings --- libstratosphere/source/dmnt/dmntcht.c | 31 ++++++++++++++++++++++++++- libstratosphere/source/dmnt/dmntcht.h | 5 +++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/libstratosphere/source/dmnt/dmntcht.c b/libstratosphere/source/dmnt/dmntcht.c index 1de76515..dd5faaa1 100644 --- a/libstratosphere/source/dmnt/dmntcht.c +++ b/libstratosphere/source/dmnt/dmntcht.c @@ -58,8 +58,20 @@ Result dmntchtGetCheatProcessMetadata(DmntCheatProcessMetadata *out_metadata) { return serviceDispatchOut(&g_dmntchtSrv, 65002, *out_metadata); } +static Result _dmntchtCmdVoid(Service* srv, u32 cmd_id) { + return serviceDispatch(srv, cmd_id); +} + Result dmntchtForceOpenCheatProcess(void) { - return serviceDispatch(&g_dmntchtSrv, 65003); + return _dmntchtCmdVoid(&g_dmntchtSrv, 65003); +} + +Result dmntchtPauseCheatProcess(void) { + return _dmntchtCmdVoid(&g_dmntchtSrv, 65004); +} + +Result dmntchtResumeCheatProcess(void) { + return _dmntchtCmdVoid(&g_dmntchtSrv, 65005); } static Result _dmntchtGetCount(u64 *out_count, u32 cmd_id) { @@ -142,6 +154,23 @@ Result dmntchtRemoveCheat(u32 cheat_id) { return _dmntchtCmdInU32NoOut(cheat_id, 65205); } +Result dmntchtReadStaticRegister(u64 *out, u8 which) { + return serviceDispatchInOut(&g_dmntchtSrv, 65206, which, *out); +} + +Result dmntchtWriteStaticRegister(u8 which, u64 value) { + const struct { + u64 which; + u64 value; + } in = { which, value }; + + return serviceDispatchIn(&g_dmntchtSrv, 65207, in); +} + +Result dmntchtResetStaticRegisters() { + return _dmntchtCmdVoid(&g_dmntchtSrv, 65208); +} + Result dmntchtGetFrozenAddressCount(u64 *out_count) { return _dmntchtGetCount(out_count, 65300); } diff --git a/libstratosphere/source/dmnt/dmntcht.h b/libstratosphere/source/dmnt/dmntcht.h index a04d2039..ef19824e 100644 --- a/libstratosphere/source/dmnt/dmntcht.h +++ b/libstratosphere/source/dmnt/dmntcht.h @@ -74,6 +74,8 @@ Result dmntchtGetCheatProcessMappings(MemoryInfo *buffer, u64 max_count, u64 off Result dmntchtReadCheatProcessMemory(u64 address, void *buffer, size_t size); Result dmntchtWriteCheatProcessMemory(u64 address, const void *buffer, size_t size); Result dmntchtQueryCheatProcessMemory(MemoryInfo *mem_info, u64 address); +Result dmntchtPauseCheatProcess(void); +Result dmntchtResumeCheatProcess(void); Result dmntchtGetCheatCount(u64 *out_count); Result dmntchtGetCheats(DmntCheatEntry *buffer, u64 max_count, u64 offset, u64 *out_count); @@ -81,6 +83,9 @@ Result dmntchtGetCheatById(DmntCheatEntry *out_cheat, u32 cheat_id); Result dmntchtToggleCheat(u32 cheat_id); Result dmntchtAddCheat(DmntCheatDefinition *cheat, bool enabled, u32 *out_cheat_id); Result dmntchtRemoveCheat(u32 cheat_id); +Result dmntchtReadStaticRegister(u64 *out, u8 which); +Result dmntchtWriteStaticRegister(u8 which, u64 value); +Result dmntchtResetStaticRegisters(); Result dmntchtGetFrozenAddressCount(u64 *out_count); Result dmntchtGetFrozenAddresses(DmntFrozenAddressEntry *buffer, u64 max_count, u64 offset, u64 *out_count);