mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-19 19:07:48 +02:00
Backwards from 5.01, one release at a time, against all 39 versions that ship on a disc plus the download-only 6.61. Nothing here is an offset - it's almost entirely Sony renumbering the kernel *_driver NIDs, which sends an import we mean to HLE into the real firmware module instead. Four more NIDs each for sceRtc_driver/sceRtcSetAlarmTick and sceHprm_driver/sceHprmReadLatch, covering 1.50 up. The rtc one is what parked every thread on a SceSysconSync semaphore; the hprm one runs once a frame, so unresolved it was most of the boot log. Also sceImposeGetParam/sceImposeChanges (1.50 - 2.xx) and sceKernelLoadModuleVSH (1.x, which is how the shell loads its own plugins - unresolved it got module id 0 and StartModule failed). sceRtcIsAlarmed had to be implemented too; it returns 0, as in JPCSP. As a null entry it returned LIBRARY_NOT_YET_LINKED, and the 3.0x-3.5x VSH read that as "ask the hardware instead" and went back to blocking on syscon. Two structural findings: - Up to 4.05, scePaf's heap allocator is a separate heaparea1.prx that paf imports as scePafHeaparea. Load it when it's there. Its pool pointer needs the same pre-fill paf's does, at gp - 0x7FCC rather than gp - 0x7E88. - 1.50's vshmain.prx declares no module attributes at all - PSP_MODULE_VSH_MODE only appears from 1.52 - so the whole VSH bootstrap was being skipped. Accept the module name too. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>