Files
libretro/emulators/shadps4.yml
T
Abdessamad Derraz 5c5c7cd79c fix: read shadps4 sys_modules from its user folder
sys_modules/ is below shadPS4's user folder: user/ in the working
directory, else the XDG data folder (path_util.cpp:88-124). Batocera
and KNULLI start it from /userdata/system/configs/shadps4, so their
packs no longer carry bios/shadps4/sys_modules, which nothing read, and
name the modules instead. EmuDeck keeps its link at
bios/shadps4/sys_modules, and RetroBat places them in
emulators/shadps4/user/sys_modules.
2026-11-09 19:29:18 +01:00

242 lines
9.2 KiB
YAML

emulator: "shadPS4"
type: standalone
source: "https://github.com/shadps4-emu/shadPS4"
upstream: "https://github.com/shadps4-emu/shadPS4"
profiled_date: "2026-03-26"
source_commit: "3eecea94ddaca360b19f4b800523b609a8b2ffcc"
core_version: "0.20.1 WIP"
version_basis:
kind: file
path: "CMakeLists.txt"
pattern: 'set\(EMULATOR_VERSION_MAJOR "(\d+)"\)\s*\nset\(EMULATOR_VERSION_MINOR "(\d+)"\)\s*\nset\(EMULATOR_VERSION_PATCH "(\d+)"\)[\s\S]*?set\(APP_VERSION "\$\{APP_VERSION_NUM\} ?([^"]*)"\)'
format: "{1}.{2}.{3} {4}"
display_name: "shadPS4 (PlayStation 4)"
cores:
- shadps4
- "shadps4-gui"
systems:
- ps4
mode: standalone
standalone_directories:
- "getcwd/user"
- "PORTABLE_DIR"
- "$XDG_DATA_HOME/shadPS4"
- "$HOME/.local/share/shadPS4"
analysis_date: "2026-08-10"
analysis_commit: "891612c8"
notes: |
shadPS4 is a standalone PlayStation 4 emulator. Most PS4 system libraries
are reimplemented in HLE. For better game compatibility, real firmware
modules (.sprx) can be loaded in LLE mode from the sys_modules/ directory.
Modules are loaded by sysmodule_internal.cpp via loadModuleInternal().
If a module exists in sys_modules/, it is loaded as LLE. If absent and
an HLE implementation exists, the emulator falls back to HLE. If neither,
the module is stubbed and games needing it may fail.
Game-specific overrides are supported: sys_modules/{CUSA_ID}/ takes
priority over the global sys_modules/ directory.
System fonts are mounted from fonts/font/ (/preinst/common/font on real
PS4) and fonts/font2/ (/system/common/font2 on real PS4). These are SST
(Sony Standard Text) typeface files in OTF format. The emulator mounts
the directories wholesale, and games load individual fonts by name. Without
fonts, the emulator warns "No dumped system fonts, expect missing text
or instability."
All firmware files are extracted from a real PS4 via FTP:
- .sprx modules from /system/common/lib/
- font/ from /preinst/common/font/
- font2/ from /system/common/font2/
The paths below are relative to the user folder: user/ in the working
directory when it exists, else $XDG_DATA_HOME/shadPS4 or
~/.local/share/shadPS4 on Linux and %APPDATA%/shadPS4 on Windows
(src/common/path_util.cpp:88-110). sys_modules/ is below it
(path_util.cpp:124) unless sysModulesPath in the config names another
folder (src/core/emulator_settings.cpp:190-195, 535).
files:
- name: "libSceLibcInternal.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceLibcInternal.sprx"
description: "PS4 C standard library"
source_ref: "src/core/linker.cpp:80-91"
- name: "libSceNgs2.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceNgs2.sprx"
description: "PS4 next-generation audio system"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:217"
- name: "libSceUlt.sprx"
required: false
path: "sys_modules/libSceUlt.sprx"
description: "PS4 user-level threading library"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:218"
- name: "libSceRtc.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceRtc.sprx"
description: "PS4 real-time clock library"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:221"
- name: "libSceJpegDec.sprx"
required: false
path: "sys_modules/libSceJpegDec.sprx"
description: "PS4 JPEG decoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:222"
- name: "libSceJpegEnc.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceJpegEnc.sprx"
description: "PS4 JPEG encoder"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:223"
- name: "libScePngEnc.sprx"
required: false
hle_fallback: true
path: "sys_modules/libScePngEnc.sprx"
description: "PS4 PNG encoder"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:225"
- name: "libSceJson.sprx"
required: false
path: "sys_modules/libSceJson.sprx"
description: "PS4 JSON parser"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:226"
- name: "libSceJson2.sprx"
required: false
path: "sys_modules/libSceJson2.sprx"
description: "PS4 JSON v2 parser"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:227"
- name: "libSceCesCs.sprx"
required: false
path: "sys_modules/libSceCesCs.sprx"
description: "PS4 character encoding conversion"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:228"
- name: "libSceAt9Enc.sprx"
required: false
path: "sys_modules/libSceAt9Enc.sprx"
description: "PS4 ATRAC9 encoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:229"
- name: "libSceAudiodec.sprx"
required: false
path: "sys_modules/libSceAudiodec.sprx"
description: "PS4 audio decoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:230"
- name: "libSceAudiodecCpu.sprx"
required: false
path: "sys_modules/libSceAudiodecCpu.sprx"
description: "PS4 CPU audio decoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:231"
- name: "libSceAudiodecCpuDdp.sprx"
required: false
path: "sys_modules/libSceAudiodecCpuDdp.sprx"
description: "PS4 CPU Dolby Digital Plus decoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:232"
- name: "libSceAudiodecCpuM4aac.sprx"
required: false
path: "sys_modules/libSceAudiodecCpuM4aac.sprx"
description: "PS4 CPU AAC decoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:233"
- name: "libSceAudiodecCpuDtsHdLbr.sprx"
required: false
path: "sys_modules/libSceAudiodecCpuDtsHdLbr.sprx"
description: "PS4 CPU DTS-HD LBR decoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:234"
- name: "libSceAudiodecCpuHevag.sprx"
required: false
path: "sys_modules/libSceAudiodecCpuHevag.sprx"
description: "PS4 CPU HEVAG decoder"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:235"
- name: "libSceFont.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceFont.sprx"
description: "PS4 font rendering library"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:236"
- name: "libSceFontFt.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceFontFt.sprx"
description: "PS4 FreeType font library"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:237"
- name: "libSceFreeTypeOt.sprx"
required: false
path: "sys_modules/libSceFreeTypeOt.sprx"
description: "PS4 FreeType OpenType library"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:238"
- name: "libSceFreeTypeOl.sprx"
required: false
path: "sys_modules/libSceFreeTypeOl.sprx"
description: "PS4 FreeType outline library"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:239"
- name: "libSceFreeTypeOptOl.sprx"
required: false
path: "sys_modules/libSceFreeTypeOptOl.sprx"
description: "PS4 FreeType optimised outline library"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:240"
- name: "libSceRudp.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceRudp.sprx"
description: "PS4 reliable UDP library"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:244"
- name: "libSceWkFontConfig.sprx"
required: false
path: "sys_modules/libSceWkFontConfig.sprx"
description: "PS4 WebKit font configuration"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:245"
- name: "libSceSystemGesture.sprx"
required: false
hle_fallback: true
path: "sys_modules/libSceSystemGesture.sprx"
description: "PS4 system gesture recognition"
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:250"
- name: "libSceXml.sprx"
required: false
path: "sys_modules/libSceXml.sprx"
description: "PS4 XML parser"
note: "No HLE implementation. The module is stubbed when absent."
source_ref: "src/core/libraries/sysmodule/sysmodule_internal.cpp:251"