LoveGame爱游戏
简体中文

技术参考

shadPS4 的固件模块(sys_modules)是什么?LLE 和 HLE、游戏格式、更新补丁和 DLC 放哪

发布 更新 信息核对到 2026-11-019 分钟读完

要点

  • shadPS4 的 sys_modules 文件夹放的是 PS4 系统里的个别模块(.sprx 文件,比如 libSceNgs2.sprx、libSceFont.sprx),不是整个固件;README 列了 34 个支持的模块。
  • HLE 是模拟器自己重写系统库,LLE 是直接加载 PS4 原本的模块。shadPS4 大部分系统库用 HLE,放进 sys_modules 的模块会改走 LLE。
  • v0.8.0(2025-04)起 shadPS4 不再安装 PKG,只读解包后的游戏文件夹,文件夹里必须有 eboot.bin 和 sce_sys/param.sfo。
  • 更新补丁放在游戏文件夹旁边,命名为「游戏文件夹名-UPDATE」或「-patch」;DLC 放在 user/addcont 下和游戏同名的子文件夹里。
  • PS5 模拟器各有做法:KytyPS5 写明不需要、也不打算支持外部系统模块。
目录
  1. shadPS4 用到的几样东西
  2. HLE 和 LLE:模拟器怎么处理 PS4 的系统库
  3. sys_modules 支持哪些模块
  4. 为什么不需要整个 PS4 固件
  5. 游戏格式:PKG、解包后的文件夹、eboot.bin
  6. 更新补丁和 DLC 放哪
  7. 奖杯
  8. PS5 模拟器需要这些吗
  9. 相关教程

shadPS4 说的「固件模块」,是放在 sys_modules 文件夹里的 PS4 系统模块文件(.sprx),比如 libSceNgs2.sprx(音频)、libSceFont.sprx(字体),不是整个 PS4 固件。 shadPS4 大部分系统功能是自己重写的(HLE),放进 sys_modules 的模块会被直接加载(LLE),用来补上重写得还不完整的部分。游戏本身则是一个解包后的文件夹,里面有 eboot.bin 和 sce_sys/param.sfo;从 v0.8.0 起 shadPS4 不再安装 PKG。更新补丁、DLC 各有固定的放法,下面逐一说明。

以下按 shadPS4 v0.21.0(2026-10-30)核对。

shadPS4 用到的几样东西

东西是什么放在哪(默认)必需吗
游戏文件夹解包后的 PS4 游戏,含 eboot.bin、sce_sys/param.sfo任意位置,在启动器里添加为游戏文件夹必需
系统模块(.sprx)PS4 系统里的个别库文件user/sys_modules/README 说游戏正常运行需要;缺了部分游戏会出问题
字体PS4 系统字体user/fonts/ 下的 font、font2部分游戏需要
更新补丁游戏的版本更新游戏文件夹旁边的 <文件夹名>-UPDATE看游戏
DLC追加内容user/addcont/<游戏编号>/看游戏
着色器缓存模拟器自己生成user/cache/<游戏编号>自动生成

用户目录(user)在哪:如果 shadPS4 程序旁边有 user 文件夹就用它(便携模式);否则 Windows 是 %APPDATA%\shadPS4,macOS 是 ~/Library/Application Support/shadPS4,Linux 是 ~/.local/share/shadPS4。配置文件从 v0.16.0 起是 config.json(以前叫 config.toml,旧配置启动时会提示迁移)。

HLE 和 LLE:模拟器怎么处理 PS4 的系统库

PS4 游戏运行时会不停调用系统提供的库:画图、放音频、读手柄、解码视频、渲染字体……模拟器必须把这些库也「提供」给游戏。办法有两种,shadPS4 官方 wiki 是这么定义的:

HLE(高层模拟)LLE(低层模拟)
定义模拟器提供对原模块的重新实现直接使用主机的固件文件
好处不需要主机文件;通常更快;可以针对电脑优化行为和原机一致,没写完的功能也能用
坏处没实现完的函数会出错或被跳过需要对应的模块文件;只有部分模块能这样加载

shadPS4 的做法是以 HLE 为主:内核(libkernel)、显卡驱动(GnmDriver)、画面输出(VideoOut)、手柄(Pad)等约 80 个系统库都是模拟器自己写的。对一部分 HLE 还不完整的库(主要是音频解码、视频播放、字体、JSON / XML 解析这类),shadPS4 允许用 LLE 加载真实模块。

加载逻辑很简单:sys_modules 里有这个模块,就加载它;没有的话,有 HLE 版本就退回 HLE(日志里会写「switching to HLE」),连 HLE 都没有就空跑(日志写「No HLE available」),这时游戏可能缺声音、缺字幕、闪退或卡在某个画面。

另外,放进 sys_modules/<游戏编号>/ 子文件夹的模块只给那一款游戏用,可以针对个别游戏单独处理。sys_modules 的位置也能在设置里改。

sys_modules 支持哪些模块

shadPS4 README(2026-11-01)列出的 34 个模块,按名字大致归类:

类别模块
音频libSceAt9Enc、libSceAudiodec、libSceAudiodecCpu、libSceAudiodecCpuDdp、libSceAudiodecCpuDtsHdLbr、libSceAudiodecCpuHevag、libSceAudiodecCpuM4aac、libSceNgs2
视频播放libSceAvPlayer、libSceAvPlayerStreaming、libSceBeisobmf、libSceBemp2sys
字体libSceFont、libSceFontFt、libSceFreeTypeOl、libSceFreeTypeOptOl、libSceFreeTypeOt、libSceWkFontConfig
图片libSceJpegDec、libSceJpegEnc、libScePngEnc
数据格式libSceJson、libSceJson2、libSceXml、libSceCesCs(字符编码)
系统与其他libSceLibcInternal、libSceUlt、libSceRtc、libSceRudp、libScePsmKitSystem、libSceSystemGesture、libSceDepth、libScePadTracker、libSceMoveTracker

文件名后缀都是 .sprx。从名字就能看出各自管什么:开场视频归 AvPlayer,音效和音乐归 Ngs2 和 Audiodec 系列,文字显示归 Font、FreeType 系列。所以缺模块时的症状也多半落在这些地方:没声音、视频黑屏、文字显示不出来。

为什么不需要整个 PS4 固件

PS4 的系统更新包是一个叫 PS4UPDAT.PUP 的文件,里面是整个操作系统。shadPS4 走的是「重写为主、个别模块补位」的路线,不加载完整的系统,所以只用得到上面那几十个模块和字体。

另有一类 PS4 模拟器走相反的路:Obliteration 打算直接运行真正的 PS4 系统软件,Emulation General Wiki 指出它因此需要 PS4 的固件文件——但截至 2026-11-01 它还跑不了任何游戏。

游戏格式:PKG、解包后的文件夹、eboot.bin

名称是什么shadPS4 能用吗
PKGPS4 的安装包格式,PS Store 下载的游戏、更新、DLC 都是这种格式,内容是加密的v0.8.0(2025-04-23)起不能,官方移除了 PKG 支持
解包后的游戏文件夹安装后的游戏文件,未加密能,这是现在唯一的格式
eboot.bin游戏的主程序(可执行文件),在游戏文件夹根目录必须有
sce_sys/param.sfo游戏的元数据:标题、编号(Title ID)、版本号必须有,shadPS4 靠它识别游戏
.sprx / .prx动态库。游戏自己带的放在游戏文件夹里,系统的放在 sys_modules游戏自带的自动加载

shadPS4 早期能装一部分 PKG,源码里带着处理这类包的代码;2025 年 3 月的一次提交把这部分整体删除,v0.8.0 的更新说明写的是「Removed fpkg support」。所以现在的 shadPS4 不再处理加密的安装包,它读的就是一个普通文件夹。

CUSA 编号:PS4 游戏的 Title ID,格式是 4 个字母加 5 位数字,例如《血源》欧版年度版是 CUSA03173。PS4 不按前缀区分地区,同一款游戏不同地区的版本各有一个编号;系统自带的程序用 NPXS 开头。shadPS4 的游戏文件夹通常就用这个编号命名,更新文件夹、着色器缓存、单个游戏的模块文件夹也都靠它对应。

更新补丁和 DLC 放哪

更新补丁:放在游戏文件夹同一层,文件夹名是「游戏文件夹名」加 -UPDATE(也认 -patch)。shadPS4 启动游戏时会把它当作覆盖层叠在本体上,不用合并文件:

games/
├── CUSA00900/           ← 游戏本体(eboot.bin、sce_sys/…)
├── CUSA00900-UPDATE/    ← 更新补丁
└── CUSA00900-mods/      ← 可选:mod 文件

同样的规则还支持一个 -mods 文件夹放 mod。设置里也有选项可以暂时忽略更新补丁。很多游戏的兼容报告会注明测试时的游戏版本(比如《血源》1.09),版本不同表现可能不同。

DLC:放在「额外内容目录」下,和游戏同名的子文件夹里。默认是 user/addcont/<游戏编号>/,在启动器(QtLauncher)的设置里可以改位置。v0.21.0 的更新说明里专门改进了 DLC(addcont)的加载。只有授权、没有实际文件的 DLC(比如某些解锁类 DLC)放在 user/licenses。

多个游戏文件夹:启动器设置的「Paths」页可以添加多个游戏目录,sys_modules、字体、DLC 的目录也在这里单独设置。

奖杯

shadPS4 支持 PS4 的奖杯系统,显示奖杯需要在 user/keys.json 里填写奖杯用的密钥。没有它不影响游戏本身运行。

PS5 模拟器需要这些吗

  • KytyPS5 的 README 写明:外部的低层模拟模块「既不需要,也不打算支持」。
  • SharpEmu 的 README 写明项目不包含任何固件、游戏数据或 PlayStation 的专有资源。
  • PS5 游戏的主程序同样叫 eboot.bin。据游民星空 2026 年 7 月转述 SharpEmu 当时的项目说明,它已经能加载真实游戏的 eboot.bin,并支持加载系统模块(PRX 和 sys_module)。PS5 模拟器现状见 PS5 模拟器出来了吗。

相关教程

常见问题

shadPS4 的 sys_modules 是什么?

是 shadPS4 用户目录里的一个文件夹(user/sys_modules),用来放 PS4 系统里的个别模块文件(.sprx),比如负责音频的 libSceNgs2.sprx、负责字体的 libSceFont.sprx。shadPS4 README 列了 34 个支持的模块。放进去的模块会被直接加载(LLE),没放的就用模拟器自己重写的版本(HLE)。

shadPS4 需要 PS4 固件吗?

不需要整个固件(系统更新包)。shadPS4 只会加载 sys_modules 里的个别模块和 user/fonts 里的字体。README 说这些模块是让游戏正常运行所需要的;没放时,有 HLE 替代的会自动改用 HLE,没有替代的功能就会缺失,部分游戏因此出问题。

LLE 和 HLE 有什么区别?

shadPS4 wiki 的说法:LLE(低层模拟)是直接使用主机的固件文件;HLE(高层模拟)是模拟器提供对原模块的重新实现。HLE 不依赖主机文件、通常更快,但没写完的功能会出错;LLE 更接近原机,但需要对应的模块文件。

shadPS4 能装 PKG 吗?

现在不能。shadPS4 早期版本能安装一部分 PKG,v0.8.0(2025-04-23)起移除了 PKG 支持。现在它只读取解包后的游戏文件夹,文件夹里要有 eboot.bin 和 sce_sys/param.sfo。

CUSA 是什么?

CUSA 开头的编号是 PS4 游戏的 Title ID,格式是 4 个字母加 5 位数字,比如 CUSA00900。同一款游戏不同地区的版本各有一个编号;PS4 的系统程序用 NPXS 开头。shadPS4 的游戏文件夹、更新文件夹、着色器缓存都用这个编号来对应。

shadPS4 的游戏更新和 DLC 放在哪?

更新补丁放在游戏文件夹的同一层,文件夹名是游戏文件夹名加 -UPDATE(或 -patch),比如 CUSA00900 和 CUSA00900-UPDATE 并排,模拟器会自动叠加。DLC 放在额外内容目录(默认 user/addcont)下面和游戏同名的子文件夹里,路径可以在启动器的设置里改。

资料来源

  1. shadPS4 官网
  2. shadPS4 官网博客:v0.21.0 发布(DLC 加载)
  3. PS4 Developer Wiki:PKG files
  4. PS4 Developer Wiki:Title ID
  5. Wikipedia:ShadPS4
  6. KytyPS5 官网
  7. SharpEmu 官网
  8. 游民星空:全新 PS5 模拟器 SharpEmu 能启动《恶魔之魂:重制版》(2026-07-13)
  9. Emulation General Wiki:PlayStation 4 emulators(Obliteration 需要 PS4 固件)

相关