From e157b3fa96ab3d5078e54db76aa5d9f78c233e1c Mon Sep 17 00:00:00 2001 From: JPikachu Date: Tue, 14 Oct 2025 00:10:30 +0200 Subject: [PATCH] [am] Add Unknown90 to ILibraryAppletAccessor (#2728) Fixes crashes in BOTW 1.8.2 and EOW 1.1.0 when not using Auto-Stub TODO: Rename once documented in SwitchBrew Co-authored-by: JPikachu Co-authored-by: MaranBr Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2728 Reviewed-by: crueter Reviewed-by: MaranBr Co-authored-by: JPikachu Co-committed-by: JPikachu --- src/core/hle/service/am/frontend/applet_controller.cpp | 1 + src/core/hle/service/am/frontend/applet_controller.h | 4 ++++ src/core/hle/service/am/service/library_applet_accessor.cpp | 6 ++++++ src/core/hle/service/am/service/library_applet_accessor.h | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/src/core/hle/service/am/frontend/applet_controller.cpp b/src/core/hle/service/am/frontend/applet_controller.cpp index d5699d7848..cfa7cff707 100644 --- a/src/core/hle/service/am/frontend/applet_controller.cpp +++ b/src/core/hle/service/am/frontend/applet_controller.cpp @@ -134,6 +134,7 @@ void Controller::Initialize() { break; case ControllerAppletVersion::Version7: case ControllerAppletVersion::Version8: + case ControllerAppletVersion::Version9: ASSERT(user_arg.size() == sizeof(ControllerSupportArgNew)); std::memcpy(&controller_user_arg_new, user_arg.data(), user_arg.size()); break; diff --git a/src/core/hle/service/am/frontend/applet_controller.h b/src/core/hle/service/am/frontend/applet_controller.h index 2f219429ca..341ebed234 100644 --- a/src/core/hle/service/am/frontend/applet_controller.h +++ b/src/core/hle/service/am/frontend/applet_controller.h @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -30,6 +33,7 @@ enum class ControllerAppletVersion : u32_le { Version5 = 0x5, // 6.0.0 - 7.0.1 Version7 = 0x7, // 8.0.0 - 10.2.0 Version8 = 0x8, // 11.0.0+ + Version9 = 0x9, }; enum class ControllerSupportMode : u8 { diff --git a/src/core/hle/service/am/service/library_applet_accessor.cpp b/src/core/hle/service/am/service/library_applet_accessor.cpp index f7314b8f28..c1d2943799 100644 --- a/src/core/hle/service/am/service/library_applet_accessor.cpp +++ b/src/core/hle/service/am/service/library_applet_accessor.cpp @@ -28,6 +28,7 @@ ILibraryAppletAccessor::ILibraryAppletAccessor(Core::System& system_, {30, D<&ILibraryAppletAccessor::GetResult>, "GetResult"}, {50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"}, {60, D<&ILibraryAppletAccessor::PresetLibraryAppletGpuTimeSliceZero>, "PresetLibraryAppletGpuTimeSliceZero"}, + {90, D<&ILibraryAppletAccessor::Unknown90>, "Unknown90"}, {100, D<&ILibraryAppletAccessor::PushInData>, "PushInData"}, {101, D<&ILibraryAppletAccessor::PopOutData>, "PopOutData"}, {102, nullptr, "PushExtraStorage"}, @@ -96,6 +97,11 @@ Result ILibraryAppletAccessor::Terminate() { R_SUCCEED(); } +Result ILibraryAppletAccessor::Unknown90() { + LOG_WARNING(Service_AM, "(STUBBED) called"); + R_SUCCEED(); +} + Result ILibraryAppletAccessor::PushInData(SharedPointer storage) { LOG_DEBUG(Service_AM, "called"); m_broker->GetInData().Push(storage); diff --git a/src/core/hle/service/am/service/library_applet_accessor.h b/src/core/hle/service/am/service/library_applet_accessor.h index 36712821a5..841d0d5146 100644 --- a/src/core/hle/service/am/service/library_applet_accessor.h +++ b/src/core/hle/service/am/service/library_applet_accessor.h @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -26,6 +29,7 @@ private: Result Start(); Result RequestExit(); Result Terminate(); + Result Unknown90(); Result PushInData(SharedPointer storage); Result PopOutData(Out> out_storage); Result PushInteractiveInData(SharedPointer storage);