zelda3 - 塞尔达 3 的重新实现。

Created at: 2022-08-11 09:11:41
Language: C
License: NOASSERTION

塞尔达传说3

塞尔达3的重新实现。

我们的不和谐服务器是:https://discord.gg/AJJbJAzNNJ

大约

这是塞尔达3的逆向工程克隆 - 与过去的链接。

它大约有70-80kLOC的C代码,并重新实现了原始游戏的所有部分。游戏从头到尾都可以玩。

你需要ROM的副本来提取游戏资源(关卡,图像)。然后,一旦完成,就不再需要ROM。

它使用LakeSnes的PPU和DSP实现,但进行了大量速度优化。此外,还可以将其配置为并行运行原始机器代码。然后在每帧之后比较 RAM 状态,以验证 C 实现是否正确。

我从扳手主义的塞尔达 3 JP 反汇编和其他记录函数名称和变量负载的反汇编中得到了很多帮助。

附加功能

添加了一堆原始游戏不支持的功能。其中一些是:

支持像素着色器。

支持 16:9 或 16:10 的增强纵横比。

更高质量的世界 map。

支持 MSU 音轨。

按钮 X 上的辅助物品插槽(按住库存中的 X 进行选择)。

使用 L/R 键切换当前项目。

在Windows上安装Python和库(资产提取步骤需要)

  1. 下载 Python 安装程序并安装
  2. 打开命令提示符
  3. 升级pip并安装,并通过键入并按回车键
    pillow
    pyyaml
    python -m pip install --upgrade pip pillow pyyaml
  4. 关闭命令提示符

使用 TCC 在 Windows 上编译 (1mb Tiny C 编译器)

  1. 通过单击github页面上的“代码>下载ZIP”下载项目
  2. 将 ZIP 解压缩到你的硬盘驱动器
  3. 将命名的美国rom放在“\tables”子文件夹中
    zelda3.sfc
  4. 打开命令提示符并导航到该文件夹
  5. 通过键入并按回车键提取资源
    python extract_resources.py
  6. 通过键入并按回车键编译提取的资源
    python compile_resources.py
  7. 关闭命令提示符
  8. 下载 TCC 并解压缩到“\third_party”子文件夹
  9. 下载 SDL2 并解压缩到“\third_party”子文件夹
  10. 双击主目录以在同一目录中创建
    run_with_tcc.bat
    zelda3.exe
  11. 在主目录中配置
    zelda3.ini

使用 Visual Studio 在 Windows 上编译(4.5GB IDE 和编译器)

与上述
步骤1-7相同,步骤8相同。双击
9。将顶部下拉列表中
的“调试”更改为“发布” 10.在菜单中选择“构建>构建塞尔达3”,以在“/bin/release”子文件夹
11 中创建。在主目录中配置

Zelda3.sln
zelda3.exe
zelda3.ini

在 Linux/MacOS 上安装库

  1. 打开终端
  2. 安装点(如果尚未安装)
python3 -m ensurepip
  1. 克隆存储库并放入其中
    cd
git clone https://github.com/snesrev/zelda3
cd zelda3
  1. 使用 pip 安装要求
python3 -m pip install -r requirements.txt
  1. 安装 SDL2
  • Ubuntu/Debian
    sudo apt install libsdl2-dev
  • Fedora Linux
    sudo dnf in sdl2-devel
  • Arch Linux
    sudo pacman -S sdl2
  • macOS:(你可以在这里获得自制软件
    brew install sdl2
    )

在 Linux/MacOS 上编译

  1. 放置你的美国 ROM 文件命名为
    zelda3.sfc
    zelda3/tables
  2. 编译
make
高级使使用...
make -j$(nproc) # run on all core
make clean all  # clear gen+obj and rebuild
CC=clang make   # specify compiler

任天堂开关

你需要安装 DevKitProAtmosphere

(dkp-)pacman -S git switch-dev switch-sdl2 switch-tools
cd platform/switch
make # Add -j$(nproc) to build using all cores ( Optional )
# You can test the build directly onto the switch ( Optional )
nxlink -s zelda3.nro

更多编译帮助

查看 https://github.com/snesrev/zelda3/wiki 的 wiki 以获取更多帮助。

ROM 需要命名,并且必须来自美国地区,具有此确切的 SHA256 哈希

zelda3.sfc
66871d66be19ad2c34c927d6b14cd8eb6fc3181965b6e517cb361f7316009cfb

如果你打算将可执行文件移动到其他位置,请包含该文件。

tables/zelda3_assets.dat

用法和控制

游戏支持快照。游戏手柄输入历史记录也保存在快照中。因此,可以在涡轮模式下重播游戏,以验证游戏行为是否正确。

游戏运行并采用ROM文件的可选路径,该文件将验证每一帧的C代码是否与原始行为匹配。

./zelda3

按钮 钥匙
向上 向上箭头
向下箭头
左箭头
向右箭头
开始 进入
选择 右移
一个 X
B Z
X S
Y 一个
L C
R V

密钥可以在 zelda3 中重新配置.ini

此外,以下命令可用:

钥匙 行动
标签 涡轮增压模式
W 补充生命值/魔法
移位+W 填充卢比/炸弹/箭头
Ctrl+E 重置
P 暂停(带暗淡)
移位+P 暂停(不变暗)
按 Ctrl+向上 增加窗口大小
按 Ctrl+向下 减小窗口大小
T 切换重播涡轮增压模式
O 将地下城密钥设置为 1
K 从游戏手柄日志中清除所有输入历史记录
L 停止重播塑形镜头
R 在快速和慢速渲染器之间切换
F 显示渲染器性能
F1-F10 加载快照
Alt+Enter 切换全屏
换档+F1-F10 保存快照
按 Ctrl+F1-F10 重播快照
1-9 运行地下城通关快照
按 Ctrl+1-9 在涡轮模式下运行地下城通关

许可证

该项目在 MIT 许可证下获得许可。有关详细信息,请参阅“许可证.txt”。