Files
ppsspp/Core/HLE
Henrik RydgårdandClaude Opus 5 63eb3d5b21 Boot the VSH on every firmware, 1.50 through 6.61
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>
2026-09-09 14:43:39 -06:00
..
2025-07-22 17:48:20 +02:00
2025-07-22 17:48:20 +02:00
2025-07-22 17:48:20 +02:00
2026-08-11 10:28:36 +02:00
2025-08-06 17:44:54 +02:00
2026-01-18 23:40:13 +02:00
2026-08-11 09:08:52 +02:00
2025-07-20 19:30:35 +02:00
…
…
…
…
2026-08-11 20:12:10 +02:00
…
…
…
2025-07-20 19:32:05 +02:00
2025-02-14 09:50:55 -06:00
2026-08-11 20:14:01 +02:00
…
2026-08-11 10:28:36 +02:00
…
2026-08-11 10:28:47 +02:00
2026-08-11 10:28:47 +02:00
2026-08-24 09:30:44 +02:00
2025-04-03 14:13:50 +02:00
2026-08-11 20:14:01 +02:00
…
2026-08-12 14:02:19 +02:00
2025-02-04 11:53:22 -06:00
…
2026-08-08 18:18:28 +02:00