diff --git a/docs/modules/dmnt.md b/docs/modules/dmnt.md new file mode 100644 index 000000000..84e7410ce --- /dev/null +++ b/docs/modules/dmnt.md @@ -0,0 +1,38 @@ +# dmnt + +dmnt is a reimplementation of Nintendo's debug monitor. It provides Atmosphère a rich set of debugging functionality, so that users can easily analyze the behaviors of programs. In addition, Atmosphère implements an extension in dmnt to provide cheat code functionality. + +## Atmosphère Cheat Extension + +In addition to the functionality provided by Nintendo's debug monitor, Atmosphère's dmnt has an extension for providing cheat code functionality. A HIPC Service API is provided for interacting with the cheat code manager, through the service `dmnt:cht`. + +Those looking for more information on the cheat code functionality may wish to read `cheats.md`. + +The SwIPC definition for `dmnt:cht` follows. +``` +interface DmntCheatService is dmnt:cht { + [65000] HasCheatProcess() -> bool; + [65001] GetCheatProcessEvent() -> KObject; + [65002] GetCheatProcessMetadata() -> CheatProcessMetadata; + [65003] ForceOpenCheatProcess(); + + [65100] GetCheatProcessMappingCount() -> u64; + [65101] GetCheatProcessMappings(u64 offset) -> buffer, u64 count; + [65102] ReadCheatProcessMemory(u64 address, u64 size) -> buffer data; + [65103] WriteCheatProcessMemory(u64 address, u64 size, buffer data); + [65104] QueryCheatProcessMemory(u64 address) -> MemoryInfo; + + [65200] GetCheatCount() -> u64; + [65201] GetCheats(u64 offset) -> buffer, u64 count; + [65202] GetCheatById(u32 cheat_id) -> buffer cheat; + [65203] ToggleCheat(u32 cheat_id); + [65204] AddCheat(buffer cheat, bool enabled) -> u32 cheat_id; + [65203] RemoveCheat(u32 cheat_id); + + [65300] GetFrozenAddressCount() -> u64; + [65301] GetFrozenAddresses(u64 offset) -> buffer, u64 count; + [65302] GetFrozenAddress(u64 address) -> FrozenAddressEntry; + [65303] EnableFrozenAddress(u64 address, u64 width) -> u64 value; + [65304] DisableFrozenAddress(u64 address); +} +```