Skip to content

About

Unofficial static recompilation of Sonic Free Riders for Windows, Linux and Android, with controller/keyboard support, custom VRM avatars, and Kinect v1, Kinect v2 (experimental) and webcam motion controls on Windows.

Topics

Resources

Stars

69 stars

Watchers

5 watching

Forks

Repository files navigation

Free Riders Recompiled

繁體中文

Free Riders Recompiled is an unofficial port of the Xbox 360 version of Sonic Free Riders for Windows, Linux and Android, built through static recompilation. Play with a controller or keyboard, use Kinect / Kinect v2 or webcam motion controls on Windows, and bring your own VRM model to the in-game AVATAR rider. Kinect v2 support is experimental and still needs hardware validation.

The game's PowerPC code is translated to C++ with XenonRecomp and its Xenos shaders with XenosRecomp, then runs on a native runtime that stands in for the console's kernel, graphics, audio, input and Kinect.

This project does not include any game assets. You need your own legally acquired copy of the game (the USA/Europe disc) to play it: the launcher installs the game's data from your disc image. Prebuilt versions are on the Releases page; to build it yourself, see Building.

Important

This is a work in progress. The game boots, its menus work and races can be played, but many parts of it are untested and it may stop or misbehave.

The launcher

Table of Contents

Status

What works today:

  • Booting from the title screen through the menus into races: Free Race from start to results, and Grand Prix from its story scenes into the first race.
  • Direct3D 12 and Vulkan rendering, with the shaders translated as the game meets them; sound; saving and loading records.
  • Playing without Kinect: the Kinect is emulated. Buttons stand in for the voice commands the menus understand, and the pad drives the body a race reads (leaning, jumping, kick dash, grabbing, tricks).
  • Physical Kinect and Kinect v2 input on Windows, with sensor skeletons passed to the game. Xbox 360 Kinect has been tested through races; Kinect v2 support is experimental. See setup and requirements.
  • A launcher that installs the game from your disc image and keeps its settings, in English or Traditional Chinese, on every platform.
  • Linux (Vulkan, SDL2), and Android (arm64-v8a) with on-screen touch controls and tilt steering.
  • Optional webcam motion input for 1P on Windows, with estimated 3D body joints, controller handoff and a separate skeleton debug window.
  • Experimental custom VRM Avatar models, selected in the launcher, with game-driven animation and hand-held items.
  • File-replacement mods in HedgeModManager's format, managed in the launcher's Mods tab (Mods).

Known limits:

  • Only the USA/Europe disc is supported.
  • Much of the game has not been played through yet; stages and modes beyond those above may stop on something the runtime does not do yet.
  • Linux and Android use shaders translated beforehand on Windows (shaders.pack, included in the releases). The game creates all of its shaders while it boots; releases include the matching shader pack.
  • Android has been tried in the emulator, on Pocket S2 Pro (Adreno 750), and on AYN Thor (Adreno 740). The latest Android 10+ build completed a race on Thor at approximately 23–24 FPS with race time matching real time. Intro movies can still play slowly; this does not imply 60 FPS or the same performance on other devices. See Android performance.

Progress notes (mostly in Traditional Chinese) are in docs/, starting with docs/progress.md.

Release notes

  • v0.1.0 — First playable preview Released Windows, Linux and Android builds, with playable menus and races, save support, and controller/keyboard gameplay without Kinect. Included an English/Traditional Chinese launcher and Android touch controls and tilt steering.
  • v0.1.1 — Early stability and rendering fixes Fixed a Grand Prix loading failure, removed accidentally enabled profiling overhead, and corrected rendering at non-native window sizes. Improved Android texture compatibility and surface recovery, and bundled a complete shader pack.
  • v0.1.2 — Race results fix Fixed the game stopping at race results when it attempted to award an achievement. Achievement requests are now handled locally without Xbox Live.
  • v0.1.3 — Customizable controls Added desktop settings for player input sources, controller selection and keyboard/gamepad bindings. Improved Vulkan compatibility with display surfaces that lack certain capabilities.
  • v0.1.4 — Crouch and jump fixes Fixed controller input conflicts that could cancel crouch charging or jump release, including when holding the left stick down.
  • v0.1.5 — Local two-player support Added independent player input routing and split-screen corrections. Fixed Gear selection getting stuck after Player 1 confirmed, reduced repetitive input logging, and removed unnecessary CPU queries.
  • v0.2.0 — Webcam motion controls Added optional Windows webcam controls using estimated 3D body movement, a skeleton debug window, and automatic controller/camera handoff. Improved motion gestures and fixed single-player viewport stretching and exposure when 2P was disabled.
  • v0.2.1 — Shader and Windows startup fixes Corrected the incompatible shader pack shipped with v0.2.0, which could cause a white screen or Vulkan device loss. Added shader-pack validation and bundled the D3D12 Agility runtime for affected Windows 10 systems.
  • v0.3.0 — Custom VRM avatars Added experimental VRM 0.x/1.0 models for the in-game AVATAR rider, with game-driven animation, stance changes and held-item positioning. Models can be selected through the launcher.
  • v0.4.0 — Real Kinect support Added physical Kinect input on Windows, sensor previews and Kinect v1 tilt controls. Improved player tracking, webcam handling and Windows graphics compatibility. Xbox 360 Kinect has been tested in races; Kinect v2 remains experimental.
  • v0.4.1 — Rendering options and performance work Fixed shader reload failures during scene changes and controller-related rider pose distortion. Added independent internal rendering resolutions from 360p to 1440p and reduced CPU/rendering overhead.
  • v0.4.2 — Settings and language selection Reorganized launcher settings, added game language selection, and fixed startup failures caused by unsupported system regions.
  • v0.4.3 — Pipeline preparation and handheld improvements Added startup preparation and caching of known graphics pipelines to reduce compilation stalls during gameplay. Improved Windows timing, worker synchronization and CPU overhead, and introduced an optimized Android 10+ APK alongside the Android 9-compatible build.
  • v0.4.4 — Android race timing and CPU improvements Improved Android CPU scheduling and guest execution overhead, corrected race simulation timing at lower frame rates, and fixed Vulkan shader compatibility on GPUs without 64-bit integer support. Racing was verified at approximately 23–24 FPS with time matching real seconds on AYN Thor; Intro movies remain slower than expected.
  • v0.4.5 — Android Intro playback improvements Reduced ARM64 movie-decoding overhead with faster vector memory operations. On the tested AYN Thor, maximum sampled Intro video delay fell from several seconds to under one second, while race timing remained correct. Some playback delay may remain on other devices.
  • v0.4.6 — Course stability and handheld improvements Fixed low-frame-rate traversal failures in Frozen Forest, Final Factory, Metropolis Speedway and Forgotten Tomb, plus loading and long-session stability issues. Improved controller steering and side reach, Android rotation recovery, race UI timing and texture handling. Added Android diagnostic ZIP export and further CPU/rendering optimizations; performance still varies by device.
  • v0.4.7 — Windows CPU optimizations and rendering stability Reduced Windows guest checkpoint overhead and added D3D12 draw recording on a render thread. Fixed stale resolved textures when guest memory is reused and improved cleanup after rendering errors. Added isolated benchmark tooling and expanded rendering regression coverage. Vulkan retains synchronous recording by default; Android performance gains are not established by this release.
  • v0.5.0 — Unleashed/Marathon-style architecture Moved the runtime to the Unleashed/Marathon Recompiled model: one render target per guest surface with deferred and depth resolves (race shadows now appear), direct guest memory access, a host o1heap for the title's heap and physical memory, every guest thread running in parallel with per-subsystem locks instead of a global lock, the render thread on every backend, and real-time race stepping on every platform. On the tested AYN Thor a race went from about 25 to about 49–50 FPS.
  • v0.5.1 — Controller air tricks Fixed air tricks with a controller: turning the left stick in the air now raises a jump's rating, as turning the body does with Kinect. Also integrates a faster guest-memory path for the checked (debugging) build.
  • v0.5.2 — Air trick landing fix Spinning the left stick for an air trick no longer leans or accelerates the board, which had carried trick jumps off the side of Rocky Ridge out of the course.
  • v0.5.3 — Jump physics and Retry fix Desktop races step one original frame at a time again, so charged jumps off the side of Rocky Ridge land back on the course. Retrying a race from the pause menu no longer brings the confirmation back and leaves it stuck on screen.
  • v0.5.4 — Grey flash fix Removed the single frames of flat grey that flashed now and then during races: a HUD sprite the game parks far off screen was sometimes drawn across the whole screen. Added diagnostics for stalls and single-colour frames.
  • v0.5.5 — Mali GPU start-up fix Android phones and tablets with a Mali-G57 GPU (Helio G99, such as the Galaxy Tab A9) no longer crash at start-up: the renderer asked for one more descriptor set than these GPUs allow. The log now names each graphics start-up step.
  • v0.5.6 — Air tricks on side jumps, touch pause menu Spinning the stick in the air raises a side jump's rating again. On touch screens the on-screen stick turns the pause menu's wheel.
  • v0.6.0 — Mod support The game loads file-replacement mods in HedgeModManager's format, the one Unleashed and Marathon Recompiled use. The launcher's new Mods tab switches them on and off and sets their order.
  • v0.6.1 — Two players and Relay Race on controllers Each player turns, confirms and backs out of the two-player menus with their own controller, and either can pause; a guest second player no longer adds a 10-second wait. Relay Race works with controllers: A swaps in the next racer. The launcher's settings can all be reached with a controller. 4-core CPUs keep the main thread's core to itself, and frames over 250 ms are logged.
  • v0.6.2 — Fewer freezes, START skips story scenes The race and Relay hand-over freezes of up to a few seconds are gone: the main thread no longer spins on a lock other threads hold across system calls. START skips a World Grand Prix story scene, and the results screen's Kinect Guide no longer closes the game.
  • v0.6.3 — Any install folder, voices apart from text, steadier sound The game starts from a folder with non-Latin letters on Windows, and full screen works with Vulkan on Linux. Voices can be English or Japanese apart from the text. Sound keeps a short cushion against crackles, and 4-core CPUs no longer pin the main thread. The programs have an icon, and HedgeModManager can find the game and manage its mods.
  • v0.6.4 — No more getting stuck at start with Multi-core execution off With the launcher's Multi-core execution turned off the game got stuck at start on every device. The switch is gone: the game's threads always run in parallel, and an old setting that turned it off is ignored.
  • v0.6.5 — Index buffers kept on the GPU (test build) Index buffers the game leaves unchanged stay on the GPU instead of being decoded and copied for every draw, and cached buffers are found without checking memory views each time. A test build for slower CPUs; SFR_INDEX_CACHE=0 turns the new cache off.
  • v0.6.6 — Crash records in the Android diagnostic ZIP (test build) On Android 11 and later the diagnostic ZIP now says how the game last ended, with the system's crash record (tombstone) when it crashed in native code, so a crash that leaves nothing in the log can be located. Also has v0.6.5's index cache.
  • v0.6.7 — Starts on Vulkan 1.1 phones Phones whose GPU driver offers Vulkan 1.1, such as the Snapdragon 8 Gen 1's Adreno 730 on some devices, crashed at the game's first frame; the crash record from v0.6.6 showed why. Includes v0.6.5's index buffers kept on the GPU and v0.6.6's crash records. Its fix did not take effect on those phones; see v0.6.8.
  • v0.6.8 — Vulkan 1.1 phones, second fix v0.6.7 still crashed at the first frame on Vulkan 1.1 phones: its check could not see that the driver lacked the function. The function is now asked of the GPU driver itself, under the name that driver's Vulkan version uses.
  • v0.6.9 — Faster races on Android On phones with one core faster than the rest, the game's main thread now gets that core: on an AYN Thor a race went from 45 to about 56 fps while racing, and to 60 at the start line.
  • v0.6.10 — Less GPU work under Vulkan Vulkan shaders read their constants from uniform buffers instead of through buffer addresses, which phone GPUs can load once per draw: on an AYN Thor the GPU time per frame fell from about 14.8 to 10 ms. Frame rate there is unchanged (the game's CPU side now limits it), but the GPU has more headroom. Shader packs from earlier versions do not work with it.
  • v0.6.11 — A race crash on 4-core PCs Part of each race frame runs on the game's job threads, and the game waited only 16 ms for them before going on. On slower 4-core PCs a job could still be reading the racer list when the game moved on, which crashed races (Issue #64). The game now waits for those jobs to finish; the race keeps its frame rate.
  • v0.7.0 — Online play The game's Xbox LIVE mode works again, on this project's own server: one player's game hosts, the others join over the network, and players on Windows, Linux and Android race together (three devices tested; the lobby holds eight). See Online play.
  • v0.7.1 — Avatars online, and a sign while a model loads An online race with a player using AVATAR closed the games of the others: a game without a custom model had its avatar system off and could not load another player's AVATAR. Online play now always starts the avatar system. A custom VRM model now loads in the background, with "LOADING AVATAR MODEL" and its progress shown in the corner, instead of the game appearing to freeze.

System Requirements

  • Windows: Windows 10 or 11 (x64), a CPU with AVX, a GPU with Direct3D 12 (or Vulkan 1.2).
  • Linux: x86-64 with AVX and a Vulkan 1.2 driver (tested on Ubuntu 22.04).
  • Android: Android 9 or later, arm64-v8a, Vulkan 1.1; about 2 GB free for the installed game. Releases also offer an Android 10+ APK using native thread-local storage to reduce CPU overhead; prefer that build on Android 10 or later. Android performance remains experimental; the latest race timing and performance improvements were tested on AYN Thor and have not yet been re-tested on Pocket S2 Pro.
  • Building needs the tools listed in docs/building.md.

How to Install

  1. Download the release for your system from Releases: the Windows zip, the Linux tarball, or the Android APK. For Android 10+, choose android10-arm64.apk; the android-arm64.apk package retains Android 9 compatibility. Both use the same app identity and update existing installations without requiring an uninstall.
  2. Unpack it into a folder of its own (on Android, install the APK).
  3. Start FreeRidersRecompiled and choose your disc image (.iso) when the launcher asks; it copies the game's data beside itself. Then press Start game.

Settings

The launcher groups settings by what you want to change:

Category Settings
General Launcher, game and voice languages, movies, restore defaults
Graphics Window and rendering resolutions, fullscreen, backend, VSync, expandable performance options
Sound Game volume and launcher sounds
Controls Each player's input source and controller, button/key bindings, Android touch and tilt
Motion input Kinect/webcam mode, device and preview, mirror, skeleton debug, voice commands
Avatar models Select or clear a custom VRM/GLB model
Mods Switch file-replacement mods on and off and set their order (Mods)
Game files Installation, data locations and shader pack

Window and rendering resolutions sit together under Graphics > Resolution: the first sets the output window size, while the second controls the pixels the game draws. Changes to game settings apply on the next game launch.

How to Build

In short, on Windows:

python scripts/bootstrap.py
./scripts/build_tools.ps1
python scripts/rom_tool.py extract --iso "your disc.iso" --output private/game --path default.xex
python scripts/prepare_recomp.py
./scripts/build_shader_translator.ps1
./scripts/build_tools.ps1 -Diagnostic
./out/build/host/FreeRidersRecompiled.exe

The launcher asks for your disc image on first run and installs the game beside itself. Linux and Android builds, and what each step does, are in docs/building.md.

Controls

Action Keyboard Controller
Menus: move / turn the menu ring Arrow keys D-pad
Confirm (say "OK") Z or Space A / ✕
Back Esc, X or Backspace B / ○
Select (BACK) Tab BACK / Share
Start, pause Enter START
Race: lean Arrow keys Left stick
Crouch (hold), jump (release) Z or Space A
Kick dash C X
Brake, grab X B
Switch stance V Y
Use / shake an item F RT
Skills Q / E LB / RB
Hand cursor (Kinect-only menus) I J K L Right stick

Xbox and PlayStation controllers both work. On Android, translucent touch buttons cover the same actions when no controller is connected, and tilting the phone steers in a race. Details: docs/race-controls.md, docs/pad-menus.md.

Kinect and Kinect v2

The Windows version supports physical Kinect v1 and Kinect v2 sensors for body tracking. Kinect is optional: controller and keyboard play do not require a sensor or its SDK.

Sensor What you need Current status
Kinect for Xbox 360 / Kinect for Windows v1 SDK 1.8 and a powered USB connection; the Xbox 360 sensor requires the full SDK, while Kinect for Windows v1 can use Runtime 1.8 Xbox 360 Kinect tested through races on Windows 10
Kinect v2 / Kinect for Xbox One SDK 2.0, USB 3.0 and a compatible powered PC adapter Experimental; skeleton tracking is implemented, but hardware gameplay validation is still pending

Install the matching SDK, connect the sensor, then select Kinect in the launcher's Motion input > Camera setting and choose Open preview to check tracking. Both generations use the same option: the runtime tries v1 first, then v2. Keep your whole body visible and allow enough space to move.

Kinect v1 can supply skeleton, depth and color data. The current v2 backend supplies skeletons only, with additional skeleton-based steering and crouch/jump handling. Physical Kinect input is Windows-only; Linux and Android releases do not provide it.

SDK links, adapter requirements and troubleshooting: Kinect sensor guide (Traditional Chinese). For motion controls with an ordinary webcam, see the next section.

Camera motion input

Camera-controlled gameplay alongside the live skeleton debug window

Gameplay and the skeleton delivered to the game, cropped from the same recording frame and arranged side by side. The debug window shows front and side views of the joints, without displaying the webcam image.

Windows releases include the models and runtime for webcam motion input. Select Motion input > Camera > Motion in the launcher and keep your whole body in view. Skeleton debug window opens front and side views of the joints the game receives; it does not show the camera image.

Camera input controls 1P. Using the controller takes priority; after 1.5 seconds without controller input, fresh camera tracking resumes. If tracking is lost, controller input remains available. Set 2P input to Off for single-player play.

Inference runs locally using ONNX Runtime 1.30.0 (MIT), with the OpenCV Zoo MediaPipe pose model and person detector (Apache 2.0). These models originate from Google's MediaPipe; this port uses their ONNX exports, without requiring the MediaPipe or OpenCV runtime. Model downloads are pinned by SHA-256 in scripts/fetch_pose_model.py. Licences and third-party notices are included in the Windows archive's licenses/ folder.

A webcam estimates relative 3D pose; it does not measure depth like Kinect. The Linux and Android prebuilt packages do not enable camera motion input. Setup, gestures, source builds and limitations: Camera input.

VRM Avatar models

Starting with v0.3.0, you can use your own VRM 0.x / VRM 1.0 model for the in-game AVATAR rider. Camera motion input is optional; controllers and keyboard controls work with the model too.

A custom VRM model riding an Extreme Gear during a race

A custom VRM model replacing the in-game AVATAR rider.

  1. Open the launcher's Avatar models tab.
  2. Choose Browse and select a .vrm or binary .glb file. Desktop users can also type its path; Android imports a copy into the app's storage.
  3. Start the game and select AVATAR in the character menu, then choose your Gear. AVATAR must already be available in your game save; selecting a model does not unlock it.
  4. To change models, return to the launcher and restart the game. Clear disables the custom model.

One model setting is shared by both local players; it applies to whoever selects AVATAR, with separate poses for each player. Ordinary characters are unchanged. The model appears in Loading and races, follows the game's main body animation, jumps and stance changes, and supplies hand positions for held items. Models are read locally; no avatar model is bundled or uploaded.

This is experimental. A .glb without VRM humanoid bones stays static. Full MToon shading, transparent blending, spring bones, facial expressions and finger animation are not implemented. Some poses and item grips can look different between models, and complex models can reduce performance. Windows D3D12/Vulkan gameplay has been checked; full two-player VRM gameplay and physical Linux/Android VRM gameplay still need broader testing.

Troubleshooting and platform details: VRM Avatar guide.

Online play

Starting with v0.7.0, the game's Xbox LIVE mode works again, on a server this project provides instead of Microsoft's: Create Match, Quick Match, the lobby and online races. Windows, Linux and Android players can race together.

Three devices in the same online race

The same online race on a PC (the host), a ROG Xbox Ally X and an AYN Thor.

  1. On every device: Launcher → General → Online play → Xbox LIVE.
  2. One device hosts: turn on Host the server. The game runs the server itself on TCP and UDP port 47800. Windows asks once whether to let the game through its firewall; allow it on private networks. Android needs no setup.
  3. The others connect: enter the host's local IP address under Server address (for example 192.168.1.10), and give each player a different Online name. Your save and profile stay as they are.
  4. In the game, open Main Menu → Xbox LIVE. The host chooses Create Match; the others choose Quick Match and press A on the lobby they find. The host starts the race.

Tested on a home network: three devices in one race, the host on a PC or on an AYN Thor, and a player leaving mid-race. Playing over the internet needs port 47800 forwarded to the host; that has not been tested. Leaderboards, Xbox LIVE Party, voice chat and achievements are not supported.

Details and how it works: Online play.

FAQ

How do I select Spanish or another game language? Open General > Game language in the launcher and choose English, Japanese, German, French, Spanish or Italian, then start the game. System language is the default. This is separate from the launcher's English/Traditional Chinese interface. Unsupported system languages use English; unavailable or unmapped system countries use the US profile and record a warning in game.log, without requiring changes to your OS settings. For direct runtime launches, set SFR_GAME_LANGUAGE to auto, en, ja, de, fr, es or it. Invalid values behave as auto.

How do I choose Vulkan or D3D12? On Windows, open Graphics > Graphics backend and choose either backend before starting the game. New settings default to Vulkan; existing saved choices are preserved. Linux and Android use Vulkan.

Can I change the game's internal resolution? Yes. Rendering resolution offers 360p, 540p, native 720p (default), 1080p and 1440p, independently of output window size. Apply it before starting the game. Lower values may help a limited GPU; higher values draw more detail at a greater cost. See Internal resolution.

How can I compare performance without changing game speed? Keep the normal 60 FPS cap and compare the same part of the same course, including slower-frame times. Uncapping currently speeds up the game logic too. Recording instructions and the limits of testing on a faster PC: Performance measurements. Guided 1P, 2P, Camera and VRM comparisons: Benchmark scenarios. Current local verification and hardware limits: Validation report.

Why is there a preparation screen before the game starts? Builds with a pipeline manifest prepare known graphics pipelines before the first game frame, reducing first-use compilation stalls. The first start may take longer; later starts reuse this device's cache. Keep the pipeline-cache folder. Close the window or press Escape to cancel (hold Back on Android). Unrecorded combinations can still compile during play. See Pipeline preparation.

Where are the settings and saves? Beside the launcher: settings.ini, save/ and game.log (on Android, in the app's files directory). The game plays as a local profile named "Player"; answer Yes when it asks "Are you Player?" and create save data when offered.

Why does the game need shaders.pack on Linux and Android? The Xbox shaders are translated with Windows tools while the game runs. The pack carries them, already translated, to machines without those tools; the game creates every shader it has while it boots, so a pack made with python scripts/pack_shaders.py after starting the game once on Windows (under Vulkan too, for the SPIR-V) is complete. Releases include one.

Can I use mods? File-replacement mods, yes, since v0.6.0: put each in its own folder in mods beside the launcher and switch it on in the Mods tab (Mods). Sound, texture and text mods made for the original game work once their files sit in a folder with a mod.ini; for example the Traditional Chinese mod. Code mods do not apply: the No Kinect Patch changes the original executable for Xenia, and the Kinect emulation here is the project's own code (see Credits).

Why does the release need my disc? The release holds the recompiled program, but none of the game's data (models, textures, sound, movies): that comes from your own disc image. The workflow in .github/workflows builds and tests only the parts that contain nothing from the game; releases are built from a disc on the maintainer's machine (docs/releasing.md).

Repository Layout

Path Contents
src/ The runtime (kernel, memory, threads, files, graphics, audio, input, Kinect emulation), the launcher and the game-specific hooks
scripts/ Bootstrap, disc tools, code generation, builds and packaging
config/ Pinned dependency revisions, the supported disc's fingerprints, recompiler configuration
tests/ C++ (CTest) and Python tests
android/ The Android app's manifest, activities and resources
patches/ Patches bootstrap applies to pinned dependencies
docs/ Building, platform notes and the development record

Not in the repository, by design (see .gitignore): your disc image (__ROM__/), anything extracted from it (private/, game/), generated code and build outputs (out/, generated/), downloaded dependencies (tools/), saves and local reference checkouts.

Credits

  • XenonRecomp and XenosRecomp: the PowerPC and shader recompilers.
  • Unleashed Recompiled and Marathon Recompiled: the ports this project learned from (runtime layout, graphics, the launcher's shape). None of their art is used; the launcher's art and sounds are drawn and synthesized by its own code.
  • Plume (rendering), SDL (Linux and Android), Dear ImGui (launcher), DirectX Shader Compiler (through dxc-bin).
  • Xenia: reference for the Xbox 360 kernel's behaviour and GPU texture formats/layouts.
  • Xenia Canary's netplay build (netplay_canary_experimental, BSD licence): reference for the Xbox LIVE structures and message numbers online play answers. None of its code is used.
  • ONNX Runtime (camera pose inference), OpenCV Zoo and MediaPipe (person detection and 3D pose models). Dependency versions and licences: THIRD_PARTY.md.
  • No Kinect Patch by Rei-SanTH (tested by SmileyWorld, MagicShad and ivaschia): its reverse-engineering notes showed where the game reads the Kinect's voice commands and hand cursor, which guided the Kinect emulation here. The patch is licensed CC BY-NC-ND 4.0; none of its code or files are used or included.

This project was developed with the help of AI models: GPT-6 and Claude Opus 5.

Licences and exact revisions: THIRD_PARTY.md, config/dependencies.lock.json.

Sonic Free Riders is © SEGA. This project is not affiliated with or endorsed by SEGA or Microsoft.

License

The project's code is licensed under the GNU General Public License v3.0 or later (COPYING). The game's own code and data remain SEGA's and are not covered by that grant.

About

Unofficial static recompilation of Sonic Free Riders for Windows, Linux and Android, with controller/keyboard support, custom VRM avatars, and Kinect v1, Kinect v2 (experimental) and webcam motion controls on Windows.

Topics

Resources

Stars

69 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages