Case study

Snap64 Recomp: a static-recompilation port of Pokémon Snap

Uses N64Recomp to statically recompile the US Nintendo 64 release of Pokémon Snap into a native Windows, Linux, Steam Deck and macOS port rendered with RT64. The recompiler reads a relocatable ELF linked from the matching ethteck/pokemonsnap decompilation together with the user’s ROM, and game-side patches are modified copies of decompiled functions. The author reports building the port with Claude Code; results remain project-reported.

Requirements and limitations

  • The reviewed tree is version 1.1.5, published as release v1.1.5 on 2026-10-17, and targets only the US cartridge; README says the Japanese, European and Australian releases are different builds. Cartridge behavior is the default and every enhancement is opt-in. Listed known issues include some 2D elements stepping at the game’s rate at higher frame rates, estimated Snap Station printer details and lightly tested Vulkan on Windows.
  • Supply your own US ROM matching the SHA-1 in README, the checksum the decompilation publishes; .z64, .v64 and .n64 files are accepted and a wrong file is refused. The repository and releases contain no game assets. Building also needs that ROM for the matching decompilation build, the recompiler inputs and the RSP audio-microcode translation.
  • Releases need 64-bit Windows 10 (1809+) or 11 with Direct3D 12 Shader Model 6.3, Linux or Steam Deck with Vulkan 1.2 (experimental), or macOS 14+, on an SSE4.1 x86-64 CPU or the ARM builds provided. BUILDING.md records a two-machine build: WSL Ubuntu 24.04 with MIPS binutils, the decompilation, its downloaded IDO compilers and N64Recomp, then Visual Studio 2019, CMake 3.20+ and Python 3 on Windows after tools/fetch_deps.py checks out the pinned submodules. The relocatable-ELF relink is marked as derived, not recorded.
  • VERIFICATION.md reports a full Windows play-through, partial Steam Deck and GitHub-hosted virtual Mac runs, and 33 of 33 headless-suite checks plus 5 of 5 Snap Station checks on the author’s 1.1.5 executable from recorded replays. These test the port’s behavior, not byte-level equivalence with the cartridge; no physical Mac or Linux desktop report is recorded. This collection did not build or run it.
  • Port code is GPLv3, with third-party components listed in NOTICE.md. NOTICE.md says no tracked file carries ROM bytes, but the distributed executable is compiled from C that N64Recomp translates from the game’s instructions, and patches are modified decompiled functions; the game remains its owners’. The author reports writing the port with Claude Code under their direction; no REA use is documented.

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

  1. README.md GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  2. BUILDING.md GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  3. docs/VERIFICATION.md GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  4. docs/KNOWN-ISSUES.md GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  5. NOTICE.md GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  6. CMakeLists.txt GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  7. pokemonsnap.us.toml GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  8. .gitmodules GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  9. LICENSE GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  10. CONTRIBUTING.md GitHub · JackandBeans/Snap64Recomp · Revision cf53b89
  11. https://github.com/JackandBeans/Snap64Recomp/releases/tag/v1.1.5