本页目录

《塞尔达传说:众神的三角力量》C 语言重制(Zelda3)

zelda3 · snesrev/zelda3

对《塞尔达传说:众神的三角力量》的逆向工程 C 语言重实现,约 7–8 万行代码,重新实现原作全部部分,可从开头玩到通关。需自备 ROM 提取关卡与图像资源,提取后即不再需要 ROM。复用 LakeSnes 的 PPU 与 DSP 实现并做了速度优化,也可...

动作游戏 RPG 无明确引擎 C 背包系统 存档系统 游戏状态管理 音频系统 专家
★ Stars 5,008 Forks 477 License 未明确 更新 2026-11-13

国内开发环境适配

Windows
官方声明支持
Linux
未知
macOS
未知
引擎 / 框架:无明确引擎 暂无中文教程标记 未标记站长实测
需自备美版 zelda3.sfc ROM 用于提取资源;构建依赖 Python、TCC、SDL2 等,相关工具需从 GitHub 等站点下载,国内网络可能较慢。首次需运行资源提取脚本生成 zelda3_assets.dat。非 Windows 平台的构建步骤需查阅 BUILDING.md,待核验。

中文项目介绍

Zelda3 是对《塞尔达传说:众神的三角力量》(Zelda 3 - A Link to the Past)的一次逆向工程式重实现。项目用 C 语言重写了原作几乎全部逻辑,代码规模约 7–8 万行,目标是从游戏开头一路玩到通关,而不是做一个只能演示片段的样例。

与很多「引擎复刻」不同,它保留了原作的数据格式:运行前需要玩家自备一份 ROM,用来提取关卡、图像等游戏资源;资源提取完成并生成资源包后,ROM 就不再被需要。开发过程中参考了 spannerism 的日版《塞尔达传说 3》反汇编,以及其他记录了大量函数名与变量含义的社区资料,这也是项目能够一函数一函数推进的基础。

技术架构分析

技术实现要点

项目在底层没有从零手写一套 SNES 模拟器,而是复用了 LakeSnes 的 PPU(图像处理单元)与 DSP(声音处理单元)实现,并在此基础上做了大量速度优化,使其足以支撑完整的游戏运行。

为了证明重写后的 C 代码行为与原作一致,项目提供了一条「对照验证」路径:可以把原始机器码与 C 实现并排运行,在每一帧结束后比较 RAM 状态,从而确认移植逻辑是否正确。启动时若在命令行给出 ROM 文件路径,程序也会在运行时逐帧校验 C 代码与原始行为是否吻合。这种以状态比对为核心的验证方式,是该项目在工程质量上比较有代表性的做法。

在 64 位 Windows 上构建

README 说明目前需要自行编译,并给出了 64 位 Windows 的完整步骤:

  1. 安装 Python(安装时勾选「Add to PATH」)。
  2. 在 GitHub 页面点击「Code > Download ZIP」下载源码并解压。
  3. 将美版 ROM 命名为 zelda3.sfc,放入源码目录。
  4. 下载 TCC 与 SDL2 开发包,分别解压到 third-party 子目录。
  5. 双击主目录下的 get_python_libs.bat。
  6. 双击 extract_assets.bat,生成 zelda3_assets.dat。
  7. 双击 run_with_tcc.bat,编译出 zelda3.exe 并启动游戏。
  8. 用文本编辑器修改 zelda3.ini 完成配置。

其他平台与编译器的说明写在仓库的 BUILDING.md 中,使用前建议先对照阅读。

补充说明

在原作之外的额外特性

README 明确列出了一些原版游戏并不支持的功能,属于重实现之后才可能加入的扩展:

  • 基础宽屏支持
  • 着色器(shaders)
  • 240 垂直分辨率模式
  • 高清 Mode7 地图
  • MSU-1 音频
  • 道具切换
  • 30 多项 bug 修复

需要强调的是,这些是项目在复刻基础上附加的内容,并不代表原作者的设计,也不改变「忠实重实现」这一主要目标。

使用方式与操作

游戏通过 ./zelda3 启动,可选地接收一个 ROM 文件路径参数,此时会逐帧校验 C 代码是否与原版行为一致。

游戏支持快照(snapshot)功能,并且快照中会一并保存手柄输入历史。因此可以借助回放机制,以加速模式重放一段游玩过程,用来验证游戏行为是否正确,这也是项目自测的一部分。

默认键位大致如下(可在 zelda3.ini 中重新配置):

  • 方向键:上、下、左、右
  • Enter:Start;右 Shift:Select
  • X 键对应 A,Z 键对应 B,S 键对应 X,A 键对应 Y
  • C 键对应 L,V 键对应 R

此外还提供了一组调试与便捷按键,例如:

  • Tab 切换加速模式,T 切换回放加速模式
  • W 补满生命/魔法,Shift+W 补满卢比/炸弹/箭
  • P 暂停(带变暗),Shift+P 暂停(不变暗)
  • Ctrl+E 重置,Ctrl+↑/↓ 调整窗口大小
  • R 在快速与慢速渲染器之间切换,F 显示渲染性能
  • F1–F10 读取快照,Shift+F1–F10 保存快照,Ctrl+F1–F10 回放快照
  • 1–9 载入地牢试玩快照,Ctrl+1–9 以加速模式运行地牢试玩
  • Alt+Enter 切换全屏,K 清空手柄日志中的输入历史,L 停止回放快照

许可与社区

本项目使用 MIT 许可证,具体条款见仓库中的 LICENSE.txt。项目维护着自己的 Discord 服务器,用于交流与反馈;由于仍在持续开发阶段,README 直言目前需要玩家自行构建,暂未提供现成可执行版本。

开源许可证与版权说明

许可证标识:未明确。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目