LoveGame
English

Guides

shadPS4 Firmware Modules Explained: sys_modules, LLE vs HLE, Game Folders, Updates and DLC

Published Updated Facts checked 2026-11-015 min read

Key points

  • shadPS4's sys_modules folder holds individual PS4 system modules (.sprx files such as libSceNgs2.sprx and libSceFont.sprx), not the whole firmware. The README lists 34 supported modules.
  • HLE means the emulator reimplements a system library; LLE means loading the original PS4 module. shadPS4 uses HLE for most libraries and switches to LLE for modules found in sys_modules.
  • Since v0.8.0 (April 2025) shadPS4 no longer installs PKGs. It reads extracted game folders that must contain eboot.bin and sce_sys/param.sfo.
  • Updates go next to the game folder, named <folder>-UPDATE or <folder>-patch. DLC goes in a subfolder named after the game under user/addcont.
  • PS5 emulators differ: KytyPS5 says external low-level modules are neither required nor planned.
On this page
  1. What shadPS4 uses
  2. HLE vs LLE: how an emulator handles PS4 system libraries
  3. Which modules sys_modules supports
  4. Why the full PS4 firmware is not needed
  5. Game formats: PKG, extracted folders, eboot.bin
  6. Where updates and DLC go
  7. Trophies
  8. Do PS5 emulators need any of this?
  9. Related guides

The "firmware modules" shadPS4 talks about are individual PS4 system module files (.sprx) that go in its sys_modules folder, such as libSceNgs2.sprx (audio) and libSceFont.sprx (fonts). They are not the whole PS4 firmware. shadPS4 reimplements most system functions itself (HLE) and loads modules from sys_modules directly (LLE) to cover parts its own versions do not handle fully yet. The game itself is an extracted folder containing eboot.bin and sce_sys/param.sfo; since v0.8.0 shadPS4 no longer installs PKGs. Updates and DLC each have a fixed place, covered below.

Everything here was checked against shadPS4 v0.21.0 (2026-10-30).

What shadPS4 uses

ItemWhat it isDefault locationRequired?
Game folderAn extracted PS4 game with eboot.bin and sce_sys/param.sfoAnywhere; add it as a game folder in the launcherYes
System modules (.sprx)Individual PS4 system librariesuser/sys_modules/README says games need them to run properly; some games break without them
FontsPS4 system fontsfont and font2 under user/fonts/Some games
UpdatesGame version updates<folder>-UPDATE next to the game folderDepends on the game
DLCAdd-on contentuser/addcont/<game ID>/Depends on the game
Shader cacheGenerated by the emulatoruser/cache/<game ID>Automatic

Where the user folder lives: if there is a user folder next to the shadPS4 program, it is used (portable mode). Otherwise it is %APPDATA%\shadPS4 on Windows, ~/Library/Application Support/shadPS4 on macOS and ~/.local/share/shadPS4 on Linux. Since v0.16.0 the config file is config.json (it used to be config.toml; shadPS4 offers to migrate the old one on startup).

HLE vs LLE: how an emulator handles PS4 system libraries

PS4 games constantly call system libraries for graphics, audio, controllers, video decoding, font rendering and more. An emulator has to provide those libraries to the game. There are two ways, defined by the shadPS4 wiki as:

HLE (high-level emulation)LLE (low-level emulation)
DefinitionThe emulator provides a reimplementation of the original moduleUses the console's firmware files directly
ProsNo console files needed; usually faster; can be tuned for PCBehaves like the real console, including features nobody has reimplemented
ConsUnfinished functions fail or get skippedNeeds the module file; only some modules can be loaded this way

shadPS4 is HLE-first. The kernel (libkernel), GPU driver (GnmDriver), video output (VideoOut), controller (Pad) and about 80 other system libraries are written by the emulator team. For some libraries where HLE is still incomplete (mostly audio decoding, video playback, fonts, and JSON/XML parsing), shadPS4 lets you load the real module through LLE.

The loading rule is simple: if the module is in sys_modules, it gets loaded. If not, shadPS4 falls back to HLE where one exists (the log says "switching to HLE"). If there is no HLE either, the call does nothing (the log says "No HLE available"), and the game may lose audio or subtitles, crash, or hang on a screen.

Modules placed in a sys_modules/<game ID>/ subfolder only apply to that game, which helps with per-game issues. The sys_modules location can also be changed in the settings.

Which modules sys_modules supports

The 34 modules listed in the shadPS4 README (2026-11-01), grouped roughly by name:

GroupModules
AudiolibSceAt9Enc, libSceAudiodec, libSceAudiodecCpu, libSceAudiodecCpuDdp, libSceAudiodecCpuDtsHdLbr, libSceAudiodecCpuHevag, libSceAudiodecCpuM4aac, libSceNgs2
Video playbacklibSceAvPlayer, libSceAvPlayerStreaming, libSceBeisobmf, libSceBemp2sys
FontslibSceFont, libSceFontFt, libSceFreeTypeOl, libSceFreeTypeOptOl, libSceFreeTypeOt, libSceWkFontConfig
ImageslibSceJpegDec, libSceJpegEnc, libScePngEnc
Data formatslibSceJson, libSceJson2, libSceXml, libSceCesCs (character encoding)
System and otherlibSceLibcInternal, libSceUlt, libSceRtc, libSceRudp, libScePsmKitSystem, libSceSystemGesture, libSceDepth, libScePadTracker, libSceMoveTracker

All files end in .sprx. The names tell you what each one handles: intro videos go through AvPlayer, sound effects and music through Ngs2 and the Audiodec family, text through the Font and FreeType families. So the symptoms of a missing module usually show up there too: no audio, black video, or missing text.

Why the full PS4 firmware is not needed

The PS4 system update is a single PS4UPDAT.PUP file containing the whole operating system. shadPS4's approach is "reimplement most things, fill gaps with individual modules," so it never loads the full system and only uses the few dozen modules above plus fonts.

Some PS4 emulators take the opposite route. Obliteration aims to run real PS4 system software, and Emulation General Wiki notes that it therefore needs PS4 firmware files. As of 2026-11-01 it cannot run any games.

Game formats: PKG, extracted folders, eboot.bin

NameWhat it isWorks in shadPS4?
PKGThe PS4 install package format used for PS Store games, updates and DLC. Its contents are encryptedNo since v0.8.0 (2025-04-23), when PKG support was removed
Extracted game folderThe installed game files, unencryptedYes, and it is the only format now
eboot.binThe game's main executable, in the folder rootRequired
sce_sys/param.sfoGame metadata: title, Title ID, versionRequired; shadPS4 uses it to identify the game
.sprx / .prxDynamic libraries. Game-bundled ones live in the game folder; system ones go in sys_modulesGame-bundled ones load automatically

Early shadPS4 could install some PKGs and shipped code to handle them. A March 2025 commit removed all of it, and the v0.8.0 release notes say "Removed fpkg support." Today shadPS4 does not handle encrypted install packages at all; it reads a plain folder.

CUSA IDs: a PS4 game's Title ID is four letters plus five digits. Bloodborne's European Game of the Year Edition, for example, is CUSA03173. PS4 does not encode the region in the prefix, so each regional release has its own ID. Built-in system apps use the NPXS prefix. shadPS4 game folders are usually named after this ID, and update folders, shader caches and per-game module folders are matched by it.

Where updates and DLC go

Updates sit at the same level as the game folder, named after the game folder plus -UPDATE (-patch also works). shadPS4 layers it on top of the base game at launch, so you do not merge files:

games/
├── CUSA00900/           ← base game (eboot.bin, sce_sys/…)
├── CUSA00900-UPDATE/    ← update
└── CUSA00900-mods/      ← optional: mod files

The same rule supports a -mods folder for mods, and there is a setting to ignore updates temporarily. Many compatibility reports note the game version they tested (Bloodborne 1.09, for example), and behavior can differ between versions.

DLC goes in a subfolder named after the game inside the add-on content directory. The default is user/addcont/<game ID>/, and the location can be changed in the launcher (QtLauncher) settings. The v0.21.0 release improved DLC (addcont) loading specifically. License-only DLC with no actual files (some unlock-type DLC) goes in user/licenses.

Multiple game folders: the launcher's "Paths" settings page lets you add several game directories and set separate directories for sys_modules, fonts and DLC.

Trophies

shadPS4 supports PS4 trophies. Showing them requires filling in the trophy key in user/keys.json. Without it, games still run normally.

Do PS5 emulators need any of this?

  • KytyPS5's README says external low-level emulation modules are "neither required nor planned."
  • SharpEmu's README says the project contains no copyrighted system firmware, game data or proprietary PlayStation assets.
  • PS5 games also use eboot.bin as the main executable. In July 2026, SharpEmu's early project notes described loading real games' eboot.bin and loading system modules (PRX and sys_module). Current status is in PS5 emulator status.

FAQ

What is sys_modules in shadPS4?

It is a folder in shadPS4's user directory (user/sys_modules) for individual PS4 system module files (.sprx), such as libSceNgs2.sprx for audio or libSceFont.sprx for fonts. The shadPS4 README lists 34 supported modules. Modules placed there are loaded directly (LLE); anything missing falls back to the emulator's own reimplementation (HLE).

Does shadPS4 need the PS4 firmware?

Not the full firmware update file. shadPS4 only loads individual modules from sys_modules and fonts from user/fonts. The README says these modules are needed to run games properly. If one is missing, shadPS4 falls back to HLE where it exists; where it does not, that feature is missing and some games break.

What is the difference between LLE and HLE?

In the shadPS4 wiki's words, LLE (low-level emulation) uses the console's firmware files directly, while HLE (high-level emulation) provides a reimplementation of the original module. HLE needs no console files and is usually faster, but unfinished functions break. LLE behaves like the real console but needs the module file.

Can shadPS4 install PKG files?

Not anymore. Early shadPS4 versions could install some PKGs, but v0.8.0 (2025-04-23) removed PKG support. It now only reads extracted game folders that contain eboot.bin and sce_sys/param.sfo.

What does CUSA mean?

A CUSA number is a PS4 game's Title ID: four letters and five digits, for example CUSA00900. Each regional release of a game has its own ID, and PS4 system apps use the NPXS prefix. shadPS4 uses this ID to match game folders, update folders and shader caches.

Where do shadPS4 updates and DLC go?

Put the update folder next to the game folder, named after it with -UPDATE (or -patch), for example CUSA00900 and CUSA00900-UPDATE side by side. shadPS4 layers it on automatically. DLC goes in a subfolder named after the game inside the add-on content directory (user/addcont by default), which you can change in the launcher settings.

Sources

  1. shadPS4 official site
  2. shadPS4 blog: v0.21.0 release (DLC loading)
  3. PS4 Developer Wiki: PKG files
  4. PS4 Developer Wiki: Title ID
  5. Wikipedia: ShadPS4
  6. KytyPS5 official site
  7. SharpEmu official site
  8. DSOGaming: PS5 emulator SharpEmu can now boot Demon's Souls Remake (2026-07)
  9. Emulation General Wiki: PlayStation 4 emulators (Obliteration needs PS4 firmware)

Related