Skip to content

Output Layout

clem-gb edited this page Oct 11, 2026 · 2 revisions

Output Layout

out/
  source/                 relinker input; mirrors the game tree
    eboot.bin             main executable, unwrapped from SELF to ELF
    sce_module/*.prx      bundled modules, unwrapped to ELF
    <path>/*.prx          modules shipped elsewhere (e.g. Unity's Media/Modules/)
  app0/                   every game file at its package path
    sce_sys/              param.json, icons, PlayGo tables from the CNT container
    <path>.prx.guest.prx  modules converted by the relinker
  app.elf                 after relinking: the converted game
  app.exe                 after relinking with --windows, instead of app.elf
  libs/*.prx              after relinking: AnyPS5's system libraries

Why source/ mirrors the game tree

The relinker looks for every module the executable needs anywhere beside its input. It writes each converted module to the same relative path under app0/ with a .guest.prx suffix. That is also where AnyPS5's module loader looks when the game opens /app0/<path>.prx. Keeping the original paths makes all three agree without configuration.

What is skipped

  • fakelib/ holds stubs of system libraries that AnyPS5 provides itself, so these stubs are not unwrapped.
  • Encrypted CNT entries (licenses, keys) are listed by --list as "encrypted CNT entry, not extractable" and are never written.
  • Modules that fail to unwrap (other than eboot.bin and sce_module/) are reported as skipped <path>: <reason>. The run continues, because some packages ship files with a .prx name that are not executables.

sce_sys/

PS5 packages carry metadata twice: in the CNT container of the package header and in the game tree. The tool writes both into app0/sce_sys/. Files from the CNT come first, so a file present in both places ends up with the copy from the game tree.

Clone this wiki locally