Skip to content

ghostldr v0.2.0

Choose a tag to compare

@asylumexp asylumexp released this 21 Oct 22:59

The loader core now fetches a runtime extension from the computer at boot, which lifts the core's size limit and carries the full PS4 symbol table. No game files are included.

What's new

  • Runtime extension (build/ghostldr/ext.bin).
    • Delivery: run.py serves it on TCP 18195 and the core fetches it at boot.
    • Symbol table: it carries the full table of 42,000 PS4 function names, so host libraries resolve by name for any title, not only the imports of one game.
    • Space for new code: future library implementations go here instead of into the core. The core went from 230 KiB to 192 KiB, well inside its 240 KiB JIT-buffer limit.
    • Failure handling: if the extension is missing or corrupt, the boot stops with a clear ext: log line before anything touches the game.
  • Firewall: the computer must now also accept TCP 18195, as well as UDP 18194 for the log.
  • Import coverage report: ghostldr/tools/import_report.py <app0> lists every import of a title and how the loader would bind it: loader, extension, the title's own modules, a system module on the console, or nothing. It comes with a list of the 275 system modules a PS4 app can load on a 13.60 PS5.
  • License: MIT.

Assets

File What it is
ghostldr-v0.2.0.zip The tooling plus a prebuilt core and extension (build/ghostldr/core.bin, core.json, ext.bin, all from one build). No LLVM needed.
ghostldr-dev-payloads-v0.2.0.zip Optional dev payloads for a jailbroken console with elfldr (build/payloads/*.elf): launch or close SWRR (US or EU), unjail, save watcher, ps, df, module dump. Extract into the same folder.
SHA256SUMS.txt Checksums of both zips.

Requirements

  • A PS5 running Star Wars Racer Revenge US (CUSA03474) or EU (CUSA03492), with Luac0re 2.4b's Remote Lua Loader listening on port 9026.
  • Your own CUSA11456 v2.18 dump in build/ghost/app0.
  • Python 3.11+ on a computer on the same network, with UDP 18194 and TCP 18195 allowed in.
  • About 60 GB free on the PS5.

Existing ghostfs installs from v0.1.x keep working: no reinstall.

Quick start

python3 ghostldr/host/gfs_pack.py
python3 ghostldr/host/gfs_install.py
python3 ghostldr/host/run.py boot --app-root ghostfs --no-build

Step by step: docs/using-the-release.md. Background and troubleshooting: docs/ghost-on-stock-ps5.md. How the extension works: ghostldr/native/ext/README.md.

Tested

  • US SWRR, 13.60: this build's core and extension boot to the title screen and CONTINUE into gameplay. The extension is fetched and passes its self-test, and no import is left unresolved.
  • EU SWRR and 14.10: worked with v0.1.x; not re-tested with this build.

The prebuilt core's memory plan and patches are built for CUSA11456 v2.18.