github JackandBeans/Snap64Recomp v1.1.1
Snap64 Recomp 1.1.1

2 hours ago

The title screen

Prof. Oak's question, answered with the mouse The Snap Station's printer, three stars

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.1 finishes the mouse and keyboard on the game's own screens, fixes the Controls page's Control Stick and Z Button settings so they take effect in the ride you are on, adds Linux on ARM64 and a Flatpak, and is the first release whose every archive was built and signed on GitHub's machines.

Downloads

File For
Snap64Recomp-1.1.1-win64.zip Windows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install.
Snap64Recomp-1.1.1-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.1-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.1-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.1-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

  • Control Stick and Z Button take effect mid-ride (#19, reported by myleskeller). Changed from the pause menu's Options during a course, Reverse did nothing until the next course: the game reads those two settings once, as a ride starts. The change now reaches the ride you are in, and Z Button's Switch shows and hides its HUD hint with it. The row's help line also had the two backwards; on the cartridge, Normal tilts the camera down when the stick is pushed up and Reverse tilts it up, and the line says so now.
  • The side panel's buttons rest at their full height. The lab, the course list, the PKMN Report, the album, the Gallery and Oak's photo check slide their buttons in by stretching them, and the cartridge's slide-in stops a step short of full size. At 320 by 240 nothing shows; the port's renderer drew the resting buttons soft and snapped them crisp, half a pixel over, the instant a choice was made. The slide-in now ends at exactly full size.
  • The mouse no longer steers the title's demo. The course the title plays after a while idle followed the mouse, which the cartridge's stick cannot do: the port's mouse look writes the view straight into the game, and the demo's script never reads it back. The mouse and the gyro now stand off while the demo runs; a click is A and ends the demo, as on the cartridge.
  • The question asked when the last session did not close normally cut off its second button on Windows; it reads "Turn mods off" now. The question was also asked after a clean close when the release suite had run on that folder; the suite now cleans up the mark it left.

The mouse and the keyboard, on the game's own screens

  • The photographer card takes the keyboard. A new game's name can be typed: letters, digits, the card's own marks, Space, Backspace (a letter back) and Enter (End); the cursor follows what you type, and the arrow keys move on the grid.
  • Every A-or-B question answers the mouse — "Shall I repeat this information?", "Shall I save your progress?", "Should I show this to Prof. Oak?", "Delete this picture?", and the rest. The A or B icon under the pointer is underlined, with the move sound, and a click on it presses it; the right button is B. A click used to be A wherever it fell, so Oak repeated himself until B was pressed on something else.
  • New Game's question over a saved game takes the pointer: the word under it is selected, a click chooses it.
  • Oak's photo check, one picture at a time: the header's arrows and the wheel step through a Pokémon's pictures, a click on the picture is A, the right button is B.
  • The port's own mouse pointer: an arrow carrying a camera lens, drawn as pixel art, as the system's cursor on the menus (46 by 52 in a 1280 by 960 window). A click closes the lens's shutter and opens it again. In fullscreen the pointer shows while a hand is on the mouse, goes out in a flash after three seconds idle or when a cutscene or a course takes the screen, and comes back in one. The Controls page's new Pointer row picks Camera, the port's own, or System, the system's arrow; custom_pointer in snapsettings.json is the same switch.

Builds

  • Linux on ARM64 and a Flatpak, both made on GitHub's machines by the build workflow. No machine has played the game from either yet; please say how it goes.
  • Every archive on this page was built on GitHub's machines by release.yml and signed with GitHub's build provenance: gh attestation verify <file> --repo JackandBeans/Snap64Recomp shows which commit and workflow made your download. The release suite ran on those files before they were published.
  • The Linux and Mac executables no longer carry the build machine's folders in their debug names.
  • The renderer, the runtime and the recompiler are git submodules on the project's own forks, so a clone gets every tree through python tools/fetch_deps.py.

Every change, with its cause, is in CHANGELOG.md.

Note

Upgrading from 1.1.0 or any 1.0.x: 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.1 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 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 centre. 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: 29 of 29 checks in 1150 s, and the Snap Station's 5 of 5 in 487 s. The same suite on the build made here: 29 of 29, and 5 of 5. VERIFICATION.md says what each check does.
  • The fixes to the questions, the name card, Oak's check, the Controls settings and the panel's buttons were checked in-game with the port's own frame capture and a scripted pointer, most on a real save at 2560 by 1440 fullscreen, before and after. The pointer, its shutter and its flash were checked by hand on the release machine, and the cursor photographed off the screen. The demo fix was checked by reading the game's memory from outside the executable GitHub built: the demo's script is set while the demo plays and clear in a ride.
  • The Mac workflow's checks on GitHub's virtual Mac: 15 of 15 natively and 10 of 10 through Rosetta 2, no crash reports. The package checks passed on all five archives, and each archive's build provenance verifies.

Don't miss a new Snap64Recomp release

NewReleases is sending notifications on new releases.