From 7d86a008e219f37cd6fd58175ed6e4a0739e6ea5 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Thu, 27 Sep 2018 08:59:50 -0400 Subject: [PATCH] aoc_u: Implement GetAddOnContentBaseId Command #5 --- src/core/file_sys/patch_manager.cpp | 5 +++-- src/core/hle/service/aoc/aoc_u.cpp | 7 ++++--- src/core/hle/service/aoc/aoc_u.h | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp index 5ac2b987e..ceb462ec4 100644 --- a/src/core/file_sys/patch_manager.cpp +++ b/src/core/file_sys/patch_manager.cpp @@ -33,7 +33,7 @@ std::string FormatTitleVersion(u32 version, TitleVersionFormat format) { return fmt::format("v{}.{}.{}", bytes[3], bytes[2], bytes[1]); } -constexpr std::array PATCH_TYPE_NAMES{ +constexpr std::array PATCH_TYPE_NAMES{ "Update", "LayeredFS", "DLC", @@ -141,7 +141,7 @@ std::map PatchManager::GetPatchVersionNames() const { std::map out; const auto installed = Service::FileSystem::GetUnionContents(); - // Update + // Game Updates const auto update_tid = GetUpdateTitleID(title_id); PatchManager update{update_tid}; auto [nacp, discard_icon_file] = update.GetControlMetadata(); @@ -160,6 +160,7 @@ std::map PatchManager::GetPatchVersionNames() const { } } + // LayeredFS const auto lfs_dir = Service::FileSystem::GetModificationLoadRoot(title_id); if (lfs_dir != nullptr && lfs_dir->GetSize() > 0) out.insert_or_assign(PatchType::LayeredFS, ""); diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp index f7597f9bb..745ee89bc 100644 --- a/src/core/hle/service/aoc/aoc_u.cpp +++ b/src/core/hle/service/aoc/aoc_u.cpp @@ -30,7 +30,7 @@ AOC_U::AOC_U() : ServiceFramework("aoc:u") { {2, &AOC_U::CountAddOnContent, "CountAddOnContent"}, {3, &AOC_U::ListAddOnContent, "ListAddOnContent"}, {4, nullptr, "GetAddOnContentBaseIdByApplicationId"}, - {5, nullptr, "GetAddOnContentBaseId"}, + {5, &AOC_U::GetAddOnContentBaseId, "GetAddOnContentBaseId"}, {6, nullptr, "PrepareAddOnContentByApplicationId"}, {7, &AOC_U::PrepareAddOnContent, "PrepareAddOnContent"}, {8, nullptr, "GetAddOnContentListChangedEvent"}, @@ -95,10 +95,11 @@ void AOC_U::ListAddOnContent(Kernel::HLERequestContext& ctx) { rb.Push(RESULT_SUCCESS); } +void AOC_U::GetAddOnContentBaseId(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb{ctx, 4}; rb.Push(RESULT_SUCCESS); - rb.Push(0); - LOG_WARNING(Service_AOC, "(STUBBED) called"); + rb.Push(Core::System::GetInstance().CurrentProcess()->program_id | DLC_BASE_TO_AOC_ID_MASK); +} void AOC_U::PrepareAddOnContent(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; diff --git a/src/core/hle/service/aoc/aoc_u.h b/src/core/hle/service/aoc/aoc_u.h index 61e2ec75d..b3c7cab7a 100644 --- a/src/core/hle/service/aoc/aoc_u.h +++ b/src/core/hle/service/aoc/aoc_u.h @@ -16,6 +16,7 @@ public: private: void CountAddOnContent(Kernel::HLERequestContext& ctx); void ListAddOnContent(Kernel::HLERequestContext& ctx); + void GetAddOnContentBaseId(Kernel::HLERequestContext& ctx); void PrepareAddOnContent(Kernel::HLERequestContext& ctx); std::vector add_on_content;