2020-04-26 20:06:59 +02:00
# dmnt
2020-04-26 20:18:49 +02:00
This module is a reimplementation of the Horizon OS's `dmnt` system module, which provides a debug monitor.
2020-04-26 20:06:59 +02:00
## Extensions
Atmosphère implements an extension to provide cheat code functionality.
### Cheat Service
A HIPC service API is provided for interacting with the cheat code manager through the service `dmnt:cht` . See [here ](../../features/cheats.md ) for more information on the cheat code format.
The SwIPC definition for `dmnt:cht` follows:
```
interface ams::dmnt::cheat::CheatService is dmnt:cht {
[65000] HasCheatProcess() -> sf::Out< bool > out;
[65001] GetCheatProcessEvent() -> sf::OutCopyHandle out_event;
[65002] GetCheatProcessMetadata() -> sf::Out< CheatProcessMetadata > out_metadata;
[65003] ForceOpenCheatProcess();
[65004] PauseCheatProcess();
[65005] ResumeCheatProcess();
[65100] GetCheatProcessMappingCount() -> sf::Out< u64 > out_count;
[65101] GetCheatProcessMappings(u64 offset) -> sf::OutArray< MemoryInfo > & mappings, sf::Out< u64 > out_count;
[65102] ReadCheatProcessMemory(u64 address, u64 out_size) -> sf::OutBuffer &buffer;
[65103] WriteCheatProcessMemory(sf::InBuffer & buffer, u64 address, u64 in_size);
[65104] QueryCheatProcessMemory(u64 address) -> sf::Out< MemoryInfo > mapping;
[65200] GetCheatCount() -> sf::Out< u64 > out_count;
[65201] GetCheats(u64 offset) -> sf::OutArray< CheatEntry > & cheats, sf::Out< u64 > out_count;
[65202] GetCheatById(u32 cheat_id) -> sf::Out< CheatEntry > cheat;
[65203] ToggleCheat(u32 cheat_id);
[65204] AddCheat(CheatDefinition & cheat, bool enabled) -> sf::Out< u32 > out_cheat_id;
[65205] RemoveCheat(u32 cheat_id);
[65206] ReadStaticRegister(u8 which) -> sf::Out< u64 > out;
[65207] WriteStaticRegister(u8 which, u64 value);
[65208] ResetStaticRegisters();
[65300] GetFrozenAddressCount() -> sf::Out< u64 > out_count;
[65301] GetFrozenAddresses(u64 offset) ->sf::OutArray< FrozenAddressEntry > & addresses, sf::Out< u64 > out_count;
[65302] GetFrozenAddress(u64 address) -> sf::Out< FrozenAddressEntry > entry;
[65303] EnableFrozenAddress(u64 address, u64 width) -> sf::Out< u64 > out_value;
[65304] DisableFrozenAddress(u64 address);
}
```