From cf35491fb1b542910a5d068e05c39f4b32d14721 Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Sun, 11 Jun 2023 13:28:21 +0300 Subject: [PATCH] [APT] Stub APT::PreloadLibraryApplet --- include/services/apt.hpp | 1 + src/core/services/apt.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/services/apt.hpp b/include/services/apt.hpp index 819738c6..33fa8297 100644 --- a/include/services/apt.hpp +++ b/include/services/apt.hpp @@ -38,6 +38,7 @@ class APTService { void initialize(u32 messagePointer); void inquireNotification(u32 messagePointer); void notifyToWait(u32 messagePointer); + void preloadLibraryApplet(u32 messagePointer); void receiveParameter(u32 messagePointer); void replySleepQuery(u32 messagePointer); void setApplicationCpuTimeLimit(u32 messagePointer); diff --git a/src/core/services/apt.cpp b/src/core/services/apt.cpp index 0ee0a16a..637a922f 100644 --- a/src/core/services/apt.cpp +++ b/src/core/services/apt.cpp @@ -10,6 +10,7 @@ namespace APTCommands { InquireNotification = 0x000B0040, ReceiveParameter = 0x000D0080, GlanceParameter = 0x000E0080, + PreloadLibraryApplet = 0x00160040, ReplySleepQuery = 0x003E0080, NotifyToWait = 0x00430040, GetSharedFont = 0x00440000, @@ -80,6 +81,7 @@ void APTService::handleSyncRequest(u32 messagePointer) { case APTCommands::GetWirelessRebootInfo: getWirelessRebootInfo(messagePointer); break; case APTCommands::GlanceParameter: glanceParameter(messagePointer); break; case APTCommands::NotifyToWait: notifyToWait(messagePointer); break; + case APTCommands::PreloadLibraryApplet: preloadLibraryApplet(messagePointer); break; case APTCommands::ReceiveParameter: [[likely]] receiveParameter(messagePointer); break; case APTCommands::ReplySleepQuery: replySleepQuery(messagePointer); break; case APTCommands::SetApplicationCpuTimeLimit: setApplicationCpuTimeLimit(messagePointer); break; @@ -95,12 +97,20 @@ void APTService::appletUtility(u32 messagePointer) { 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, + log("APT::AppletUtility(utility = %d, input size = %x, output size = %x, inputPointer = %08X) (Stubbed)\n", utility, inputSize, outputSize, inputPointer); mem.write32(messagePointer, IPC::responseHeader(0x4B, 2, 2)); mem.write32(messagePointer + 4, Result::Success); } +void APTService::preloadLibraryApplet(u32 messagePointer) { + const u32 appID = mem.read32(messagePointer + 4); + log("APT::PreloadLibraryApplet (app ID = %d) (stubbed)\n", appID); + + mem.write32(messagePointer, IPC::responseHeader(0x16, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); +} + void APTService::checkNew3DS(u32 messagePointer) { log("APT::CheckNew3DS\n"); mem.write32(messagePointer, IPC::responseHeader(0x102, 2, 0));