diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 1d6ffa7aa0..bdae3a012c 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -215,7 +215,7 @@ public: {220, nullptr, "SynchronizeProfileAsync"}, {221, nullptr, "UploadProfileAsync"}, {222, nullptr, "SynchronizaProfileAsyncIfSecondsElapsed"}, - {250, nullptr, "IsLinkedWithNintendoAccount"}, + {250, &IAdministrator::IsLinkedWithNintendoAccount, "IsLinkedWithNintendoAccount"}, {251, nullptr, "CreateProcedureToLinkWithNintendoAccount"}, {252, nullptr, "ResumeProcedureToLinkWithNintendoAccount"}, {255, nullptr, "CreateProcedureToUpdateLinkageStateOfNintendoAccount"}, @@ -236,6 +236,13 @@ public: RegisterHandlers(functions); } + +private: + void IsLinkedWithNintendoAccount(HLERequestContext& ctx) { + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(ResultSuccess); + rb.Push(false); + } }; class IAuthorizationRequest final : public ServiceFramework { @@ -496,6 +503,35 @@ protected: rb.Push(static_cast(buffer.size())); } + void LoadIdTokenCache(HLERequestContext& ctx) { + LOG_WARNING(Service_ACC, "(STUBBED) called"); + + std::vector token_data(0x100); + std::fill(token_data.begin(), token_data.end(), u8(0)); + + (void)ctx.WriteBuffer(token_data); + + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(ResultSuccess); + rb.Push(static_cast(token_data.size())); + } + + void GetNintendoAccountUserResourceCacheForApplication(HLERequestContext& ctx) { + LOG_WARNING(Service_ACC, "(STUBBED) called"); + + std::vector nas_user_base_for_application(0x68); + (void)ctx.WriteBuffer(nas_user_base_for_application); + + if (ctx.CanWriteBuffer(1)) { + std::vector unknown_out_buffer(ctx.GetWriteBufferSize(1)); + (void)ctx.WriteBuffer(unknown_out_buffer, 1); + } + + IPC::ResponseBuilder rb{ctx, 4}; + rb.Push(ResultSuccess); + rb.PushRaw(profile_manager.GetLastOpenedUser().Hash()); + } + void Store(HLERequestContext& ctx) { IPC::RequestParser rp{ctx}; const auto base = rp.PopRaw(); @@ -707,7 +743,7 @@ private: std::vector token_data(0x100); std::fill(token_data.begin(), token_data.end(), u8(0)); - ctx.WriteBuffer(token_data, 0); + ctx.WriteBuffer(token_data); IPC::ResponseBuilder rb{ctx, 3}; rb.Push(ResultSuccess); @@ -718,7 +754,7 @@ private: LOG_WARNING(Service_ACC, "(STUBBED) called"); std::vector nas_user_base_for_application(0x68); - ctx.WriteBuffer(nas_user_base_for_application, 0); + ctx.WriteBuffer(nas_user_base_for_application); if (ctx.CanWriteBuffer(1)) { std::vector unknown_out_buffer(ctx.GetWriteBufferSize(1)); diff --git a/src/core/hle/service/ns/application_manager_interface.cpp b/src/core/hle/service/ns/application_manager_interface.cpp index 240937c8f5..81f42f0937 100644 --- a/src/core/hle/service/ns/application_manager_interface.cpp +++ b/src/core/hle/service/ns/application_manager_interface.cpp @@ -45,7 +45,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_ {26, nullptr, "BeginInstallApplication"}, {27, nullptr, "DeleteApplicationRecord"}, {30, nullptr, "RequestApplicationUpdateInfo"}, - {31, nullptr, "Unknown31"}, + {31, nullptr, "RequestUpdateApplication"}, {32, nullptr, "CancelApplicationDownload"}, {33, nullptr, "ResumeApplicationDownload"}, {35, nullptr, "UpdateVersionList"}, @@ -167,7 +167,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_ {901, nullptr, "GetApplicationRecordProperty"}, {902, nullptr, "EnableApplicationAutoUpdate"}, {903, nullptr, "DisableApplicationAutoUpdate"}, - {904, nullptr, "TouchApplication"}, + {904, D<&IApplicationManagerInterface::TouchApplication>, "TouchApplication"}, {905, nullptr, "RequestApplicationUpdate"}, {906, D<&IApplicationManagerInterface::IsApplicationUpdateRequested>, "IsApplicationUpdateRequested"}, {907, nullptr, "WithdrawApplicationUpdateRequest"}, @@ -544,6 +544,11 @@ Result IApplicationManagerInterface::GetStorageSize(Out out_total_space_siz R_SUCCEED(); } +Result IApplicationManagerInterface::TouchApplication(u64 application_id) { + LOG_WARNING(Service_NS, "(STUBBED) called. application_id={:016X}", application_id); + R_SUCCEED(); +} + Result IApplicationManagerInterface::IsApplicationUpdateRequested(Out out_update_required, Out out_update_version, u64 application_id) { diff --git a/src/core/hle/service/ns/application_manager_interface.h b/src/core/hle/service/ns/application_manager_interface.h index befdf2eac5..9c36939257 100644 --- a/src/core/hle/service/ns/application_manager_interface.h +++ b/src/core/hle/service/ns/application_manager_interface.h @@ -54,6 +54,7 @@ public: Result ResumeAll(); Result GetStorageSize(Out out_total_space_size, Out out_free_space_size, FileSys::StorageId storage_id); + Result TouchApplication(u64 application_id); Result IsApplicationUpdateRequested(Out out_update_required, Out out_update_version, u64 application_id); Result CheckApplicationLaunchVersion(u64 application_id);