Rush 2049 Runs Natively on PC, and in a Browser Tab: The N64 Recompilation March Continues

San Francisco Rush 2049 now runs natively on Windows as a static recompilation, with 60 fps, widescreen, a hi-res title and split screen. It also runs in a browser tab from your own ROM, through a generic web runtime that works for any N64 recomp.

Rush 2049 Runs Natively on PC, and in a Browser Tab: The N64 Recompilation March Continues

San Francisco Rush 2049, the N64 version of Atari's arcade racer, now runs natively on Windows. A project called San Francisco Rush 2049: Recompiled translates the game's own MIPS code into C using N64Recomp, runs it on N64ModernRuntime, and draws it with RT64. It is not an emulator, and it contains no game data: you supply your own ROM, and the build checks its hash.

That alone would be a solid entry in the wave of N64 recompilations. But this project does one more thing that matters for the entire scene: it also runs in a browser tab, with your own ROM picked from disk, kept in the browser, and never uploaded anywhere.


What It Is

Rush 2049 is a good candidate for recompilation because it never got a proper modern version. The arcade original launched in 1999, the N64 and Dreamcast ports followed in 2000, and since then it has mostly lived on aging hardware. Recompilation sidesteps the usual answer of an emulator and its per-game quirks by translating the game itself.

Under the hood, this is the standard modern N64 stack: N64Recomp and N64ModernRuntime to translate and run the game, and RT64 for rendering. What makes this one interesting is how far the author has pushed the runtime around it. According to the README, the build is playable on Windows, and that claim comes with specifics rather than vibes.


Playable Now, and Specific About It

This is not a "boots to the title screen" situation. The README lists exactly what works: menus, Single Race, Circuit, Ghost Race, Stunt and Battle all run at full speed, all six race tracks race through to the results screen, two and four player split screen renders, and Controller Pak saves survive a restart.

San Francisco Rush 2049 recompilation status
What works, and what is still rough, taken straight from the project's own status notes.

The caveats are just as specific, which is the sign of a project that is telling the truth. Linux builds in CI but nobody has actually played it there. Multiplayer has only been tested from a single pad. And because there is no decompilation of this game, modding has to work through hooks rather than rewritten functions.


It Also Runs in a Browser Tab

Here is the part that changes the math for everyone else. The same build compiles as a web page, and the author hosts it at amazingalek.github.io/rush-2049-recomp. You pick your own ROM from disk, and it stays in the browser: it is never uploaded. From there you get the launcher and menus, sound, and keyboard controls, and it plays the title screen, the menus and the races at close to 60 frames per second in Chrome.

Two practical notes worth repeating. Use Chrome or Edge, because Firefox draws it slowly on a lot of machines. And yes, the "bring your own ROM" rule still applies: the project ships no game data of any kind.

N64 recompilations running in a browser
The web runtime is generic, and it has already been pointed at several other N64 recompilations.

The detail that makes this bigger than one game: the web support is not bespoke to Rush 2049. It lives in its own project, N64Recomp-browser, and it works for any N64 recompilation. The author has also stood up browser forks of Banjo-Kazooie, Majora's Mask, Donkey Kong 64 and Conker's Bad Fur Day specifically to stress test it. Whatever one game turns up gets fixed in the web runtime, so every game gets the fix, Rush 2049 included.

Think about what that means for distribution. Emulators ask players to find, install and configure the right program for the right game, and then hope the emulator's per-game hacks cooperate. A web page asks them to open a link and pick a file. If the web runtime keeps maturing, the N64 library becomes a set of links.


Modern Enhancements

The port also does the thing a good recompilation is supposed to do: it turns the original game into something that fits a modern display and a modern monitor without changing how it plays.

Modern enhancements in the Rush 2049 recompilation
Every enhancement is optional, and every one has an Original value.

The list includes rendering at your window size at up to 4K and beyond instead of 320 by 240, with 2x MSAA. Menu and HUD text is drawn from upscaled fonts rather than 240p blocks, and the title picture is a 4x AI upscale (Real-ESRGAN) applied as a patch to the game's own image, so the repository still ships no game art. Game logic runs at 60 instead of 30, and RT64 interpolates frames up to your monitor's refresh rate for unlocked frame rates. Input lag drops by about one frame, roughly 17 ms at 60 fps, because each frame is drawn as soon as it is ready. Widescreen widens the 3D, moves the race HUD out to the edges, fills the window with split screen, and extends the menu background into the side bars. Audio is remixed to 44.1 kHz through a better interpolator instead of the game's 22.05 kHz.

The rule that keeps it honest: every enhancement is an option with an Original value, so the game as it shipped is always one setting away. That is the right way to do this. Modernize by default, but never take the original away from someone who wants it.


Modding Without a Decompilation

Most recompilation projects lean on a matching decompilation, which provides real function names and makes patching straightforward. Rush 2049 has no decompilation, so the modding approach is different: hooks. A mod can attach to any game function on entry with RECOMP_HOOK or just before it returns with RECOMP_HOOK_RETURN, in the boot code, the main code and both overlays. Mods can call game functions by name, read and write game variables by name, or reach anything by its address, and they can use what the game exports: console printing, window resolution and aspect ratio, frame rate, memory helpers, mod options and UI APIs.

The names are the API. Functions that have been worked out keep their names permanently, and everything else carries an address. The repository ships a working template mod that hooks the boot code and the race timer draw and prints to the console, plus a tool to build a mod into the runtime's own format. Mods load from the launcher's mod menu, where they can be switched on and off.


The AI Disclosure, Again

This is the third project in a row on this site with an AI note on the front page, and this one is the most direct yet: “Made with AI. Almost all of the code, documentation and tests in this repo were written by AI agents (Claude), directed and play-tested by a person. None of it is offered to the upstream projects it builds on, which don't take AI-written code.”

Two parts of that deserve respect. The disclosure itself is candid. And the last sentence shows real awareness of the community it lives in: rather than dumping AI-written patches on upstream maintainers who have asked not to receive them, the author keeps them local. That is exactly the kind of boundary that keeps a hobby scene healthy. As always, the game code is untouched original code; the AI wrote the tooling around it.


The March Through the N64 Library

The Nintendo 64 has always been the awkward console to emulate. Its custom microcode, its RSP and RDP, and its timing quirks mean that accuracy has historically come with per-game hacks and a long list of caveats. It is the console where "just use an emulator" stops being a satisfying answer.

So the library is being rebuilt instead, one recompilation at a time. Alongside Rush 2049, N64Recomp has already produced native versions of Zelda 64: Recompiled (Majora's Mask), Banjo-Kazooie: Recompiled, Donkey Kong 64: Recompiled, Conker's Bad Fur Day: Recompiled, GoldenEye 007, and Super Smash Bros. 64. Each one runs the game's own translated code on modern hardware, at modern resolutions, usually with widescreen, higher frame rates and mod support bolted on top.

What Rush 2049 adds to that stack is a distribution model, not just a port. A single generic browser runtime, stress tested by deliberately bringing up five different games on it, points at a future where the N64 library does not need an emulator at all, and does not need an installer either.

Where this is heading: a console that was once the hardest to emulate is becoming one of the easiest to play, because the games are being turned into native code and handed out as links. Emulation was never easy. Recompilation, apparently, is working.


How to Play It

  • In a browser: open the project page, pick your own N64 ROM, and play in Chrome or Edge. Your ROM stays on your machine.
  • On Windows: build the native port, or use a release build, and point it at your own ROM. The build checks the hash.
  • What you need: your own copy of San Francisco Rush 2049 for the N64, plus the usual build tools if you are compiling it. No game data is included, in any form.