{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/PROVENANCE.md",
    "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/LEGAL.md",
    "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/guide/development.md",
    "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/ports.toml",
    "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/crates/z2-core/src/traps.rs",
    "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/.github/workflows/release.yml",
    "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/LICENSE",
    "https://github.com/troyedwardsjr/z2rs/releases/tag/v0.5.2",
    "https://z2rs.com/"
  ],
  "category": "reconstruction-cases",
  "description_en": "Rebuilds Zelda II: The Adventure of Link (NES) in Rust for desktop, browser and Android by replacing the game’s 6502 routines one at a time. A built-in interpreter still runs the user’s ROM and hands ported routines to Rust, while a verifier compares RAM, sprites, palette and frames with a reference emulator. It is a behavioral, clean-room-style reconstruction guided by a community disassembly, not a decompilation or a finished standalone engine.",
  "description_zh": "以 Rust 重建 NES 游戏《塞尔达传说 II：林克的冒险》，逐个替换游戏的 6502 例程，可运行于桌面、浏览器和 Android。内置解释器仍执行使用者的 ROM，并把已移植例程交给 Rust 实现；验证工具将 RAM、精灵、调色板和画面与参考模拟器逐帧比较。它是参考社区反汇编、以行为为准的类净室重建，而不是反编译，也还不是独立完整的引擎。",
  "entry_url": "https://awesomerea.org/resources/z2rs-zelda2-reconstruction-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/z2rs-zelda2-reconstruction-case/",
  "evidence_url": "https://github.com/troyedwardsjr/z2rs/blob/4fe7a35f8ccfdccdf32421badf97b48b02d0127f/README.md",
  "group": "cases",
  "id": "z2rs-zelda2-reconstruction-case",
  "json_url": "https://awesomerea.org/resources/z2rs-zelda2-reconstruction-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/z2rs-zelda2-reconstruction-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/z2rs-zelda2-reconstruction-case/index.md",
  "name": "z2rs: an incremental Rust reconstruction of Zelda II checked against an emulator",
  "name_zh": "z2rs：以模拟器对照逐步重建《塞尔达传说 II》的 Rust 项目",
  "reconstruction_method": "engine-reimplementation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "testing",
    "attribution"
  ],
  "requirements": [
    "The reviewed commit is release v0.5.2 (2026-10-10), with Linux, macOS (Intel and Apple Silicon) and Windows archives plus an Android 8.0+ APK; z2rs.com hosts the browser build. PROVENANCE.md says it is not yet a standalone reimplementation: ported routines register in trap tables and the rest of the ROM is interpreted. The pinned ports.toml still marks all 2,960 routines unported.",
    "Only the No-Intro USA dump is accepted, identified by the hash of the ROM body without its 16-byte iNES header (CRC32 BA322865). Graphics, maps, text and music are read from that ROM at run time, and nothing from the game is in the repository. Co-op, widescreen, HD packs, the randomizer and other enhancements are optional additions; Android lacks online co-op, the randomizer and enhancements.",
    "Source builds need stable Rust; the browser build adds the wasm32-unknown-unknown target and wasm-pack, Android adds the SDK, NDK and cargo-ndk, and the default desktop netplay feature needs a C compiler. Release archives are not code-signed. Online co-op uses a public signalling server by default, and the desktop build shows Discord presence unless it is turned off.",
    "z2-verify runs the ROM in tetanes-core 0.15 beside z2rs with identical input and compares RAM, battery WRAM, sprite OAM, palette and framebuffer after every frame, with two documented edge allowances for that emulator. Long tests replay TASVideos movies downloaded separately, and ROM-dependent tests skip without their inputs. The reviewed workflow only packages releases; no published verification results were found.",
    "The sole maintainer releases the code under MIT; vendored matchbox_socket is MIT OR Apache-2.0, and the game itself is not covered. Routine layout comes from the CC0 FiendsOfTheElements/z2disassembly submodule and Data Crystal notes; the project describes one maintainer working from that material, not a two-team clean room, and publishes only a snapshot of earlier private history."
  ],
  "requirements_zh": [
    "所审阅提交即 v0.5.2 版（2026-10-10），提供 Linux、macOS（Intel 与 Apple Silicon）和 Windows 压缩包以及适用于 Android 8.0+ 的 APK；z2rs.com 提供浏览器版本。PROVENANCE.md 表示它还不是独立的重新实现：已移植例程注册在陷阱表中，ROM 的其余部分由解释器执行。固定版本的 ports.toml 仍把全部 2,960 个例程标为未移植。",
    "只接受 No-Intro 美版镜像，以去掉 16 字节 iNES 文件头后的 ROM 主体哈希识别（CRC32 BA322865）。图形、地图、文本和音乐在运行时从该 ROM 读取，仓库中不含任何游戏内容。合作模式、宽屏、高清素材包、随机化和其他增强功能均为可选附加内容；Android 版暂不支持在线合作、随机化和增强功能。",
    "源码构建需要稳定版 Rust；浏览器版本另需 wasm32-unknown-unknown 目标和 wasm-pack，Android 版另需 SDK、NDK 和 cargo-ndk，桌面版默认启用的联网功能还需要 C 编译器。发布包未经代码签名。在线合作默认使用公共信令服务器，桌面版在未关闭时会显示 Discord 状态。",
    "z2-verify 在 tetanes-core 0.15 中与 z2rs 并行运行同一 ROM 并输入相同操作，每帧比较 RAM、电池 WRAM、精灵 OAM、调色板和帧缓冲，并对该模拟器的两处画面边缘差异作了说明性豁免。长时测试回放需另行下载的 TASVideos 录像，缺少输入时依赖 ROM 的测试会自动跳过。所审阅的工作流只负责打包发布；未发现公开的验证结果。",
    "代码由唯一维护者以 MIT 发布；内置的 matchbox_socket 采用 MIT 或 Apache-2.0，游戏本身不在许可范围内。例程布局来自 CC0 的 FiendsOfTheElements/z2disassembly 子模块和 Data Crystal 资料；项目说明这是一名维护者依据这些材料完成的工作，并非双团队净室流程，且只公开了早期私有历史的快照。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/troyedwardsjr/z2rs",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
