From 5b9fcd5a70ed247999b9ef9ef3698c6c2bd3639a Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Thu, 17 Aug 2023 20:27:50 +0300 Subject: [PATCH] [BOSS] RegisterNewArrivalEvent --- include/services/boss.hpp | 1 + src/core/services/boss.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/services/boss.hpp b/include/services/boss.hpp index b2347829..55c5135e 100644 --- a/include/services/boss.hpp +++ b/include/services/boss.hpp @@ -21,6 +21,7 @@ class BOSSService { void getTaskState(u32 messagePointer); void getTaskStorageInfo(u32 messagePointer); void receiveProperty(u32 messagePointer); + void registerNewArrivalEvent(u32 messagePointer); void registerStorageEntry(u32 messagePointer); void unregisterStorage(u32 messagePointer); void unregisterTask(u32 messagePointer); diff --git a/src/core/services/boss.cpp b/src/core/services/boss.cpp index 86b937c1..c4037a31 100644 --- a/src/core/services/boss.cpp +++ b/src/core/services/boss.cpp @@ -6,6 +6,7 @@ namespace BOSSCommands { InitializeSession = 0x00010082, UnregisterStorage = 0x00030000, GetTaskStorageInfo = 0x00040000, + RegisterNewArrivalEvent = 0x00080002, GetOptoutFlag = 0x000A0000, UnregisterTask = 0x000C0082, GetTaskIdList = 0x000E0000, @@ -36,6 +37,7 @@ void BOSSService::handleSyncRequest(u32 messagePointer) { case BOSSCommands::GetTaskStorageInfo: getTaskStorageInfo(messagePointer); break; case BOSSCommands::InitializeSession: initializeSession(messagePointer); break; case BOSSCommands::ReceiveProperty: receiveProperty(messagePointer); break; + case BOSSCommands::RegisterNewArrivalEvent: registerNewArrivalEvent(messagePointer); break; case BOSSCommands::RegisterStorageEntry: registerStorageEntry(messagePointer); break; case BOSSCommands::UnregisterStorage: unregisterStorage(messagePointer); break; case BOSSCommands::UnregisterTask: unregisterTask(messagePointer); break; @@ -109,6 +111,16 @@ void BOSSService::receiveProperty(u32 messagePointer) { mem.write32(messagePointer + 8, 0); // Read size } +// This seems to accept a KEvent as a parameter and register it for something Spotpass related +// I need to update the 3DBrew page when it's known what it does properly +void BOSSService::registerNewArrivalEvent(u32 messagePointer) { + const Handle eventHandle = mem.read32(messagePointer + 4); // Kernel event handle to register + log("BOSS::RegisterNewArrivalEvent (handle = %X)\n", eventHandle); + + mem.write32(messagePointer, IPC::responseHeader(0x8, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); +} + void BOSSService::cancelTask(u32 messagePointer) { log("BOSS::CancelTask (stubbed)\n"); mem.write32(messagePointer, IPC::responseHeader(0x1E, 1, 2));