Snap64 Recomp is a native port of Pokémon Snap (Nintendo 64, US release) made by static recompilation: the game's own code runs on your PC, the port only hosts it, and everything about how it looks is off unless you turn it on. 1.1.5 fixes two reports: a saved Super Sampling that asked the card for more memory than it has and crashed the port at every start, and the Switch Online N64 controller's C buttons, which did other jobs.
Downloads
| File | For |
|---|---|
Snap64Recomp-1.1.5-win64.zip
| Windows 10 (version 1809 or newer) or 11, 64-bit, with a GPU driver that provides Direct3D 12 and Shader Model 6.3: any driver since late 2018. Nothing else to install. |
Snap64Recomp-1.1.5-linux-x86_64.tar.gz
| Linux, experimental: needs the system's SDL2, GTK 3 and a Vulkan 1.2 driver. Earlier releases were played on a Steam Deck in Desktop Mode and in Gaming Mode. |
Snap64Recomp-1.1.5-linux-x86_64.flatpak
| The same Linux build with its own SDL2, GTK 3 and Vulkan loader; installs with one command on a Steam Deck or any desktop with Flatpak. Built and started on GitHub's machine, not yet played on real hardware. |
Snap64Recomp-1.1.5-linux-arm64.tar.gz
| Linux on ARM64 (a Raspberry Pi 5, an ARM laptop, a Linux virtual machine on a Mac). Built on GitHub's ARM machine, not yet played on real hardware. |
Snap64Recomp-1.1.5-macos-universal.zip
| macOS 14 or newer, Apple Silicon and Intel in one app. Built and run on GitHub's virtual Mac, not yet on a physical one. |
You need your own cartridge dump. No game data is included. Start the program and choose your pokemonsnap.z64 when it asks (US, SHA-1 edc7c49cc568c045fe48be0d18011c30f393cbaf), or put the file next to the executable yourself. START HERE.txt in each archive says the rest, in one page.
What's new
Fixed
- Super Sampling is held to what the card's memory carries. At 8x with MSAA 8x on a 2560-wide window the render targets would take some 40 GB; Direct3D answered out of memory, the renderer crashed on what it got back, and with the setting saved the port crashed at every start. The multiplier is now fitted to the screen's size, the sample count and the card's memory, at the start and as the Graphics page applies it, with the fitted value written to the file and said in the log. A target the card still cannot make no longer crashes: the port says so in a box and the log, marks the setting in
snap64.gpu_failedbesidesnapsettings.json, sets Super Sampling one below it and ends, and every later start holds below the mark. Reported by KlingeSean in #28. - The Switch Online N64 controller's C buttons are the C buttons. SDL's driver sends them as Y, X, Back and the right trigger, which the binding table read as B, the Options and, under the N64-shaped layout, the fast forward: C-down ran the game fast, C-left threw a pester ball with the flute's call, and C-right opened the Options. The port now reads those four as C-up, C-left, C-right and C-down on that pad, the table's sources on them step aside, the Button Setup page refuses them, and the Options are on the pause menu there. The pad is recognized by its ids as well as its name, and every pad's ids and SDL's mapping line go to the log when it opens. Reported by Succulent-Puppet in #26.
Nothing else changed since 1.1.4; its page says what 1.1.4 brought.
Every change, with its cause, is in CHANGELOG.md.
Note
Upgrading from 1.1.4 or any earlier release: unpack the new archive over the old folder or beside it. Your save is in saves/ and your settings in snapsettings.json, both untouched by the upgrade and both read by 1.1.5 as they are. If you keep the old folder, copy those two across, and pokemonsnap.z64 with them, or let the new one ask you for it.
Warning
The Windows executable is not signed, and the Mac app is signed by nobody. SmartScreen may say "Windows protected your PC" on the first start, macOS refuses a plain double-click, and an antivirus may flag a program it has never seen; the builds on this page are what the source produces, GitHub's provenance says so, and the .sha256 beside each archive lets you check what you downloaded.
First start
- On Windows, past SmartScreen: choose More info, then Run anyway, once.
- On a Mac: right-click the app and choose Open, or on macOS 15 double-click, dismiss the message, and click Open Anyway in System Settings > Privacy & Security, once.
- The box asks for your ROM; choose the file and the game starts. The first start also compiles the shipped shader list during the boot logos and takes longer.
- The Snap Station's Print restarts the program twice, on purpose.
- On a Deck, add the executable as a non-Steam game and run it in either mode, or install the Flatpak; the Deck page under
docs/has the shortcut and gyro settings.
Known limitations
- The Mac build has not run on a physical Mac; the ARM64 build and the Flatpak have not run on real hardware. Their sounds, pads and speed are unheard and unmeasured.
- A few 2D pictures still move at the game's rate when the frame rate is raised: one that slides past the side of a menu in a wide window, and one that jumps a long way in a single frame. Outside Oak's check, a slide that slows to a stop can still end a pixel at a time.
- A mod installed during play loads at the next start; the page says so.
- On an N64-shaped pad, which has no right shoulder button, fast forward has only its key until the file names another button.
- A Pokémon pops out of the picture before it has fully left it: the cartridge draws a Pokémon only while its collision point projects within 1.5 times the half-screen of the center. The port keeps the rule as the cartridge has it.
- Gyro has been confirmed on a Steam Deck and no other pad yet.
How this release was checked
- The release suite (
tools/release_check.py) on the Windows executable GitHub built: 33 of 33 checks (the speed check passed on a second run alone, after a first run had scored 53 photos at 3x against the 1x run's 45), and the Snap Station's 5 of 5 in 488 s. The same suite on the build made here: 33 of 33 in 1226 s, and 5 of 5. Four of its checks are new: the fit of Super Sampling to a faked card's memory, a render target made to fail on purpose and the start after it, and the Switch Online N64 controller as a virtual pad wearing its name and ids. VERIFICATION.md says what each check does. - The catch was seen to fire: with its test switch on, the port ended by itself with the mark written and the saved setting lowered, and the next start held below the mark. The Linux build was started without a window with a faked card and held a saved 8x to 3x. No Switch Online N64 controller is here: its recognition and its C buttons were tested with the virtual pad, and a press on the real pad is asked of the reporter.
- The Mac workflow's checks on GitHub's virtual Mac: 15 of 15 natively and 10 of 10 through Rosetta 2, no crash reports, on a second run of the native checks after the first had ended with a crash report at one check's exit. The package checks passed on all five archives, and each archive's build provenance verifies.



