From 499b3c1a59183ef522f5f76749c487a482d4eee3 Mon Sep 17 00:00:00 2001 From: Zephyron Date: Fri, 26 Dec 2025 16:52:33 +1000 Subject: [PATCH] fix(fatal): handle unknown error module 359 gracefully Handle error 2359-2618 (module 359, description 2618) gracefully by logging a warning instead of crashing, similar to module 56. This allows games like SSBU to continue execution when encountering this error code. Signed-off-by: Zephyron --- src/core/hle/service/fatal/fatal.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/fatal/fatal.cpp b/src/core/hle/service/fatal/fatal.cpp index cb3f43c01..25261db80 100644 --- a/src/core/hle/service/fatal/fatal.cpp +++ b/src/core/hle/service/fatal/fatal.cpp @@ -85,6 +85,14 @@ static void GenerateErrorReport(Core::System& system, Result error_code, const F "Error code: 2056-{:04d} (0x{:08X})\n" "This may be related to online services or network functionality.\n\n", description, error_code.raw); + } else if (module == 359) { + module_note = fmt::format( + "\n⚠️ WARNING: Error module 359 is undefined/unknown!\n" + "This error may be game-generated or from an unimplemented service.\n" + "Error code: 2359-{:04d} (0x{:08X})\n" + "This is commonly reported by Super Smash Bros. Ultimate during multiplayer connections.\n" + "It may be related to network connectivity or online service availability.\n\n", + description, error_code.raw); } std::string crash_report = fmt::format( @@ -139,13 +147,18 @@ static void ThrowFatalError(Core::System& system, Result error_code, FatalType f GenerateErrorReport(system, error_code, info); [[fallthrough]]; case FatalType::ErrorScreen: - // For Module 56 errors (unknown/game-generated), log and continue instead of crashing - // These are often related to online services being unavailable + // For unknown module errors (game-generated), log and continue instead of crashing + // These are often related to online services being unavailable or network issues if (module == 56) { LOG_WARNING(Service_Fatal, "Module 56 error detected - likely game-generated due to unavailable " "online services. Continuing execution instead of crashing."); break; + } else if (module == 359) { + LOG_WARNING(Service_Fatal, + "Module 359 error detected - likely game-generated by SSBU during multiplayer " + "connection attempts. Continuing execution instead of crashing."); + break; } // Since we have no fatal:u error screen. We should just kill execution instead ASSERT(false);