Jet Set Radio Future Unleashed
Jet Set Radio Future Unleashed is a native port of Jet Set Radio Future to Windows, Linux, macOS, Android, iOS, and iPadOS, allowing higher resolutions and widescreen support.
- Type: PC port
- Game: Jet Set Radio Future
- Runs on Windows, Linux, macOS, Android and iOS
- By JuMatt
- Latest release v0.4.7, 2026-10-15
- Source: https://github.com/JuMatt/JetSetRadioFuture-Unleashed
README
JSRF Unleashed
Jet Set Radio Future, running natively on Mac, Windows, Linux, Android, iPhone and iPad. Not an emulator — the game's own code, statically recompiled into C and built as a native application.
This project is about one game. It is not an Xbox emulator and it will not run other Xbox titles. Everything here — the graphics translation, the audio path, the file layout, the per-function fixes — is aimed at getting Jet Set Radio Future right. If you want to run Xbox games in general, you want xemu; if you want to port a different Xbox title, you want the toolkit this is built on.
You need your own copy of the game. The download is the engine only — no game files, no textures, no music, no video. It plays the files from a disc you own.
Download
| Platform | Download |
|---|---|
| macOS 12 or later, Apple Silicon (M1 or later) | JSRF-Unleashed-macOS-arm64.zip |
| Linux, x86_64 (glibc 2.34 or later: Ubuntu 22.04, Debian 12, Fedora 36 and newer) | JSRF-Unleashed-linux-x86_64.tar.gz — less tested than the Mac build |
| iPhone and iPad, iOS 15 or later (iPhone XS or newer recommended) | JSRF-Unleashed-iOS.ipa — less tested on iPads |
| Windows 10 or 11, 64-bit | JSRF-Unleashed-windows-x86_64.zip — tested under Wine |
| Android 10 or later, 64-bit, OpenGL ES 3.0 | JSRF-Unleashed-android-arm64.apk — tested in the Android emulator |
Every version is on the Releases page; what changed is in the changelog.
Installing on macOS
- Unzip, and move JSRF Unleashed to Applications (or wherever you like).
- Open it. The app is not notarised by Apple — that needs a paid developer account — so the first time, macOS says it cannot check it. Click Done, open System Settings › Privacy & Security, find "JSRF Unleashed" was blocked and click Open Anyway. (On macOS 13 or earlier, right-click the app and choose Open instead.) This is needed once.
- It asks where your game is: pick the folder that contains
default.xbe, or a disc image (.iso), which it unpacks once if extract-xiso is installed (brew install extract-xiso). It remembers the choice.
Saves are kept in the game folder, in UDATA (where an Xbox keeps them), so
copy that folder to back them up, and keep it if you replace the game files.
Each run writes last-run.log into the game folder (with a few older ones in
logs/) — attach it when you report a bug.
Installing on Windows
- Unzip the archive anywhere, and keep the
enginefolder beside JSRF Unleashed.exe. - Run JSRF Unleashed.exe. It is not signed (that costs money every year), so the first time Windows may say it protected your PC: click More info, then Run anyway.
- It asks where your game is: pick the folder that contains
default.xbe, or the folder with your disc image (.iso) in it, which it offers to unpack once into%LOCALAPPDATA%\JSRF Unleashed. It remembers the choice.
It needs graphics drivers with OpenGL 3.3, which any GPU from the last ten
years has. F9 sets the resolution, from 1× to 4× the Xbox's 640×480
(2× by default; the game restarts to apply it), F10 switches widescreen
16:9 and F11 (or Alt+Enter) full screen; the first two are remembered.
Controllers work through SDL: Xbox, PlayStation, Switch Pro and many more.
Saves are kept in the game folder, in UDATA, as on the Mac. The
README.txt inside lists the options and where the settings and logs
(last-run.log) are kept.
On a Mac, the Windows build also runs in CrossOver (a Windows 10 64-bit bottle, then Run Command… on JSRF Unleashed.exe), but the Mac build is the better choice there.
Installing on iPhone or iPad
The app is not on the App Store, so it is installed with AltStore, which
signs it with your own Apple ID. The steps below use a Mac (AltServer also
runs on Windows: see altstore.io).
SideStore and Sideloadly work
too, with the same source or the .ipa from the release.
1. Install AltStore (once)
- Download AltServer for macOS, unzip it, move AltServer to Applications and open it. It lives in the menu bar.
- Plug the iPhone into the Mac, unlock it, and tap Trust if it asks.
- In Finder, select the iPhone and tick Show this iPhone when on Wi-Fi, so AltStore can refresh apps later without the cable.
- Click the AltServer icon in the menu bar › Install AltStore › your iPhone, and sign in with your Apple ID. If it asks to install a Mail plug-in, follow its instructions.
- On the iPhone: Settings › General › VPN & Device Management › your Apple ID › Trust.
- Settings › Privacy & Security › Developer Mode (iOS 16 or later): turn it on and let the phone restart.
2. Install JSRF Unleashed
-
Open AltStore › Sources › +, and paste:
https://raw.githubusercontent.com/JuMatt/JetSetRadioFuture-Unleashed/main/altstore/source.json -
Browse › JSRF Unleashed › FREE. New versions show up there as updates.
3. Add your game
- Open JSRF Unleashed once. It creates its folder and shows where the game goes.
- Copy the game into On My iPhone › JSRF Unleashed: this folder, and
nowhere else. Copy either the disc image (
.iso) or the extracted game folder (the one withdefault.xbein it; see Your game files):- from the Mac: Finder › your iPhone › Files tab, and drag it onto JSRF Unleashed;
- on the iPhone: in the Files app, from iCloud Drive, Google Drive or wherever it is.
- Back in the app: for an
.iso, tap Unpack (once, a minute or two; it then offers to delete the image). Then the game starts.
Free Apple ID: the app stops opening after 7 days. Refresh it in AltStore › My Apps › Refresh All, with the Mac on the same Wi-Fi and AltServer running. A free Apple ID also allows only 3 sideloaded apps at a time, AltStore included.
In the EU, use this AltStore (AltStore Classic), not AltStore PAL: PAL only installs apps notarised by Apple.
A controller is the way to play (any one iOS supports: Xbox, PlayStation,
MFi, Backbone and the like). Without one, the app shows on-screen controls,
with Start and Back at the top. The ⚙ button has widescreen, the on-screen
controls and the resolution. Saves are kept inside the game's folder (in
UDATA), so deleting or replacing that folder deletes them too; each run's log
is in Logs.
The game's memory map needs 4 GB of address space, which recent iPhones give an app. If an older device does not, the app says so when it starts.
Installing on Android
- Download JSRF-Unleashed-android-arm64.apk on the phone and open it. It is not on Google Play, so Android asks you to allow installing apps from your browser (or file manager): allow it, then Install.
- Open JSRF Unleashed. It shows where the game goes, and two ways to put
it there (see Your game files):
- Choose the disc image (.iso): pick your image, wherever it is; the app unpacks it once into its own folder (about 3 GB of free space);
- or copy the extracted game folder (the one with
default.xbeandMediain it) from a computer over USB, namedgame, intoAndroid/data/com.jumatt.jsrfunleashed/files/, then tap I copied the folder: start.
- The game starts, and from then on it starts straight away.
A controller is the way to play: Xbox, PlayStation, Switch Pro and others,
over Bluetooth or USB. Without one, the app shows on-screen controls, as on
iPhone, with Start and Back at the top; Android's Back is the Xbox Back
button. The ⚙ button has widescreen, the on-screen controls and the
resolution (used from the next start). Saves are kept in the game folder (in
UDATA), so uninstalling the app deletes them with the game: copy UDATA
somewhere first. Each run's log is
Android/data/com.jumatt.jsrfunleashed/files/Logs/last-run.log.
It needs Android 10 or later on a 64-bit phone or tablet with OpenGL ES 3.0 (any from the last several years). So far it has been run in the Android emulator only — unpacking a disc image, boot, title, attract demo, the on-screen controls — not on a phone yet: reports are welcome.
Installing on Linux
Extract the archive anywhere and run ./jsrf-unleashed. The first time, it
asks for the folder that contains default.xbe (with a folder picker if
zenity or kdialog is installed, otherwise in the terminal) and remembers
it. ./jsrf-unleashed --install adds it to your applications menu. It needs
OpenGL 3.3 drivers and an X11 or Wayland desktop; SDL2 is bundled. The
README.txt inside lists the options (--scale, --fullscreen, --choose)
and where settings, saves and logs are kept.
On Linux the keyboard layout is the same as below; F11 (or Alt+Return) toggles full screen, F10 widescreen, and F9 sets the resolution (1× to 4×; the game restarts to apply it).
Your game files
You need the USA (NTSC-U) release of Jet Set Radio Future — the game
code inside the app is translated from that version's executable, so other
regions' discs will not work. Make an image of your own disc and extract it:
you want the folder with default.xbe, Media/ and the rest.
Playing
Controller: any pad macOS recognises — Xbox, DualSense, DualShock 4 and others, over Bluetooth or USB. On Windows, Linux and Android, any pad SDL knows.
Keyboard. Keys go by position, so W A S D on a QWERTY keyboard is
Z Q S D on an AZERTY one:
| Key | Does | Key | Does |
|---|---|---|---|
| W A S D | move (left stick), menus | Arrow keys | camera (right stick) |
| Space or J | A — jump | K | B |
| H | X | L | Y |
| E | R trigger — talk, spray | Q | L trigger |
| R | Black | F | White |
| Return | Start | Esc | Back |
| C / V | left / right stick click |
Controls › Keyboard… in the menu bar shows the same list.
Video menu:
- Resolution — the internal resolution, 1× to 4× (2× by default). The game restarts to apply it.
- Renderer — Metal (the default) or OpenGL. The game restarts to apply it.
- Full Screen — Ctrl ⌘ F.
- Widescreen (16:9) — ⇧ ⌘ W. The game is shown at 16:9 with a wider field of view, not stretched; the HUD and text keep their shape. The title screen stays 4:3.
Status
Playable, early, and not yet played from start to finish.
| Title, menus, new game, saving and loading | works |
| New Game through the tutorial, the DJ K scene and Dogenzaka Hill | works — the part played and tested most |
| Skating, grinding, tricks, graffiti, the pause map | works |
| Music, sound effects, voices | works |
| Widescreen 16:9 | works in game; the title screen stays 4:3 |
| Linux build | boots, menus, starting a new game; far less played than the Mac build |
| Windows build | tested under Wine |
| iPhone / iPad build | plays on iPhone; less tested on iPads |
| Android build | boots to the title and the attract demo in the Android emulator; not yet tried on a phone |
| Later areas | little tested — expect bugs |
| Known issues | an occasional "disc error" screen during a load |
Found a bug? Open an issue
with your last-run.log and what you were doing.
Why static recompilation
The game's x86 machine code is translated, function by function, into C, which is then compiled for whatever CPU you are on. There is no interpreter and no JIT at runtime. Two things follow from that:
- It is fast. The game's logic runs as native code, at native speed.
- It can ship where JITs cannot. iOS forbids runtime code generation, which is why there is no real Xbox emulator on an iPhone. A statically recompiled binary has nothing to generate — which is why there can be an iPhone build at all.
What still has to be emulated is the hardware: the NV2A graphics processor, the MCPX audio processor, and the Xbox kernel the game calls into. Those parts come from the toolkit and from xemu, whose NV2A and APU work this stands on.
Building from source
The generated code — hundreds of thousands of lines of C translated from the
game's executable — is not in this repository and will not be: it is derived
from SEGA's binary. You produce it on your own machine, from your own
default.xbe, with the pipeline in tools/recomp — the
getting-started guide walks through it (it is written
for the toolkit in general), and --exclude-manual port/recomp_manual.c tells
it about the hand-written overrides in port/. Put the result in
port/recomp/gen, then:
cmake -S port -B build -DCMAKE_BUILD_TYPE=Release # on Linux add -DNV2A_GL_CONTEXT=sdl
cmake --build build
launcher/package_mac.sh build/jsrf_recomp # macOS: the app, zipped
On Linux, launcher/linux/package.sh packages the
build and records how the release one is made. The Windows build is
cross-compiled on Linux with llvm-mingw
and the toolchain file
launcher/windows/llvm-mingw.cmake;
launcher/windows/package.sh packages it and
records the rest (SDL2, libepoxy). For iPhone and iPad, see
docs/ios.md (Xcode's iOS SDK, the same CMake project,
launcher/ios/package_ios.sh for the .ipa); for
Android, launcher/android/README.md (the NDK, SDL
2.32's source, launcher/android/build_apk.sh
for the .apk, no Gradle).
How the Mac and iPhone renderer works is in
docs/metal-backend.md. The version comes from the git
tag the tree is at.
Legality
The releases contain the engine: the runtime (the kernel layer and the graphics and audio hardware models) and the game's own code, machine-translated to native code. They contain no game data — no textures, models, music, video or text — and do nothing without the files from your own copy of the game. This repository holds no game code at all; that is generated on your machine from your own disc. It is the same approach as Ship of Harkinian and Zelda 64: Recompiled.
Jet Set Radio Future is © SEGA. This is an unofficial fan project, not affiliated with or endorsed by SEGA. If you represent a rights holder and have a concern, please open an issue.
Licence
MIT for this project's own code; the MCPX audio-processor code extracted from xemu is LGPL-2.1-or-later. See LICENSE and NOTICE.
Credits
- xboxrecomp — the static recompilation toolkit this is a port on top of. Its documentation is kept at docs/xboxrecomp-toolkit.md.
- xemu — the NV2A and MCPX APU hardware models, without which none of the graphics or audio would exist.
- The title lettering in the banner is set in Nise JSRF, a free font by Yoyo.
- Smilebit and SEGA, who made the game.