Case study

Animal Forest: an in-progress matching N64 decompilation

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.

Requirements & limits

  • 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, so a passing check does not mean complete decompilation. 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; this collection ran no build.
  • 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. The reviewed sources establish no AI or REA use, and no runtime reproduction is claimed.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
Game

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · zeldaret/af · Revision 4ddba04
  2. Makefile GitHub · zeldaret/af · Revision 4ddba04
  3. tools/Makefile GitHub · zeldaret/af · Revision 4ddba04
  4. tools/decompress_baserom.py GitHub · zeldaret/af · Revision 4ddba04
  5. baseroms/jp/checksum.md5 GitHub · zeldaret/af · Revision 4ddba04
  6. requirements.txt GitHub · zeldaret/af · Revision 4ddba04
  7. CONTRIBUTING.md GitHub · zeldaret/af · Revision 4ddba04
  8. .github/workflows/ci.yml GitHub · zeldaret/af · Revision 4ddba04
  9. LICENSE GitHub · zeldaret/af · Revision 4ddba04
  10. https://decomp.dev/zeldaret/af

More in Games

All 230 entries in GamesGames case studies (188)