【50.8k Star】在Windows和Linux上运行PS5游戏的技术革命
原创
骨哥说事
骨哥说事
骨哥说事
2026年11月3日 16:49
上海
去阅读
| *声明:*文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
防走失:https://gugesay.com/
不想错过任何消息?设置星标↓ ↓ ↓
当主机游戏遇到开源解决方案
对于众多游戏爱好者和技术玩家而言,能否在PC上运行索尼PlayStation 5独占游戏一直是一个梦想与挑战并存的话题。传统上,这一目标需要通过完全模拟整个PS5硬件来实现,计算开销巨大。
而今,一个名为AnyPS5的开源项目正以截然不同的技术路径挑战这一难题——不是模拟整个硬件,而是将PS5游戏二进制文件直接转换为本地Linux和Windows可执行程序。
AnyPS5已经在GitHub上收获超过50,000星标,吸引了全球数百名贡献者的参与,其技术独特性和潜在影响力不容小觑。本文将深入剖析这一工具的技术原理、当前进展以及它给游戏移植领域带来的启示。
从模拟转向二进制转换
CPU端:指令直接执行的优势
AnyPS5最根本的技术洞察在于:PS5使用与PC相同的x86-64架构处理器(AMD Zen 2)。这意味着PS5游戏的机器指令理论上可以直接在PC上执行,而无需经过指令集级别的模拟转换。
项目架构文档揭示了这一核心思想:阻碍PS5游戏在PC上运行的不是CPU指令本身,而是围绕这些指令的一切——文件加载机制、导入函数地址解析、入口点调用方式、线程本地存储分配、以及库函数调用约定。这些正是AnyPS5重链接器(relinker)需要解决的问题。
重链接器:重新构造程序加载环境
重链接器作为项目的核心组件,执行以下关键转换步骤:
- 解析PS5 ELF文件:读取原始游戏镜像和模块文件
- 重新映射动态链接关系:将PS5特定的动态链接格式转换为Linux/Windows标准的动态链接格式
- 构造新的加载程序头部:创建目标操作系统能识别的可执行文件头部信息
- 生成运行时存根:插入必要的启动代码以适配目标环境
这一过程的特别之处在于,游戏原本的CPU指令基本保持不变,只是将程序加载的环境彻底重塑,使其适应PC操作系统。
这种\"二进制翻译+动态链接\"的方法相比传统模拟大幅减少了运行时开销。
GPU端:从RDNA 2到Vulkan的桥梁
如果说CPU端是\"链接器\"的工作,那么GPU端则更像是\"驱动程序\"的任务。PS5的GPU基于AMD RDNA 2架构(gfx1013),游戏通过PM4数据包与GPU通信,这些数据包直接写入普通内存中的命令缓冲区。
AnyPS5的图形系统需要解决几个关键技术挑战:
1. 内存共享机制
在PS5上,CPU和GPU共享同一地址空间。但在PC环境中,Vulkan GPU无法直接访问游戏堆中的任意指针。AnyPS5采用了多种技术解决这一跨平台统一内存问题:
- Linux:通过
udmabuf接口导入访客内存 - Windows:使用
VK_EXT_external_memory_host扩展和GetWriteWatchAPI跟踪已写入页面 - 镜像对比机制:对于Windows拒绝导入的可执行文件镜像,使用\"镜像\"机制,每64KB对比一次可写部分
2. 着色器重新编译
这是\"原生\"概念停止的地方。PS5游戏的着色器是RDNA机器码,NVIDIA或Intel的PC GPU无法直接运行,即使是AMD的PC GPU也无法通过Vulkan接收原始ISA指令。因此,AnyPS5的着色器重新编译器将每个游戏绑定的着色器重新编译成SPIR-V格式。
重新编译流程相当复杂且高度优化:
- RDNA解码器:将数据字流转换为指令
- 图形构建器:构建控制流图
- 结构转换器:将RDNA的任意分支转换为SPIR-V所需的结构化选择和循环
- 指令翻译器:将RDN降低到中间表示
- 优化阶段:SSA构造、常量折叠、死代码消除等
- 资源追踪:解析着色器读取的内存资源以转换为Vulkan绑定
- SPIR-V后端:生成最终的Vulkan兼容模块
一个有趣的翻译挑战涉及到wave(波)操作。RDNA着色器以32或64个lane(通道)的锁步方式运行,许多控制流程都作为标量操作写在EXEC位掩码上。SPIR-V没有这种寄存器,AnyPS5将EXEC建模为每个调用的布尔值,当着色器将lane掩码作为值读取时,它会通过子组投票重新构建。
从概念验证到实际游玩
根据AnyPS5的官方兼容性列表,目前已有多个PS5游戏在不同程度上可在PC上运行:
可玩类别
- 《星露谷物语》:在特定分支上可达到约60FPS的游戏体验
- 《Balatro》:在测试中可达到约60FPS的完整游戏体验
- 《毁灭战士》(自制移植版):在RTX 3060/4070/4070 SUPER上可玩,能够进入关卡、菜单等
游戏内但性能有限
- 《GTA V》:在性能模式下,使用测试分支可达约27-28FPS(序章)
- 《漫威蜘蛛侠2》:在测试分支上可在菜单中选择关卡,性能约为11FPS
- 《神之浩劫:诸神黄昏》:有报告称在特定条件下可玩
启动但未进入游戏
- 《赛博朋克2077》:已能到达ELF入口点并通过早期文件探测
- 《艾尔登法环》:能够启动但未显示菜单或视频
- 《瑞奇与叮当:时空裂缝》:能够显示启动画面但未进入游戏
需要注意的是,这些兼容性结果高度依赖于特定分支和本地补丁,普通用户获得的体验可能会有较大差异。
实际使用:如何开始尝试
根据官方使用指南,运行一个PS5游戏大致需要以下步骤:
三个核心要求
- 合法的可执行文件输入:需要原始的解密ELF文件和任何捆绑模块
- 正确的目标输出:使用
--windows参数生成Windows PE格式,或默认生成Linux ELF格式 - 游戏特定的兼容性覆盖:成功生成二进制文件不等同于游戏能正常游玩
准备步骤
- 获取游戏文件:将游戏的可执行文件和模块文件夹放在同一级目录
- 运行重链接器:根据目标操作系统选择相应的重链接器版本
- 复制必要的库文件:将PRX系统库归档解压到libs目录
- 复制游戏数据文件:手动将游戏的其他文件(数据、资源等)复制到app0目录
AnyPS5还提供了网页转换器,用户可以直接在浏览器中尝试转换,文件保持在本地设备上,无需下载完整工具链。
技术挑战与局限性
兼容性问题
AnyPS5当前面临的主要挑战包括:
- 系统库实现不完整:PS5使用大量专有库函数,这些函数的重现是实现兼容性的关键
- 着色器重新编译限制:某些RDNA2特定功能可能难以完美转换为SPIR-V
- 内存管理差异:统一内存模型在不同操作系统上的实现差异
- 驱动程序依赖:需要目标操作系统提供完整的Vulkan支持
法律与道德考量
项目官方明确声明:
- 不包含、分发或要求任何版权软件、固件、加密密钥或专有库
- 仅为互操作性、研究、保存和兼容性目的设计
- 无任何索尼官方授权或认可关系
社区生态与未来发展
社区贡献力量
AnyPS5已经有758名贡献者,项目在短时间内获得了大量关注和技术贡献。这种开源协作模式使得系统库的实现能够快速推进,兼容性列表也在持续更新。
技术路线图展望
根据项目技术债务文档和社区讨论,未来的技术发展方向可能包括:
- 提前着色器编译:将运行时着色器重新编译迁移到重链接阶段
- 更多系统库实现:覆盖更多PS5专有库函数
- 性能优化:减少GPU驱动程序开销,提高内存管理效率
- 易用性改进:简化用户界面和工作流程
技术革新还是短期实验?
AnyPS5代表了游戏移植技术的一条全新路径——与其复制整个硬件的运行环境,不如适配软件到新硬件环境。这种方法的潜在优势在于性能开销更低、运行效率更高,但挑战在于需要逆向工程大量专有接口和功能实现。
对于技术爱好者和游戏开发者而言,AnyPS5不仅是潜在的游戏运行工具,更是一个宝贵的研究平台,有助于理解现代游戏机的软件架构和跨平台兼容性问题。
正如一位技术分析者所言:\"如果CPU端是链接器的工作,那么GPU端则像是驱动程序的冒险\"。AnyPS5正在这双重技术前沿上探索的可能性,无论其最终能否成为主流PS5游戏移植方案,都已为开源逆向工程和跨平台游戏开发留下了重要足迹。
参考资料
-
来源:GitHub - boykopovar/AnyPS5官方仓库
-
https://github.com/boykopovar/AnyPS5/
-
参考:Tom's Hardware - Open-source AnyPS5技术分析报道
-
https://www.tomshardware.com/video-games/playstation/open-source-anyps5-dumps-emulation-to-run-playstation-5-console-games-natively-on-pc-amd-zen-2-architecture-enables-proton-like-binary-translation-for-windows-and-linux
-
参考:AnyPS5技术深度分析文章
-
https://ai.thesatyajit.com/articles/anyps5-static-relinker
-
参考:AnyPS5官方兼容性列表
-
https://anyps5.dev/games/
-
参考:DeepWiki - AnyPS5技术文档
-
https://deepwiki.com/boykopovar/AnyPS5/
-
参考:AnyPS5官方网页转换器
-
https://boykopovar.github.io/AnyPS5/
- END -
感谢阅读,如果觉得还不错的话,动动手指给个三连吧~
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论