mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-31 11:37:00 +01:00
POPS: Boot converted PBPs with firmware 4.05
The user modules started after the manager now come from the firmware's own boot configuration (pspbtcnf.bin's POPS mode), since they differ by version: 4.05's pafmini.prx needs heaparea2.prx first. 6.60's also lists common_util.prx, which wasn't started before. 4.05 renumbered the kernel NIDs again. Its aliases are checked like 5.55's, and the sysreg ones by what they do to the registers: the call sites got five of those wrong. Its manager allocates from a pool with the kernel's sceKernelAllocateFpl, which stays unresolved for kernel modules (see ThreadManForKernel), so only the manager's import gets the user one. scePower_driver gets 6.60's clock frequency NID, which 6.20's and 4.05's old one now map to. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
3c72cc29ab
commit
2924e3a090
5 files changed
+106
-16
No files matched your search
@@ -521,6 +521,22 @@ u32 KernelFindModuleExport(const char *libraryName, u32 nid) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 KernelFindModuleImport(const char *moduleName, const char *libraryName, u32 nid) {
|
||||
u32 error;
|
||||
for (SceUID moduleId : loadedModules) {
|
||||
PSPModule *module = kernelObjects.Get<PSPModule>(moduleId, error);
|
||||
if (!module || strcmp(module->GetName(), moduleName) != 0) {
|
||||
continue;
|
||||
}
|
||||
for (const FuncSymbolImport &func : module->importedFuncs) {
|
||||
if (func.nid == nid && !strncmp(func.moduleName, libraryName, KERNELOBJECT_MAX_NAME_LENGTH)) {
|
||||
return func.stubAddr;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Set once we've seen a PSP_MODULE_VSH_MODE module load (i.e. we're booting the VSH rather
|
||||
// than a game), and reset on the next __KernelLoadExec. See ShouldHLEModuleForLoad below.
|
||||
static bool g_runningVSH = false;
|
||||
|
||||
Reference in new issue
Block a user