技術參考
shadPS4 的韌體模組(sys_modules)是什麼?LLE 和 HLE、遊戲格式、更新補丁和 DLC 放哪
要點
- 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 寫明不需要、也不打算支援外部系統模組。
目錄
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 能用嗎 |
|---|---|---|
| PKG | PS4 的安裝包格式,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 Windows 安裝教學
- 電腦夠不夠用:PS4 模擬器配備需求
- 模擬器怎麼選:2026 年 PS4 模擬器推薦
- 為什麼 PS4 能這樣模擬:為什麼 PS4 能模擬、PS5 難
- 法律問題:PS 模擬器合法嗎
常見問題
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)下面和遊戲同名的子資料夾裡,路徑可以在啟動器的設定裡改。