HLE: cover the rest of the NIDs the VSH uses across firmware versions

sceKernelLoadModuleVSH, sceKernelGetModel and sceImposeSetStatus each appear
under a different NID in 3.95/4.05, 6.00/6.20 and 6.31/6.39. Without the load
one those shells started no plugins at all and sat on a black screen.

Identified the same way as the 5.xx set: for each firmware, the modulemgr export
with sceKernelLoadModuleVSH's callee set, and the vshbridge export whose body is
the user-level check 6.61 wraps sceKernelGetModel in - which is also the only
SysMemForKernel import those shells actually call.

3.95 and 4.05 now reach an interactive XMB.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik Rydgård
2026-09-10 12:44:47 -06:00
co-authored by Claude Opus 5
parent 3bdc4380d8
commit 0054d30b1d
3 changed files with 17 additions and 0 deletions
+6
View File
@@ -3200,6 +3200,12 @@ const HLEFunction ModuleMgrForKernel[] = {
// identical callee set to 6.61's 0xD5DDAB1F. Without it 5.50's vshbridge couldn't load the
// XMB plugins (opening_plugin, impose_plugin, ...) and the VSH stopped at a black screen.
{0xCCDE84A8, &WrapU_CUU<sceKernelLoadModuleVSH>, "sceKernelLoadModuleVSH", 'x', "sxx", HLE_KERNEL_SYSCALL },
// And the three remaining NIDs it has worn, all matched by the same callee set: 3.95 and 4.05
// share one, 6.00 and 6.20 another, 6.31 and 6.39 the last. Each of those shells loaded no
// plugins at all and sat on a black screen until its NID was here.
{0xFE586962, &WrapU_CUU<sceKernelLoadModuleVSH>, "sceKernelLoadModuleVSH", 'x', "sxx", HLE_KERNEL_SYSCALL },
{0x329C89DB, &WrapU_CUU<sceKernelLoadModuleVSH>, "sceKernelLoadModuleVSH", 'x', "sxx", HLE_KERNEL_SYSCALL },
{0x8909A807, &WrapU_CUU<sceKernelLoadModuleVSH>, "sceKernelLoadModuleVSH", 'x', "sxx", HLE_KERNEL_SYSCALL },
};
void Register_ModuleMgrForUser() {