BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
The definitive Need for Speed: Most Wanted recompilation, built from the 2005 Xbox 360 version. Sharper, wider and smoother on Steam Deck, Steam Machine, Steam Frame, Linux and Mac, up to 4K and ultra
GamesC++ · PythonGitHub @SpeedBreakerProjectOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Unofficial static recompilation of the Xbox 360 version of Need for Speed: Most Wanted (2005): a native port for Steam Deck, Steam Machine, Steam Frame, Linux and Mac (iPhone/iPad: sideload the experimental IPA or build it yourself). Bring your own disc: no game files included. Not affiliated with EA or Valve.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
An unofficial static recompilation of the Xbox 360 version of Need for Speed: Most Wanted (2005):
a native port, not an emulator.
Play your own copy on Steam Deck, Steam Machine and Steam Frame (SteamOS), Linux and Mac,
and for iPhone and iPad, sideload the experimental IPA or build it yourself.
What you see in a race, on a 21:9 ultrawide: a wider view, not a stretched one, with the HUD and the mirror where they belong.Read the full README ↗[!IMPORTANT] SpeedBreaker is an unofficial fan project by project(u). It is not affiliated with, endorsed by or sponsored by Electronic Arts Inc., the Need for Speed brand or Valve Corporation.
No game files are included or distributed. To play, you need your own legally obtained backup (a disc image) of your own Xbox 360 disc of Need for Speed: Most Wanted (2005). The in-app installer verifies it and installs it. Please don't ask for, or share, game files or disc images. See the full legal notice.
Contents: What it is · Highlights · Download · Quick start · How to update · Setup by platform · Controls · Settings · Tips · FAQ · Known issues · What's next · For developers · Credits · License · Legal notice
SpeedBreaker is an unofficial static recompilation of the Xbox 360 version of Need for Speed: Most Wanted (2005): a native port, not an emulator. It runs as an ordinary app on your device (see how it works).
It is built from the Xbox 360 version of the game, not the PC version: it runs the Xbox 360 release's own code, translated ahead of time, and it installs only from the Xbox 360 disc.
You bring the game: SpeedBreaker installs it from a backup of your own disc and checks every file. Then you race, with things the Xbox 360 couldn't do: up to 4K, ultrawide and tall screens, and a settings menu you can open mid-race.
Screenshots: SpeedBreaker v0.1.2 on a Mac Studio (M4 Max). They are unedited frames from the game's own output, except that the licence plates in the top image and the first race image are blurred. The game content in them belongs to its owners.
| Platform | How to get it | Tested on |
|---|---|---|
| Steam Deck and Steam Machine (SteamOS) | DownloadSpeedBreaker-steamos-x86_64.tar.xz | Steam Deck OLED (SteamOS 3.9.2). Steam Machine (SteamOS 3.8) on a 3440x1440 ultrawide. The Steam Deck LCD hasn't been tested yet. |
| Steam Frame (SteamOS, arm64) | DownloadSpeedBreaker-steamos-arm64.tar.xz | Steam Frame (SteamOS 0.3.0). It plays as a big flat screen in the headset; it is not a VR mode. |
| Linux (x86-64) | Download the x86-64 SteamOS build, SpeedBreaker-steamos-x86_64.tar.xz, or build from source | Tested here on SteamOS. Players reported v0.1.1 working on Fedora 44 (GeForce GTX 1080 Ti) and Ubuntu 24.04 (Intel Arc 140T). Other setups: reports welcome. |
| Mac (Apple silicon) | DownloadSpeedBreaker-macos.dmg | MacBook Pro (M1 Pro) on macOS 27 and Mac Studio (M4 Max) on macOS 26; macOS 15.6 (Sequoia) in a virtual machine. There is no Intel Mac build. |
| iPhone and iPad | Sideload the IPA (experimental), SpeedBreaker-<version>-ios.ipa on the release page, or with Xcode |
Each link downloads the newest release. Every file and its .sha256 checksum file are on the
latest release page. To check a download, put its .sha256 file next to it and run
shasum -a 256 -c SpeedBreaker-macos.dmg.sha256 on a Mac, or
sha256sum -c SpeedBreaker-steamos-x86_64.tar.xz.sha256 on SteamOS (with your file's name): it
should say OK. What changed in each release is in CHANGELOG.md.
Back up your own disc. SpeedBreaker supports two versions of the game: the USA (NTSC-U,
English) Xbox 360 disc and the European (PAL) disc with Spanish movies and speech. The installer takes a full .iso, a trimmed XISO, or a folder with
the extracted disc files. No title update is needed. SpeedBreaker doesn't provide game files
or disc images, or link to them.
Get SpeedBreaker. Download it for Steam Deck, Steam Machine and Steam Frame (SteamOS), Linux, Mac or Windows (beta). On iPhone and iPad you sideload the experimental IPA or build it yourself. Then follow the setup for your platform.
Start it and install. On first run, SpeedBreaker looks for your disc image, checks that it is the right game and version, then copies and verifies every file. This takes a few minutes at most. Afterwards you can delete the disc image.
Race. Your saves and settings are kept apart from the game, so they stay when you update SpeedBreaker or reinstall the game. The settings open with F1, Back + Start on a controller, or a three-finger tap on iPhone and iPad.
~/Games/SpeedBreaker); your Steam shortcut keeps working.Download and unpack (in Desktop Mode). Download the SteamOS build,
SpeedBreaker-steamos-x86_64.tar.xz. Make a Games folder in your home
folder, move the file there, and choose Extract archive here. Or, in Konsole:
mkdir -p ~/Games && tar -xf ~/Downloads/SpeedBreaker-steamos-x86_64.tar.xz -C ~/Games
Keep it on internal storage or on an SD card formatted by SteamOS, and don't use :, ; or
$ in the folder names. To update later, unpack the new download over the same folder
(How to update).
Add it to Steam. Steam > Games > Add a Non-Steam Game to My Library > Browse. Set the
file type to All Files and pick ~/Games/SpeedBreaker/speedbreaker.sh, the launcher (the
program itself is in lib/). Leave Compatibility (Proton) off: this is a native Linux game.
Put your disc image in Downloads, or in the top folder of an SD card. SpeedBreaker also
looks in your home folder, Desktop, Documents, Games, USB drives and EmuDeck's
Emulation/roms/xbox360. Game Mode only sees SD cards and USB drives formatted by SteamOS;
for a card formatted on a PC, copy the image into Downloads first.
Install (back in Game Mode). Start SpeedBreaker from your library. It highlights the image
it found (Ready to install; with several, pick yours with Up and Down): press A, then
A again on Install. Use the images it finds rather than Browse for image..., which may
not open in Game Mode. The game goes to the internal storage; to put it on the SD card or in
another folder, press Up and pick with Left and Right before Install. Choose a folder...
opens a folder picker in Desktop Mode only. From Game Mode, switch to Desktop Mode and choose
the folder there, or run ~/Games/SpeedBreaker/speedbreaker.sh --install <image> --dest <folder>
from Konsole in Desktop Mode (or over SSH). Use a folder on the internal storage or on a card
formatted by SteamOS, or Game Mode won't find the game.
Check the screen settings.
Controls: the Deck's controls work through Steam Input (default Gamepad layout). Settings: hold View (two squares, left of the screen) and press Menu (three lines, right of the screen).
Uninstall: delete ~/Games/SpeedBreaker/, ~/.local/share/speedbreaker/ (this deletes your
saves too) and ~/.cache/speedbreaker/, and remove the shortcut from Steam.
Portable mode: to keep everything in the SpeedBreaker folder (saves, settings, logs, shader
caches and the installed game), so the whole folder can be moved or copied to another Steam Deck,
Steam Machine or Linux PC, make an empty file named portable.txt next to speedbreaker.sh. That
starts fresh; to bring your current settings, saves and game along, run
~/Games/SpeedBreaker/speedbreaker.sh --portable on in Konsole instead, and --portable off to
go back. Both copy and never delete. The folder's README says more.
The Steam Frame has its own download. You set it up on the Frame's desktop: open the Desktop app in your Steam library.
Download and unpack. Download the Steam Frame build,
SpeedBreaker-steamos-arm64.tar.xz, into Downloads (not
SpeedBreaker-steamos-x86_64.tar.xz: that one is for the Steam Deck, Steam Machine and Linux
PCs). The Frame's file manager can't unpack it, so open Konsole and run:
mkdir -p ~/Games && tar -xf ~/Downloads/SpeedBreaker-steamos-arm64.tar.xz -C ~/Games
This makes ~/Games/SpeedBreaker. Keep it on the Frame's internal storage, and don't use :,
; or $ in the folder names. To update later, unpack the new download over the same folder
(How to update).
Add it to Steam. In the file manager, open ~/Games/SpeedBreaker, right-click
speedbreaker.sh and choose Add to Steam. Or, in Konsole:
steamos-add-to-steam ~/Games/SpeedBreaker/speedbreaker.sh. Leave Compatibility (Proton)
off: this is a native Linux game.
Put your disc image in Downloads. SpeedBreaker also looks in your home folder, Desktop, Documents and Games.
Install. Start SpeedBreaker from your Steam library. It highlights the image it found
(Ready to install): press A, then A again on Install. Or install
from Konsole: ~/Games/SpeedBreaker/speedbreaker.sh --install ~/Downloads/your-image.iso
(with your image's name; add --dest <folder> to put the game in a folder of your choice).
SpeedBreaker plays as a big flat screen in the headset. It is not a VR mode.
There's no separate desktop-Linux package yet. Try the x86-64 SteamOS download,
SpeedBreaker-steamos-x86_64.tar.xz, which brings its own runtime libraries
and is tested here on SteamOS (players reported v0.1.1 working on Fedora 44 and Ubuntu 24.04), or
build from source. Unpack it,
put your .iso in your home folder, Downloads, Desktop, Documents or Games (or on a USB drive),
and run speedbreaker.sh: always start the game with it, since it picks the libraries the
program in lib/ needs (started on its own, the program fails on most systems with a message
such as GLIBC_2.44 not found). The game starts in a window; Display > Fullscreen switches to full
screen and decides how the game starts. The installer puts the game in
~/.local/share/speedbreaker/game, or on a drive, or in any folder you pick with Choose a
folder... (it needs a file chooser portal or zenity; without one, use --dest, below).
On a laptop with two GPUs, SpeedBreaker uses the dedicated graphics card; with NVIDIA's driver the
launcher also turns on PRIME render offload. That hasn't been confirmed on a real two-GPU laptop
yet: the log's [video] Vulkan devices: line says which GPU it chose and why, and a report with
that line from yours would help. To pick another, start it with NFSMW_GPU=<its number or part of its name>, e.g. NFSMW_GPU=intel %command% in Steam's launch options.
The Windows version is a beta: so far it has been tested on one laptop with Intel UHD
Graphics and a 60 Hz screen. Download SpeedBreaker-0.2.0-windows-x64-beta.zip from the
Releases page, right-click it, choose Extract All, and double-click
SpeedBreaker.exe in the extracted folder (not inside the zip). SpeedBreaker isn't signed, so
Windows may say "Windows protected your PC": click More info, then Run anyway.
(Smart App Control, where it's on, offers no Run anyway.) The installer then works as on the
other platforms: it looks for your .iso in your user folder, Downloads, Desktop, Documents and
Games and on your other drives, or takes one (or an extracted disc folder) you browse for, and
puts the game in %LOCALAPPDATA%\SpeedBreaker, where your saves, settings and logs go too.
README.txt in the zip has the details. Check for Updates isn't available on Windows yet.
Please report how it runs, especially on NVIDIA, AMD and Intel Arc graphics and on 120 or 144 Hz monitors, with "Windows beta" in the issue's title. Windows builds made by others aren't supported here.
SpeedBreaker-macos.dmg, open it, and drag
SpeedBreaker to your Applications folder.Games folder in your home folder (~/Games). That's the only
place SpeedBreaker looks by itself, so macOS doesn't have to ask for access to your other
folders. For an image anywhere else, use Browse for image....~/Library/Application Support/SpeedBreaker/game, or to an
external drive or any other folder if you choose one (Choose a folder..., with the arrows on
the To row). An empty folder is used as it is; a folder that already holds files gets a new
SpeedBreaker Game folder inside it. For a folder in Desktop, Documents or Downloads, or on an
external drive, macOS asks once whether SpeedBreaker may use it: choose Allow. iCloud Drive
can't hold the game (nor Desktop and Documents, if your Mac keeps them in iCloud): macOS would
upload it and can remove its files from the Mac to save space.Settings: F1 or Cmd+,, or Back + Start on a controller. The game starts in a window; Display > Fullscreen switches to full screen and decides how the game starts from then on. The window's green button (or Ctrl+Cmd+F) switches only until you quit. In a window, the picture runs up under a transparent title bar, and the window's buttons show while you move the mouse over it. While you play, the mouse pointer hides after two seconds without moving. SpeedBreaker needs macOS 15 (Sequoia) or later.
SpeedBreaker isn't on the App Store. There are two ways to get it onto your iPhone or iPad:
SpeedBreaker-<version>-ios.ipa,
on the release page. A sideloading tool such as AltStore signs it with your own Apple
Account and installs it. The game asks iOS for more memory than most apps, and a free Apple
Account can't give all of it, so with a free account it may not start, or iOS may close it in
busy scenes. When iOS refuses the memory, the game says so on screen. The IPA itself hasn't been
installed on a device yet (the tested iPhones and iPad ran the same app built and signed with
Xcode): read Sideloading the IPA
first, and please report how it goes, with your device and tool. Coming from a build you made
yourself, the IPA installs as a separate app: install the game again from your disc image, and
your saves stay with the old app.Once SpeedBreaker is on your device:
.iso into Files > On My iPhone (or iPad) >
SpeedBreaker, where it is found by itself. Or tap Browse and pick it from anywhere the
Files app reaches, such as iCloud Drive or a USB drive. A browsed image is read where it is,
not copied first.Settings: tap with three fingers, or press Back + Start on the controller (View + Menu on a Backbone). SpeedBreaker runs in landscape, full screen. If you switch away, the game freezes, and it resumes exactly where it stopped. If 60 fps isn't steady on your iPhone, set Display > Frame Rate to 30 fps or Auto.
SpeedBreaker hands the game an Xbox 360 controller, so a race plays with the game's own Xbox 360 controls. Buttons are matched by position: on a PlayStation controller, Cross is A, Circle is B, Square is X and Triangle is Y.
| Xbox 360 control | Controller | Keyboard |
|---|---|---|
| Left stick | Left stick | A / D or Left / Right steer; Up / Down push it up and down |
| Right trigger | Right trigger | W |
| Left trigger | Left trigger | S |
| A / B / X / Y | Bottom / right / left / top face button | Space / Backspace / Left Shift / Left Ctrl |
| LB / RB | Shoulder buttons | Q / E |
| D-pad | D-pad | Arrow keys |
| Start | Start / Menu / Options | Enter |
| Back | Back / View / Create | Esc |
| Right stick | Right stick | O / L up and down, K / ; left and right |
| Stick clicks | Press a stick in | Z (left), C (right) |
To open the settings:
| Device | Open or close the settings |
|---|---|
| Keyboard | F1 (on a Mac also Cmd+,) |
| Xbox-style controller | Back + Start (View + Menu) together |
| Logitech G29 wheel | Share + Options together |
| Steam Deck | Hold View, press Menu |
| Steam Frame | Menu + View together |
| iPhone and iPad touchscreen | Three-finger tap |
The game pauses while the settings are open. The D-pad (or arrow keys) chooses and changes a row, LB and RB (or Q and E) turn pages, and B (or Esc) closes the menu. On a touchscreen, tap and drag. The mouse works too. Every change applies at once and is saved when you close the menu. The bottom row has Reset page (the page's defaults), Close, and Quit Game, which asks first, with Cancel chosen (not on iPhone and iPad, where apps are closed from the app switcher).
Display
| Option | Choices | Default |
|---|---|---|
| Fullscreen | On / Off | Off: a 1280x720 window you can resize. The game always starts as set here; on a Mac, the window's green button switches only until you quit, and the row then says NOW FULLSCREEN or NOW WINDOWED. Always on in SteamOS Game Mode. Not shown on iPhone and iPad, which are always full screen. |
| V-Sync | On / Off | On. Off can tear, but shows frames sooner. |
| Frame Rate | Auto / 60 fps / 30 fps | 60 fps on most devices. 30 fps keeps the game at full speed. Auto runs at 60, or at a steady 30 while the device is hot or can't hold 60. |
| Smooth Motion | On / Off | Off. On a Mac with a 120 Hz screen: up to 120 fps; on a SteamOS or Linux PC, 120 fps at 120 Hz and 90 at 90 Hz (it drops to an even 60 whenever pictures can't be shown on time; not on the Steam Deck). The game still runs at 60 steps a second, as on the console, and draws one more picture between each two; the controls answer a few milliseconds later. Heavy scenes ease off, down to an even 60 for a while. Takes effect the next time the game starts. Shown only where it works. |
| Screen Resolution | Full / 75% | Full. iPhone and iPad only: 75% is slightly softer and saves graphics work. |
| Aspect Ratio | Fill Screen / 16:9 | Fill Screen: wider screens get a wider view; 4:3, 3:2 and 16:10 screens (the Steam Deck, many Macs) a taller one. Since v0.1.9 the game renders the screen's own shape: a Steam Deck draws 1280x800 at 1x, a 1920x1200 screen 1920x1200 at 1.5x. 16:9 always shows the classic picture with bars. |
| Brightness | -5 to +5 | 0, the picture as it is. Each step makes the shadows and mid-tones a little lighter or darker, like a TV's brightness; black and white stay put, and the menus never change. |
| Xbox 360 Display Gamma | On / Off | On: the gamma ramp the game sets for a real Xbox 360's TV output, with slightly deeper shadows and slightly brighter mid-tones. Off: the flatter picture of v0.1.3 and earlier. |
The game's own Brightness slider, in the pause menu's Options > Video, works too while Xbox 360 Display Gamma is on (with it off, it does nothing). Its middle is the default look; Y (Defaults), then Yes, puts it back.
Graphics
| Option | Choices | Default |
|---|---|---|
| Anti-Aliasing | On / Off | On |
| Upscaling | Bicubic / Bilinear / FSR 1 | Bicubic. FSR 1 (AMD FidelityFX Super Resolution 1) keeps curves, wires and diagonals smooth when the picture is enlarged a lot, such as 1x on a 1440p or 4K screen; it is used only when the picture is enlarged, costs a little more GPU time, and makes foliage look slightly painted. Not on iPhone and iPad. |
| Sharpening | 0.00 to 1.00 | 0.30 (0 turns it off). With FSR 1, the share of its sharpening pass's full strength. |
| Anisotropic Filtering | Auto / Off / 2x / 4x / 8x / 16x / Original | Auto: 16x on dedicated graphics cards and M-series iPads, 4x elsewhere. Original uses each texture's own setting, as on the 360. |
| Mipmaps | On / Off | On, so distant textures don't shimmer |
| Internal Resolution | Auto / 1x / 1.5x / 2x / 3x | Each entry shows the size it renders on your screen (1x (1280x720) on a 16:9 screen, 1x (1280x800) on a Steam Deck with Fill Screen), and Auto the one it picked. Auto: enough to cover your screen, within what the device can afford: the screen's own shape when that fits (a Steam Deck's 1280x800), otherwise whole scales (1x, 2x, 3x, or 3x2 on an ultrawide). On iPhone and iPad, Auto always picks 1x. With Fill Screen, the rows count the screen's shape: 1x on a 16:10 screen is 1280x800. |
Game: Language (English): French, German, Italian, Spanish, Dutch, Swedish, Danish, Polish or Finnish switch the menus and the race text (European languages show km/h) the next time the game starts. The text comes from the disc's own files; the movies and the speech stay in the disc's language (English on the USA disc, Spanish on the PAL one). The PAL disc starts in Spanish. The line under the row says what your installed files give the language you choose. Not shown on iPhone and iPad.
Audio: Master Volume (100%), Mute (Off), and Mute in Background (Off), which silences the game while its window isn't in front.
Input: Stick Deadzone (8%; raise it if the car steers by itself), Trigger Deadzone (2%), and Vibration (On).
Wheel (experimental; shown while a steering wheel is plugged in): Steering Wheel (On; Off lets a controller or the keyboard play while the wheel stays plugged in), Steering Range (360 degrees lock to lock, of a G29's 900), Invert Steering, Steering Deadzone (0%), Steering Response (1.00), Force Feedback (100%), Centering Force, and Calibrate, which teaches the game a wheel other than the G29: both ends of its turn, each pedal, then a button for each control.
Controls: the keyboard keys for each Xbox 360 control, two per control, as in the table under
Controls. The keys are saved by name in settings.toml's [keys] table (w,
left_shift, keypad_1, or none; runtime/user/key_names.h lists them).
Advanced: Asynchronous Shaders (On: an object is skipped for a frame or two while its shader compiles, instead of the game stuttering), Performance Overlay (Off: fps, frame times, and CPU and GPU time per frame), Save Bug Report, and Check for Updates (the only thing that goes online, and only when you press it). The page also shows which build you're running.
Does SpeedBreaker include the game? No. No game files are included or distributed. You install the game from your own backup of your own disc, and SpeedBreaker checks it file by file.
Which version of the game do I need? The Xbox 360 USA release (NTSC-U, English) or the European (PAL) release with Spanish movies and speech (since v0.2.0). The installer checks your image and tells you which one it found, or that it's a different version. Other PAL discs (German and the rest), Japanese discs and re-releases have different code, so the installer refuses them for now. Installing one disc beside the other keeps both installs. Both discs hold the game's text in ten languages: pick one in Settings > Game > Language. Games on Demand packages aren't supported, and no title update is used.
Does it work with the PC version of the game? No. SpeedBreaker is built from the Xbox 360 version and installs only from the Xbox 360 USA or European (PAL) Spanish disc. PC copies of Most Wanted, including the Black Edition, aren't supported.
Is this an emulator? No. It's a static recompilation: the game's Xbox 360 code was translated ahead of time into a native app, so that code runs directly instead of being emulated. SpeedBreaker supplies what the game expects from the Xbox 360: its system software, graphics, audio and controllers.
Can it run above 60 fps? No. 60 fps is the game's own cap.
Can I bring my Xbox 360 saves? No. Xbox 360 saves can't be imported, so your career starts fresh.
The installer refused my image. Why? It always says what to do. The usual causes:
My Mac says SpeedBreaker can't be opened. Use Open Anyway in System Settings > Privacy & Security (see Mac setup), again after each update. SpeedBreaker needs macOS 15 (Sequoia) or later on Apple silicon.
The game stutters on my Steam Deck OLED. Set the screen to 60 Hz (see Steam Deck setup); with Steam's per-game profile on, it stays at 60 Hz for this game.
My laptop runs the game on the slow built-in graphics. Since v0.1.2 SpeedBreaker is meant to
pick the dedicated GPU by itself (not yet confirmed on a real two-GPU laptop). If it doesn't, see
the [video] Vulkan devices: line in last-run.log, set NFSMW_GPU (see Linux), and
please open an issue with that line.
The picture is small or stretched on my TV or monitor in Game Mode. Set the shortcut's Properties > General > Game Resolution to Native.
Can I have the bars back on my Deck? Yes. The game is 16:9 and the Deck's screen 16:10, and since v0.1.1 the picture fills it with a slightly taller view. Set Settings > Display > Aspect Ratio to 16:9 for the console's picture with thin bars above and below.
My SD card or USB drive doesn't show up in Game Mode. Game Mode only sees drives formatted by SteamOS. Copy the image into Downloads from Desktop Mode.
Can I install the game somewhere other than the default folder? Yes. On the installer's last
page, choose where it goes on the To row: internal storage, a removable drive, or Choose a
folder... for any folder (SteamOS: in Desktop Mode). An empty folder is used as it is; a folder
that already holds files gets a new SpeedBreaker Game folder inside it, and the top of a drive
gets the drive's own speedbreaker/game (SpeedBreaker/game on a Mac). Or install from a
terminal with --dest (see Command-line installer). SpeedBreaker
remembers the place; if it's on a drive that isn't connected when the game starts, the installer
says so: connect it and start the game again.
The car steers by itself. Raise Settings > Input > Stick Deadzone.
The picture looks different since v0.1.4. v0.1.4 applies the gamma ramp the game sets for a real Xbox 360's TV output: slightly deeper shadows and slightly brighter mid-tones, as on the console. For the previous, flatter picture, turn off Settings > Display > Xbox 360 Display Gamma. For lighter or darker shadows either way, use Settings > Display > Brightness. If the picture is much brighter and washed out, the game's own Brightness slider (pause menu > Options > Video) was probably moved up in an earlier version, where it did nothing, and saved: it now takes effect. Set the slider back to the middle, or press Y (Defaults) and choose Yes.
How do I quit in fullscreen without a keyboard? Open the settings and choose Quit Game on the bottom row; it asks first.
The game ignores my touches on iPhone or iPad. The game needs a controller or a keyboard. Touch only works in SpeedBreaker's own screens; a three-finger tap opens the settings.
Where are my saves, settings and logs?
| Linux and SteamOS | Mac | iPhone and iPad | |
|---|---|---|---|
| Saves, settings, logs | ~/.local/share/speedbreaker/ | ~/Library/Application Support/SpeedBreaker/ | Inside the app (not shown in the Files app) |
| Installed game | game/ in that folder, speedbreaker/game on a drive, or the folder you chose | game/ in that folder, SpeedBreaker/game on a drive, or the folder you chose | Inside the app |
| Shader caches (safe to delete) | ~/.cache/speedbreaker/ | ~/Library/Caches/SpeedBreaker/ | Inside the app |
Deleting that folder, or deleting the iPhone or iPad app, deletes your saves. A game you
installed in a folder of your own stays there until you delete that folder. In
portable mode (SteamOS and Linux) all of it is in the
SpeedBreaker folder instead: data/, data/game and cache/.
speedbreaker-bug-report-v0.2.0-<date>_<time>.zip.The zip holds recent logs, any crash and hang reports, your settings, a summary of your system
and a screenshot of the last game frame. Paths in your home folder show as ~. If the game
crashed, start it again and save a report: the crash report is included. Never attach game
files or disc images to an issue. CONTRIBUTING.md says how bug reports and
pull requests are handled.
One more thing… SpeedBreaker: Carbon, coming soon. It's planned, not available yet.
There are no dates and no promises: it's ready when it's ready.
SpeedBreaker is a static recompilation. XenonRecomp translates the game's PowerPC code into C++ ahead of time, and that C++ is compiled into a native program for x86-64 or arm64. A runtime written for this project stands in for the Xbox 360: its kernel and system software, its GPU, its XMA audio and its controllers.
The game's data (cars, city, audio, movies) comes from the player's disc. SpeedBreaker contains no game data or assets.
The installer also runs from a terminal. On SteamOS and Linux, run it through speedbreaker.sh
(~/Games/SpeedBreaker/speedbreaker.sh --install ...); on a Mac, the program is
SpeedBreaker.app/Contents/MacOS/SpeedBreaker.
SpeedBreaker --install <image or folder> [--dest <dir>] # install (into exactly <dir>, if given)
SpeedBreaker --verify <image or folder> # check every file without copying
SpeedBreaker --find-images # list the disc images it can find
SpeedBreaker --where # show where the game is installed
speedbreaker.sh --portable on|off # SteamOS and Linux: portable mode (copies, never deletes)
Without --dest the game goes to the default folder, as from the installer screen. --dest
installs into exactly that folder, which must be new, empty or hold a previous install (not a
temporary folder kept in memory, such as /tmp on SteamOS); the game remembers it.
The repository contains no game code: the build recompiles your own default.xex, from the USA
disc. The generated code (ppc/), the game files (game/) and the toolchain (tools/) are
ignored by git. Never commit or share them.
The supported executable is 3,936,256 bytes, with SHA-256
aebdf3c14d1e4e4ed2c130d94bc1a0e97bd6d5bf39bdfdef33c3909c9cc4ba4c.
Mac: Xcode's command-line tools, and from Homebrew: brew install llvm lld cmake ninja molten-vk. The libraries the app bundles (SDL3, the Vulkan loader, glslang, SPIRV-Tools and
FFmpeg's XMA decoder) are built from their own source releases by
scripts/macos/build_deps.sh, for macOS 15 like the release (step 3). Homebrew's bottles of
them (brew install sdl3 vulkan-loader vulkan-headers glslang spirv-tools) also work, for an
app that runs only on the macOS you build on (step 3).
SteamOS: build inside an Arch Linux distrobox (podman and distrobox ship with SteamOS). The
development launcher, scripts/steamos/speedbreaker.sh, expects the container to be called
nfsmw-build:
distrobox create --yes --name nfsmw-build --image docker.io/library/archlinux:latest \
--additional-packages "clang lld cmake ninja git python sdl3 vulkan-headers \
vulkan-icd-loader vulkan-tools glslang spirv-tools mesa vulkan-radeon pkgconf \
make diffutils patch curl nasm libpulse pipewire pipewire-pulse alsa-lib libdecor"
distrobox enter nfsmw-build
Other Linux distributions: your distribution's equivalents of the package list above (Clang 18 or newer). Untested so far. The GPU needs Vulkan 1.2 and BC (DXT) texture support.
Windows (beta): the Visual Studio Build Tools (MSVC's libraries, the Windows SDK) with
LLVM's clang-cl 19 or newer, CMake and Ninja, and SDL3, glslang and FFmpeg's XMA decoder built
as static libraries with the static C runtime (/MT) into one folder. FFmpeg's configure
options are scripts/build_ffmpeg_xma.sh's, with FFmpeg's MSVC toolchain; the Windows
third-party source archive on the release page has the exact build script. Step 2 runs on a
Mac or Linux; copy ppc/ and tools/XenonRecomp to the Windows PC.
gh, logged in, is optional: it fetches Xenia's instruction tests.
From the repository root:
scripts/setup_tools.sh # XenonRecomp + SpeedBreaker's patches, extract-xiso, FFmpeg's XMA decoder
# Extract your own disc image into game/files and check the executable.
mkdir -p game/files
tools/extract-xiso/build/extract-xiso -d game/files -x /path/to/your-backup.iso
shasum -a 256 game/files/default.xex
# must print aebdf3c14d1e4e4ed2c130d94bc1a0e97bd6d5bf39bdfdef33c3909c9cc4ba4c
# Translate the game's code into C++ (writes ppc/).
mkdir -p ppc
tools/XenonRecomp/build/XenonRecomp/XenonRecomp config/nfsmw.toml tools/XenonRecomp/XenonUtils/ppc_context.h
# Optional, for the European (PAL) Spanish disc too: its own code, beside the USA's (the build
# links it when ppc-pal-es/ is there; -DSB_PAL_ES=OFF leaves it out and refuses that disc).
mkdir -p game/files-pal-es ppc-pal-es
tools/extract-xiso/build/extract-xiso -d game/files-pal-es -x /path/to/your-pal-backup.iso
shasum -a 256 game/files-pal-es/default.xex
# must print aad15fc218d034de3131f746e0b763dd8049a40dd676efc87667fcaf4fc72694
tools/XenonRecomp/build/XenonRecomp/XenonRecomp config/pal-es/nfsmw.toml tools/XenonRecomp/XenonUtils/ppc_context.h
python3 scripts/region_ppc.py ppc-pal-es pal_es
# Linux and SteamOS (on SteamOS, inside the container)
cmake -S . -B build/main -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
# Mac (Homebrew's LLVM): the libraries for macOS 15, as the release (a few minutes; it downloads
# their source archives and checks each one's SHA-256), then the game against them
scripts/macos/build_deps.sh build/deps
cmake -S . -B build/main -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=/opt/homebrew/opt/llvm/bin/clang \
-DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ \
-DCMAKE_PREFIX_PATH="$PWD/build/deps" -DFFMPEG_XMA="$PWD/build/deps/ffmpeg-xma"
# (or, with Homebrew's libraries instead of build_deps.sh, an app for your own macOS only: the
# same cmake line with -DCMAKE_OSX_DEPLOYMENT_TARGET=<your macOS, e.g. 26.0> instead of the last
# two options; make_app.py names the version if it's wrong)
ninja -C build/main SpeedBreaker
On Windows (beta), from an x64 Visual Studio developer prompt with clang-cl on PATH:
cmake -S . --preset windows-clang -DCMAKE_PREFIX_PATH=<deps folder> -DFFMPEG_XMA=<deps folder>
ninja -C build\windows SpeedBreaker
--preset windows-clang-tester instead links it without a console window and labels it, as the
download is; python scripts\windows\make_zip.py --public ... (its header lists the options)
packages it with the license notices.
Run build/main/runtime/SpeedBreaker from the repository root. With the whole disc extracted in
game/files, it plays from there. Otherwise the first-run installer asks for your disc image.
Mac app: python3 scripts/macos/make_app.py makes build/app/SpeedBreaker.app, with its
libraries, MoltenVK and the license notices inside. It refuses a library built for a newer
macOS than the build (and says how to fix it); python3 scripts/macos/check_app.py build/app/SpeedBreaker.app runs the release's checks. Add --dmg for
build/app/SpeedBreaker-macos.dmg and its .sha256, laid out like the download on Releases.
SteamOS bundle (x86-64): inside the container, scripts/steamos/make_bundle.sh makes
build/bundle/SpeedBreaker-steamos-x86_64.tar.xz and its .sha256 (plus a copy named by the
version, SpeedBreaker-<version>-steamos-x86_64.tar.xz): speedbreaker.sh at the top, the
program and its libraries in lib/. Install it as described in
Steam Deck setup.
Steam Frame bundle (arm64): the Steam Frame download on Releases is built on a Frame, and
so is your own: the Frame's SteamOS ships clang, CMake, Ninja, glslang and the Vulkan headers,
so no container is needed. Build an SDL3 release into ~/deps/sdl3 (with
-DSDL_X11_XSCRNSAVER=OFF), and do step 2 on the Frame (another machine's FFmpeg build won't
link there). Then:
cmake -S . -B build/main -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ -DSDL3_DIR=$HOME/deps/sdl3/lib/cmake/SDL3 \
-DCMAKE_SKIP_BUILD_RPATH=ON
ninja -C build/main
scripts/steamos/make_bundle.sh build/main build/bundle
This makes build/bundle/SpeedBreaker-steamos-arm64.tar.xz and its .sha256 (plus a copy
named by the version). -DCMAKE_SKIP_BUILD_RPATH=ON keeps your ~/deps folder out of the
program: the bundle brings SDL3 in its own lib/. Install it as described in Steam Frame setup.
iPhone and iPad: scripts/ios/build_deps.sh builds the iOS libraries, and
scripts/ios/build.sh builds, signs and installs the app. The steps, and signing with your own
Apple developer account, are in scripts/ios/README.md.
The unit tests build with -DSB_TESTS=ON added to the cmake line, and
ctest --test-dir build/main runs them. tests/run_instr_tests.sh checks the instructions
SpeedBreaker's patches add to XenonRecomp. It needs LLVM's llvm-mc and llvm-objdump and
ld.lld: on a Mac, Homebrew's llvm and lld; elsewhere, your distribution's (on Arch, the
llvm and lld packages; the container above has only lld). LLVM=<bin dir> and
LLD=<ld.lld> pick others. So far it has been run on a Mac only. None of the tests needs game
files; write_watch_test needs ppc/.
SpeedBreaker is made by project(u). It stands on the shoulders of a lot of open-source work. Thank you to the hedge-dev team, for XenonRecomp and for the approach Unleashed Recompiled pioneered that this project follows, and to the Xenia project, for a decade of Xbox 360 research.
| Project | What SpeedBreaker uses it for | License |
|---|---|---|
| XenonRecomp (hedge-dev and contributors) | The PowerPC-to-C++ recompiler. Its XenonUtils (XEX loading) is built into the runtime. | MIT |
| Unleashed Recompiled (hedge-dev and contributors) | The reference runtime. Parts of the kernel, XAM, memory and threading code are adapted from it. | GPL-3.0-or-later |
| Xenia (Ben Vanik and Xenia contributors) | GPU register, microcode and Xenos headers are ported from it, and its kernel, XMA and GPU behaviour is the reference throughout. | BSD-3-Clause |
| freedreno (Rob Clark) | Code inside the ported microcode header | MIT |
| FFmpeg 7.1.1 | XMA decoding: a decoder-only static build with a SpeedBreaker patch | LGPL-2.1-or-later |
| SDL3 | Windows, input, audio, app lifecycle | zlib |
| Dear ImGui (Omar Cornut) | The installer and settings UI | MIT |
| Roboto (Google) | The UI font | Apache-2.0 |
| FidelityFX Super Resolution 1 (AMD) | The FSR 1 Upscaling choice | MIT |
| o1heap (Pavel Kirienko) | The guest heap allocator | MIT |
| glslang and (Khronos) |
The x86-64 SteamOS download also carries glibc and libstdc++ (LGPL-2.1+; GPL-3.0 with the GCC
Runtime Library Exception); the Steam Frame download uses the system's. Full license texts are in
THIRD_PARTY_NOTICES.md and LICENSES/, and every download
carries them too: in licenses/ in the SteamOS downloads, in
SpeedBreaker.app/Contents/Resources/licenses in the Mac app, with each bundled library's own
license, and in SpeedBreaker.app/licenses in the iPhone and iPad IPA. The source code of the LGPL and GPL parts in the downloads (FFmpeg, libmspack, and the
x86-64 download's glibc and GCC runtime) is published next to the downloads of each release, as
SpeedBreaker-<version>-third-party-source.tar.xz.
SpeedBreaker is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version (GPL-3.0-or-later). See COPYING and NOTICE. Third-party components keep their own licenses, listed above.
Copyright (C) 2026 project(u) and SpeedBreaker contributors.
SpeedBreaker is an unofficial, fan-made project by project(u). It is not affiliated with, endorsed by or sponsored by Electronic Arts Inc., the Need for Speed brand or Valve Corporation.
"Need for Speed", "Most Wanted" and "Carbon" are trademarks of Electronic Arts Inc. Steam, Steam Deck, Steam Machine, Steam Frame, SteamOS and their logos and icons are trademarks of Valve Corporation. All other trademarks, including Xbox, Xbox 360, PlayStation, Apple, Mac, macOS, iPhone, iPad, iCloud, Xcode, App Store, Backbone, Vulkan, Linux, Windows, Android, NVIDIA, GeForce, AMD and Intel, belong to their respective owners. They are used here only to describe what SpeedBreaker works with. The game is named only to say which game SpeedBreaker runs; no logos, box art or key art of the game are used. The game content visible in screenshots belongs to its owners.
No game files are included or distributed. SpeedBreaker contains no game data or assets: no textures, models, audio, movies or disc files. To play, you need your own legally obtained backup (a disc image) of your own Xbox 360 disc of Need for Speed: Most Wanted (2005). The in-app installer verifies it and installs it.
SpeedBreaker is provided "as is", without warranty of any kind, as set out in the GNU General Public License.
| iPhone 15 Pro Max and iPhone 18 Pro Max (iOS 27). iPad Pro 12.9-inch (M2, iPadOS 27) with a Backbone Pro. Not on the App Store. Those were Xcode-signed builds: the IPA itself hasn't been installed on a device yet. |
| Windows (beta) | Download SpeedBreaker-0.2.0-windows-x64-beta.zip from the Releases page; see Windows (beta) | A laptop with Intel UHD Graphics (60 Hz). NVIDIA, AMD and recent Intel Arc graphics and 120/144 Hz monitors haven't been tested yet: reports welcome. |
| Android | Coming soon |
Aspect Ratio to 16:9.
| Shader compilation at runtime |
| BSD-3-Clause and others; Apache-2.0 |
| MoltenVK and the Vulkan Loader (Khronos) | Vulkan on Mac, iPhone and iPad | Apache-2.0 |
| toml++ (Mark Gillard) | settings.toml | MIT |
| SIMDe (Evan Nemerson and contributors) | SIMD in the recompiled code | MIT |
| libmspack (Stuart Caie) | LZX decompression | LGPL-2.1 |
| tiny-AES-c | XEX decryption | Unlicense |
| TinySHA1 (Saurav Mohapatra) | SHA-1, via XenonUtils | ISC-style |
| extract-xiso | Developer tool for unpacking disc images (not shipped) | Its own license |