aoc_u: Implement GetAddOnContentBaseId

Command #5
This commit is contained in:
Zach Hilman 2018-09-27 08:59:50 -04:00
parent 62225ae050
commit 7d86a008e2
3 changed files with 8 additions and 5 deletions

View File

@ -33,7 +33,7 @@ std::string FormatTitleVersion(u32 version, TitleVersionFormat format) {
return fmt::format("v{}.{}.{}", bytes[3], bytes[2], bytes[1]); return fmt::format("v{}.{}.{}", bytes[3], bytes[2], bytes[1]);
} }
constexpr std::array<const char*, 2> PATCH_TYPE_NAMES{ constexpr std::array<const char*, 3> PATCH_TYPE_NAMES{
"Update", "Update",
"LayeredFS", "LayeredFS",
"DLC", "DLC",
@ -141,7 +141,7 @@ std::map<PatchType, std::string> PatchManager::GetPatchVersionNames() const {
std::map<PatchType, std::string> out; std::map<PatchType, std::string> out;
const auto installed = Service::FileSystem::GetUnionContents(); const auto installed = Service::FileSystem::GetUnionContents();
// Update // Game Updates
const auto update_tid = GetUpdateTitleID(title_id); const auto update_tid = GetUpdateTitleID(title_id);
PatchManager update{update_tid}; PatchManager update{update_tid};
auto [nacp, discard_icon_file] = update.GetControlMetadata(); auto [nacp, discard_icon_file] = update.GetControlMetadata();
@ -160,6 +160,7 @@ std::map<PatchType, std::string> PatchManager::GetPatchVersionNames() const {
} }
} }
// LayeredFS
const auto lfs_dir = Service::FileSystem::GetModificationLoadRoot(title_id); const auto lfs_dir = Service::FileSystem::GetModificationLoadRoot(title_id);
if (lfs_dir != nullptr && lfs_dir->GetSize() > 0) if (lfs_dir != nullptr && lfs_dir->GetSize() > 0)
out.insert_or_assign(PatchType::LayeredFS, ""); out.insert_or_assign(PatchType::LayeredFS, "");

View File

@ -30,7 +30,7 @@ AOC_U::AOC_U() : ServiceFramework("aoc:u") {
{2, &AOC_U::CountAddOnContent, "CountAddOnContent"}, {2, &AOC_U::CountAddOnContent, "CountAddOnContent"},
{3, &AOC_U::ListAddOnContent, "ListAddOnContent"}, {3, &AOC_U::ListAddOnContent, "ListAddOnContent"},
{4, nullptr, "GetAddOnContentBaseIdByApplicationId"}, {4, nullptr, "GetAddOnContentBaseIdByApplicationId"},
{5, nullptr, "GetAddOnContentBaseId"}, {5, &AOC_U::GetAddOnContentBaseId, "GetAddOnContentBaseId"},
{6, nullptr, "PrepareAddOnContentByApplicationId"}, {6, nullptr, "PrepareAddOnContentByApplicationId"},
{7, &AOC_U::PrepareAddOnContent, "PrepareAddOnContent"}, {7, &AOC_U::PrepareAddOnContent, "PrepareAddOnContent"},
{8, nullptr, "GetAddOnContentListChangedEvent"}, {8, nullptr, "GetAddOnContentListChangedEvent"},
@ -95,10 +95,11 @@ void AOC_U::ListAddOnContent(Kernel::HLERequestContext& ctx) {
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
} }
void AOC_U::GetAddOnContentBaseId(Kernel::HLERequestContext& ctx) {
IPC::ResponseBuilder rb{ctx, 4}; IPC::ResponseBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.Push<u64>(0); rb.Push(Core::System::GetInstance().CurrentProcess()->program_id | DLC_BASE_TO_AOC_ID_MASK);
LOG_WARNING(Service_AOC, "(STUBBED) called"); }
void AOC_U::PrepareAddOnContent(Kernel::HLERequestContext& ctx) { void AOC_U::PrepareAddOnContent(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};

View File

@ -16,6 +16,7 @@ public:
private: private:
void CountAddOnContent(Kernel::HLERequestContext& ctx); void CountAddOnContent(Kernel::HLERequestContext& ctx);
void ListAddOnContent(Kernel::HLERequestContext& ctx); void ListAddOnContent(Kernel::HLERequestContext& ctx);
void GetAddOnContentBaseId(Kernel::HLERequestContext& ctx);
void PrepareAddOnContent(Kernel::HLERequestContext& ctx); void PrepareAddOnContent(Kernel::HLERequestContext& ctx);
std::vector<u64> add_on_content; std::vector<u64> add_on_content;