无尽太空(Endless Sky):2D 沙盒太空探索与贸易战斗游戏
Endless Sky 是一款 C++ 编写的 2D 沙盒式太空探索游戏,玩法接近 Elite、Esc...
zelda3 · snesrev/zelda3
对《塞尔达传说:众神的三角力量》的逆向工程 C 语言重实现,约 7–8 万行代码,重新实现原作全部部分,可从开头玩到通关。需自备 ROM 提取关卡与图像资源,提取后即不再需要 ROM。复用 LakeSnes 的 PPU 与 DSP 实现并做了速度优化,也可...
Zelda3 是对《塞尔达传说:众神的三角力量》(Zelda 3 - A Link to the Past)的一次逆向工程式重实现。项目用 C 语言重写了原作几乎全部逻辑,代码规模约 7–8 万行,目标是从游戏开头一路玩到通关,而不是做一个只能演示片段的样例。
与很多「引擎复刻」不同,它保留了原作的数据格式:运行前需要玩家自备一份 ROM,用来提取关卡、图像等游戏资源;资源提取完成并生成资源包后,ROM 就不再被需要。开发过程中参考了 spannerism 的日版《塞尔达传说 3》反汇编,以及其他记录了大量函数名与变量含义的社区资料,这也是项目能够一函数一函数推进的基础。
项目在底层没有从零手写一套 SNES 模拟器,而是复用了 LakeSnes 的 PPU(图像处理单元)与 DSP(声音处理单元)实现,并在此基础上做了大量速度优化,使其足以支撑完整的游戏运行。
为了证明重写后的 C 代码行为与原作一致,项目提供了一条「对照验证」路径:可以把原始机器码与 C 实现并排运行,在每一帧结束后比较 RAM 状态,从而确认移植逻辑是否正确。启动时若在命令行给出 ROM 文件路径,程序也会在运行时逐帧校验 C 代码与原始行为是否吻合。这种以状态比对为核心的验证方式,是该项目在工程质量上比较有代表性的做法。
README 说明目前需要自行编译,并给出了 64 位 Windows 的完整步骤:
zelda3.sfc,放入源码目录。third-party 子目录。get_python_libs.bat。extract_assets.bat,生成 zelda3_assets.dat。run_with_tcc.bat,编译出 zelda3.exe 并启动游戏。zelda3.ini 完成配置。其他平台与编译器的说明写在仓库的 BUILDING.md 中,使用前建议先对照阅读。
README 明确列出了一些原版游戏并不支持的功能,属于重实现之后才可能加入的扩展:
需要强调的是,这些是项目在复刻基础上附加的内容,并不代表原作者的设计,也不改变「忠实重实现」这一主要目标。
游戏通过 ./zelda3 启动,可选地接收一个 ROM 文件路径参数,此时会逐帧校验 C 代码是否与原版行为一致。
游戏支持快照(snapshot)功能,并且快照中会一并保存手柄输入历史。因此可以借助回放机制,以加速模式重放一段游玩过程,用来验证游戏行为是否正确,这也是项目自测的一部分。
默认键位大致如下(可在 zelda3.ini 中重新配置):
此外还提供了一组调试与便捷按键,例如:
本项目使用 MIT 许可证,具体条款见仓库中的 LICENSE.txt。项目维护着自己的 Discord 服务器,用于交流与反馈;由于仍在持续开发阶段,README 直言目前需要玩家自行构建,暂未提供现成可执行版本。
Endless Sky 是一款 C++ 编写的 2D 沙盒式太空探索游戏,玩法接近 Elite、Esc...
《影子武士》(Shadow Warrior)v1.2 CD 版完整源代码,由 3D Realms 于 2005...
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...