Skip to content

SpeedBreaker v0.1.4

Choose a tag to compare

@ProjectUgarte ProjectUgarte released this 13 Oct 08:09

What's new

  • The picture now matches a real Xbox 360 on a TV: slightly deeper shadows and slightly brighter
    mid-tones. The game sets a gamma ramp for the console's TV output, and SpeedBreaker never
    applied it until now. The new Settings > Display > Xbox 360 Display Gamma is on by
    default
    , also after an update. To get the previous, flatter look back, turn it off.
  • Settings > Display > Brightness: lighter or darker shadows and mid-tones, from -5 to +5, a
    gentle step at a time, like a TV's brightness. Black and white stay put, and only the game's
    picture changes, never the menus. At 0, the default, it leaves the picture as it is.
  • The game's own Brightness slider (pause menu > Options > Video) now changes the picture as
    you move it, as on an Xbox 360. It needs Settings > Display > Xbox 360 Display Gamma, which is on
    by default; with that off it does nothing, as before. If you moved the slider in an earlier
    version and the game has saved since, that brightness now takes effect (see Known issues).
    Thanks to m9cy884mv6-a11y (issue #18).
  • Keyboard: the right stick has keys, O and L for up and down, K and ; for left and right. The
    game shifts gears with the right stick, so you can now shift from the keyboard and finish a drag
    race. Thanks to love-gamer, who wrote it (pull request #11).
  • Settings > Quit Game, at the bottom of the menu after Close: quits SpeedBreaker with a
    controller, the mouse or the keyboard, so a fullscreen game no longer needs a keyboard shortcut
    to leave. It asks first, with Cancel chosen, so no single press quits. Not on iPhone and iPad,
    where apps are closed from the app switcher.
  • Settings > Display > Fullscreen now decides how the game starts, every time. On a Mac, the
    window's green button (or Ctrl+Cmd+F) switches fullscreen until you quit, so the game no longer
    sometimes starts fullscreen and sometimes not.
  • Mac: the mouse pointer no longer sits over the game. It hides after two seconds without
    moving while you play, and comes back as soon as you move the mouse; in the settings menu and
    the installer it stays (issue #15). Thanks to DoubleDips for the report.
  • Mac: smoother frame pacing. The game's 60 Hz clock now keeps time on macOS (it ran up to 9 ms
    late), and on a MacBook Pro's 120 Hz ProMotion screen each frame now follows the last by 1/60 s
    instead of arriving whenever the GPU finished it. Other screens show frames as before, and the
    timing turns itself off if a screen doesn't keep it.
  • On slow GPUs, below 15 fps, the game no longer runs a few percent slow: its clock now keeps
    up with the screen (a laptop with Intel graphics at Internal Resolution 1.5x, about 12 fps, ran
    4% slow).
  • No stray "EVENT HANDLER" label: changing the window's shape while a movie plays (for example
    the green button during the opening movie) no longer shows it above the picture.

How to update

  • Mac: drag the new SpeedBreaker into Applications and choose Replace, then allow it once more with Open Anyway (System Settings > Privacy & Security).
  • Steam Deck, Steam Machine, Steam Frame and Linux: unpack the new download over the old folder (~/Games/SpeedBreaker). Your Steam shortcut keeps working.
  • Everywhere: your saves, settings and the installed game are kept, and no disc image is needed. Xbox 360 Display Gamma is on after the update; Settings > Display turns it off.

More about it

  • The gamma ramp: the game sets it when it starts, and the console applies it to every frame
    on its way to the TV. Two real Xbox 360 recordings of the intro movie and the title screen match
    it to within half a level, against about two levels without it. With Xbox 360 Display Gamma off
    and Brightness at 0, the picture is exactly the one of v0.1.3.
  • The game's slider: the game writes a new gamma ramp for each step, and SpeedBreaker applies it
    on that frame. At its lowest, its default and its highest, the picture's average brightness
    moves by about -13, +1 and +24 levels (of 255) against Xbox 360 Display Gamma off. The game keeps
    the slider in your alias's save the next time it saves the profile; without an alias it starts
    at the middle every time.
  • The right-stick keys: holding both keys of a pair centres the stick. No other key changed.
  • Fullscreen: a switch the game didn't ask for (on a Mac, the green button or Ctrl+Cmd+F) lasts until you
    quit and never changes the setting. While the window differs from the setting, Settings >
    Display > Fullscreen says NOW FULLSCREEN or NOW WINDOWED; choosing On or Off there saves it and
    switches the window.
  • The pointer hides only over the game's window, so in a window it still shows over the
    desktop, and the mouse is never captured.
  • The pacing: macOS let the thread that drives the game's 60 Hz clock wake up to 9 ms late; it
    now runs with real-time priority. And a ProMotion screen shows each frame as soon as it's ready,
    so frames that took a little longer to draw arrived unevenly: SpeedBreaker now asks for each
    frame to be shown at a set time after its tick. Measured on a MacBook Pro (M1 Pro) in fullscreen:
    99.9% of frames 1/60 s apart in menus and about 94% while driving (99-100% on the open road, less
    in the heaviest scenes, where a frame takes longer than the time allowed), against about a
    quarter without it, for about 5 ms more latency. On any other screen, or once the game's clock
    has locked to the display, frames are shown when ready, as in v0.1.3.
  • The slow clock: when a frame took longer than six screen refreshes, SpeedBreaker started its
    count over and dropped up to three refreshes of game time each time; below 15 fps that happened
    every second or so. That time is now given back over the next frames. Above 20 fps nothing
    changes. Checked by replaying frame timings recorded on that laptop: game time went from 96% to
    99.9% of real time.
  • The label belongs to a menu the game keeps just above the picture. After a window change
    mid-movie the game kept the old window's layout for it, so the label slipped into view; it now
    gets the new layout at once.

The full list of changes is in CHANGELOG.md.

Which file is for my device?

Device Download Setup
Steam Deck, Steam Machine and Linux PCs (x86-64) SpeedBreaker-steamos-x86_64.tar.xz Steam Deck and Steam Machine, Linux
Steam Frame (arm64) SpeedBreaker-steamos-arm64.tar.xz Steam Frame
Mac with Apple silicon, macOS 15 or later SpeedBreaker-macos.dmg Mac
iPhone and iPad (experimental) SpeedBreaker-0.1.4-ios.ipa, or build it yourself with Xcode iPhone and iPad
Windows and Android Coming soon

The two SteamOS files are not interchangeable: the arm64 one is for the Steam Frame only, and the
x86-64 one doesn't run on the Frame. Each download has a .sha256 file next to it (see Checksums
below).

All downloads are built from this release's source, commit d4c206a. The first line of the
game's log, and Settings > Advanced, say SpeedBreaker v0.1.4 (d4c206a).

The Source code archives that GitHub adds hold SpeedBreaker's own source, with no game code or
data. Building from them needs your own disc; see
Building from source.

iPhone and iPad: the experimental IPA

SpeedBreaker-0.1.4-ios.ipa is signed by nobody: a sideloading tool such as AltStore signs it
with your own Apple Account and installs it. The IPA itself hasn't been installed on a device
yet
: the iPhones and iPad it was tested on ran the same app built and signed with Xcode. Please
report how it goes, working or not, with your device and tool.

  • The game asks iOS for more memory than most apps (two entitlements: Extended Virtual Addressing
    and Increased Memory Limit). A free Apple Account can give at most the second, and only with
    some tools: AltStore Classic 2.2 or later is expected to keep it; SideStore 0.7 drops both.
    Without them the game may not start, or iOS may close it in busy scenes. When iOS refuses the
    memory, the game says so on screen instead of closing.
  • A free Apple Account's apps stop opening after 7 days until the tool refreshes them, and at most
    3 sideloaded apps can be active at once. These are Apple's limits.
  • iOS or iPadOS 17 or later, on an A15-class chip or newer, with a controller or keyboard.
  • Coming from a build you made yourself, the IPA installs as a separate app: install the game again
    from your disc image. Saves made in the old app stay with it.
  • Sideloading the IPA
    has the steps and which tools keep what. Building it yourself with Xcode still works as before.

How these downloads were tested

Each download attached here was tested before release. It was unpacked or opened as the setup
steps say, with a fresh home folder, and the game was installed through the installer from a disc
image:

  • x86-64: on a Steam Machine (SteamOS 3.8). The game raced at 60 fps with Xbox 360 Display Gamma on
    by default and the car's hard shadow on the barrier beside it. Settings > Quit Game asked first
    and quit cleanly with the keyboard and with a controller, also in a Game Mode (gamescope)
    session, and a fullscreen switch the game didn't ask for left the Fullscreen setting as it was.
    In a 60 Hz display test, no frame jumped ahead or froze.
  • arm64: on a Steam Frame (SteamOS 0.3.0), outside the headset. The game raced at 58.6 fps with sunlit
    roads and the car's hard shadow, with Xbox 360 Display Gamma on by default; no frame froze and
    the game's speed was unchanged. Quit Game asked first and closed the game cleanly.
  • Mac: on a MacBook Pro (M1 Pro, macOS 27.0.1). The game raced at about 60 fps with Xbox 360 Display
    Gamma on by default, and Quit Game, the Fullscreen setting and Check for Updates worked. In
    fullscreen on its 120 Hz ProMotion screen it raced at 60 fps with the new frame pacing on. On
    macOS 15.6.1 (Sequoia), in a virtual machine on a Mac Studio, it installed and raced at about
    60 fps in fullscreen.
  • Updating from v0.1.3: on a Steam Machine, a Steam Frame and a Mac, v0.1.4 went over a working v0.1.3 the
    way How to update says: the game used the existing install without reinstalling it, showed
    What's new once, kept the settings, and started with Xbox 360 Display Gamma on.
  • iPhone and iPad IPA: built and checked (its version, its two entitlements, its license notices, no personal
    data), but not installed on a device yet; see above.

Checksums (SHA-256)

File For Size SHA-256
SpeedBreaker-steamos-x86_64.tar.xz Steam Deck, Steam Machine, Linux PCs 16.2 MB a54e59254cc958285a24cd5674d33cb75ab1a29893c30769b4a7ee5c76412abb
SpeedBreaker-steamos-arm64.tar.xz Steam Frame 13.8 MB 54df29d8d1bcae3254fd0f637c1a552f2d5ac1e604d18d62fa16194ce027501f
SpeedBreaker-macos.dmg Mac (Apple silicon, macOS 15 or later) 19.9 MB c998fa5b6e3f1d97b5533ad303976395c70886d7e1f342a19394c88db54aa03e
SpeedBreaker-0.1.4-ios.ipa iPhone and iPad (experimental, to sideload) 15.8 MB 37010580fe3d5bd47aa5b50592a52d80368ea8c07aa2c0ff2405dec9b6a6715d
SpeedBreaker-0.1.4-third-party-source.tar.xz Source of the LGPL and GPL libraries in the downloads 213.6 MB 59d05f0b016852343fbbd5bdbdec486583cba7d1bf15488d6f64cc9e2b12836f

Each file has its .sha256 next to it on this page. Download both into the same folder, then
run sha256sum -c SpeedBreaker-steamos-x86_64.tar.xz.sha256 on SteamOS or Linux, or
shasum -a 256 -c SpeedBreaker-macos.dmg.sha256 on a Mac (with your file's name). It should
say OK.

Known issues and limits

  • Mac, the first time you open it: the app isn't notarized by Apple, so macOS refuses to
    open it and offers Done or Move to Trash. Click Done. Then go to System Settings >
    Privacy & Security, scroll down to the message that SpeedBreaker was blocked, click Open
    Anyway
    , and confirm with Open Anyway and your password (or Touch ID). After that it opens
    normally.
    • The Open Anyway button only stays there for about an hour after the refusal. If it's gone,
      open the app again.
    • You do this once per download, so once more after each update. Control-click > Open no
      longer skips it.
    • The app isn't damaged. If macOS ever says it is, check the download against its .sha256 and
      download it again.
    • Apple silicon only, macOS 15 or later.
  • macOS 15 Sequoia was tested in a virtual machine, not yet on a real Mac. If you play on
    macOS 15, a short report in the issues, working or not, with your Mac's model, would help a lot.
  • Mac frame pacing was measured on a MacBook Pro (M1 Pro) with its 120 Hz ProMotion screen, in
    fullscreen. Other 120 Hz screens (other Macs, external displays) and windowed play weren't
    measured; a frame that isn't ready in time is shown when it is, as before.
  • A Brightness slider moved before v0.1.4: if you moved the game's own slider in an earlier
    version (where it did nothing) and the game has saved since, v0.1.4 uses that setting from the
    main menu on. At maximum the picture is much brighter and washed out, as on a 360 with that save.
    In the pause menu > Options > Video, set the slider back to the middle, or press Y (Defaults) and
    choose Yes. Settings > Display > Brightness doesn't undo it.
  • Steam Deck OLED: set the refresh rate to 60 Hz (Quick Access > Performance). At 90 Hz
    the game stutters. Leave the Framerate Limit off. The Steam Deck LCD hasn't been tested yet.
  • Game Mode on Steam Deck and Steam Machine:
    • Browse for image... may not open in Game Mode. Use the image the installer found instead:
      it is highlighted, so press A, then A again on Install. If it found more than one
      (for example one in Downloads and one on the SD card), pick yours with Up and Down first.
    • Choose a folder... opens its folder picker only in Desktop Mode. Pick the folder there, or
      run ~/Games/SpeedBreaker/speedbreaker.sh --install <image> --dest <folder> from Konsole. Use
      a folder on the internal storage or on a card formatted by SteamOS, or Game Mode won't find
      the game.
    • Game Mode only sees SD cards and USB drives formatted by SteamOS. For others, copy the image
      into Downloads from Desktop Mode.
    • Docked, or on a Steam Machine, set the shortcut's Game Resolution to Native.
  • Steam Frame: it plays as a big flat screen in the headset; it is not a VR mode. Set Display >
    Frame Rate to 30 fps for smooth play (the headset's compositor shares the graphics chip; the
    game keeps its full speed). The Frame's file manager can't unpack the download: use the Konsole
    command in the setup steps. Since v0.1.2 the game needs a current SteamOS on the Frame (September
    2026 or later): if it says GLIBCXX_3.4.34 not found, update SteamOS.
  • Linux:
    • Always start it with speedbreaker.sh. Started on its own, the program in lib/ fails on
      most systems with a message such as GLIBC_2.44 not found.
    • The x86-64 download is tested here on SteamOS. Players reported v0.1.1 working on Fedora 44
      with a GeForce GTX 1080 Ti and on Ubuntu 24.04 with Intel Arc graphics (issue #2).
      The dedicated-GPU choice on two-GPU laptops hasn't been tried on a real laptop here yet: a
      note with your laptop's [video] Vulkan devices: log line would help.
    • Choose a folder... needs a file chooser portal or zenity; without one, install with
      --dest.
    • It needs a CPU with AVX2 (Intel Haswell, AMD Excavator or Zen, or newer) and Vulkan 1.2
      graphics.
  • iPhone and iPad: the IPA is experimental and hasn't been installed on a device yet (see
    above). On the iPhone 18 Pro Max, long sessions on a charger get it hot even at 1x, and Frame
    Rate Auto then drops to 30.
  • Going back to v0.1.3 works, but if you change a setting there, it forgets Brightness and Xbox
    360 Display Gamma: back in v0.1.4 they are at their defaults again (0 and on).
  • Game versions: only the USA (NTSC-U) Xbox 360 disc is supported. PAL and Japanese discs,
    re-releases, Games on Demand packages and the PC version aren't, and no title update is used.
  • Not in this release: importing Xbox 360 saves, button remapping, mouse control in the game,
    more than 60 fps (the game's own cap), and Android builds. Windows is coming soon.

Reporting a bug

  1. Open the settings (F1; Back + Start on a controller; on a Steam Deck hold View and press Menu;
    on a Steam Frame press Menu + View; a three-finger tap on iPhone and iPad), go to
    Advanced and choose Save Bug Report.
  2. A notice says where the zip file went: usually your Desktop (on SteamOS, pick it up in Desktop
    Mode, or in the Desktop app on a Steam Frame), or the SpeedBreaker folder in the Files app on
    iPhone and iPad. Its name says which version you're running, for example
    speedbreaker-bug-report-v0.1.4-<date>_<time>.zip. Nothing is uploaded, and nothing is
    checked online unless you press Check for Updates.
  3. Check the open issues first. Then
    open a new issue, attach the zip, and say which device and download you use, what you were
    doing, what you expected, what happened, and roughly how long into the session it happened.
    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.

Thanks

To love-gamer for the right-stick keys (pull request #11), to DoubleDips for reporting the Mac
pointer (#15), and to m9cy884mv6-a11y for reporting the game's Brightness slider (#18).

License and legal

SpeedBreaker is free software under the GNU General Public License, version 3 or (at your
option) any later version (GPL-3.0-or-later). Each download carries its license notices and every
bundled library's own license (licenses/ in the SteamOS downloads,
SpeedBreaker.app/Contents/Resources/licenses in the Mac app, SpeedBreaker.app/licenses in the
IPA).

The complete source of the LGPL and GPL code by others in these downloads (FFmpeg with
SpeedBreaker's patch and libmspack in all of them; the GNU C Library and GCC's runtime libraries in
the x86-64 one) is attached below as SpeedBreaker-0.1.4-third-party-source.tar.xz.

"Need for Speed" and "Most Wanted" are trademarks of Electronic Arts Inc. Steam, Steam Deck, Steam
Machine, Steam Frame and SteamOS are trademarks of Valve Corporation. iPhone, iPad and macOS are
trademarks of Apple Inc. All other trademarks belong to their respective owners. SpeedBreaker is a
fan project by project(u), not affiliated with, endorsed by or sponsored by Electronic Arts Inc.,
the Need for Speed brand, Valve Corporation or Apple Inc. It contains no game data or assets, and
is provided "as is", without warranty of any kind. No game files are included: you need a
backup of your own USA (NTSC-U) Xbox 360 disc.