☰
WiiCompiled + Retro Rewind:如何将马里奥赛车Wii模组静态编译成原生PC可执行文件
2026/10/15 17:37:08 网站建设 项目流程

【免费下载链接】Wiicompiled

Wiicompiled

项目地址:https://gitcode.com/gh_mirrors/wi/Wiicompiled
点击查看免费下载

WiiCompiled 是一个静态重编译(static recompilation)项目,它把《马里奥赛车 Wii》(Mario Kart Wii) 的 PowerPC 代码在运行前整体翻译成 C++ 并编译为原生 PC 可执行文件——运行时无模拟器、无解释器、无 JIT、无任何 PowerPC。更厉害的是,它还能把 Retro Rewind 这个经典 MKW 模组(Code.pul)作为独立的静态档案(profile)一起翻译,直接产出第二个原生可执行文件 🏁

⚠️ 重要前提:仓库和发布包里不含任何任天堂代码、素材或游戏数据,你必须拥有自己合法转储的PAL 版RMCP01光盘镜像。整个翻译过程在你本机完成,数据不会被上传。


一、什么是静态重编译:和普通模拟器的区别

对比项传统模拟器(如 Dolphin)WiiCompiled 静态重编译
PowerPC 指令运行时解释或 JIT 翻译安装时一次性翻译为原生 C++
运行时开销有(模拟层始终存在)无(纯原生代码)
物理精度依赖模拟层实现100% 与真机一致(幽灵记录可互相验证)
帧率受模拟循环影响可解锁,120/144 Hz 显示器可插帧

翻译流程可以概括为一条流水线(详见 translator/README.md):

  1. 解析 DOL:解析 GameCube/Wii 的main.dol,解码 PowerPC 指令;
  2. IR/SSA 提升 + 类型推断:把汇编提升为中间表示并推断寄存器/变量类型;
  3. 输出 C++:每个可达函数都生成对应的 C++ 源码(外加 JSON 元数据);
  4. Clang 编译:把生成代码连同 runtime/ 运行时一起编译成单个可执行文件。

整个项目通过版本化的 YAML 清单描述游戏布局,翻译器本身不含任何游戏专属数据——MKW 的配置就是 projects/mkwii/recomp.yml 这份清单(包含入口点0x800060A4、main.dol与StaticR.rel的 SHA-256 校验钉、以及符号表 MAP.txt)。

二、装好就能玩的 6 大特性 🎮

  • 解锁帧率 + 插帧:原版锁死 60 fps,运行时可在帧间生成插值帧,高刷屏下更顺滑(实验性特性);
  • 任意宽高比:拖大窗口,摄像机实时自适应;
  • 原生渲染:图形层基于 aurora(GameCube/Wii 源码级兼容层,底层是 WebGPU/Dawn,支持 D3D12、Vulkan、Metal);
  • 高内部分辨率:数倍于主机的分辨率畅玩;
  • 音乐闪避:你在别处放歌、看视频时,游戏音乐自动让路(可关);
  • 游戏内设置栏:窗口聚焦时按F10,可调内部分辨率、FPS 计数器、四端口手柄映射、震动开关、音量等,全部即时写入Config.toml并在下次启动恢复。

三、系统要求与准备清单

项目要求
系统Windows 10/11 x64,或 macOS 14+ Apple Silicon,或 Linux x64/ARM64
GPUGTX 1650 / RX 6400 / Arc A310 及以上
CPUi5-8400 / Ryzen 5 2600(4c/6c,3.5GHz+)及以上
磁盘安装期约 20 GB,最终成品约 5 GB
游戏自己转储的干净 PALRMCP01镜像,支持 ISO / GCM / GCZ / CISO / WBFS / WIA / RVZ

注意:其他区服、打过补丁的可执行文件都会被直接拒绝——对错误的清单做翻译只会得到难调试的坏档。

四、最快上手方式:Wheel Wizard 一键安装

不想碰命令行?用模组管理器Wheel Wizard(它只是对本项目后端命令行的图形封装):

  1. 在 Wheel Wizard 设置中选择你的 PALRMCP01镜像;
  2. 打开WiiCompiled (beta)开关;
  3. 回到首页点安装即可,安装、更新、启动都托管给它。

🛡️ 安全提醒:只从本项目官方 Releases 页面获取构建。通过 Discord 或随机下载站流传的安装包不要碰!

五、Retro Rewind:模组也能"静态编译"

Retro Rewind 是 ZPL 维护的经典 MKW 模组合集。在传统方案里,它以Code.pul(Kamek/Pulsar 补丁)的形式运行时打补丁;而在 WiiCompiled 里,它可以被做成自己的静态档案:

  • Kamek/Pulsar 的模组代码与基础游戏一起被静态翻译,链接成一个独立的原生可执行文件RetroRewind,而不是安装一堆运行时补丁;
  • 档案配置位于 projects/mkwii/recomp.yml 的profiles.retro-rewind段:钉死Code.pul路径、模组基址0x81800000、链接基址,并启用 Retro-WFC 联机 payload;
  • 运行时由 retro_rewind_product.cpp 声明为独立产品Retro Rewind;
  • 联机所需的 Retro-WFC payload 会先下载并做 RSA 签名验证(逻辑见 RetroWfcPayload.cs),校验不过就不许用。

也就是说:一个游戏 + 一个模组 = 两个独立原生 exe,模组补丁不再"运行时生效",而是和主程序一样被编译进二进制。

六、从源码编译:四步完成静态重编译 🔧

需要自备工具链:(.NET 8 SDK)、CMake ≥ 3.16 + Ninja、Clang/LLVM(官方构建使用 LLVM-MinGW,目标x86-64-v3;macOS 用 Apple Clang)。

先克隆仓库:

git clone https://gitcode.com/gh_mirrors/wi/Wiicompiled

第 1 步:构建翻译器 CLI

dotnet build translator/Translator.sln -c Release

翻译器自带的默认测试套件不需要任何游戏数据,可以先跑一遍确认环境没问题:

dotnet test translator/Translator.sln -c Release

第 2 步:递归翻译整个 DOL(核心命令,输出 C++ 与元数据)

translator translate-recursive 0x800060A4 --project projects/mkwii/recomp.yml --outdir generated/functions

第 3 步:生成数据初始化与构建分片

translator generate-data-init --project projects/mkwii/recomp.yml translator emit-build-shards --project projects/mkwii/recomp.yml

若要一并编译 Retro Rewind,先执行translate-mod --profile retro-rewind把Code.pul静态翻译出来,再在emit-build-shards中带上--resolved-profile参数(完整参数对照 docs/building-macos.md 第五节)。

第 4 步:CMake + Ninja + Clang 编译成可执行文件

cmake -S runtime -B build -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build --target WiiCompiled RetroRewind

构建目标与平台约束在 runtime/CMakeLists.txt 中定义,仅支持 64 位 Clang 工具链与 Release 构建。

macOS (Apple Silicon) 用户有福了:仓库提供了完整的分步指南 docs/building-macos.md,涵盖 nodtool 解包光盘、校验main.dol/StaticR.rel的 SHA-256、翻译、CMake 编译直到写 Config.toml 并直接运行./build-macos/WiiCompiled的完整闭环,还有Launcher/local-build-macos.command一键脚本。

七、能用来移植其他游戏吗?

可以一半:翻译器对 DOL/REL 是通用的,projects/examples/generic-dol.yml 就是一份最小通用清单,指向任意合法 DOL 即可翻译。但一个能玩的移植还需要运行时——音频、输入、GX 图形、NAND 存储……MKW 的这套 runtime/ 才是大头。

八、常见问题 FAQ

为什么安装要那么久?因为项目不提供预编译好的翻译二进制。安装时必须在你的机器上对整盘游戏跑一遍静态重编译器 + C++ 编译,这是一次性成本。

物理引擎有多准?100%。幽灵(ghost)是基于输入序列的重放文件而非位置追踪,跨 Wii 真机 / Dolphin / WiiCompiled 的幽灵完全对得上,即物理逐帧一致。

崩了怎么办?错误被刻意设计得"响亮"而不静默吞掉。提交报告时请附上运行日志(Windows 位于%LOCALAPPDATA%\WiiCompiled\Logs)。

原版游戏 bug 会修吗?基础游戏不会——行为与真机一致是目标。Retro Rewind 本身就会修改部分基础游戏行为,属正常现象。

许可证?GNU GPLv3,使用它的任何 mkwii 发行版也必须 GPLv3。第三方组件清单见 THIRD-PARTY-NOTICES.md。


延伸阅读

  • 静态重编译器完整文档:translator/README.md
  • macOS 从零编译指南(含 Retro Rewind 与 Retro-WFC):docs/building-macos.md
  • 图形兼容层 aurora:aurora-main/README.md
  • MKW 项目清单与 Retro Rewind 档案:projects/mkwii/recomp.yml

从"运行时模拟"到"安装时编译",WiiCompiled 证明了:把一款完整 3D 赛车游戏连同它的热门模组整体静态编译成原生可执行文件,不只是极客的实验,而是已经可以上路的玩法。

【免费下载链接】Wiicompiled

Wiicompiled

项目地址:https://gitcode.com/gh_mirrors/wi/Wiicompiled
点击查看免费下载

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询