From cb9fc5139b4b8533441626f321113f10c928a9e6 Mon Sep 17 00:00:00 2001 From: shadowbeat070 <70843316+shadowbeat070@users.noreply.github.com> Date: Sun, 19 Jul 2026 14:00:57 +0200 Subject: [PATCH] [Runtime] Search prx/ for adjacent modules Titles ship third-party middleware in prx/ rather than sce_module/, so those modules were never mapped and every NID they export resolved to the unresolved stub. That stub returns 0x80020002, which a caller storing the result as a pointer then dereferences. DOOM + DOOM II (PPSA21444) carries libcohtml.Prospero (Gameface UI), libRenoirCore.PS5, MediaDecoders.Prospero, libPlayFabMultiplayer and party.prx there. Loading them resolves seven previously unknown NIDs and replaces an access violation during UI init with real middleware code. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/SharpEmu.Core/Runtime/SharpEmuRuntime.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SharpEmu.Core/Runtime/SharpEmuRuntime.cs b/src/SharpEmu.Core/Runtime/SharpEmuRuntime.cs index e1c853e2..5df4d214 100644 --- a/src/SharpEmu.Core/Runtime/SharpEmuRuntime.cs +++ b/src/SharpEmu.Core/Runtime/SharpEmuRuntime.cs @@ -637,6 +637,7 @@ public sealed class SharpEmuRuntime : ISharpEmuRuntime { (Path: Path.Combine(ebootDirectory, "sce_module"), StartAtBoot: true), (Path: Path.Combine(ebootDirectory, "sce_modules"), StartAtBoot: true), + (Path: Path.Combine(ebootDirectory, "prx"), StartAtBoot: true), (Path: Path.Combine(ebootDirectory, "Media", "Modules"), StartAtBoot: true), // Unity native plugins are loaded later through sceKernelLoadStartModule. Map // them up front so the HLE loader can return a real module handle and dlsym