{
  "added_at": "2026-10-27",
  "additional_evidence_urls": [
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/Makefile",
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/tools/Makefile",
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/tools/decompress_baserom.py",
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/baseroms/jp/checksum.md5",
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/requirements.txt",
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/CONTRIBUTING.md",
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/.github/workflows/ci.yml",
    "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/LICENSE",
    "https://decomp.dev/zeldaret/af"
  ],
  "category": "reconstruction-cases",
  "description_en": "Rebuilds the Japanese Nintendo 64 release of Animal Forest (Dōbutsu no Mori) from C code reverse-engineered from the ROM, combined with assets and assembly extracted from a user-supplied ROM. Default builds compare the uncompressed and recompressed ROMs with stored MD5 checksums. The README rules out use as a port base or for commercial purposes, and decomp.dev reported 18.52% of code matched at the reviewed commit.",
  "description_zh": "将从 ROM 逆向得到的 C 代码与从使用者自备 ROM 中提取的素材和汇编结合，重建日版 Nintendo 64《动物之森》（どうぶつの森）。默认构建会用仓库保存的 MD5 校验未压缩与重新压缩的 ROM。README 明确该项目不作为移植基础，也不用于商业目的；decomp.dev 报告所审提交有 18.52% 的代码已匹配。",
  "entry_url": "https://awesomerea.org/resources/animal-forest-n64-decomp-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/animal-forest-n64-decomp-case/",
  "evidence_url": "https://github.com/zeldaret/af/blob/4ddba04604ee7b4c4cfc0b64f8ee4d094bb385be/README.md",
  "group": "cases",
  "id": "animal-forest-n64-decomp-case",
  "json_url": "https://awesomerea.org/resources/animal-forest-n64-decomp-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/animal-forest-n64-decomp-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/animal-forest-n64-decomp-case/index.md",
  "name": "Animal Forest: an in-progress matching N64 decompilation",
  "name_zh": "《动物之森》：进行中的 N64 一致性反编译",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "README calls this a work-in-progress decompilation whose codebase could change drastically and warns that some parts of the ROM may not yet be shiftable. The only configured version is jp, the Japanese N64 release, in both the Makefile and CI. The output is an N64 ROM; README states that the project is not a port and that serving as a port base or any commercial use is explicitly a non-goal. The GameCube Animal Crossing decompilation it links to is a separate project.",
    "Supply your own Japanese Animal Forest ROM as the base ROM in baseroms/jp; .z64, .n64 and .v64 files are accepted. make setup decompresses it and checks the result against baseroms/jp/checksum.md5, then make extract uses splat to derive assembly and assets locally. The reviewed tree holds no ROM, graphics or binary asset files; game-derived content is limited to tables such as the DMA file table header and small address tables under src/objects.",
    "README documents Linux, preferably Debian or Ubuntu, with make, Git, build-essential, clang, MIPS binutils and Python 3 with pip and venv; make venv installs pinned splat64 0.24.0 plus spimdisasm and mapfile-parser. The tools Makefile downloads static recompilations of IDO 5.3 and 7.1 from decompals/ido-static-recomp v1.2 and pigment64 0.6.3, and the build compiles libultra from the bundled ultralib subrepo. NON_MATCHING builds turn the checksum comparison off.",
    "With COMPARE at its default, make rom and make compress check both ROMs against the stored MD5 values. Functions not yet decompiled remain extracted assembly included through GLOBAL_ASM. CI builds jp in a private container that supplies the base ROM and compiler archives, compares warning counts and uploads an objdiff-format report. decomp.dev's report for the pinned commit lists 465,796 of 2,515,744 code bytes (18.52%) and 2,998 of 14,415 functions matched, with no unit complete.",
    "README licenses src and include, as far as possible, and other files that state no other license under CC0-1.0, excluding subrepos such as asm-differ, asm-processor, fado and ultralib. Nintendo's game, ROM contents and the downloaded compilers keep their own rights."
  ],
  "requirements_zh": [
    "README 称其为进行中的反编译项目，代码库可能大幅变动，并提醒 ROM 的部分内容可能尚不能移动。Makefile 与 CI 中唯一配置的版本是 jp，即日版 N64。产物为 N64 ROM；README 声明项目不是移植，明确不以充当移植基础或任何商业用途为目标。其链接的 GameCube 版 Animal Crossing 反编译是另一个项目。",
    "需将自己的日版《动物之森》ROM 作为基础 ROM 放入 baseroms/jp，可接受 .z64、.n64 和 .v64 文件。make setup 会将其解压并按 baseroms/jp/checksum.md5 校验，随后 make extract 借助 splat 在本地得到汇编和素材。所审代码树不含 ROM、图像或二进制素材文件；源自游戏的内容仅限于 DMA 文件表头文件、src/objects 下的小型地址表等数据表。",
    "README 记载的环境为 Linux（推荐 Debian 或 Ubuntu），需 make、Git、build-essential、clang、MIPS binutils 以及带 pip 和 venv 的 Python 3；make venv 会安装固定版本的 splat64 0.24.0 以及 spimdisasm 和 mapfile-parser。tools 目录的 Makefile 从 decompals/ido-static-recomp v1.2 下载 IDO 5.3 与 7.1 的静态重编译版本，并下载 pigment64 0.6.3；构建还会用随附的 ultralib 子仓库编译 libultra。NON_MATCHING 构建会关闭校验比较。",
    "COMPARE 保持默认时，make rom 和 make compress 会按仓库保存的 MD5 值检查两个 ROM。尚未反编译的函数仍以提取出的汇编通过 GLOBAL_ASM 引入。CI 在提供基础 ROM 和编译器归档的私有容器中构建 jp 版本，比较警告数量并上传 objdiff 格式的报告。decomp.dev 针对该固定提交的报告显示，2,515,744 个代码字节中有 465,796 个（18.52%）、14,415 个函数中有 2,998 个已匹配，尚无完整单元。",
    "README 规定 src 和 include 在可能范围内、以及未声明其他许可的文件采用 CC0-1.0，asm-differ、asm-processor、fado、ultralib 等子仓库不在此列。任天堂的游戏、ROM 内容和下载的编译器各自保留权利。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/zeldaret/af",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
