mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-19 19:07:48 +02:00
The blocker below 6.60 wasn't offsets, it was that Sony renumbered the kernel *_driver NIDs between versions. A function we HLE under its 6.6x NID is a stranger on an older build, so the import lands in the real firmware module instead - and that's where it goes wrong: - sceRtc_driver sceRtcSetAlarmTick. Without the HLE the VSH's alarm call ran the real rtc.prx, which called on into syscon.prx and blocked forever on a SceSysconSync semaphore. That was the whole "stalls with every thread parked" symptom; the tell was a fourth SceSysconSync waiter a healthy boot lacks. - sceHprm_driver sceHprmReadLatch, called once a frame - so before this an older firmware's 12-second boot logged ~20000 lines of one unresolved import. Three extra NIDs each, found by disassembling the module from both firmwares and matching on the address of the user-mode export whose NID never changed (sceRtc/0x7D1FBED3, sceHprm/0x40D2F9F0). 5.55 additionally needed two PRX decryption keys we didn't have (0x4C941AF0 and 0x4C941BF0) - without them none of flash0:/kd decrypted and the shell came up with no drivers behind it at all. Checked one release at a time against every version that ships on a disc, plus 6.61. 4.05 and below still die on a null write inside vsh_module. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>