Case study
Snowboard Kids: an agent-assisted N64 matching decompilation
A matching decompilation of the original Nintendo 64 Snowboard Kids that rebuilds SHA1-identical North American and Japanese ROMs from a user-supplied ROM. The author’s 84-day post-mortem describes coding agents run through his Nigel harness alongside m2c, the permuter and a shared file of compiler learnings, and declines to credit LLMs alone for the speed-up. It is a separate project from the Snowboard Kids 2 decompilation.
Requirements and limitations
- The 2026-08-26 post reports the game 100% decompiled: every function has C that compiles to identical machine code, apart from a small amount of handwritten system-library assembly that was original source. It dates the repository from 28 May 2026 to the final matching function on 19 August 2026 and counts 2,145 functions, against 596 days and 2,995 functions for Snowboard Kids 2. The README says the Japanese version currently builds from extracted assembly; reports/jp-exact-functions.md lists 120 JP functions compiled from C.
- Building requires the user’s own North American or Japanese ROM, named snowboardkids.z64 or snowboardkids.jp.z64 with the SHA1 listed in the README; the build extracts assembly and assets from it into git-ignored directories. The README says the repository contains no game assets or assembly, although the reviewed tree tracks libultra .s files and a box-art image. CI builds both regions from a baserom checked out of a separate private repository.
- The verified host is x86-64 Linux with make, git, Python 3, clang, wget, tar and binutils-mips-linux-gnu; a macOS setup is documented but still needs validation. make -C tools sets up the recompiled IDO 5.3 toolchain (IDO_DIR can point to another), submodules supply asm-processor, asm-differ and decomp-permuter, and optional matching helpers need requirements.txt.
- tools/build-and-verify.sh cleans, extracts, builds and checks the output ROM’s SHA1 against the original for the selected region, and reports/region-functions.md aligns 1,293 of 2,110 US functions with the JP ROM by exact or address-normalized matches. The post describes agents writing C function by function, a script running m2c on every unmatched function, permuter runs with deadlines and four parallel worktrees; it calls its comparison of GPT-5.5/5.6, Claude 4.5, Fable and GLM 5.2 unscientific. This catalog did not build or verify any ROM.
- The author estimates that roughly 4.8% of matching commits involved expert intervention, says the figure does not measure effort, credits contributors for many difficult IDO matches and calls attributing the whole speed-up to LLMs a gross oversimplification. A 100% match still leaves generated names, unknown structure fields and data to document. No license file is present at the reviewed commit, the README states commercial use is a non-goal, and no REA use is stated.
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.
Primary sources
- README.md GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9
- https://blog.chrislewis.au/decompiling-a-nintendo-64-game-in-84-days/
- docs/versions.md GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9
- reports/jp-exact-functions.md GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9
- reports/region-functions.md GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9
- .github/workflows/build.yaml GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9
- .gitignore GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9
- .gitmodules GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9
- snowboardkids.sha1 GitHub · cdlewis/snowboardkids-decomp · Revision 0a398d9