From 51c13606d6b9a25a93bd008db53a2553b16126e5 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 13 Feb 2021 02:32:13 -0800 Subject: [PATCH] hle: service: ldn: IUserLocalCommunicationService: Indicate that LDN is disabled. - Fixes crash on Pokemon Sword/Shield when pressing 'Y'. --- src/core/CMakeLists.txt | 1 + src/core/hle/service/ldn/errors.h | 13 +++++++++++++ src/core/hle/service/ldn/ldn.cpp | 8 +++++--- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 src/core/hle/service/ldn/errors.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 1662ec63d..e74e6a668 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -400,6 +400,7 @@ add_library(core STATIC hle/service/hid/controllers/xpad.h hle/service/lbl/lbl.cpp hle/service/lbl/lbl.h + hle/service/ldn/errors.h hle/service/ldn/ldn.cpp hle/service/ldn/ldn.h hle/service/ldr/ldr.cpp diff --git a/src/core/hle/service/ldn/errors.h b/src/core/hle/service/ldn/errors.h new file mode 100644 index 000000000..a718c5c66 --- /dev/null +++ b/src/core/hle/service/ldn/errors.h @@ -0,0 +1,13 @@ +// Copyright 2021 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/result.h" + +namespace Service::LDN { + +constexpr ResultCode ERROR_DISABLED{ErrorModule::LDN, 22}; + +} // namespace Service::LDN diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp index ee908f399..1c46609ae 100644 --- a/src/core/hle/service/ldn/ldn.cpp +++ b/src/core/hle/service/ldn/ldn.cpp @@ -6,6 +6,7 @@ #include "core/hle/ipc_helpers.h" #include "core/hle/result.h" +#include "core/hle/service/ldn/errors.h" #include "core/hle/service/ldn/ldn.h" #include "core/hle/service/sm/sm.h" @@ -140,10 +141,11 @@ public: void Initialize2(Kernel::HLERequestContext& ctx) { LOG_WARNING(Service_LDN, "(STUBBED) called"); - // Result success seem make this services start network and continue. - // If we just pass result error then it will stop and maybe try again and again. + + // Return the disabled error to indicate that LDN is currently unavailable, otherwise games + // will continue to try to make a connection. IPC::ResponseBuilder rb{ctx, 2}; - rb.Push(RESULT_UNKNOWN); + rb.Push(ERROR_DISABLED); } };