如何把 PS5 可执行文件移植到 Linux 和 Windows:AnyPS5 原生移植完整指南
【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/GitHub_Trending/an/AnyPS5
如果你装过 PS5 模拟器,大概体会过画面刚起来、帧数就掉到个位数的滋味。AnyPS5 换了条路:不搭模拟机,而是把 PS5 可执行文件移植成 Linux 或 Windows 的原生程序,再配上项目自建的系统库,让游戏以接近本地代码的速度跑在 PC 上。
🎯 先下结论:是移植工具,不是模拟器
AnyPS5 属于"移植"而非"模拟":转换后的程序就是宿主持有的原生 ELF / PE 进程,不需要任何模拟层或常驻运行时。
| 维度 | 传统模拟器 | AnyPS5 |
|---|---|---|
| CPU 指令 | 逐条模拟或即时转译,常驻一个模拟运行时 | 直接改写为宿主原生指令,程序即普通本地进程 |
| 系统调用 | 由模拟器的系统 API 层代答 | 链接到项目自建的 prx 系统库(libkernel、libScePad 等) |
| 画面 | 图形指令重放到虚拟 GPU | RDNA 着色器编译成 SPIR-V,走宿主 Vulkan 原生管线 |
🗺️ 一条数据流看懂原理:输入、改写、补全、渲染
整条数据流只有四步,游戏文件进、原生程序出,没有旁路。
- 读入原料—— 一份干净的
input.elf加上sce_module/里的随包 ELF 模块,就是全部输入。好比搬家前先把家当清点成一张清单。 - 指令改写—— core/relinker 解析导入符号,按 NID(函数名的哈希值,相当于每个系统函数的"工号")完成重定位与动态链接;面向 Intel 机器可加
--to-intel,把 AMD 专属指令翻译成等价指令。好比把方言口译成普通话,意思不变、谁都听得懂。 - 系统补全—— 游戏运行时要调 libkernel 的线程与文件接口、libScePad 的手柄接口,这些全部由 core/libs/prx 下自建的 prx 库(PS5 共享库格式,后缀
.prx)顶替,由操作系统加载器按 NID 绑定。好比给新住户接通水电燃气,住户只管按开关。 - 画面渲染—— 游戏提交的 RDNA 着色器经 core/shader/recompiler 的中间表示与优化阶段编译成 SPIR-V(Vulkan 的通用着色器格式),再交给 Vulkan 出画面。好比字幕组把源语言实时翻成观众看得懂的一版。
🚀 从零跑起来:目录摆放、转换命令、按键自定义
从拿到文件到看见画面固定三步:摆好输入目录、跑一次转换、按布局放好运行时文件。
准备:把干净的input.elf放进source/,随包模块放同级的sce_module/(也接受sce_modules/、prx/,其他位置可用--sce-module-path指定父目录)。SELF 容器和容器内嵌套的模块都不接受,转换会直接报错。
转换:
relinker source/input.elf app.elf relinker --windows source/input.elf app.exe输出格式默认是 Linux ELF,文件名写成.exe也不会自动切到 Windows,必须显式加--windows。--rpath默认$ORIGIN/libs,即系统库默认从可执行文件旁边的libs/加载。
运行:输出文件旁摆成下面的布局,并把build/core/libs/libs/*.prx(与目标系统匹配)复制进libs/:
app.elf(Linux)或 app.exe(Windows) libs/ 构建出的 *.prx 系统库 app0/ 游戏资源 + 转换后的 sce_module/Linux 执行./app.elf,Windows 执行.\app.exe。注意libs/只放 AnyPS5 的系统库,把原始 PS5 的.prx塞进去会让 Windows 把它当 DLL 加载而失败;Windows 上自建的库还需要工具链mingw64/bin里的三个运行时 DLL 同目录。
按键自定义:手柄走 SDL 自动识别,Xbox 与 PlayStation 两种布局都认,摇杆和扳机键直通,支持热插拔,优先使用第一个被识别的手柄。键盘和鼠标则在可执行文件旁放一个anyps5-input.ini:同一动作的第一行覆盖内置键位,后面的行追加备选,例如Cross = KEY:F、LeftStickUp = KEY:I,还能设摇杆死区与MouseSensitivity。完整动作清单和语法见 docs/user/INPUT_MAPPING.md。
⚙️ 开发者环境速配:三行命令构建完整工具链
环境要求一句话:x86-64 机器加 CMake ≥ 3.22.1、Ninja、C++20;Linux 用 GCC/G++,Windows 目前只认 MinGW-w64 GCC 15.2.0,FFmpeg 在配置阶段自动下载。
克隆仓库git clone https://gitcode.com/GitHub_Trending/an/AnyPS5后进入目录执行:
git submodule update --init --recursive cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build --parallel && cmake --build build --target libs --parallellibs是独立 target,必须显式构建,否则不会产出 prx 系统库;只想要转换工具可加-DANYPS5_RELINKER_ONLY=ON跳过第三方依赖。细节与常见坑见 docs/dev/BUILD.md。
📊 现状与边界:已验证游戏、帧率与报错策略
已验证的项还不多,但每一款都达到可玩水平,而且项目对不支持的状态选择直接报错,而不是假装能跑。
- Dreaming Sarah(2D 平台游戏):Windows 下可正常游玩,GTX 1050 Ti 搭配 i5-7500 时稳定 60 FPS,Intel HD 620 集显为 36 FPS。
- DOOM Shareware(公开 homebrew):Windows 与 Linux 均可进入 E1M1 及后续关卡,移动、射击、存档读取都有实测;llvmpipe 纯软渲染时游戏内约 35 FPS。
- 报错策略:不支持或意外的状态一律抛出
std::runtime_error,what()打印到 stderr 后进程终止,兼容性卡点一眼可见,不会长时间"带病运行"。 - 边界提醒:Intel GPU 路径本身尚未官方验证;
--to-intel只能处理文件里现成的 AMD 专属指令,游戏运行时现生成的指令无能为力,这类作品仍需 AMD 主机。
❓ 你可能想问
Q:AnyPS5 是破解工具吗?会附带游戏文件吗?A:不是。项目定位是互操作、研究与保存用途,仓库里不含任何固件或受版权保护的库。你想移植的 PS5 程序得自己准备,并且要确保获取和使用方式合法。
Q:为什么它比模拟器顺畅?A:因为转换后的程序是原生代码,它调的系统函数由项目自建的库在你机器上编译实现,画面又走 Vulkan 原生管线,全程没有 CPU 模拟层。只需记住一点:首次运行要现编译并缓存着色器,第一帧可能慢,第二次起就顺了。
Q:我是 Intel 显卡,能玩吗?A:一半一半。--to-intel能把文件里的 AMD 专属指令改写成 Intel 可执行的等价指令,但游戏运行时动态生成的 AMD 专属指令它管不了,这类作品还是得 AMD 主机。另外 Intel GPU 这条路官方尚未验证,想要稳妥体验请留个心眼。
📖 源码阅读路线与关键文档索引
想读源码的话,按"转换管线 → 着色器 → 系统库"的顺序来效率最高:先看core/relinker/main.cpp和流水线把握主流程,再看core/shader/recompiler的 RdnaDecoder → ControlFlow → Translation → SpirvBackend 四级编译,遇到没实现的系统函数就去core/libs/prx对应目录核对实现。
文档索引:用法与运行时布局 docs/user/USAGE.md,构建与工具链 docs/dev/BUILD.md,兼容性实测清单 docs/user/COMPATIBILITY.md。
有想搬上 PC 的 PS5 程序时,照上面的三步先挑一款小体量游戏转一遍——流程很短,跑出来的第一屏就是最好的证明。
【免费下载链接】AnyPS5Tool for automatic PS5 executables porting to Linux and Windows项目地址: https://gitcode.com/GitHub_Trending/an/AnyPS5
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考