From d0db2eefce92406afe5c8d3172aaf1687a1b65e8 Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Fri, 21 Apr 2023 01:50:19 +0300 Subject: [PATCH] [PTM] Stub ConfigureNew3DSCPU --- include/services/ptm.hpp | 1 + src/core/services/ptm.cpp | 10 +++++++++- src/core/services/service_manager.cpp | 3 ++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/services/ptm.hpp b/include/services/ptm.hpp index 4e8e011c..5751fe28 100644 --- a/include/services/ptm.hpp +++ b/include/services/ptm.hpp @@ -10,6 +10,7 @@ class PTMService { MAKE_LOG_FUNCTION(log, ptmLogger) // Service commands + void configureNew3DSCPU(u32 messagePointer); void getStepHistory(u32 messagePointer); void getTotalStepCount(u32 messagePointer); diff --git a/src/core/services/ptm.cpp b/src/core/services/ptm.cpp index 99bfb207..fc2d9e93 100644 --- a/src/core/services/ptm.cpp +++ b/src/core/services/ptm.cpp @@ -4,7 +4,8 @@ namespace PTMCommands { enum : u32 { GetStepHistory = 0x000B00C2, - GetTotalStepCount = 0x000C0000 + GetTotalStepCount = 0x000C0000, + ConfigureNew3DSCPU = 0x08180040 }; } @@ -19,6 +20,7 @@ void PTMService::reset() {} void PTMService::handleSyncRequest(u32 messagePointer) { const u32 command = mem.read32(messagePointer); switch (command) { + case PTMCommands::ConfigureNew3DSCPU: configureNew3DSCPU(messagePointer); break; case PTMCommands::GetStepHistory: getStepHistory(messagePointer); break; case PTMCommands::GetTotalStepCount: getTotalStepCount(messagePointer); break; default: Helpers::panic("PTM service requested. Command: %08X\n", command); @@ -36,4 +38,10 @@ void PTMService::getTotalStepCount(u32 messagePointer) { mem.write32(messagePointer, IPC::responseHeader(0xC, 2, 0)); mem.write32(messagePointer + 4, Result::Success); mem.write32(messagePointer + 8, 3); // We walk a lot +} + +void PTMService::configureNew3DSCPU(u32 messagePointer) { + log("PTM::ConfigureNew3DSCPU [stubbed]\n"); + mem.write32(messagePointer, IPC::responseHeader(0x818, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); } \ No newline at end of file diff --git a/src/core/services/service_manager.cpp b/src/core/services/service_manager.cpp index 3502b4bb..0e32fb9a 100644 --- a/src/core/services/service_manager.cpp +++ b/src/core/services/service_manager.cpp @@ -104,7 +104,8 @@ static std::map serviceMap = { { "mic:u", KernelHandles::MIC }, { "ndm:u", KernelHandles::NDM }, { "nim:aoc", KernelHandles::NIM }, - { "ptm:u", KernelHandles::PTM }, + { "ptm:u", KernelHandles::PTM }, // TODO: ptm:u and ptm:sysm have very different command sets + { "ptm:sysm", KernelHandles::PTM }, { "y2r:u", KernelHandles::Y2R } };