
本文复盘了将 F-Zero X 解编译项目(G-Diffuser)移植至任天堂 3DS 平台的全过程。项目由一人主导,通过长期运行的 AI 会话协调多个代理完成,最终发布的 v1.0.0 版本涵盖了两个开发阶段。
第一阶段历时 24 天(2026 年 8 月 11 日至 9 月 3 日),重点实现了在新款 3DS 上以 60 帧运行裸眼 3D 效果。第二阶段历时 43 天(2026 年 9 月 7 日至 10 月 19 日),增加了对旧款 3DS 的支持、引入了原生渲染器,并整合了扩展套件功能。项目从最初的黑屏状态,发展为覆盖新旧两款主机及是否搭载 64DD 扩展套件的四种发布形态,实现了从模拟器到真机原生立体竞速的突破。
核心性能与成本数据
在第一阶段末期,新款 3DS 的硬件中位数帧率达到 59.6 fps(完整大奖赛模式),较初始模拟器测试的 12-20 fps 有显著提升。在 30 台机器的众测中,第 10 百分位下限为 51.4 fps。达到 60 帧上限的帧数占比从一周前的 14% 提升至 53%。
第一阶段共消耗 31.7 亿令牌,按公开 API 列表价格计算,费用约为 4,974 美元。期间涉及 3DS 移植的提交次数达 250 次,port/3ds 目录下代码行数加补丁共计 15,039 行。
v1.0.0 版本特性
v1.0.0 从单一源码树生成了三个主机版本,均支持通过 HOME 菜单 (.cia) 或自制软件启动器 (.3dsx) 启动:
- 基础版本:适用于旧款 3DS/2DS 和新款 3DS/New 2DS XL。
- 扩展版本:专为搭载 64DD 扩展套件的新款 3DS 设计,包含赛道编辑器和载具创建器(需用户自行提供磁盘镜像)。
所有版本均从 SD 卡读取预烘焙资源,不附带任何 ROM 或磁盘镜像文件。游戏功能完整,包括大奖赛、计时赛、练习赛、死亡竞赛及载具编辑器。音频由真实 DSP 处理,支持立体 3D 滑块调节,底部屏幕提供三种 HUD 布局。系统层面完美支持 HOME 键挂起、恢复、休眠及关机。
在 v1.0.0 中,新旧款 3DS 默认均使用原生渲染器([perf] preset = auto)。新款 3DS 保持了第一阶段达成的原生 60 帧表现;旧款 3DS 则通过新的渲染路径实现了相近效果。
技术栈与架构
- decomp:基于 F-Zero X 解编译项目,上游代码未改动,仅应用补丁堆栈。
- libultraship:N64 运行时库,负责绘制菜单和非比赛画面,包含针对 devkitARM 的 newlib 修复。
- port/3ds:包含 citro3d 渲染后端、立体视觉、音频、输入管理及打包工具等,第一阶段代码量超 1.5 万行。
- 原生渲染器:第二阶段新增,拥有独立解释器,跳过逐帧显示列表遍历,成为 v1.0.0 的默认渲染方式,显著提升了旧款主机的竞争力。
开发历程回顾
第一阶段:从黑屏到 60 帧
开发始于 2026 年 8 月中旬,团队解决了启动 Bug 并在模拟器中实现首次运行。随后修复了雾气、HUD 等视觉问题,并在真机上成功运行。通过多代理集群部署,启用了立体视觉和触摸菜单。关键突破在于优化了生命周期管理,解决了 HOME 键崩溃问题,并通过桥接输出缓存方案和对子显示列表的分类记忆,锁定了 60 帧的大奖赛模式。最后,通过将渲染线程移至核心 2 并引入前瞻模式,中位数帧率稳定在 59.6 fps。
第二阶段:适配旧款主机与原生渲染器
此阶段原非计划内,旨在攻克旧款 3DS 的性能瓶颈。开发者通过压缩构建体积、流式传输音频等手段,使游戏在内存受限的旧款主机上启动。初期帧率仅约 10 fps,且存在慢动作现象。经分析,瓶颈在于指令缓存缺失而非指令数量。随后诞生的“原生渲染器”围绕缓存重构,将中位数帧时间降至 16.5 毫秒。最终,通过逐眼重提交等技术,旧款 3DS 在大多数赛道也能达到 59-60 fps 的 3D 效果。此外,64DD 扩展套件功能经过验证后上线,底部屏幕 DASH 仪表盘也正式投入使用。