Snap64 Recomp
Native Windows, Linux and macOS port of Pokémon Snap (N64) by static recompilation.
Native Windows, Linux and macOS port of Pokémon Snap (N64) by static recompilation. Plays like the cartridge by default; every enhancement is opt-in. Bring your own dump; no game data is included. See the README below for details.
README
On GitHub
Snap64 Recomp
Snap64 Recomp is a native PC port of Pokémon Snap (Nintendo 64, US release) for Windows, Linux, the Steam Deck and macOS. It is made with N64: Recompiled, which translates the game's own code so that it runs directly on a PC. The method is called static recompilation. RT64 draws the picture.
Out of the box it plays like the cartridge. Widescreen, higher frame rates, mouse and gyro aim, button rebinding, fast forward, photo export and the Snap Station's printer are there when you want them, and each stays off until you turn it on.
Download the latest release
This repository and its releases contain no game assets. You need your own ROM of the US cartridge to play.
The Releases page of this repository is the only official download.
Contents: Get it running · Screenshots · System requirements · Features · Faithful by default · Controls · Linux and Steam Deck · macOS · FAQ · Known issues · What's next · Reporting a bug · Contributing · What has been verified · Building · How it was made · Thanks · Documentation · License
The manual has every control, page, hotkey and setting. The rest of the documentation is listed near the end.
Get it running
In a hurry? The download holds a
START HERE.txtwith the short version. The one thing to know: this port has no launcher and no overlay. Everything it adds is inside the game's own Options screen. Press Esc, or Select on a pad, and it opens over the screen you are on: the title, the lab, the course map, a paused course. Widescreen, the frame rate and the other enhancements are under Options > Graphics. They all start off, set to what the console did.
These steps are for Windows. Linux and the Steam Deck are further down.
- Download
Snap64Recomp-1.1.0-win64.zipfrom theReleases page and unpack it anywhere. It holds one folder,
Snap64Recomp-1.1.0-win64, withSnap64Recomp.exeinside. Nothing has to be installed. - Have your ROM of the US cartridge ready. (A ROM is the cartridge's
contents, read out into one file.) Put it next to
Snap64Recomp.exewith the namepokemonsnap.z64, or just start the program. If no ROM is there, the program asks for the file, checks it, and copies it into place under that name. It only asks once. You do not have to check the file yourself: a wrong one is refused, with a message that says why. - Start
Snap64Recomp.exe. The program is not signed, so Windows mayfirst show a "Windows protected your PC" box (SmartScreen). Click "More info", then "Run anyway", and it will not ask again. The first start takes a little longer than later ones, because the renderer builds the shader programs your GPU needs. They are kept in
cache/, so the next start is quick.
A few keys to know first:
- Esc opens the port's Options on almost any screen, and closes them
again. On a pad it is Select. The Graphics and Sound pages are in there. In-game pages in the manual names the few screens where the key does nothing.
- Enter is the game's Start. In a course it opens the pause menu:
Continue, Quit Course, Retry, Options.
- F11 switches fullscreen on and off, in a course or anywhere else.
The window's maximize button goes to fullscreen too.
- To quit, choose Exit Game, the last row of the game's Options
screen: A asks, a second A closes, B stays. Or hold Esc for a second and let go. A box asks first, and Enter or Esc keeps you playing, so a hand resting on the key cannot end a run.
Saves live in saves/ next to the program, so keep that folder when you update. Keyboard and controller mappings are under Controls. If something goes wrong, Running in the manual says what Windows or an antivirus may object to, and what to attach to a bug report.
Screenshots
Every picture is the port's own render at 1440p, with Render Scale and Anti-Aliasing both at 8x on the Graphics page, cropped to the game's picture. The full set, with a caption for each, is in docs/SCREENSHOTS.md.
System requirements
- Windows: 64-bit Windows 10 or 11, and a GPU whose driver supports
Direct3D 12 with Shader Model 6.0.
- Linux and Steam Deck: a Vulkan 1.2 driver, and either Flatpak or the
system's SDL2 and GTK 3; x86_64, or ARM64 for the tarball built for it. The Linux builds are experimental.
- macOS: macOS 14 (Sonoma) or newer, on Apple Silicon or Intel; one app
runs on both. The Mac build has run on GitHub's virtual Mac and not yet on a physical one (see macOS).
- CPU: a 64-bit x86 processor with SSE4.1. That is Intel from 2008
(Penryn), AMD from 2011 (Bulldozer), or anything newer.
- Your own ROM of the US cartridge. Its SHA-1 checksum is
edc7c49cc568c045fe48be0d18011c30f393cbaf, the value the decompilation project publishes..z64,.v64and.n64files all work. The port checks the file for you, and refuses a wrong one with both checksums shown.
Nothing has to be installed. The download holds everything but the game.
No one has tested how old a graphics card can be and still run the port. Zelda 64: Recompiled, which uses the same renderer, names the GeForce GT 630, the Radeon HD 7750 and the Intel HD 510 as the oldest that should work. This port has run on an AMD Radeon RX 9060 XT, an NVIDIA GeForce RTX 4070 Ti Super, an Intel UHD 630 and the Steam Deck. If it closes at start, update the graphics driver first. The detail is in the manual.
Features
Each of these is a row on the game's own Options screen, or a key. Each starts off, or at the console's setting. The manual has every one in full.
- Settings inside the game. The port adds Graphics, Sound, Controls and
Mods pages to the game's own Options screen, drawn in the game's own font. The Graphics page has sixteen rows, from Render Scale and Anti-Aliasing to Widescreen and Frame Rate.
- Widescreen shows more of the course: a wider field of view that
fills the window's own shape, 16:9, the Deck's 16:10 or an ultrawide 21:9, not a stretched picture. The title, the lab and the menus stay 4:3.
- Higher frame rates, matched to your display or set to a rate you
choose. The game's own logic still runs at its thirty frames a second; the renderer draws the frames in between (frame interpolation).
- Keyboard and mouse. W A S D and the mouse aim the camera in a course,
the way a mouse does in any first-person game.
- Controllers and gyro. Anything SDL has a mapping for works, and the
community's list of more pads ships beside the program. A DualSense, a DualShock 4, a Switch Pro controller and the Steam Deck can aim by gyro.
- Button rebinding in the game. Every key, mouse button and pad button
can be changed on the Button Setup page, or in the settings file.
- Fast forward and slow motion, each while a key is held. The console's
own clocks run faster or slower, so the game steps through the same frames it would have anyway, with the same scores and the same saves.
- Photo export. P, or the pad's right stick pressed in, saves the photo
on screen as a PNG at the game's own resolution.
- Photo Detail shows Oak's photos and the album from the renderer's
full-resolution render, instead of the console's 320x210 pixels.
- The Snap Station was the 1999 kiosk that printed your photos as a
sheet of sixteen stickers. The port emulates it on controller port 4, from the cartridge's own code for it, and Print gives you the sheet as PNG files (SNAP-STATION.md).
- Two things the re-releases changed, reproduced and off by default.
One is the Virtual Console's Jynx recolour. The other is a Cutscene Fix for the one frame the console drew from inside the player model, at the end of two intros.
- Linux and the Steam Deck. A native Linux build, played on a Deck in
Desktop Mode and in Gaming Mode. The Windows build also runs under Proton (STEAM-DECK.md).
- Mods and texture packs. The runtime's
.nrmmod loader and RT64'stexture-pack loader are built in, and the Options screen has a Mods page for them. A mod template and the game's symbol files let anyone write a mod (MODS.md). No mods or packs ship with the port.
Faithful by default
The port behaves like the console by default, and every enhancement is something you turn on. Frame rate, aspect ratio, anti-aliasing, overscan, texture filtering and dithering all start as the console had them. Only what you turn on changes.
Three defaults are not the console's own. The 3D picture is drawn at the window's resolution. 2D content that would be scaled anyway is drawn sharp. The finished frame is scaled with anti-aliasing. Each is one setting away from the original, and Faithful by default in the manual names the setting for each. It also says how higher frame rates sit with the game's photo scoring.
Controls
Keyboard and mouse, as the port ships them:
| N64 | Key | Mouse | In a course |
|---|---|---|---|
| Control stick | W A S D | moving the mouse | aims the camera |
| A | X | left button | the photo when zoomed, an apple when not |
| B | Z | middle button | the pester ball |
| Z | Left Shift | right button | zoom (hold or switch, the game's own option) |
| R | E | dash | |
| L | Q | ||
| C-Down | K | wheel down | the Poké Flute |
| C-Up | I | wheel up | turn to face behind |
| C-Left / C-Right | J / L | side buttons (back / forward) | turn left / right |
| Start | Enter | pause | |
| D-pad | Arrow keys |
A pad works as soon as it is plugged in:
| N64 | Pad |
|---|---|
| Control stick | left stick |
| A | A |
| B | B or X |
| Z | left shoulder button |
| L and R | the triggers |
| C buttons | right stick |
On a pad, the right stick pressed in saves the photo on screen, and Select opens the port's Options.
Hold Tab, or the right shoulder button, for fast forward. Hold Space, or press the left stick in, for slow motion. A tap on Esc opens the port's Options on almost any screen. Esc held for a second and released asks whether to quit. From a pad, Exit Game, the last row of the Options screen, quits.
Every binding can be changed in the game, on the Controls page's Button Setup row, or in the settings file's keys table. The mouse's speed, the gyro, the dead zone, the pad's stick layout and which controllers work are in the manual.
Linux and Steam Deck
The release page has three native Linux builds, marked experimental, beside the Windows one: a tarball for x86_64, a Flatpak for x86_64, and a tarball for ARM64. On a Steam Deck either the tarball, the Flatpak or the Windows build through Proton works; players ran Proton on the day of the first release, and the x86_64 tarball has been played on a Deck, in Desktop Mode and in Gaming Mode. The tarball needs the system's SDL2, GTK 3 and a Vulkan 1.2 driver; the Flatpak brings its own and installs with one command, flatpak install --user Snap64Recomp--linux-x86_64.flatpak, keeping everything it writes under ~/.var/app/io.github.jackandbeans.Snap64Recomp/. Rendering is Vulkan only. The Flatpak and the ARM64 build are made and started on GitHub's machines and have not been played on any; the first report from a Deck or an ARM machine would be welcome. STEAM-DECK.md has the steps for each route, the Deck's controls and gyro, its screen, quitting from a pad, and the icon.
macOS
The release page has a Mac build, Snap64Recomp--macos-universal.zip: one app for Apple Silicon and Intel Macs, macOS 14 or newer. Unzip it and move Snap64Recomp.app anywhere. It is signed by nobody, so the first start is a right-click and Open, or on macOS 15 a double-click, then System Settings > Privacy & Security > Open Anyway; once is enough. The port asks for your ROM on the first start and keeps everything it writes in ~/Library/Application Support/Snap64 Recomp/ (the ROM, saves, photos, settings, the log and the mods folder); nothing goes inside the app. Rendering is Metal. Mods load as on the other platforms.
What has been seen: GitHub's own Mac builds the app and runs it on every release candidate, and on it the game boots to the intro, plays the Beach with photos scored, loads a mod, and quits cleanly, natively and through Rosetta 2. No physical Mac has run it yet; the first report from one would be welcome, with snap64.log from the folder above.
FAQ
What is static recompilation?
The game's own program code is translated into C and compiled for the PC. The translation is done once, ahead of time, and not while you play. N64: Recompiled does it. N64ModernRuntime stands in for the console's operating system, RT64 draws the picture, and SDL2 provides the window, the input and the sound.
How is this related to the decompilation project?
The game's code is recompiled from the ROM, not built from the decompilation's source. The port still depends on that project. The functions the port changes are copies of their decompiled source, compiled against its headers and symbols, and what is known about the game's code was learned there.
Where is the settings menu? Is there a launcher?
There is no launcher. Everything is inside the game's own Options screen: press Esc, or Select on a pad. In-game pages in the manual shows every page.
Where are my save and my settings?
Next to the program. The save is saves/pokemonsnap.bin and the settings are snapsettings.json; keep both when you update. Everything the port writes is in that folder, so the folder can be moved as it is. On Linux, if the folder cannot be written, the files go to ~/.config/Snap64Recomp.
How do I use a different ROM file?
The port uses pokemonsnap.z64 next to the program. Remove or replace that file. With none there, the port asks for one at the next start.
How do I set up gyro aim on a Steam Deck?
In Desktop Mode, or with Steam Input off for the shortcut, turn on Options > Controls > Gyro Aim. In Gaming Mode the game cannot read the Deck's gyro itself. Set Steam's Gyro Behavior to As Mouse there, and the port's mouse aim follows it. STEAM-DECK.md has the steps.
Windows warns me about the program. Is that normal?
Yes. The program is not signed, so SmartScreen may show "Windows protected your PC" the first time: "More info", then "Run anyway". Download it only from this repository's Releases page, where each file comes with a SHA-256 checksum. The port opens no network connection at all.
Can I use mods or HD texture packs?
Yes. Mods go in mods/ and texture packs in texture_packs/, and Options > Mods turns mods on and off. MODS.md says how to install them, and how to write one.
Known issues
- Some 2D pictures still move at the game's rate when the frame rate is
raised: the photo panels, Oak's thumbnails, and full-screen backgrounds while they slide.
- Parts of the Snap Station printer's look are estimates: its lettering,
and the timing of its passes.
- A Pokémon can pop out of the picture before it has fully left it. The
console does the same, and the port keeps the cartridge's rule.
- A Nintendo pad over Bluetooth may answer a moment late after a pause.
This is read from SDL's code and has not been seen on such a pad; a report from one would settle it.
- Vulkan on Windows is lightly tested. It is there for a machine whose
Direct3D 12 path fails.
- With Overscan Crop off, a thin light strip shows at the left of the lab's
panel. The console drew the same pixels; Overscan Crop (F2) is the television's view.
KNOWN-ISSUES.md explains each one in full.
What's next
Planned, roughly in this order.
- Reports from other machines. Most releases so far were made of what
players reported, and later ones will be too. The issue form is the way to send one, with
snap64.logattached. - A Linux desktop. The native build has run under WSL and on a Deck,
and on no Linux desktop yet. The first report from one would be welcome.
- macOS. The Mac build runs on GitHub's virtual Mac; it needs someone
with a physical one to try it.
The same list, with a place to reply, is pinned under Discussions.
Reporting a bug
Open an issue at github.com/JackandBeans/Snap64Recomp/issues. The issue form asks for these:
snap64.logfrom the run that went wrong; it is written next to theexecutable
Snap64Recomp.map, if the log has[SNAP-AV]lines- your
snapsettings.json - what you were doing, and which system, GPU and driver you have
What Windows or an antivirus may object to, and where the port's files live, are under Running in the manual.
Contributing
Bug reports, pull requests and mods are all welcome. Most of the releases since the first were made of what players reported, and the changelog names who reported each fault beside its fix. For code, CONTRIBUTING.md says what a pull request needs. For a mod, MODS.md and the mod template are the way in. Questions and requests have a place under Discussions.
What has been verified
The whole game has been played through on a Windows PC. That is every course, every course again with Widescreen on, Oak's evaluations, the Report, the album, the Gallery and a Snap Station print. On a Steam Deck, the Beach, the menus, the settings and the station have been played. On GitHub's virtual Mac, the intro, a Beach ride with its photos scored and a mod's hooks have run, natively and under Rosetta 2.
Every release also passes an automated suite before it ships (tools/release_check.py). On the 1.1.0 executable it passed 29 of 29 checks, and the station's 5 of 5. VERIFICATION.md says what each check does, what every release reported, and what has only been read from the code and not seen.
Building
See BUILDING.md. Short version: the decompilation and IDO under WSL, N64Recomp for the game and the patches, CMake and MSVC on Windows, and a list of things git does not carry (What a clean checkout is missing). cpack -C Release in the build directory then writes Snap64Recomp-1.1.0-win64.zip (step 13).
How it was made
How the port works
N64: Recompiled reads the game's code out of a cartridge dump and writes it out as C, one function at a time, at build time. None of that output is in this repository. That C is compiled and linked with three other things:
- librecomp and ultramodern, which give it the console's operating system
calls
- RT64, which turns the game's display lists into Direct3D 12 or Vulkan
- the port's own code under
src/: the window, input, audio and settings,the menu pages, the photo export and the Snap Station
For some features the game's own behaviour had to change: the Graphics page on its Options screen, the fifth title entry, the intro's camera fix. Each changed function is a copy of its decompiled source under patches/src, compiled with the decompilation's own IDO toolchain and loaded over the original. BUILDING.md has the whole chain, with the tools and inputs at each step.
Made with Claude Code
I made this port with Claude Code, an AI coding tool. I decide what the port does, test it on my own PC and Steam Deck, and turn what players report into the next release. Claude writes the code, the tools and the documentation in sessions I direct. Each commit made that way names the model in its Co-Authored-By line, except 46 from the first week, before the line was added.
Thanks
None of this would exist without:
- The Pokémon Snap decompilation
and everyone who worked on it. The port's patches are compiled against its headers and symbols, and every fact about the game's code in this README was read there.
- N64Recomp and
N64ModernRuntime by Wiseguy and contributors, the recompiler and runtime this port stands on, and the Zelda64Recomp project whose structure it follows.
- RT64 by Dario and contributors, the
renderer, whose frame interpolation this port extends.
- appleforever11, whose [pull request
#2](github.com/JackandBeans/Snap64Recomp/pull/2) was the first Apple Silicon build of the port: it started, drew with Metal and reached a course on an M3 Pro. The Mac build grew from it, and its guard against a null video mode has been in the port since 1.0.5.
- James Chambers (jamchamb), whose [2021
write-up](jamchamb.net/2021/08/17/snap-station.html) recovered the Snap Station protocol from the cartridge, without a station to test against. The port's emulation of the device follows it and the decompilation.
- Leonhart, whose recording of a working Snap Station kiosk, ["Using
Pokemon Snap Station For First Time In 20 Years!"](youtu.be/lCnvpIEVpqo), was the main video reference for how the station behaved in use. The printer's display was measured from it: the sticker grid, the marks and stars, and the pace of the three passes all come from those frames.
- ido-static-recomp
by the decompals, which lets the decompilation's compiler, and so the port's patches, build on a modern machine.
- SDL2, the DirectX Shader Compiler, and the libraries
named in
NOTICE.md. - The Roboto Project Authors, for the typeface the printer's lettering is
set from.
- Claude Code, the tool I built this with (How it was made).
- Jack and Beans, the team at HAL Laboratory who made the game. Their name,
shown in the game's opening and at the head of its credits, gave me the name I use here. It is on the title screen's credits line,
JackandBeans (Snap64 Recomp) · v1.1.0, with the port's name and version (the game's history). - Video Game Esoterica, whose video on the port,
"Pokemon Snap Recomp Out NOW! More Pokemon PC Ports", asked for a speed multiplier. Fast forward and slow motion came from that ask. Thank you for the video, and for the idea.
- Everyone who plays it and reports what they see. Most releases so far
were made of what players reported, and the next ones will be too.
Documentation
- The manual -- every control, page, hotkey and setting
- The Snap Station
- Linux and the Steam Deck
- Known issues, in full
- What has been verified
- Mods
- The game's history
- The screenshots
- The changelog
License
Copyright (C) 2026 JackandBeans. The port's own code is GPLv3: see LICENSE and NOTICE.md.
This project is not affiliated with, endorsed by or connected to Nintendo, Creatures Inc., GAME FREAK inc., HAL Laboratory or The Pokémon Company. Pokémon and Pokémon Snap are their trademarks, and the game is theirs. No game data is included; you supply your own ROM. The released program is compiled from the game's code, which N64: Recompiled translated into C from my own cartridge dump. That is how a static recompilation works, and NOTICE.md says what is derived from the game and how.
From the project's repository, fetched . Images load from GitHub.
Releases
Feed-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.1.0/docs/screenshots/01k-title-110.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.1.0/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.1.0/docs/screenshots/21-mods-page-110.png" width="420" alt="The Mods page with two mods on">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.1.0/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0 is the modding release: mods install from the game's own Mods page or from a file dropped on the window, every mod has its own details and options pages, the mod kit makes them, and two mods of mine show how. It is also the first release with a Mac build.
Downloads
File For Snap64Recomp-1.1.0-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.1.0-linux-x86_64.tar.gzLinux, 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; this one has not been yet. Snap64Recomp-1.1.0-macos-universal.zipmacOS 14 or newer, Apple Silicon and Intel in one app. Built and run on GitHub's virtual Mac, not yet on a physical one: the first report from a real Mac decides what it is. You need your own cartridge dump. No game data is included. Start the program and choose your
pokemonsnap.z64when it asks (US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf), or put the file next to the executable yourself.START HERE.txtin each archive says the rest, in one page.What's new
Mods
- The Mods page installs mods. Its Install Mods... row opens a file picker for
.nrmfiles, texture packs and the zips they come in, several at once, and a file dropped on the game's window installs the same way; a zip is unpacked, so a Thunderstore download works as it is. Open Mods Folder shows the folder, Restart Game restarts with the mods as set, and a mod that will not load says why on its row. - Every mod has a details page: its name, version and author, its picture when its file carries one, whether it is on, its whole description, and what it needs or is needed by. Left and Right turn it on or off from there. A mod installed during play is listed at once, marked NEW in the title's rainbow until its details are opened, and loads at the next start.
- A mod's options page, on the same panel: one row per option the mod declares, changed with Left and Right, an enum, a yes-or-no, a number, or a text typed with the keyboard, each written to the mod's own settings file at once, with a Restore Defaults row. An option another option hides or disables behaves as the mod's manifest says.
- The mouse works on every menu: the title's list, the lab, the course list, the pause menu, every Options page, the album, the PKMN Report, Oak's photo check, the Gallery and the name card. Moving the pointer selects, a click chooses, the right button goes back, the wheel scrolls, and a mod can be dragged up or down the load order.
- Help lines name the buttons in your hand. Every line of the port's that names a button says A on a controller, the key it is bound to on a keyboard ("Press X again to close the game, Z to stay"), or the click with a mouse, and changes…
- The Mods page installs mods. Its Install Mods... row opens a file picker for
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.9/docs/screenshots/01j-title-109.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.9/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.9/docs/screenshots/20-pause-options-109.png" width="420" alt="The pause menu's Options button">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.9/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.9 is the release for the Options pages: Esc, or Select on a pad, opens Graphics, Sound, Controls and Mods on any screen, the pause menu has an Options button of its own, and the game has a Mods page.
Downloads
File For Snap64Recomp-1.0.9-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.9-linux-x86_64.tar.gzLinux, 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; this one has not been yet. You need your own cartridge dump. No game data is included. Start the program and choose your
pokemonsnap.z64when it asks (US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf), or put the file next to the executable yourself.START HERE.txtin either archive says the rest, in one page.What's new
The Options pages, anywhere
- Esc, or Select on a pad, opens the port's pages on any screen: the title, the lab, the course map, the evaluation, a ride. The screen underneath is held still and dimmed, the way the game's own pause holds a ride, and Esc, Select or Start closes the pages and the screen carries on from where it stood. Until now the pages lived only in the title's Options screen, so a frame-rate or button change in the middle of a ride meant quitting the course.
- The pause menu has a fourth button, Options, in green, the one colour of the set the menu did not use. It is made from the game's own button artwork and lettering, and it opens the same pages over the paused ride: B goes back to the pause menu, and Start resumes the ride at once. In a course Esc does both steps in one press: it pauses the ride and opens the pages.
- The pages wear the Options screen's own dress wherever they open: the rules above and below the heading, the A OK and B Cancel legend, the help box. Exit Game is on the list in a course too.
- The key stays out of what a held screen would break. It is dropped during the attract demo and the credits, which are scripted to their music. It waits out a fade and a screen's first two seconds. And it does not open the pages on the photo check after a ride, whose screen fills its display list on its own and has no room for them;
snap64.logsays so when it happens. - Enter is the game's Start, and Esc no longer is. On a pad the photo save moved from Select to the right stick pressed in.
Mods
- A Mods page in the game's Options screen, on the list's fifth row. One row per mod in the
mods/folder, with its version and On or Off beside it, and the author and the mod's own description in the help box. Z opens a mod's own options, L and R move it up or down the load order, two rows under the mods open the folder and restart the game, and a.nrmdropped on the window is installed. A change takes effect at the next start, and the page says so. - The port is ready for mods to be written for it. It provides…
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01i-title-108.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/10k-controls-slow-108.png" width="420" alt="The Controls page: Fast Forward and Slow Motion">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.8 is the release for the speed keys: hold one and the game runs faster, hold the other and it runs slower, and the game itself cannot tell. It also puts Photo Detail right, which had been showing some photos at the console's own resolution since 1.0.0.
Downloads
File For Snap64Recomp-1.0.8-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.8-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan 1.2 driver. Played on a Steam Deck in Desktop Mode and in Gaming Mode. You need your own cartridge dump. No game data is included. Start the program and choose your
pokemonsnap.z64when it asks (US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf), or put the file next to the executable yourself.START HERE.txtin either archive says the rest, in one page.What's new
Fast forward and slow motion
- Hold Tab, or the pad's right shoulder button, and the game runs at 3x. Let go and it is back at once. Options > Controls > Fast Forward sets the speed: Off, 2x, 3x or 4x. It is the console run faster, not the game changed: every clock the game reads runs that much faster, so it steps through exactly the frames it would have anyway, with the same Pokémon, the same scores and the same saves. The picture shows the latest frame at your display's rate, and the sound plays quicker and higher, as a tape does.
- Hold Space, or press the left stick in, and the game runs at half or a quarter speed. Options > Controls > Slow Motion turns it on, Off as shipped, since a shot lined up at half speed is an easier shot than the cartridge ever offered. The picture stays smooth, frame interpolation running over each stretched frame, and the sound plays slower and lower. The key sits on the left hand so your right thumb stays free for A.
- Both keys are entries of the settings file's
keystable,fast_forwardandslow_motion, and can be moved like any other. - These two are the idea of Video Game Esoterica, whose video on the port, "Pokemon Snap Recomp Out NOW! More Pokemon PC Ports", asked for a speed multiplier. Thank you for the video, and for the ask.
Photo Detail
- Some photos, or the bottom rows of one, showed at the console's own resolution with Photo Detail on, some runs and not others (issue #15, Succulent-Puppet; my own reviews). Three faults in the ring of sharp copies the port keeps, found one at a time from my own logs: the interface's tiny renders were pinned as if they might be photos and flooded the ring within a frame; the last strip of a 105-row photo never matched, because it runs past the bitmap's end; and browsing the Report churned the ring so hard that a photo the game draws again later without re-rendering it, as Oak's comparison does, had lost its copy. All three a…
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01h-title-107.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/10g-button-setup-107.png" width="420" alt="The Button Setup page, on a controller">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.7 is the release for the first start: with no ROM beside the program, it asks you for the file and puts it where it belongs. Nothing else to name, rename or move.
Downloads
File For Snap64Recomp-1.0.7-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.7-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan 1.2 driver. Played on a Steam Deck in Desktop Mode and in Gaming Mode. You need your own cartridge dump. No game data is included. Start the program and choose your
pokemonsnap.z64when it asks (US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf), or put the file next to the executable yourself, as before.START HERE.txtin either archive says the rest, in one page.What's new
The first start
- The port asks for the ROM. Start it with no
pokemonsnap.z64beside it and a box says what it needs, the system's own file chooser opens, and the file you pick is checked the way the game checks it: the byte order from its header, the hash of the image against the game's. A right one is copied into the port's folder aspokemonsnap.z64, in the order the game wants whatever order your dump was saved in, and you are never asked again. A wrong one is refused with both hashes shown and the chooser comes back. Cancel means no game and a clean exit. On a Linux install that cannot be written, the copy goes to the config home, where the port already kept its files.
Button Setup
- Restore Defaults is the last row, after Stick Right, where 1.0.6 had it second. The page opens on Set Up and five inputs, and the list ends the way every such list ends, with its reset after what it resets. Up from the top row wraps to it, as before; the second A it asks for is unchanged.
The documents
- The README no longer calls the port a Windows port: the Linux build has shipped since 1.0.1 and now says so on the first line and the badge. Widescreen is no longer listed as untested beyond the Beach: I have played every course with it on and seen nothing wrong, which the README says as play, not proof. And the documents speak in one voice now, mine.
Every change, with its cause, is in CHANGELOG.md.
First sta…
- The port asks for the ROM. Start it with no
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01g-title-106.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/10e-button-setup.png" width="420" alt="The Button Setup page, on a controller">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.6 is the release for your hands: every key, mouse button and pad button can be changed in the game, the pad's sticks can be swapped and their dead zone set, and the frame rate can be held at a number of your choosing, all from the game's own Options screen.
Downloads
File For Snap64Recomp-1.0.6-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.6-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan 1.2 driver. Played on a Steam Deck in Desktop Mode and in Gaming Mode. You need your own cartridge dump. No game data is included. Put your
pokemonsnap.z64(US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf) next to the executable and start it.START HERE.txtin either archive says the rest, in one page.What's new
Button Setup
- A page in the game for every binding. Options, Controls, Button Setup (named as the game names such screens). A row for each of the game's eighteen inputs, named by its button and what it does ("Z Button: Zoom", "C-Up: Look Back"), shows what presses it on the device picked at the top ("Set Up: Keyboard", Mouse or Controller), and its help line says more about what that input does in the ride. Press A on a row and the port listens: the next key, mouse button, wheel tick or pad button on that device becomes the row's binding. Z clears a row, unless nothing else would press that input. Esc or eight seconds of nothing leaves it as it was. A key the port uses itself (the function keys, P, the brackets, Home, End, Esc) and the pad's Back and Guide are refused, and the page says so.
- Restore Defaults, right under Device, puts the device shown back the way it came, after asking for a second A.
- The rows also name what no setting changes: the stick that aims and the one that works the C buttons, the mouse's motion while Mouse Aim is on, Esc beside Start.
- The settings file's
keystable is the same table and stays editable by hand; nothing you wrote there is lost.
Controls page
- Pad Sticks: Normal or Swapped, so the right stick can aim and the left work the C buttons.
- Dead Zone: how far the aiming stick moves before the game sees it, 0 to 40 percent in fives, 15 as shipped, for a pad whose stick drifts at rest. The port's dead zone had been fixed at 15 since 1.0.0.
Graphics page
- Frame Rate runs past Display to 60, 90, 120, 144, 165 and 240, each held at that rate by interpolation. Until now that mode was reachable only with F8 or the settings file.
Windows and Linux
- A saved fullscreen is restored after the window opens, as 1.0.5 said it was. That release kept the saved value aside for the restore, but the reader of the settings file had no line for the key, so on Windows and on Linux outside a Steam Deck the restore never ran. Found by this release's own screenshot run.
Under the hood
- Two latent faults fixed: the menu strings' directory h…
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01f-title-105.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/08-options.png" width="420" alt="The Options screen, with Exit Game">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.5 closes the Steam Deck's last known blemish, keeps fullscreen where you put it, makes anti-aliasing changes take effect at once, and lets a gyro or a mouse satisfy the Beach tutorial.
Correction (2026-09-16): "keeps fullscreen where you put it" was not true of this build. The setting was saved but never read back at start, so the restore ran only on a Steam Deck; 1.0.6 fixed it (CHANGELOG, 1.0.6). The rest of this page stands.
Downloads
File For Snap64Recomp-1.0.5-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.5-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan driver. Played on a Steam Deck in Desktop Mode and in Gaming Mode. You need your own cartridge dump. No game data is included. Put your
pokemonsnap.z64(US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf) next to the executable and start it.START HERE.txtin either archive says the rest, in one page.What's new
Steam Deck
- The corner chunk at the start of a course is gone. In Widescreen, a course's first seconds after the opening cinematic showed a chunk at the top-left, black bands and a piece of an earlier picture, until the viewfinder's first raise repainted it; it had been there since 1.0.1. One triangle of the sky dome has a vertex on the camera plane there, and the Deck's Mesa driver culls that triangle in its NGG stage, in software, before the hardware clipper that copes with it. Found by photographing the presented frames on the Deck and settled with the driver's own switches: only the one that turns that culling off restores the frame. The port now asks the driver to leave that culling off before it starts Vulkan; other drivers ignore the request, and the log's first lines say what was set.
Windows and Linux
- Fullscreen stays (issue #13, flamespeedy and dCo3lh0). A fullscreen entered with the maximize button or F11 was dropped by the next change of any setting on the Graphics page, because the page wrote a stale windowed flag back. Every change made outside the pages now reaches them first. A saved fullscreen is also restored a moment after the window opens, on every platform; 1.0.4 forgot it on every launch.
- Anti-aliasing changes take effect at once. A change on the Graphics page, or with F9, used to wait for the next launch: the code that rebuilds the render targets compared the new sample count with itself. Seen in a Steam Deck's log with the renderer at one sample and the setting at 8x.
- The Beach tutorial and the gyro or mouse. With Gyro Aim or Mouse Aim on, the tutorial asked for the Control Stick after ten seconds of looking around, because neither moves the stick. A turn of the view by gyro or mouse now counts for that one check; with both off the check is the cartridge's.
SNAP_DATA_DIR=<absolute path>moves the data directory on Windows as it already did on Linux (asked for by PortForge's author, issue #8)…
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01e-title-104.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/08-options.png" width="420" alt="The Options screen, with Exit Game">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.4 is the Steam Deck release: Gaming Mode fills the panel, the frame after the HAL logo is gone, the Options screen can close the game from a pad, and the thumbnails at Oak's check keep their pictures across a fullscreen switch.
Downloads
File For Snap64Recomp-1.0.4-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.4-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan driver. Played on a Steam Deck in Desktop Mode and in Gaming Mode. You need your own cartridge dump. No game data is included. Put your
pokemonsnap.z64(US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf) next to the executable and start it.START HERE.txtin either archive says the rest, in one page.What's new
Steam Deck
- Gaming Mode fills the screen. gamescope gives a non-Steam shortcut a screen of Steam's choosing unless its Game Resolution is set to Native: on my OLED Deck that was 3840x2160, so the port drew a 16:9 picture that gamescope scaled onto the 1280x800 panel with bars, and rendered it at eight times the game's resolution, which is where the stutter came from. The port now asks gamescope for the display's own size at every start, the request Steam's Native setting makes, and checks three seconds after fullscreen that the surface took it. The log says what was asked, what the screen then is, and every change of the surface's size.
- The frame after the HAL logo. With anti-aliasing on, one frame of the intro's scenery re-posed showed on every Deck and on any 60 Hz monitor: the console never displayed that frame, the port holds the previous picture over it, and under anti-aliasing the held picture went into a target the present thread showed only for a tick of more than one display frame. Found by photographing the presented frames on Windows with the Deck's own settings; the hold is now delivered where the present thread shows it in every anti-aliased case.
- Exit Game. The game's Options screen ends in a sixth row, under Return, in the screen's own font. A turns its help line into "Press A again to close the game, B to stay", the second A closes the program the way the window's close button does, B or moving off the row withdraws the question. A pad had no way to quit; Steam's menu still works too.
- The log is written on every launch on Linux,
snap64.login the folder with the executable (or~/.config/Snap64Recompwhen that folder cannot be written), whatever stdout is, so a launch from Steam leaves a log to attach. The previous run's log is kept assnap64.prev.log. The files the port ships beside the executable, the pad mappings, the window icon, the title's Recomp badge, the shader list, are read from beside it on a read-only install too.
Photos
- Thumbnails after a fullscreen switch (issue #12, Succulent-Puppet). After a switch between a window and fullscreen on the Gallery or the PKMN Report, the thumbnails s…
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01d-title-103.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/10c-controls-gyro.png" width="420" alt="The Controls page, with Gyro Aim and Gyro Speed">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.3 is one file: the pads the port did not know.
Downloads
File For Snap64Recomp-1.0.3-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.3-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan driver. Played on a Steam Deck in Desktop Mode and nowhere else yet. You need your own cartridge dump. No game data is included. Put your
pokemonsnap.z64(US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf) next to the executable and start it.START HERE.txtin either archive says the rest, in one page.What's new
Controllers
- Pads SDL does not know on its own now work. The port uses only a pad SDL has a button mapping for, and SDL's own list, a few thousand pads long, has no 8BitDo N64 Mod Kit: that pad was seen at start-up and ignored, as the log said, while the recompilations that ship the community's mapping list took it. The archive now carries that list,
gamecontrollerdb.txt(SDL_GameControllerDB, zlib licence), beside the executable, read at start-up. Three lines are appended for 8BitDo's three N64 pad ids over Bluetooth on Windows, where SDL tags a pad with the bus it arrived on and the list's lines for them are USB lines: the same buttons, the Bluetooth bus byte, derived rather than read from a pad -- if yours disagrees, the[SNAP-Input]line insnap64.logthat names it is what an issue needs. A newer copy of the file, dropped over the shipped one, is read the same way. - The log says when
gamecontrollerdb.txtis not beside the executable, since it is expected to be.
Nothing else changed. Every change, with its cause, is in CHANGELOG.md.
First start
- On Windows, past SmartScreen: choose More info, then Run anyway, once.
- The first start 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, run it from Desktop Mode, which is where it has been tested; the README's Deck section has the shortcut and gyro settings.
Known limitations
- Widescreen is untested beyond the Beach, and three reports from a Steam Deck are under investigation for 1.0.4: a flicker in the top-left…
- Pads SDL does not know on its own now work. The port uses only a pad SDL has a button mapping for, and SDL's own list, a few thousand pads long, has no 8BitDo N64 Mod Kit: that pad was seen at start-up and ignored, as the log said, while the recompilations that ship the community's mapping list took it. The archive now carries that list,
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01c-title-102.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/10c-controls-gyro.png" width="420" alt="The Controls page, with Gyro Aim and Gyro Speed">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.2 is a small release made of the first bug report against 1.0.1, and of what turned up while it was being fixed.
Downloads
File For Snap64Recomp-1.0.2-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.2-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan driver. Played on a Steam Deck in Desktop Mode and nowhere else yet. You need your own cartridge dump. No game data is included. Put your
pokemonsnap.z64(US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf) next to the executable and start it.START HERE.txtin either archive says the rest, in one page.What's new
Controllers
- A black window at start with a controller attached is fixed (#7, a Switch Online N64 controller over Bluetooth). Every SDL call the port made for a controller ran on the game's own controller thread, and SDL's driver for a Nintendo pad over Bluetooth spends seconds there in synchronous handshakes; the game, straight after opening the pad, sends its scheduler registration without waiting and then waits for the answer forever, and a pad open longer than about 130 ms filled the queue that send needed. The pad now lives on a thread of its own, the game's threads make no controller call at all, and the runtime no longer lets a burst of stale retraces fill a game queue. Reproduced here with a 20-second pause injected at that point, and verified the same way.
pad_enabledin the settings file:falsemakes the port ignore every pad without unplugging one.
Under the hood
- A renderer fault that could drop a whole Pokémon when its triangles reach the camera plane is fixed: the pass's fitted box was computed from unclipped projected positions, and a vertex at or behind the plane made the box empty and the pass vanish. The same family as 1.0.1's Widescreen pop-out, which only the widened view had been guarded against. Found while looking into Snorlax disappearing when the camera is pitched up at him on the Beach, which turned out to be the cartridge's own rule (see Known limitations).
Corrections
- Rumble. 1.0.1's notes said the Rumble Pak now ran for as long as the game asked. It never asks: the cartridge's only motor calls are in its reset handler, which the port never runs, so no pad has ever rumbled here and none will.
rumble_strengthis gone from the settings file (a file that still carries it loads as before), and the port no longer tells the game a Rumble Pak is in port one, as a console with an empty pak slot does not.
Every change, with its cause, is in CHANGELOG.md.
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/01b-title-101.png" width="420" alt="The title screen, 1.0.1">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/04b-beach-widescreen.png" width="420" alt="The Beach in Widescreen: Surfing Pikachu">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/main/docs/screenshots/10c-controls-gyro.png" width="420" alt="The Controls page, with Gyro Aim and Gyro Speed">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.1/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station's printer, three stars">
</p>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.0.1 is the first update, made of the reports that came in after the release, a day on a Steam Deck, and a review of the whole port.
Downloads
File For Snap64Recomp-1.0.1-win64.zipWindows 10 or 11, 64-bit, with a GPU driver that provides Direct3D 12. Nothing else to install. Snap64Recomp-1.0.1-linux-x86_64.tar.gzLinux, experimental: needs the system's SDL2, GTK 3 and a Vulkan driver. Played on a Steam Deck in Desktop Mode and nowhere else yet. You need your own cartridge dump. No game data is included. Put your
pokemonsnap.z64(US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf) next to the executable and start it.START HERE.txtin either archive says the rest, in one page.What's new
Controls
- Keyboard and mouse. The mouse aims the camera in a course, each pixel an angle, with the game's own scheme on its buttons: click to shoot, right-click to zoom, wheel for the flute.
- Rebinding. Every key, mouse button and controller button, in the settings file, which lists the names it accepts. The sticks stay as they are; the page for this in the game comes in the next release.
- A Controls page on the game's own Options screen, beside Graphics and Sound: the Z button, the control stick, mouse aim and speed, zoom speed, camera tilt, gyro aim.
- Gyro aim on a pad with a motion sensor — DualSense, DualShock 4, Switch Pro, or the Steam Deck's own controls — turning the view as the pad turns, at natural scale. Off unless you turn it on.
A note from me: on the Deck, gyro aim is the way to play this. Turn it on and try it.
Rumble runs for as long as the game says instead of a tenth of a second, andCorrection: this was wrong. The cartridge never asks for rumble in play, so no pad rumbles and the key did nothing; 1.0.2 removes it.rumble_strengthturns it down or off.- Pads. One SDL does not know is taught by
gamecontrollerdb.txtbeside the executable. The Switch Online N64 controller's L, R and Z land where they belong. The D-pad walks every menu. The Options pages no longer change a value on a sideways drift of the stick. - Esc is the pause menu, and quits only when held and released, with Keep playing as the default. It used to quit on the spot.
Widescreen
- Pokémon no longer vanish at the 4:3 edge. The renderer dropped a Pokémon whose whole pass lay past it (found by mstan in #5), and the game's own on-screen test culled at a fixed 4:3 bound. Both are fixed, and the leaves and sparkles with them.
- The menus keep their shape. The title, Oak's lab, the album and the reports are 4:3 screens and sit in black bars, instead of keeping the last frame of a course in their margins.
- The viewfinder keeps its letterbox where the console puts it, and a course's fade to black covers the margins.
- Still untested beyond the Beach.
Steam Deck and Linux
- A native Linux build, experimental: the same source through Clang and Vulkan, played on a Steam…
-
Release notes
<p align="center">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.0/docs/screenshots/01-title.png" width="420" alt="The title screen">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.0/docs/screenshots/04-beach.png" width="420" alt="The Beach">
<img src="https://raw.githubusercontent.com/JackandBeans/Snap64Recomp/v1.0.0/docs/screenshots/13-printer-stars.png" width="420" alt="The Snap Station printer's display">
</p>Snap64 Recomp is a native Windows port of Pokémon Snap (Nintendo 64,
US release) made by static recompilation. The game's own code runs on your
PC; the port changes how it is hosted, and everything about how it looks
is off unless you turn it on.You need your own cartridge dump. No game data is included.
Put yourpokemonsnap.z64(US, SHA-1edc7c49cc568c045fe48be0d18011c30f393cbaf)
next toSnap64Recomp.exeand start it. Windows 10 or 11, 64-bit, with a
GPU driver that provides Direct3D 12. Nothing else has to be installed.What is in the box:
- The game as the console ran it, at the console's rate by default, with
its saves in
saves/next to the executable. - Frame interpolation to your display's refresh rate, covering the world,
the camera, the game's sprites and menus, and the fades.
- Widescreen with a true wider field of view, anti-aliasing, super
sampling, render scale, texture filter and dither choices, overscan
crop, and in-game Graphics and Sound pages on the game's own Options
screen. - Photo Detail: Oak's photos, the album and the report at the renderer's
full resolution.
- Jynx Recolor: the purple of the re-releases, opt-in.
- Photo export to PNG with P or the controller's Back button.
- The Snap Station: the Blockbuster kiosk's sticker printer, emulated on
controller port 4 and reached from a fifth title-menu entry. A print
gives you the sixteen-sticker sheet and the printer's own display.
First start. The executable is not signed, so Windows SmartScreen may
say "Windows protected your PC": choose "More info", then "Run anyway",
once. The first start compiles shaders and takes longer. The Snap Station's
Print restarts the program twice on purpose.Known limitations. Some 2D content (photo panels and full-screen
backgrounds while they slide) still moves at the game's rate under
interpolation; the printer's lettering is set from a typeface of the same
construction as the original's, which no source records; keyboard bindings
are fixed; the port has been built and played on one machine only, so the
first reports from other GPUs are welcome.Reporting a problem. Open an issue here and attach
snap64.logfrom
the folder with the executable (andSnap64Recomp.mapif the log has
[SNAP-AV]lines), yoursnapsettings.json, and what you were doing.Verify the download.
Snap64Recomp-1.0.0-win64.zip.sha256holds the
archive's SHA-256;certutil -hashfile Snap64Recomp-1.0.0-win64.zip SHA256
prints yours.Licensed under the GPLv3; third-party notices are in
NOTICE.mdand
licenses/. This project is not affiliated with, endorsed by or connected
to Nintendo, Creatures Inc., GAME FREAK inc., HAL Laboratory or The Pokémon
Company. Pokémon and Pokémon Snap are their trademarks. - The game as the console ran it, at the console's rate by default, with
Works for me
Did it work on your PC? A quick report tells other players which versions are safe to try.
Discussion
No posts yet. Ask a question, share your setup or post a clip.
Sign in to post






