From 4eb8dd1458fbd8a421f508f9df4794994665ea81 Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Mon, 24 Aug 2026 00:01:21 +0200 Subject: [PATCH] partial revert a41a98028a (#4292) - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- This commit fix launch Assassin's creed 3 changes nvdrv:a - break launch with fw 20+ changes ldr:ro - break skip loading menu with all fw Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4292 Reviewed-by: CamilleLaVey Reviewed-by: Maufeat --- src/core/hle/service/nvdrv/nvdrv.cpp | 7 ++++++- src/core/hle/service/ro/ro.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/nvdrv/nvdrv.cpp b/src/core/hle/service/nvdrv/nvdrv.cpp index cc006bd975..b252a2efa5 100644 --- a/src/core/hle/service/nvdrv/nvdrv.cpp +++ b/src/core/hle/service/nvdrv/nvdrv.cpp @@ -105,7 +105,12 @@ void LoopProcess(Core::System& system) { auto server_manager = std::make_unique(system); auto module = std::make_shared(system); server_manager->RegisterNamedService("nvdrv", std::make_shared(system, module, "nvdrv")); - server_manager->RegisterNamedService("nvdrv:a", std::make_shared(system, module, "nvdrv:a")); + + const auto NvdrvInterfaceFactoryForApplets = [&, module] { + return std::make_shared(system, module, "nvdrv:a"); + }; + + server_manager->RegisterNamedService("nvdrv:a", NvdrvInterfaceFactoryForApplets); server_manager->RegisterNamedService("nvdrv:s", std::make_shared(system, module, "nvdrv:s")); server_manager->RegisterNamedService("nvdrv:t", std::make_shared(system, module, "nvdrv:t")); server_manager->RegisterNamedService("nvmemp", std::make_shared(system)); diff --git a/src/core/hle/service/ro/ro.cpp b/src/core/hle/service/ro/ro.cpp index f0561b19cc..922fc10440 100644 --- a/src/core/hle/service/ro/ro.cpp +++ b/src/core/hle/service/ro/ro.cpp @@ -588,7 +588,12 @@ void LoopProcess(Core::System& system) { auto server_manager = std::make_unique(system); auto ro = std::make_shared(); - server_manager->RegisterNamedService("ldr:ro", std::make_shared(system, "ldr:ro", ro, NrrKind::User)); + + const auto RoInterfaceFactoryForUser = [&, ro] { + return std::make_shared(system, "ldr:ro", ro, NrrKind::User); + }; + + server_manager->RegisterNamedService("ldr:ro", std::move(RoInterfaceFactoryForUser)); server_manager->RegisterNamedService("ro:1", std::make_shared(system, "ro:1", ro, NrrKind::JitPlugin)); server_manager->RegisterNamedService("ro:dmnt", std::make_shared(system)); ServerManager::RunServer(std::move(server_manager));