From 197bc93eec495d15663062f639bf2cc168790f04 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 20 Aug 2023 15:07:19 +0300 Subject: [PATCH] Add BOSS:GetErrorCode --- include/services/boss.hpp | 1 + src/core/services/boss.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/include/services/boss.hpp b/include/services/boss.hpp index 8e40a2fd..b2ea1363 100644 --- a/include/services/boss.hpp +++ b/include/services/boss.hpp @@ -13,6 +13,7 @@ class BOSSService { // Service commands void cancelTask(u32 messagePointer); void initializeSession(u32 messagePointer); + void getErrorCode(u32 messagePointer); void getNsDataIdList(u32 messagePointer, u32 commandWord); void getOptoutFlag(u32 messagePointer); void getStorageEntryInfo(u32 messagePointer); // Unknown what this is, name taken from Citra diff --git a/src/core/services/boss.cpp b/src/core/services/boss.cpp index ea07e0dc..621830db 100644 --- a/src/core/services/boss.cpp +++ b/src/core/services/boss.cpp @@ -21,6 +21,7 @@ namespace BOSSCommands { GetTaskState = 0x00200082, GetTaskStatus = 0x002300C2, GetTaskInfo = 0x00250082, + GetErrorCode = 0x002E0040, RegisterStorageEntry = 0x002F0140, GetStorageEntryInfo = 0x00300000, }; @@ -34,6 +35,7 @@ void BOSSService::handleSyncRequest(u32 messagePointer) { const u32 command = mem.read32(messagePointer); switch (command) { case BOSSCommands::CancelTask: cancelTask(messagePointer); break; + case BOSSCommands::GetErrorCode: getErrorCode(messagePointer); break; case BOSSCommands::GetNsDataIdList: case BOSSCommands::GetNsDataIdList1: getNsDataIdList(messagePointer, command); break; @@ -127,6 +129,13 @@ void BOSSService::getTaskInfo(u32 messagePointer) { mem.write32(messagePointer + 4, Result::Success); } +void BOSSService::getErrorCode(u32 messagePointer) { + log("BOSS::GetErrorCode (stubbed)\n"); + mem.write32(messagePointer, IPC::responseHeader(0x2E, 2, 0)); + mem.write32(messagePointer + 4, Result::Success); + mem.write32(messagePointer + 8, Result::Success); // No error code +} + void BOSSService::getStorageEntryInfo(u32 messagePointer) { log("BOSS::GetStorageEntryInfo (undocumented)\n"); mem.write32(messagePointer, IPC::responseHeader(0x30, 3, 0));