From 820f8f6f7c0d71a4285facdabae48074ce682952 Mon Sep 17 00:00:00 2001 From: Cicero Hellmann Jacobi Date: Tue, 28 Apr 2026 12:11:52 +0200 Subject: [PATCH 1/2] Fallback unsupported database SPU decoder on ARM64 --- rpcs3/Emu/System.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index 492aed799a..4de1c62ddd 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -302,6 +302,15 @@ static void fixup_settings(const psf::registry* _psf) } } +#if defined(ARCH_ARM64) + if (g_cfg.core.spu_decoder == spu_decoder_type::asmjit) + { + sys_log.warning("The setting '%s' is currently not supported on ARM64 builds and will therefore be changed from '%s' to '%s' during emulation.", + g_cfg.core.spu_decoder.get_name(), spu_decoder_type::asmjit, spu_decoder_type::llvm); + g_cfg.core.spu_decoder.set(spu_decoder_type::llvm); + } +#endif + if (const u32 psf_resolution = _psf ? psf::get_integer(*_psf, "RESOLUTION", 0) : 0) { const std::map resolutions From fde3422145be456f6ad691ae74fd90b57eedc0ee Mon Sep 17 00:00:00 2001 From: Cicero Hellmann Jacobi Date: Tue, 5 May 2026 23:14:07 +0200 Subject: [PATCH 2/2] ARM64: select available SPU decoder fallback --- rpcs3/Emu/System.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index 4de1c62ddd..b173cb23cd 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -305,9 +305,14 @@ static void fixup_settings(const psf::registry* _psf) #if defined(ARCH_ARM64) if (g_cfg.core.spu_decoder == spu_decoder_type::asmjit) { +#ifdef LLVM_AVAILABLE + constexpr auto arm64_spu_fallback = spu_decoder_type::llvm; +#else + constexpr auto arm64_spu_fallback = spu_decoder_type::dynamic; +#endif sys_log.warning("The setting '%s' is currently not supported on ARM64 builds and will therefore be changed from '%s' to '%s' during emulation.", - g_cfg.core.spu_decoder.get_name(), spu_decoder_type::asmjit, spu_decoder_type::llvm); - g_cfg.core.spu_decoder.set(spu_decoder_type::llvm); + g_cfg.core.spu_decoder.get_name(), spu_decoder_type::asmjit, arm64_spu_fallback); + g_cfg.core.spu_decoder.set(arm64_spu_fallback); } #endif