From 4930c1a947ed3790a6a5d92f190adf146926684c Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Sun, 9 Oct 2022 19:30:15 +0300 Subject: [PATCH] [APT] Stub AppletUtility --- include/services/apt.hpp | 1 + src/core/services/apt.cpp | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/services/apt.hpp b/include/services/apt.hpp index b4a3ee30..db4e773e 100644 --- a/include/services/apt.hpp +++ b/include/services/apt.hpp @@ -10,6 +10,7 @@ class APTService { MAKE_LOG_FUNCTION(log, aptLogger) // Service commands + void appletUtility(u32 messagePointer); void getLockHandle(u32 messagePointer); void checkNew3DS(u32 messagePointer); void enable(u32 messagePointer); diff --git a/src/core/services/apt.cpp b/src/core/services/apt.cpp index 714d29f8..57393648 100644 --- a/src/core/services/apt.cpp +++ b/src/core/services/apt.cpp @@ -4,9 +4,10 @@ namespace APTCommands { enum : u32 { GetLockHandle = 0x00010040, Enable = 0x00030040, - CheckNew3DS = 0x01020000, + ReceiveParameter = 0x000D0080, NotifyToWait = 0x00430040, - ReceiveParameter = 0x000D0080 + AppletUtility = 0x004B00C2, + CheckNew3DS = 0x01020000 }; } @@ -29,6 +30,7 @@ void APTService::reset() {} void APTService::handleSyncRequest(u32 messagePointer) { const u32 command = mem.read32(messagePointer); switch (command) { + case APTCommands::AppletUtility: appletUtility(messagePointer); break; case APTCommands::CheckNew3DS: checkNew3DS(messagePointer); break; case APTCommands::Enable: enable(messagePointer); break; case APTCommands::GetLockHandle: getLockHandle(messagePointer); break; @@ -38,6 +40,17 @@ void APTService::handleSyncRequest(u32 messagePointer) { } } +void APTService::appletUtility(u32 messagePointer) { + u32 utility = mem.read32(messagePointer + 4); + u32 inputSize = mem.read32(messagePointer + 8); + u32 outputSize = mem.read32(messagePointer + 12); + u32 inputPointer = mem.read32(messagePointer + 20); + + log("APT::AppletUtility(utility = %d, input size = %x, output size = %x, inputPointer = %08X)\n", utility, inputSize, + outputSize, inputPointer); + mem.write32(messagePointer + 4, Result::Success); +} + void APTService::checkNew3DS(u32 messagePointer) { log("APT::CheckNew3DS\n"); mem.write32(messagePointer + 4, Result::Success);