【免费下载链接】CTR-NitroFueled-PCCrash Team Racing: Nitro-Fueled (PS4) running natively on Windows 10/11. Windows fork of SacredFire, built on bbport and shadPS4. No game files included.项目地址https://gitcode.com/gh_mirrors/ct/CTR-NitroFueled-PC点击查看免费下载CTR-NitroFueled-PC 是一款让 PS4 游戏《Crash Team Racing: Nitro-Fueled》在 Windows 10/11 上原生运行的开源移植项目。它的核心亮点之一是内置的ISA 重写ISA Rewrite机制——专门拯救 Sandy Bridge、Ivy Bridge 这类缺少 MOVBE / BMI1 / LZCNT 指令集的老CPU让游戏不再因非法指令崩溃而是照常流畅运行。本文将带你弄懂它为什么崩、怎么修、修完后效果如何。一、为什么老CPU一运行就崩溃游戏代码要求过高游戏的可执行文件eboot.bin及其模块是用面向 PS4 Jaguar CPU 的工具链编译的其中混入了Haswell 世代才有的指令MOVBE大小端直接转换BMI1ANDN、BEXTR、BLSI/BLSMSK/BLSR等位操作LZCNT前导零计数而 Sandy Bridge / Ivy Bridge如 i5-3570、i7-3770只有 SSE4.2、POPCNTIvy Bridge 还有 AVX恰好缺了上面这些。CPU 一执行到这些指令就抛出非法指令异常游戏日志里留下一条STOP后直接退出对应上游 issue #31。 逐条模拟执行这些指令开销太大会拖垮整个游戏。所以项目选择了另一条路在加载时一次性改写指令。二、ISA重写原理把指令搬家而不是逐条模拟整个方案分两步全部在启动时自动完成1️⃣ 扫描并生成重写表Python 侧scripts/isa_rewrite.py 借助 iced-x86 解码链接后的镜像out/boot-linked.bin找出每一处问题指令按情况分成四类类别处理方式JMP指令 ≥5 字节在原地写入一条 5 字节跳转跳到专用桩代码stubJMP_RELOCATE4 字节指令且紧跟一条普通指令桩代码顺带把下一条也搬进去执行INT3其余 4 字节指令原地写int3运行到触发陷阱时再模拟UNSUPPORTED桩代码覆盖不了的编码如 LOCK 前缀、F16C 等仅报告不致命扫描结果写入out/isa-rewrite.bin格式名 BBISA1开头是镜像大小和 SHA-256 校验之后每处指令一条 64 字节的记录描述寄存器、内存操作数、原始字节等。校验机制保证了表和图片严格对应防止改错位置。2️⃣ 加载时打补丁C 侧加载器读取重写表src/isa_rewrite.h 中的isa_table_load/isa_rewrite_apply先核对 SHA-256再为每处指令分配一个机器码桩函数桩函数保存客户机寄存器 → 调用模拟器执行这一条指令 → 跳回原处。实现见 src/isa_rewrite.c补丁逻辑与 src/isa_emulate.c单条指令模拟。关键设计细节模拟器用-mgeneral-regs-only编译绝不触碰 XMM/YMM 浮点寄存器因为它运行在客户机代码内部极少数位置CTR 1.21 中仅 8 处走int3陷阱异常处理器识别到地址后模拟执行、恢复标志位、从下一指令继续入口在 src/probe.c打补丁发生在加载阶段、镜像保护之前对游戏运行期几乎零开销——绝大多数指令只是多了一次普通跳转。三、普通用户无需任何操作自动检测、按需生效这是最省心的部分只有检测到 CPU 缺少指令集时重写才会发生。run.py 启动时会先跑一遍sacredfire.exe --cpu-features快速自检 CPU 功能若报告缺少 MOVBE / BMI1 / LZCNT则调用scripts/isa_rewrite.py生成重写表run.py并把--isa-rewrite传给加载器新CPUHaswell 及以后跳过整个流程启动速度不受任何影响。老CPU上启动成功时日志会打印一行汇总例如ISA: CPU lacks MOVBE, BMI1, LZCNT: 4243 sites rewritten (4004 jmp, 231 relocated, 8 int3), 0 skipped依赖提示重写需要 Python 包iced-x86pip install iced-x86。Windows 绿色版 ZIP 已内置该依赖下载解压即可自行编译的用户建议使用 python.org 版 Python 3MSYS2 的 Python 无法安装该 wheel。四、实测效果Ivy Bridge 上的表现项目文档 docs/sacredfire/17-isa-rewrite.md 记录了真实测试项目数据测试硬件i7-3770Ivy Bridge RX 580Windows重写站点总数4243 处MOVBE 391、BMI1 3528、LZCNT 324处理方式4004 处跳转、231 处重定位、8 处 int3失败/不支持0 unsupported、0 skipped结果游戏正常启动至标题画面并运行也就是说曾经启动即 STOP的 CPU现在可以完整进入游戏。对老平台玩家来说这是一次实打实的复活。五、进阶调试三个环境变量开关想折腾一下这些开关都写在文档的诊断一节docs/sacredfire/17-isa-rewrite.md变量作用BB_ISA_REWRITE1强制在任何 CPU 上生成并应用重写表测试用BB_ISA_REWRITE0彻底禁用重写第一条 MOVBE/BMI1/LZCNT 会再次让进程崩溃BB_SKIP_CPU_CHECK1跳过致命指令集SSE4.2、POPCNT、AVX检查另外--cpu-features参数会打印CPU: missing ...或CPU: complete当缺少任何重写表都覆盖不了的指令集时退出码为 20逻辑见 src/cpu_check.c。六、核心文件路径速查 ️原理文档docs/sacredfire/17-isa-rewrite.md指令扫描脚本scripts/isa_rewrite.py加载器补丁src/isa_rewrite.c 与头文件 src/isa_rewrite.h单指令模拟器src/isa_emulate.c接口定义见 src/isa_emulate.hCPU 功能检测src/cpu_check.c启动编排run.py单元测试tests/test_isa_rewrite.py七、常见问题Q我的新电脑也需要装 iced-x86 吗A不需要。重写表只在 CPU 缺少 MOVBE/BMI1/LZCNT 时才生成现代 CPU 完全跳过。Q重写会影响性能吗A影响很小。每处改写点只是多一跳间接跳转或重定位后原地执行4243 处对整体帧率的影响微乎其微实测可正常运行游戏。QLinux 版也支持吗A重写逻辑是跨平台的Windows 与 Linux 的信号处理分别实现见 src/probe.c但当前 Linux AppImage 尚未打包 iced-x86需要重写的老CPU用户会看到原因日志。总结CTR-NitroFueled-PC 的 ISA 重写用加载时一次性改写 桩代码模拟的策略把老CPU缺的 Haswell 指令集补齐了——无需用户配置、对现代CPU零负担让 Sandy/Ivy Bridge 也能加入这场氮气加速的赛车之旅。赞分享【免费下载链接】CTR-NitroFueled-PCCrash Team Racing: Nitro-Fueled (PS4) running natively on Windows 10/11. Windows fork of SacredFire, built on bbport and shadPS4. No game files included.项目地址https://gitcode.com/gh_mirrors/ct/CTR-NitroFueled-PC点击查看免费下载相关推荐CTR-NitroFueled-PC20个C模块如何替代PS4系统库让PS4赛车游戏在PC全速运行CTR NitroFueled PC20个C模块如何替代PS4系统库让PS4赛车游戏在PC全速运行 CTR NitroFueled PC 让《Crash TNS-USBloader命令行模式详解自动化安装与批量处理NS USBloader命令行模式详解自动化安装与批量处理 NS USBloader是一款功能强大的开源工具支持NSP文件的安装、RCM payload注入桌面应用开发工具CLICTR-NitroFueled-PC游戏Dump指南CUSA13795与1.21更新文件准备的完整说明CTR NitroFueled PC游戏Dump指南CUSA13795与1.21更新文件准备的完整说明 CTR NitroFueled PC 让 PS4上一篇终极指南Jellyfin Media Player - 跨平台高清影音播放解决方案下一篇Datart数据可视化平台快速安装与配置完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?