Overview

ProjectR is an unofficial, native port of the arcade games San Francisco Rush: The Rock and San Francisco Rush 2049 to Windows, macOS, and Linux.

NOTE: This project is a work-in-progress without a finish date. It will always be free to play and share. If you were charged money for this or any future version, seek a refund immediately. ProjectR is a passion project out of love for the Rush series.


Preview

San Francisco Rush: The Rock

San Francisco Rush 2049


Requirements


Asset Requirements

To play ProjectR, original game assets are required. Neither supported game is playable unless these are provided. After starting the game, the main menu will provide the option to set up each game.

San Francisco Rush: The Rock

To play, the following assets must be provided:

  • A copy of San Francisco Rush: The Rock arcade hard drive (sfrushrk CHD or raw hard drive dump)
  • All four audio ROMs as files: audio.u62, audio.u61, audio.u53, and audio.u49
    • A ZIP file containing the audio ROMs is also accepted.

Optionally, a copy of the original San Francisco Rush hard drive (sfrush CHD or raw hard drive dump) adds the white color option to the original eight cars.

San Francisco Rush 2049

To play, one of either of the following assets must be provided:

  • A copy of San Francisco Rush 2049: Special Edition arcade hard drive (sf2049se CHD or raw hard drive dump)
  • A copy of San Francisco Rush 2049: Tournament Edition arcade hard drive (sf2049te or sf2049tea CHD or raw hard drive dump)

Importing existing save data is supported for player profiles, fast times, and phantom photons.

If a MAME CHD is provided, a MAME delta CHD (.dif file) may also be provided to support importing of player data if the game was played within MAME. The provided MAME delta CHD must correspond to the game data you're importing (e.g., if sf2049se.chd is provided, the corresponding sf2049se.dif is expected).

Computer Requirements

  • A dedicated or integrated GPU supporting Vulkan 1.2.
    • Ensure the latest graphics drivers are installed for your GPU.
    • Older AMD graphics cards from before 2015 may run into issues related to VRAM usage. See the Known Issues section for more detail.
    • On macOS, compatibility is provided through MoltenVK.
      • Apple Silicon-based Macs are known to work well while Intel support varies based on OS version and graphics card.
      • Effort has been made to ensure compatibility with older systems but success may vary.
  • A CPU supporting the x86-64-v2 microarchitecture level.
    • On macOS, both Intel and Apple Silicon (ARM64) CPUs are supported.
  • Operating Systems:
    • Windows 10 (1903) or newer
    • macOS 10.15 or newer
    • Linux with X11 or Wayland (e.g., Ubuntu 22.04 LTS or newer, or any distribution with glibc>=2.35 and libstdc++>=12 )

Supported Input Methods

Multiple input methods are supported:
  • Gamepad: As the original arcade releases used a steering wheel and pedals for primary game input, a best-effort attempt has been made to translate that to supporting gamepads (Xbox and PlayStation controllers and third-party counterparts).
    • Multiple options are available to adjust deadzones and sensitivity/linearity of each game axis.
  • Wheel and Pedal: Wheel and pedal setups such as those from Logitech, Thrustmaster, or Fanatec are supported. Force feedback should be supported on all wheels as well.
    • Other wheel and pedal setups, such as those from Asetek, CAMMUS, MOZA, Simagic, and Simucube should be supported but unconfirmed.
    • The rule of thumb is that if your setup works in other games that use SDL, including MAME, it should work in ProjectR.
The following is currently unsupported:
  • Keyboard and/or Mouse: It's planned for the future, but it's a low priority at the moment.

Steam Deck

Testing has been performed on a Steam Deck using the AppImage provided.

It is recommended, but not required (with enough tapping), that performing the setup for each game should occur in "Desktop Mode" instead of "Gaming Mode" due to issues with tapping to select files on the dialog that appears. A warning will appear when attempting to perform the setup in "Gaming Mode" indicating this.

To play in "Gaming Mode," the game can be added as a non-Steam game and played through the Steam Deck's primary interface.

To skip the main menu and start a game directly, the following "Launch Options" or command line arguments can be used. These work on all platforms:

  • To start San Francisco Rush: The Rock use --rtr
  • To start San Francisco Rush 2049 use --2049

Note that if the game is not yet setup, you will be brought to the main menu instead.


Download

Release Notes:

  • Feature: San Francisco Rush 2049 - The last iteration of the Rush series in arcades…
    • Special thanks to Stevie2049, neSneSgB, DeathEngine2, HanzoGXP, Cobra_427, and WeenieWhistle from the Team Rush Discord for testing and providing feedback prior to release.
    • The reverse engineering effort was primarily based on San Francisco Rush 2049: Special Edition and therefore incorporates the collision, physics, and car handling models from this version.
    • Supports assets (CHD or raw hard drive dump) from the following versions only:
      • San Francisco Rush 2049: Special Edition (sf2049se)
      • San Francisco Rush 2049: Tournament Edition (sf2049te) and the unlocked variant (sf2049tea)
    • Player profiles, fast times, and ghosts may be imported directly from the assets provided.
      • A MAME delta CHD (.dif file) can be used to import saved data if previously played through MAME.
      • This file can be found in the diff folder where MAME is located and will be named based on the game it's associated with (e.g., for sf2049se, the file will be named sf2049se.dif).
    • To provide a better user experience, the "Just Play" and "Join Team Rush" menu has been added back in when entering the race select screens.
      • When signed in to a player profile, future races will provide the "Continue" option for that profile.
      • The "Continue" option will be present between game restarts unless disabled in the game's settings.
    • For Windows, new start menu shortcuts are added to directly start each game. New desktop icon options have been added for this as well.
  • Feature: Manage San Francisco Rush 2049 cheats in new game-specific "Game Settings."
    • Cheats for San Francisco Rush 2049 can now we enabled prior to a race and persist across races.
    • These cheats are locked until entered on the "Cheats" tab or using your keyboard's number pad during a race. Your keyboard's top number row, with Enter as # and Backspace as *, is also supported.
    • All numpad-based cheats from the original game are supported.
      • Note that the Normal, Advanced, and Extreme handling cheat codes are not present in the "Cheats" tab as they can be set during race selection.
    • A few new cheats have been added as well…
  • Feature: Added option to prevent saving of the name entered for a fast time in San Francisco Rush: The Rock. (Requested by Anderson Becker and Tomaszewski1994)
    • When the option is enabled and a fast time is achieved, it will always request a name to be entered like in the original game.
  • Feature: When providing the audio ROMs for San Francisco Rush: The Rock, the setup process now accepts a ZIP file containing said audio ROM files.
    • The setup will search the ZIP file for the expected audio ROM files and extract them automatically.
  • Improvement: Multiple optimizations and fixes in the underlying Vulkan-based engine have been made.
  • Bug fix: Vulkan surface and texture formats were incorrectly handled as sRGB as opposed to unnormalized values.
    • Colors in San Francisco Rush: The Rock now accurately match the original game.
    • This will make certain parts of the game appear darker than in previous releases.
    • NOTE: MAME's default contrast, brightness, and gamma settings for San Francisco Rush: The Rock cause a washed out look compared to the original arcade cabinet and would not be a good comparison without proper corrections to those settings.
  • Bug fix: Force feedback on Logitech G923 and G920 should now work correctly.
    • Special thanks to WeenieWhistle with testing and helping to determine the issue within SDL3.
  • Bug fix: Fix issue where setting interface scaling too high would cause the menu text to become white blocks or crash the game.
    • The game will now step down to the highest supported scaling value as this is based on the maximum texture dimensions supported by the GPU.
  • Bug fix: Fix issue where the game would fail to start if log files could not be rotated. (Encountered by ScHlAuChi)
  • Bug fix (Windows only): Desktop icons are now properly created when the option is selected during installation.
  • Bug fix (Windows only): Fix issue where the installation program would fail to start when attempting to determine if the user has the latest Microsoft Visual C++ Redistributable installed. (Encountered by ransom1122)
    • It will now show a dialog warning the user of this issue and then proceed with the setup process.
  • Other: Updated SDL from 2.30.9 to 3.14.0.

Release Notes:

  • Feature: Force Feedback Support - Added support for force feedback for steering wheels.
    • The only system-level driver requirement for force feedback is support for a constant haptic effect.
    • Force Feedback settings are available under a new Force Feedback sub-tab when a steering wheel is selected under the Settings' Input tab.
    • The three feedback strengths in-game are configurable by the user in the Force Feedback sub-tab. These define the gain or proportional force output of the wheel.
      • They default to 60%, 80%, and 100% for light, medium, and heavy, respectively.
    • A global gain setting is also available which defines the proportional gain of all feedback strengths.
      • For example, setting the global gain to 50% and using the default medium feedback strength setting of 80% results in a maximum force output of 40% while playing.
    • NOTE: If you experience high speed oscillations or uncontrollable shaking due to force feedback, try lowering these gain settings.
    • All settings related to force feedback are specific to the wheel it is configured for and do not apply to all connected steering wheels.
  • Feature: Steering Range Control - When supported and enabled, the range of steering can be automatically set on startup.
    • This feature is disabled by default.
    • It can be enabled in the same Force Feedback sub-tab of the Input tab mentioned above.
    • NOTE: If an end-deadzone was previously set to emulate the steering range, that deadzone will need to be removed as the device is expected to provide a steering input value proportional to the range set.
    • Upon quitting the game, it will attempt to revert the range setting to what it believes is the default maximum range for the given wheel or, if available, the previously set range.
    • Not all wheels are supported. Most Logitech wheels and some Thrustmaster and Fanatec wheels are supported. Notably, Asetek, CAMMUS, MOZA, Simagic, and Simucube wheels are not supported.
      • NOTE: Not all supported devices have been tested. Feedback is appreciated on if it does or does not work when the game reports that it is supported, and you've enabled it.
      • For unsupported wheels, if your device supports manually setting the range within a manufacturer-provided control panel, the recommended range to set while playing is 270°.
  • Improvement: To support additional input configuration, the Input settings tab has been changed to provide multiple sub-tabs instead of a single scrolling list of items.
  • Improvement: Added setting to enable the holding of a numbered gear after the associated button has been pressed. (Requested by WeenieWhistle)
    • Previously, when a numbered gear button was pressed on a gamepad, it would engage the mapped gear but upon releasing the button, the car would return to neutral.
    • This change is applicable to users who would like to use the numbered gear buttons for gear selection and will not affect those using an H-shifter or the Gear Up and Gear Down buttons.
    • The setting can be found at the bottom of the Game Buttons sub-tab and is configurable for each input device.
    • This setting defaults to enabled on Gamepads and disabled on Wheels/Joysticks.
  • Optimization: Improved texture conversion and GPU transfer performance.
  • Bug fix: Changing the force feedback strength during car selection will no longer change the car color as well.
  • Bug fix: Fix issue where an input device that identifies as two devices would not be selectable on the Input tab. It is now possible to select the correct device for configuration. Encountered with a Fanatec wheel.
  • Bug fix: Fix issue where optional Vulkan features were not being detected correctly and would not be enabled when available.
  • Bug fix: The closest drone's engine should now always be audible when near the player.
  • Bug fix: Fix a rare race condition that could occur when attempting to quit the game causing the game to sit frozen and not close.
  • Other: Updated SDL from 2.30.6 to 2.30.9.
  • Other (macOS only): Updated MoltenVK from 1.2.10 to 1.2.11.
  • Other: Under the hood changes in preparation to support 2049…

NOTE: The initial release for 0.5.1 (c419267) has been replaced to include a fix related to the rendering of 2D images on macOS. If you downloaded the initial version within the first 24 hours of release and have not encountered any issues, then there is no need to update.

Release Notes:

  • Feature: macOS Support - This is dependent upon MoltenVK which allows Vulkan code to run on macOS through Apple's Metal graphics framework.
    • To see if your computer is compatible, visit Apple's support article at https://support.apple.com/en-us/102894.
    • At the time of release, ProjectR was built with MoltenVK 1.2.10.
    • A universal binary is provided with compatibility for both Apple Silicon and Intel-based Macs.
    • Special thanks to Ace, larsbamble, and ant from the Team Rush Discord for helping test compatibility!
  • Feature: Explorer Mode - Enable unlimited time and unlimited laps when drones are disabled. (Feature request by DeathEngine2)
    • This setting can be enabled in the "Gameplay" tab in settings.
    • Further enhancements to this feature will be added in future updates.
    • Disclaimer: Time limit is actually 11.57 days and number of laps is set to 99.
  • Feature: Interface Scaling - The "Options" menu and Settings interfaces can now be manually scaled through a slider in Settings.
    • NOTE: This does not affect in-game UI elements such as the HUD.
    • This was introduced due to an inability to reliably determine display scaling on Linux and macOS. This may be rectified in the future with SDL3.
    • This setting can be found in the "Display" tab in settings or as interface_scale in the game configuration file.
  • Optimization: To support some older macOS systems, the world render system was refactored to reduce the required GPU resources to render a model.
    • This change may have a slight performance and efficiency improvement on modern systems but this has not been confirmed. However, it should allow some systems that the game couldn't run on before to now be supported.
    • For additional technical detail, most of the world render system's combined image sampler descriptors have been replaced with separate image and sampler descriptors in its descriptor set layout. This results in replacing a maximum of 53 combination image samplers (53 images and 53 samplers) with 1 combination image sampler, 45 images, and 8 samplers. This was an issue on some older macOS systems and may have been due to having a maximum sampler limit of 16 and missing support for argument buffers.
  • Bug fix: Fixed the texturing of the black colored version of the "Extreme" Sports car (Bugatti EB110 lookalike) during car selection.
  • Bug fix: Multiple devices can now provide input without conflicting. This fixes issues related to dual device input setups such as wheel and pedal setups requiring two USB cables such as those with a separate USB cable for the H-shifter. (Reported by neSneSgB)
  • Bug fix: For those who desire to use the numbered gear button inputs on their gamepad to select a specific gear, that now works correctly. (Reported by neSneSgB)
  • Bug fix: A duplicate Golden Gate Bridge should no longer appear on track 1 during a race. Due to the fix's implementation, it will still appear during attract mode.
  • Bug fix (Linux only): Fixed multi-monitor detection. Before this release, SDL would fail to detect if more than one monitor was detected and would treat all monitors as one. (Reported by neSneSgB)
  • Other: Improved first-time setup process by adding additional dialogs to clarify what will be requested or what will occur in the following setup step.

Release Notes:

  • Feature: "Options" Menu – Pressing the Option or Start button on your gamepad or Escape on your keyboard will open this menu. This allows access to settings or to quit the game.
    • While in a race, this menu allows quitting a race. This will result in an instant game over and return you to attract mode.
    • Restarting and Pausing a Race are work-in-progress items and are not yet supported.
  • Feature: In-Game Configuration – All settings within the game configuration file can now be managed directly in-game.
    • With this change, comments are no longer added to the game's configuration file as that is no longer the primary means of changing settings.
    • To better clarify a setting's purpose, informational tooltips can be hovered over to understand more about what an option does.
    • Keyboard, gamepad, and joystick navigation is supported. New input mappings for navigating menus are added to existing inputs automatically.
      • The navigation mappings can be changed towards the bottom of the Input tab for each input device.
  • Feature: Visual Input Mapping and Testing – Configuring input axes and buttons can be done with a simple click and button press.
    • Up to three buttons can be mapped at once to a single button-based input.
    • Axis-based inputs can now be visualized. Dead zones and linearity, as well as range type for wheels/joysticks, are demonstrated visually as a line graph with a dot showing the current input and resulting output value.
      • This makes it much easier to configure a wheel and pedal setup or an atypical gamepad/joystick device.
    • For gamepads, button icons and tooltip text describing the gamepad's button should properly represent the expected icon and name for the gamepad.
      • For example, Xbox controllers will show X, Y, A, and B while PlayStation controllers will show a cross, triangle, square, and circle.
      • Not all supported gamepad buttons have icons and will instead show a question mark. Hovering over the buttons should show a tooltip correctly describing the button. For example, the paddles on the bottom of the Xbox Elite or DualSense Edge controllers would exhibit this behavior.
  • Feature: Display and Graphics Configuration – Window mode, resolution, and refresh rate can now be changed in-game.
    • Pressing the Apply button after changing window mode, resolution, and refresh rate will apply those changes immediately.
      • Refresh rate can only be set when the Full Screen window mode is selected. Full Screen (Borderless) and Windowed match your screen's current refresh rate.
    • NOTE: After changing the game's resolution, the in-game UI elements will be incorrectly placed. The next attract scene or race will have the correct placement of UI elements. This will be fixed in a future release.
    • HUD positioning bias changes occur the next time the HUD is set up and do not update immediately. This is the same issue as what occurs when the game resolution changes and will be fixed in a future release.
    • Draw distance changes are applied immediately.
    • Anti-aliasing and Anisotropic Filtering settings require the game to be restarted. These are marked with a triangle icon with a tooltip indicating this.
  • Feature: Audio Configuration – Game volume and attract volume can now be changed.
    • The game's original reverb can now be disabled as well.
  • Feature: Music Player – Music from the game can be selected from a list and played at any time.
    • Leaving the settings menu will automatically turn off the music player.
    • For advanced users, additional sounds can be played if the hexadecimal command value is known.
      • NOTE: Not all commands from the original DSP code were implemented, especially if the command was not used by the game and was only used for audio testing or debugging.
  • Feature/Bug fix: The "Read me" and "License and Attribution" text can be viewed in-game in the "About" tab.
  • Feature: Added option to retain damage after a manual abort. When enabled, only a crash will reset a car's visible damage. This option matches the behavior of the Nintendo 64 version of the game. (Feature request by neSneSgB)
  • Feature: Attract demo races are now completely randomized for where they start on a track. Previously, they could only start from a handful of points.
    • This does allow for some wacky starts…
  • Optimization: Improved the model loading and transfer process used between attract scenes and at the end of a race. Pauses from attract movies to attract demo races should be noticeably reduced.
  • Feature/Bug fix: Clarified and fixed option for full-screen borderless window mode. Previously, it was incorrectly named "full_screen" while the game defaulted to "full_screen_windowed" (which was actually full-screen exclusive mode). The game now properly defaults to full-screen borderless mode. (Feature request/Reported by Matsilagi)
  • Bug fix: The "Rush Whisper" now properly plays when the Rush logo animation starts during attract mode. (Reported by neSneSgB)
  • Bug fix: When "Show Damage" is turned off, brake lights will continue to work even after a car is hit in the rear. This bug originates from the arcade version where the brake lights would no longer work even when there was no visible damage to the rear of a car with this option off.
  • Bug fix: Speedometer will properly start at 0 at the beginning of a race. Previously, an attract demo speedometer reading would carry into the beginning of a player race until the countdown finished.
  • Bug fix: Cars in attract mode will no longer have a tunnel reflection at the start of a demo race. This was most apparent when the camera started at a distance from the cars and went away when they were close.
  • Other: Removed default input mapping where the "Create"/"Share"/"Select" button would immediately quit the game. The input mapping still exists and existing devices will continue to have it but new devices will not.
    • This is no longer necessary due to "Quit Game" being accessible from the "Options" Menu.
  • Other: Removed "Edit Game Config" shortcut from the Start Menu on Windows. This only applies to new installations of the game.
  • Other: Updated SDL from 2.30.5 to 2.30.6.

Release Notes:

  • Bug fix: Car reflections almost perfectly match the original arcade version. The black truck bed is now better at absorbing light…
  • Bug fix: Car body shading and car window reflections now properly respect the original global light direction and car orientation.
    • Previous versions used a different global light direction vector and shading levels in an attempt to match the arcade version.
    • The car window reflection fix is most apparent during car selection where the window reflections were previously static and now change when the rotor rotates.
  • Bug fix (Windows only): Added checking to the installer to verify the latest Microsoft Visual C++ Redistributable is installed. If it is not up-to-date, it is automatically downloaded and installed as part of the installation process.
  • Other: Adjusted default game controller input settings for steering. Linearity now defaults to 1.5 instead of 1.3 and the end deadzone is now 0 instead of 1000.

Note: For Windows users, if the game does not run after setup is complete, ensure you have the latest Visual C++ Redistributable from Microsoft installed. Click here to download it.

Windows (.exe, 3.6 MiB) Linux (.AppImage, 2.8 MiB) macOS (.dmg)

Release Notes:

  • Feature: Add support for mapping "accelerator", "brake", and "clutch" to buttons. (Feature request by neSneSgB)
  • Feature: Add support for gamepads not supported by SDL's Game Controller API but are accessible via SDL's Joystick API. When detected, an empty configuration will be added to the game configuration file. Manual editing of the file is necessary to make use of these controllers. (Feature request by stevie2049)
  • Feature: Add support for adjusting anisotropic filtering. A new configuration option has been added called "anisotropic_filtering" to the game configuration file. (Partial feature request by Kupo)
  • Bug fix: Fix the Vulkan queue family determination algorithm to properly support more limited devices such as the Nvidia GTX 960 which was triggering a crash within Nvidia's Vulkan implementation. (Encountered by Kupo and super56k)
  • Bug fix (Linux only): Changed from Debian 12 to Ubuntu 22.04 as the base distribution the AppImage is built on. This fixes any GLIBC symbol issues for users of Ubuntu 22.04 or derivative distributions such as Linux Mint 21. (Encountered by super56k)
  • Other: Updated SDL from 2.30.3 to 2.30.5.

Release Notes:

  • This is a release to gather feedback on compatibility related to CPU, GPU, and operating system support. The game has been tested on a limited number of Intel and AMD processors with Nvidia and AMD graphics cards. Intel Iris Xe integrated graphics have also been tested in a limited capacity. However, Intel dGPUs (Arc) are untested.

Known Issues

The following is a list of known issues, including bugs as well as inconsistencies between the arcade game and ProjectR:


Contact

If you've encountered an issue, please visit the FAQ / Troubleshooting page first.

Discord is the preferred method for support issues, as multiple people may be available to help you: "Team Rush" Discord server

To reach the developer directly outside of Discord, message or tag me in a post on one of two social media platforms:


© 2024-2025 T3hD0gg