模擬 PlayStation 4 的難度,遠低於大多數人的預期——因為 PS4 本身就跑在 x86-64 架構上。shadPS4 就是把這個洞挖到底的專案:不需要 ISA 翻譯層、不需要動態再編譯,直接執行 PS4 的原生指令集,然後把 GPU 呼叫用 Vulkan 重新實作出來。
30.8k stars、多平台支援(Windows、Linux、macOS、FreeBSD)、能跑 Bloodborne。這個專案值得認真看一眼。
PS4 模擬為什麼比 PS3 容易
PS3 用的是 Cell 處理器——IBM 和 Sony 聯合設計的異構多核心架構,和 x86 差異巨大,模擬成本極高,RPCS3 花了超過十年才把相容性做到今天的水準。
PS4 的決策完全不同:採用 AMD Jaguar x86-64 CPU + AMD GCN GPU。這個選擇讓索尼更容易移植 PC 遊戲,但也讓模擬器開發者省去最麻煩的一塊:
沒有 ISA 重新編譯的必要。 PS4 遊戲的 CPU 指令可以直接在 x86-64 主機上執行,模擬器的主要工作變成:作業系統 API 的 shim 層、GPU 指令集轉換(GCN → Vulkan)、檔案系統和記憶體配置的模擬。
架構:98.5% C++,全 Vulkan
整個 codebase 的技術選擇相當純粹:
語言:98.5% C++,其餘是少量 GLSL(shader 程式碼)和 CMake。沒有 Rust、沒有中介層,就是 C++ 硬做。
GPU:全面採用 Vulkan API。這讓 shadPS4 在 Windows、Linux、macOS(透過 MoltenVK 橋接)上都能用同一套渲染後端。Metal 在 macOS 上的支援也在開發中。
CPU:因為 x86-64 對齊,CPU 模擬的複雜度大幅降低。主要工作在於 kernel 呼叫的重新導向和 PS4 特有 syscall 的實作。
韌體:這是唯一的灰色地帶。shadPS4 需要從真實 PS4 主機 dump 出來的韌體模組才能正確執行遊戲。這部分不在 repo 裡,使用者必須自己準備。
可運行的遊戲
官方測試通過的 AAA 標題包括:
- Bloodborne — 對很多人來說,這個名字就夠了
- Dark Souls Remastered
- Red Dead Redemption
- Detroit: Become Human
- Persona 5 Royal
相容性清單持續更新,社群在 GitHub Issues 和 Discord 上追蹤每款遊戲的狀態。目前仍有很多遊戲不可玩或有明顯 bug,但能跑 Bloodborne 這件事本身就是一個信號:核心渲染和 CPU 模擬已經到達可用的水準。
多平台支援
# 從 source build(以 Linux 為例)
git clone https://github.com/shadps4-emu/shadPS4
cd shadPS4
cmake -S . -B build/ -DCMAKE_BUILD_TYPE=Release
cmake --build build/ --parallel $(nproc)
# 執行(CLI 模式)
./build/shadps4 /path/to/game.pkg
Windows 使用者可以直接下載 Release 頁面的預編譯執行檔。macOS 需要 MoltenVK,FreeBSD 支援也已在主線。
另外有獨立的 Qt-based GUI launcher,讓遊戲庫管理和設定調整更直觀——對不想用 CLI 的使用者來說這是更實際的入口。
開發團隊與授權
這是社群驅動的專案,核心貢獻者包括 georgemoralis(主要架構)、psucien(GPU 子系統)、viniciuslrangel(多平台支援),以及數十位社群貢獻者。
授權是 GPL-2.0——任何使用這個 codebase 的衍生作品都必須同樣開源。這個選擇讓商業公司無法悄悄拿走成果,確保改進留在社群。
和 RPCS3 的比較
| shadPS4 | RPCS3 | |
|---|---|---|
| 目標主機 | PlayStation 4 | PlayStation 3 |
| CPU 架構 | x86-64(直接執行) | Cell(需要模擬) |
| 開發難度 | 相對低 | 極高 |
| 成熟度 | 早期但進展快 | 十年打磨、相容性高 |
| GPU 後端 | Vulkan | Vulkan + OpenGL |
RPCS3 是迄今技術難度最高的家用主機模擬器之一,shadPS4 則是站在 PS4 架構設計的便宜上快速推進。兩者沒有競爭關係,面對的是完全不同的工程問題。
侷限與現實
幾個需要清楚認識的點:
韌體依賴:必須自行 dump PS4 韌體,這意味著你需要一台真實的 PS4 主機。這一步的合法性取決於你所在地區的法律,專案本身不提供韌體。
相容性還不完整:大量遊戲仍無法正常運行或有嚴重 bug。「能跑 Bloodborne」不等於「能跑所有 PS4 遊戲」。
效能調校:模擬器的效能最佳化還在早期階段,部分遊戲在高端硬體上也會有掉幀問題。
DRM 遊戲:帶有 PS4 加密保護的正版遊戲需要額外的解密步驟,這塊更複雜。
為什麼值得關注
shadPS4 在技術上做了一件有趣的事:它讓人重新思考「模擬」這個詞的邊界。當目標硬體的 ISA 和主機完全一致時,「模擬器」做的更像是一個相容層——把 PS4 的 syscall 和 GPU 呼叫重新對應到主機作業系統和 Vulkan API。
這個設計的代價是韌體依賴,收益是開發效率和跨平台可移植性都比傳統模擬器高很多。三年不到,從零到能跑 Bloodborne,這個速度說明架構選擇有多重要。
GPL-2.0、C++、Vulkan、社群驅動——如果你對低層系統工程或圖形 API 有興趣,shadPS4 的 codebase 是一個值得研究的真實案例。