diff --git a/stratosphere/dmnt/source/cheat/dmnt_cheat_service.hpp b/stratosphere/dmnt/source/cheat/dmnt_cheat_service.hpp index 35c7d2c7c..9a507fb3a 100644 --- a/stratosphere/dmnt/source/cheat/dmnt_cheat_service.hpp +++ b/stratosphere/dmnt/source/cheat/dmnt_cheat_service.hpp @@ -18,43 +18,42 @@ namespace ams::dmnt::cheat { - class CheatService final : public sf::IServiceObject { - private: - enum class CommandId { - /* Meta */ - HasCheatProcess = 65000, - GetCheatProcessEvent = 65001, - GetCheatProcessMetadata = 65002, - ForceOpenCheatProcess = 65003, - PauseCheatProcess = 65004, - ResumeCheatProcess = 65005, + /* TODO: In libstratosphere, eventually? */ + namespace impl { - /* Interact with Memory */ - GetCheatProcessMappingCount = 65100, - GetCheatProcessMappings = 65101, - ReadCheatProcessMemory = 65102, - WriteCheatProcessMemory = 65103, - QueryCheatProcessMemory = 65104, + #define AMS_DMNT_I_CHEAT_INTERFACE_INTERFACE_INFO(C, H) \ + AMS_SF_METHOD_INFO(C, H, 65000, void, HasCheatProcess, (sf::Out out)) \ + AMS_SF_METHOD_INFO(C, H, 65001, void, GetCheatProcessEvent, (sf::OutCopyHandle out_event)) \ + AMS_SF_METHOD_INFO(C, H, 65002, Result, GetCheatProcessMetadata, (sf::Out out_metadata)) \ + AMS_SF_METHOD_INFO(C, H, 65003, Result, ForceOpenCheatProcess, ()) \ + AMS_SF_METHOD_INFO(C, H, 65004, Result, PauseCheatProcess, ()) \ + AMS_SF_METHOD_INFO(C, H, 65005, Result, ResumeCheatProcess, ()) \ + AMS_SF_METHOD_INFO(C, H, 65100, Result, GetCheatProcessMappingCount, (sf::Out out_count)) \ + AMS_SF_METHOD_INFO(C, H, 65101, Result, GetCheatProcessMappings, (const sf::OutArray &mappings, sf::Out out_count, u64 offset)) \ + AMS_SF_METHOD_INFO(C, H, 65102, Result, ReadCheatProcessMemory, (const sf::OutBuffer &buffer, u64 address, u64 out_size)) \ + AMS_SF_METHOD_INFO(C, H, 65103, Result, WriteCheatProcessMemory, (const sf::InBuffer &buffer, u64 address, u64 in_size)) \ + AMS_SF_METHOD_INFO(C, H, 65104, Result, QueryCheatProcessMemory, (sf::Out mapping, u64 address)) \ + AMS_SF_METHOD_INFO(C, H, 65200, Result, GetCheatCount, (sf::Out out_count)) \ + AMS_SF_METHOD_INFO(C, H, 65201, Result, GetCheats, (const sf::OutArray &cheats, sf::Out out_count, u64 offset)) \ + AMS_SF_METHOD_INFO(C, H, 65202, Result, GetCheatById, (sf::Out cheat, u32 cheat_id)) \ + AMS_SF_METHOD_INFO(C, H, 65203, Result, ToggleCheat, (u32 cheat_id)) \ + AMS_SF_METHOD_INFO(C, H, 65204, Result, AddCheat, (const CheatDefinition &cheat, sf::Out out_cheat_id, bool enabled)) \ + AMS_SF_METHOD_INFO(C, H, 65205, Result, RemoveCheat, (u32 cheat_id)) \ + AMS_SF_METHOD_INFO(C, H, 65206, Result, ReadStaticRegister, (sf::Out out, u8 which)) \ + AMS_SF_METHOD_INFO(C, H, 65207, Result, WriteStaticRegister, (u8 which, u64 value)) \ + AMS_SF_METHOD_INFO(C, H, 65208, Result, ResetStaticRegisters, ()) \ + AMS_SF_METHOD_INFO(C, H, 65300, Result, GetFrozenAddressCount, (sf::Out out_count)) \ + AMS_SF_METHOD_INFO(C, H, 65301, Result, GetFrozenAddresses, (const sf::OutArray &addresses, sf::Out out_count, u64 offset)) \ + AMS_SF_METHOD_INFO(C, H, 65302, Result, GetFrozenAddress, (sf::Out entry, u64 address)) \ + AMS_SF_METHOD_INFO(C, H, 65303, Result, EnableFrozenAddress, (sf::Out out_value, u64 address, u64 width)) \ + AMS_SF_METHOD_INFO(C, H, 65304, Result, DisableFrozenAddress, (u64 address)) - /* Interact with Cheats */ - GetCheatCount = 65200, - GetCheats = 65201, - GetCheatById = 65202, - ToggleCheat = 65203, - AddCheat = 65204, - RemoveCheat = 65205, - ReadStaticRegister = 65206, - WriteStaticRegister = 65207, - ResetStaticRegisters = 65208, + AMS_SF_DEFINE_INTERFACE(ICheatInterface, AMS_DMNT_I_CHEAT_INTERFACE_INTERFACE_INFO) - /* Interact with Frozen Addresses */ - GetFrozenAddressCount = 65300, - GetFrozenAddresses = 65301, - GetFrozenAddress = 65302, - EnableFrozenAddress = 65303, - DisableFrozenAddress = 65304, - }; - private: + } + + class CheatService final { + public: void HasCheatProcess(sf::Out out); void GetCheatProcessEvent(sf::OutCopyHandle out_event); Result GetCheatProcessMetadata(sf::Out out_metadata); @@ -83,38 +82,7 @@ namespace ams::dmnt::cheat { Result GetFrozenAddress(sf::Out entry, u64 address); Result EnableFrozenAddress(sf::Out out_value, u64 address, u64 width); Result DisableFrozenAddress(u64 address); - - public: - DEFINE_SERVICE_DISPATCH_TABLE { - MAKE_SERVICE_COMMAND_META(HasCheatProcess), - MAKE_SERVICE_COMMAND_META(GetCheatProcessEvent), - MAKE_SERVICE_COMMAND_META(GetCheatProcessMetadata), - MAKE_SERVICE_COMMAND_META(ForceOpenCheatProcess), - MAKE_SERVICE_COMMAND_META(PauseCheatProcess), - MAKE_SERVICE_COMMAND_META(ResumeCheatProcess), - - MAKE_SERVICE_COMMAND_META(GetCheatProcessMappingCount), - MAKE_SERVICE_COMMAND_META(GetCheatProcessMappings), - MAKE_SERVICE_COMMAND_META(ReadCheatProcessMemory), - MAKE_SERVICE_COMMAND_META(WriteCheatProcessMemory), - MAKE_SERVICE_COMMAND_META(QueryCheatProcessMemory), - - MAKE_SERVICE_COMMAND_META(GetCheatCount), - MAKE_SERVICE_COMMAND_META(GetCheats), - MAKE_SERVICE_COMMAND_META(GetCheatById), - MAKE_SERVICE_COMMAND_META(ToggleCheat), - MAKE_SERVICE_COMMAND_META(AddCheat), - MAKE_SERVICE_COMMAND_META(RemoveCheat), - MAKE_SERVICE_COMMAND_META(ReadStaticRegister), - MAKE_SERVICE_COMMAND_META(WriteStaticRegister), - MAKE_SERVICE_COMMAND_META(ResetStaticRegisters), - - MAKE_SERVICE_COMMAND_META(GetFrozenAddressCount), - MAKE_SERVICE_COMMAND_META(GetFrozenAddresses), - MAKE_SERVICE_COMMAND_META(GetFrozenAddress), - MAKE_SERVICE_COMMAND_META(EnableFrozenAddress), - MAKE_SERVICE_COMMAND_META(DisableFrozenAddress), - }; }; + static_assert(impl::IsICheatInterface); } diff --git a/stratosphere/dmnt/source/dmnt_main.cpp b/stratosphere/dmnt/source/dmnt_main.cpp index 3839d4b9a..ff99db916 100644 --- a/stratosphere/dmnt/source/dmnt_main.cpp +++ b/stratosphere/dmnt/source/dmnt_main.cpp @@ -140,7 +140,7 @@ int main(int argc, char **argv) /* Create services. */ /* TODO: Implement rest of dmnt:- in ams.tma development branch. */ /* R_ABORT_UNLESS((g_server_manager.RegisterServer(DebugMonitorServiceName, DebugMonitorMaxSessions))); */ - R_ABORT_UNLESS((g_server_manager.RegisterServer(CheatServiceName, CheatMaxSessions))); + R_ABORT_UNLESS((g_server_manager.RegisterServer(CheatServiceName, CheatMaxSessions))); /* Loop forever, servicing our services. */ /* Nintendo loops four threads processing on the manager -- we'll loop an extra fifth for our cheat service. */ diff --git a/stratosphere/dmnt/source/dmnt_service.hpp b/stratosphere/dmnt/source/dmnt_service.hpp index 80ba6de55..8372f6241 100644 --- a/stratosphere/dmnt/source/dmnt_service.hpp +++ b/stratosphere/dmnt/source/dmnt_service.hpp @@ -57,7 +57,8 @@ namespace ams::dmnt { static_assert(util::is_pod::value && sizeof(TargetIOFileHandle) == sizeof(u64), "TargetIOFileHandle"); - class DebugMonitorService final : public sf::IServiceObject { + /* TODO: Convert to new sf format in the future. */ + class DebugMonitorService final { private: enum class CommandId { BreakDebugProcess = 0, @@ -131,61 +132,6 @@ namespace ams::dmnt { Result TargetIO_FileSetSize(const sf::InBuffer &input, s64 size); Result TargetIO_FileDelete(const sf::InBuffer &path); Result TargetIO_FileMove(const sf::InBuffer &src_path, const sf::InBuffer &dst_path); - public: - DEFINE_SERVICE_DISPATCH_TABLE { - MAKE_SERVICE_COMMAND_META(BreakDebugProcess), - MAKE_SERVICE_COMMAND_META(TerminateDebugProcess), - MAKE_SERVICE_COMMAND_META(CloseHandle), - // MAKE_SERVICE_COMMAND_META(LoadImage), - MAKE_SERVICE_COMMAND_META(GetProcessId), - MAKE_SERVICE_COMMAND_META(GetProcessHandle), - MAKE_SERVICE_COMMAND_META(WaitSynchronization), - //MAKE_SERVICE_COMMAND_META(GetDebugEvent), - // MAKE_SERVICE_COMMAND_META(GetProcessModuleInfo), - // MAKE_SERVICE_COMMAND_META(GetProcessList), - // MAKE_SERVICE_COMMAND_META(GetThreadList), - // MAKE_SERVICE_COMMAND_META(GetDebugThreadContext), - // MAKE_SERVICE_COMMAND_META(ContinueDebugEvent), - // MAKE_SERVICE_COMMAND_META(ReadDebugProcessMemory), - // MAKE_SERVICE_COMMAND_META(WriteDebugProcessMemory), - // MAKE_SERVICE_COMMAND_META(SetDebugThreadContext), - // MAKE_SERVICE_COMMAND_META(GetDebugThreadParam), - // MAKE_SERVICE_COMMAND_META(InitializeThreadInfo), - // MAKE_SERVICE_COMMAND_META(SetHardwareBreakPoint), - // MAKE_SERVICE_COMMAND_META(QueryDebugProcessMemory), - // MAKE_SERVICE_COMMAND_META(GetProcessMemoryDetails), - // MAKE_SERVICE_COMMAND_META(AttachByProgramId), - // MAKE_SERVICE_COMMAND_META(AttachOnLaunch), - // MAKE_SERVICE_COMMAND_META(GetDebugMonitorProcessId), - // MAKE_SERVICE_COMMAND_META(GetJitDebugProcessList), - // MAKE_SERVICE_COMMAND_META(CreateCoreDump), - // MAKE_SERVICE_COMMAND_META(GetAllDebugThreadInfo), - MAKE_SERVICE_COMMAND_META(TargetIO_FileOpen), - MAKE_SERVICE_COMMAND_META(TargetIO_FileClose), - MAKE_SERVICE_COMMAND_META(TargetIO_FileRead), - MAKE_SERVICE_COMMAND_META(TargetIO_FileWrite), - MAKE_SERVICE_COMMAND_META(TargetIO_FileSetAttributes), - MAKE_SERVICE_COMMAND_META(TargetIO_FileGetInformation), - MAKE_SERVICE_COMMAND_META(TargetIO_FileSetTime), - MAKE_SERVICE_COMMAND_META(TargetIO_FileSetSize), - MAKE_SERVICE_COMMAND_META(TargetIO_FileDelete), - MAKE_SERVICE_COMMAND_META(TargetIO_FileMove), - // MAKE_SERVICE_COMMAND_META(TargetIO_DirectoryCreate), - // MAKE_SERVICE_COMMAND_META(TargetIO_DirectoryDelete), - // MAKE_SERVICE_COMMAND_META(TargetIO_DirectoryRename), - // MAKE_SERVICE_COMMAND_META(TargetIO_DirectoryGetCount), - // MAKE_SERVICE_COMMAND_META(TargetIO_DirectoryOpen), - // MAKE_SERVICE_COMMAND_META(TargetIO_DirectoryGetNext), - // MAKE_SERVICE_COMMAND_META(TargetIO_DirectoryClose), - // MAKE_SERVICE_COMMAND_META(TargetIO_GetFreeSpace), - // MAKE_SERVICE_COMMAND_META(TargetIO_GetVolumeInformation), - // MAKE_SERVICE_COMMAND_META(InitiateCoreDump), - // MAKE_SERVICE_COMMAND_META(ContinueCoreDump), - // MAKE_SERVICE_COMMAND_META(AddTTYToCoreDump), - // MAKE_SERVICE_COMMAND_META(AddImageToCoreDump), - // MAKE_SERVICE_COMMAND_META(CloseCoreDump), - // MAKE_SERVICE_COMMAND_META(CancelAttach), - }; }; }