Sonic Radiant is a portability and modernization fork of jnmartin84/sonic-r, the reverse-engineered C reimplementation of the 1998 Windows release of Sonic R.
The goal is simple: keep the original game logic recognizable and maintainable, while making the project practical to run on modern PCs and additional hardware. Sonic Radiant does not include Sega's retail game data.
| Platform | Status | Main backend |
|---|---|---|
| Windows | Supported / release build | SDL2 + OpenGL |
| Linux | Source build | SDL2 + OpenGL |
| macOS | Source build | SDL2 + OpenGL |
| Android | Supported / release build (arm64-v8a) | SDL2 + OpenGL ES 1.1 |
| Nintendo Switch | Supported / release build | libnx + EGL/OpenGL |
| Sega Dreamcast | Supported by the inherited project | KallistiOS |
- A compact first-run game-data importer instead of a separate themed installer.
- Automatic detection of a valid original Sonic R CUE/BIN image.
- Native Windows CUE picker if automatic detection fails.
- Direct extraction of the retail data track and lossless CD audio import.
- A native Nintendo Switch port with controller, save, audio, rendering, and network integration.
- A native Android port with first-run CUE/BIN import, adaptive multitouch controls, Bluetooth/USB gamepad support, and app-private runtime storage.
- Automatic aspect-ratio rendering from 4:3 through widescreen and ultrawide, with Hor+ gameplay projection and aspect-safe HUD behavior.
- Local multiplayer support where the target supports it.
- LAN, direct-connect, and matchmaker-based networking infrastructure.
- Transactional automatic updates for Windows and Nintendo Switch.
- No retail game assets, authentication credentials, console keys, or private signing material in the repository or release packages.
You must own and provide your own copy of Sonic R.
For a fresh installation, download Sonic-Radiant-Windows.zip, extract it to a
normal writable folder, and run Sonic-Radiant.exe.
If game data is not already present, Sonic Radiant opens its setup panel inside
the game window. It searches for a supported .cue plus its referenced .bin
files. If it cannot find them automatically, Windows opens a native file picker.
The source disc image is never modified. Once extraction succeeds, the original CUE/BIN files are no longer required for normal play.
Download Sonic-Radiant-Switch.zip. It contains both the NRO and the optional
NSP forwarder. Copy the NRO to exactly:
sdmc:/switch/sonicr/Sonic-Radiant.nro
Launch it through hbmenu or the Sonic Radiant forwarder. If retail data is not present, place the original CUE/BIN files somewhere on the SD card and relaunch; the importer scans the Sonic Radiant directory and common SD-card locations.
The runtime directory intentionally remains sdmc:/switch/sonicr/ so existing
saves, game data, diagnostics, and the forwarder continue to work across updates.
Download Sonic-Radiant-Android.apk and install it on a 64-bit ARM Android
device. On first launch, select the folder containing your original Sonic R
PC CUE/BIN files. Sonic Radiant copies the source image into app-private storage,
validates it, and installs the runtime data without modifying the original files.
The Android build includes adaptive on-screen controls. Connecting a supported Bluetooth or USB controller automatically hides and disables the touch overlay.
Sonic Radiant checks the project's GitHub releases for a newer version. Only non-draft releases are considered. The updater downloads the platform ZIP, verifies the ZIP's SHA-256 digest reported by GitHub, extracts only the running platform binary, validates the ZIP member CRC, and then promotes it transactionally.
- Download
Sonic-Radiant-Windows.zipto a temporary update archive. - Verify the archive SHA-256 and extract
Sonic-Radiant.exeto.new. - Start a temporary handoff helper copied from the currently running EXE.
- Exit the current game process.
- Preserve the previous executable as
.old. - Promote the verified
.newexecutable. - Launch the new build automatically.
- Download
Sonic-Radiant-Switch.zipwhile the current NRO remains loaded. - Verify the archive SHA-256 and extract
Sonic-Radiant.nroto.new. - Preserve the previous file as
Sonic-Radiant.nro.old. - Promote the verified NRO to
Sonic-Radiant.nro. - Use libnx
envSetNextLoad()so hbloader starts the new NRO when the current process exits.
The updater intentionally does not reinstall the NSP. The forwarder always points
to the stable sdmc:/switch/sonicr/Sonic-Radiant.nro path, so normal updates only
need to replace the NRO.
Both paths are designed to keep or restore the previous binary if an update cannot be promoted safely.
Retail Sonic R data is not distributed by this project. The importer creates
the expected runtime folders from a copy supplied by the user, including the
original data directories and MUSIC/ tracks.
User-created/runtime files stay beside the game data and are not replaced by the updater. Important examples include:
| File / folder | Purpose |
|---|---|
SAVE/SONICR.SAV |
Progress and records |
SONICR.INF |
Game options |
KEYS.BIN |
Keyboard bindings |
JOYSTICK.INF / SAVE/PADS.CFG |
Gamepad configuration |
GHOST/ |
Time Attack ghosts |
ONLINE.DAT |
Matchmaker sign-in state; private, never publish it |
cd source/sdl
makeFor the optimized desktop release build:
cd source/sdl
make releaseWith devkitPro/devkitA64 and the required Switch libraries installed:
cd source/sdl
make -f Makefile.switch -j8The result is source/sdl/Sonic-Radiant.nro.
The Android target builds for 64-bit ARM devices. Initialize the submodules, install the Android SDK/NDK versions listed in the Android guide, then build the APK with Gradle:
git submodule update --init --recursive
cd source/android
./gradlew assembleDebugThe APK is written to source/android/app/build/outputs/apk/debug/.
For an optimized release package, run ./gradlew assembleRelease. Release APKs
must be signed before distribution; see the Android guide for the signing model.
Retail game data is never bundled in the APK. On first launch, the Android
launcher asks the user to select the folder containing their original CUE/BIN
disc image and copies only those source files into app-private storage before
the existing importer verifies and extracts them.
More detailed platform documentation:
- Desktop guide
- Android guide
- Nintendo Switch guide
- Dreamcast guide
- Porting guide
- Contributing
- Credits
DATA/ Sonic Radiant runtime support files
assets/branding/ Application icon / branding
docs/ Platform and developer documentation
dreamcast/ Dreamcast tooling inherited from the project
source/sdl/ Desktop + Nintendo Switch implementation
source/dc/ Dreamcast implementation
source/android/ Android Gradle project and pinned SDL dependencies
Sonic Radiant is created and maintained by RadiantDelux.
The original reverse-engineered Sonic R reimplementation was created by jnmartin84 and upstream contributors. Sonic Radiant is built on that work and keeps the upstream repository linked prominently for full historical attribution. See CREDITS.md for additional contributors and dependencies.
Sonic Radiant is licensed under the GNU Affero General Public License v3.0, matching its upstream foundation. See LICENSE.
Sonic R, Sonic the Hedgehog, Sega, Traveller's Tales, and related trademarks, characters, and retail assets belong to their respective rights holders. Sonic Radiant is an unofficial fan preservation/portability project and is not affiliated with or endorsed by Sega.
This repository and its releases do not contain the original retail game data.