shadPS4 PS4 模拟器 Linux 编译教程:从零到启动第一局

shadPS4 PS4 模拟器 Linux 编译教程:从零到启动第一局

【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4

《血源诅咒》《如龙 0》《荒野大镖客:救赎》,这些 PS4 游戏现在都能在 Windows 笔记本或 Linux 桌面上启动。shadPS4 是一个用 C++ 写的 PlayStation 4 模拟器,支持 Windows、Linux 和 macOS,项目自己标注"早期开发阶段,别指望完美体验",但能跑的游戏已经是实打实的一串。

一分钟判断:这是内核,不是安装包

先说清它是什么、不是什么。这个仓库是模拟器的核心程序,编译出来的是一个命令行可执行文件,没有图形界面。只玩游戏的话,去下载官方的 QtLauncher 发行版,它有完整的 GUI;想改内核、提代码、看架构,才需要自己编译。

适合你的场景:你在 Linux 上,想体验自己构建模拟器的完整过程,或者打算给核心提补丁。不适合:只想点开菜单选游戏的人。

三条命令,从 clone 到第一帧

动手前装依赖。完整包列表在官方文档 documents/building-linux.md,Ubuntu 上大约是 build-essential、clang、cmake、libsdl2-dev、libvulkan-dev 等二十来个包。Ubuntu 24.04 默认仓库的 clang 还是 18 版,需要先加 apt.llvm.org 的源拿到 Clang 23:

sudo add-apt-repository 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-23 main' sudo apt update

然后 clone、配置、编译:

git clone --recursive https://gitcode.com/GitHub_Trending/sh/shadPS4 cd shadPS4 cmake -S . -B build/ -DCMAKE_C_COMPILER=clang-23 -DCMAKE_CXX_COMPILER=clang++-23 cmake --build ./build --parallel$(nproc)

三个参数各有讲究。--recursive不能省:所有第三方库都是子模块管理,漏掉它 clone 下来是残缺的,编译第一步就会失败。-DCMAKE_C_COMPILER=clang-23指定编译器,官方 Linux 构建和 CI 都用 Clang 23,换 GCC 可能撞上报不出的问题。最后那个--parallel$(nproc)是全线程编译,如果你的机器在这一步卡死,去掉它单线程慢慢跑。

编译完直接启动,游戏目录要先在 config.toml 里配好:

./build/shadps4 CUSA00900

CUSA00900是《血源诅咒》美版的 ID,命令会在你配置的安装目录里找到同名文件夹并启动。没有手柄也能玩:WASD 是左摇杆,IJKL 是右摇杆,F11 切换全屏,F10 看帧数。macOS 用户需要 26.0 以上系统且不支持 Intel Mac;Windows 的构建步骤见 documents/building-windows.md。

核心里最重的活:着色器重编译

对比一下就知道工作量在哪。PS4 的 CPU 是 x86-64,游戏机器码在 PC 上原生执行,操作系统那一层是重写实现的,代码在 src/core/libraries/kernel/。真正的大头在 GPU:PS4 的显卡是 AMD 的 GCN 架构芯片,代号"利物浦",它自己的指令集 PC 上的驱动看不懂。

解决方案是一条三段式流水线,代码在 src/shader_recompiler/。把 GCN 字节码想象成一种地方方言,重编译器就是翻译车间:frontend/先把方言逐条转写成谁都能读的中立文字(中间表示 IR);ir/passes/里二十多个优化 pass 像一排校对员依次过稿,消掉死代码、摊平条件、简化共享内存;最后backend/spirv/把稿子译成 Vulkan 驱动认得的语言 SPIR-V 交给显卡执行。这套设计参照了 yuzu 的 Hades 着色器编译器,优化器部分不用从零写,团队专心处理模拟 AMD GPU 本身的难题。

GPU 模拟本体在 src/video_core/:amdgpu/liverpool.cpp逐条解释 GPU 发出的寄存器级命令,renderer_vulkan/负责 PC 这一侧的命令队列、帧图和交换链。

跑游戏前最容易踩的坑

固件文件要你自己准备。

⚠️ 模拟器要加载一批 PS4 官方固件里的.sprx模块(libSceCesCs.sprx、libSceFontFt.sprx、libSceJson2.sprx、libSceUlt.sprx等三十多个),必须从你合法持有的 PS4 主机上 dump 后放进sys_modules文件夹。模拟器本体不带这些文件,缺了它们游戏跑不正常。

编译器选 Clang,别选 GCC。CI 只保证 Clang 23 构建的可靠性;GCC 14 虽被测试过但可能出问题,文档还要求提 bug 前先用 Clang 构建验证一次。

盲选游戏大概率浪费时间。项目维护着单独的游戏兼容性列表,逐个记录了各作的运行情况。挑游戏前先查,别拿没人验证过的作品试错。

Linux 上抓帧有环境限制。RenderDoc 不支持 Wayland,在 Wayland 会话下运行要记得设置SDL_VIDEODRIVER=x11,细节在 documents/Debugging/Debugging.md。

接下来去哪

项目仍处早期,复杂的标题不保证能跑,这是官方明说的局限。下一步很简单:去兼容性列表挑一款已验证能玩的游戏,跑起来;卡住了就把日志整理好丢进 issue,配合 Debugging 文档说明现象,维护者需要这些信息。

【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考