ReXGlue SDK
An Xbox 360 recompilation runtime and toolkit used by many of this year's 360 recomps.
Xbox 360 Recompilation Runtime and Toolkit See the README below for details.
README
On GitHubReXGlue converts Xbox 360 PowerPC code into portable C++ that runs natively on modern platforms.
ReXGlue is heavily rooted on the foundations of Xenia, the Xbox 360 emulator. Rather than interpreting or JIT-compiling PPC instructions at runtime, ReXGlue takes a different path: it generates C++ source code ahead of time, an approach inspired by XenonRecomp and rexdex's recompiler.
Latest SDK builds and releases are published on GitHub Releases. Join the Discord server for updates and share what you have created.
Builds
| Channel | CI | Download |
|---|---|---|
| Release | Latest stable | |
| Nightly | Latest pre-release |
Quickstart
For quick start guide, full CLI reference, and config file options, see the wiki.
Disclaimer
ReXGlue is not affiliated with nor endorsed by Microsoft or Xbox. It is an independent project created for educational and development purposes. All trademarks and copyrights belong to their respective owners.
This project is not intended to promote piracy nor unauthorized use of copyrighted material. Any misuse of this software to endorse or enable this type of activity is strictly prohibited.
Credits
ReXGlue
- Tom (crack) - Project Founder
- Loreaxe - Linux Contributor
- mystixor - Windows Contributor
- Graine25 - Project Support
- Carlos Estrague (mrcmunir) - Linux / ARM64 Contributor
- sanjay900 - Linux / SDL Contributor
- Toby - Project Support
- Roxxsen - CI/CD Contributor
The list above is not exhaustive. Thanks to everyone in the ReXGlue community who contributes code, files issues, tests builds, and keeps the project moving.
Very Special Thank You:
- Project Xenia - Their invaluable work on Xbox 360 emulation laid the groundwork for ReXGlue's development. This project (and numerous others) would not exist without their hard work and dedication.
- XenonRecomp - For pioneering the modern static recompilation approach for Xbox 360. A lot of the codegen analysis logic and instruction translations are based on their work. Thank you!
- rexdex's recompiler - The OG static recompiler for Xbox 360.
- Many others in the Xbox 360 homebrew and modding communities whose work and research have contributed to the collective knowledge that makes projects like this possible.
From the project's repository, fetched . Images load from GitHub.
Releases
Feed-
Release notes
Changes since previous nightly (
ea222e98):- feat(codegen): add sync fences for sync, lwsync, and eieio (bd833a2)
-
Release notes
Changes since previous nightly (
7f7c92ef):- fix(codegen): fix register types to be unsigned (ea222e9)
- fix(build): expose the imgui and xxHash headers public SDK headers include (b5e0cf8)
- fix(build): require SSE4.1 on SDK targets independent of the preset (7f80718)
- fix(build): expose the exported rex:: targets when the SDK is a subdirectory (00276db)
- fix(build): resolve the SDK version from the SDK tree under add_subdirectory (5024759)
- feat(system): add writable_code_segments (5e2dae1)
- build: embed a version resource in shipped SDK binaries (9dea59f)
-
Release notes
Changes since previous nightly (
5cf287f4):- codegen: migrate stwcx. to std::atomic CAS, drop CR0.so and redundant fences (7f7c92e)
-
Release notes
Changes since previous nightly (
923c1a59):- refactor(rexglue): do not force
snake_caseproject names (5cf287f) - feat(input): add keyboard passthrough and bound-key keystrokes (3f34ffc)
- feat(input): add vibration, deadzones, UI blocking and hotplug notices (3cd7243)
- feat(input): log joystick hotplug and widen wireless detection (c695852)
- feat(input): report the real XInput device subtype (78985dd)
- fix(codegen): pack vpkuwus/vpkuhus through vTemp when vD aliases a source (#449) (6319e23)
- refactor(rexglue): do not force
-
Release notes
Changes since previous nightly (
1406e1b7):- feat(ui): apply the monitor, window size and fullscreen mode without a restart (923c1a5)
-
Release notes
Changes since previous nightly (
b971840d):- feat(ui): switch the display mode in fullscreen and gate input on window focus (1406e1b)
-
Release notes
Changes since previous nightly (
0c7b01a0):- feat(logging): configure the log path, directory budget and flush through LogConfig (b971840)
- feat(ui): resolve the window size through one cvar order and expose the display size (289f518)
-
Release notes
Changes since previous nightly (
4c135084):- fix(kernel): release leaked event, socket and completion port objects (0c7b01a)
- fix(xam): compare content results against X_ERROR_SUCCESS instead of testing them as NTSTATUS (ee20900)
- fix(filesystem): truncate overwrites in place and release the CRT file object (01ac2a3)
-
Release notes
Changes since previous nightly (
e9d44256):- deps: update SDL3 to 3.4.14 (4c13508)
-
Release notes
Changes since previous nightly (
f5337cdc):- deps: bump MoltenVK to 1.4.3 (701747d6) (e9d4425)
-
v0.10.0 3.7k
Release notes
What's Changed
- fix(core/threading): arm suspend_count_ with the started state to close a lost-wakeup race by @Azkali in github.com/rexglue/rexglue-sdk/pull/387
- fix(system): delta patch corruption on aarch64 by @birabittoh in github.com/rexglue/rexglue-sdk/pull/389
- Remove assert if XGISessionJoinRemote is called by @Fancy2209 in github.com/rexglue/rexglue-sdk/pull/399
- Audio stretch fix: keep SDL timer resolution enabled by @Creesic in github.com/rexglue/rexglue-sdk/pull/403
- [Feature] macOS Support by @Graine25 in github.com/rexglue/rexglue-sdk/pull/392
- [Refactor] Vulkan-Xenos implementation to run with MoltenVK by @Graine25 in github.com/rexglue/rexglue-sdk/pull/413
- fix(build): link dxgi and dxguid on Windows regardless of renderer by @catuhana in github.com/rexglue/rexglue-sdk/pull/415
New Contributors
- @Azkali made their first contribution in github.com/rexglue/rexglue-sdk/pull/387
- @Fancy2209 made their first contribution in github.com/rexglue/rexglue-sdk/pull/399
- @catuhana made their first contribution in github.com/rexglue/rexglue-sdk/pull/415
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.9.0...v0.10.0
What's Changed
- fix(core/threading): arm suspend_count_ with the started state to close a lost-wakeup race by @Azkali in github.com/rexglue/rexglue-sdk/pull/387
- fix(system): delta patch corruption on aarch64 by @birabittoh in github.com/rexglue/rexglue-sdk/pull/389
- Remove assert if XGISessionJoinRemote is called by @Fancy2209 in github.com/rexglue/rexglue-sdk/pull/399
- Audio stretch fix: keep SDL timer resolution enabled by @Creesic in github.com/rexglue/rexglue-sdk/pull/403
- [Feature] macOS Support by @Graine25 in github.com/rexglue/rexglue-sdk/pull/392
- [Refactor] Vulkan-Xenos implementation to run with MoltenVK by @Graine25 in github.com/rexglue/rexglue-sdk/pull/413
- fix(build): link dxgi and dxguid on Windows regardless of renderer by @catuhana in github.com/rexglue/rexglue-sdk/pull/415
New Contributors
- @Azkali made their first contribution in github.com/rexglue/rexglue-sdk/pull/387
- @Fancy2209 made their first contribution in github.com/rexglue/rexglue-sdk/pull/399
- @catuhana made their first contribution in github.com/rexglue/rexglue-sdk/pull/415
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.9.0...v0.10.0
What's Changed
- fix(core/threading): arm suspend_count_ with the started state to close a lost-wakeup race by @Azkali in github.com/rexglue/rexglue-sdk/pull/387
- fix(system): delta patch corruption on aarch64 by @birabittoh in github.com/rexglue/rexglue-sdk/pull/389
- Remove assert if XGISessionJoinRemote is called by @Fancy2209 in github.com/rexglue/rexglue-sdk/pull/399
- Audio stretch fix: keep SDL timer resolution enabled by @Creesic in github.com/rexglue/rexglue-sdk/pull/403
- [Feature] macOS Support by @Graine25 in github.com/rexglue/rexglue-sdk/pull/392
- [Refactor] Vulkan-Xenos implementation to run with MoltenVK by @Graine25 in github.com/rexglue/rexglue-sdk/pull/413
- fix(build): link dxgi and dxguid on Windows regardless of renderer by @catuhana in github.com/rexglue/rexglue-sdk/pull/415
New Contributors
- @Azkali made their first contribution in github.com/rexglue/rexglue-sdk/pull/387
- @Fancy2209 made their first contribution in github.com/rexglue/rexglue-sdk/pull/399
- @catuhana made their first contribution in github.com/rexglue/rexglue-sdk/pull/415
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.9.0...v0.10.0
What's Changed
- fix(core/threading): arm suspend_count_ with the started state to close a lost-wakeup race by @Azkali in github.com/rexglue/rexglue-sdk/pull/387
- fix(system): delta patch corruption on aarch64 by @birabitt…
-
v0.9.0 828
Release notes
What's Changed
- v0.7.7 - App Lifecycle Hooks and Graphics Phase Split by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/298
- Release v0.7.8 by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/323
- v0.8.0 - Multi-Binary DLL Support by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/335
- fix(codegen): manual switch table configuration in block discovery by @Graine25 in github.com/rexglue/rexglue-sdk/pull/370
- fix(system): correct DLL code_base so indirect calls resolve correctly by @Graine25 in github.com/rexglue/rexglue-sdk/pull/371
- Handle XPresenceInitialize in XLIVEBASE dispatch by @Creesic in github.com/rexglue/rexglue-sdk/pull/373
- Byte-swap message box title/body text by @Creesic in github.com/rexglue/rexglue-sdk/pull/374
New Contributors
- @Creesic made their first contribution in github.com/rexglue/rexglue-sdk/pull/373
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.8.0...v0.9.0
What's Changed
- v0.7.7 - App Lifecycle Hooks and Graphics Phase Split by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/298
- Release v0.7.8 by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/323
- v0.8.0 - Multi-Binary DLL Support by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/335
- fix(codegen): manual switch table configuration in block discovery by @Graine25 in github.com/rexglue/rexglue-sdk/pull/370
- fix(system): correct DLL code_base so indirect calls resolve correctly by @Graine25 in github.com/rexglue/rexglue-sdk/pull/371
- Handle XPresenceInitialize in XLIVEBASE dispatch by @Creesic in github.com/rexglue/rexglue-sdk/pull/373
- Byte-swap message box title/body text by @Creesic in github.com/rexglue/rexglue-sdk/pull/374
New Contributors
- @Creesic made their first contribution in github.com/rexglue/rexglue-sdk/pull/373
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.8.0...v0.9.0
What's Changed
- v0.7.7 - App Lifecycle Hooks and Graphics Phase Split by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/298
- Release v0.7.8 by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/323
- v0.8.0 - Multi-Binary DLL Support by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/335
- fix(codegen): manual switch table configuration in block discovery by @Graine25 in github.com/rexglue/rexglue-sdk/pull/370
- fix(system): correct DLL code_base so indirect calls resolve correctly by @Graine25 in github.com/rexglue/rexglue-sdk/pull/371
- Handle XPresenceInitialize in XLIVEBASE dispatch by @Creesic in github.com/rexglue/rexglue-sdk/pull/373
- Byte-swap message box title/body text by @Creesic in github.com/rexglue/rexglue-sdk/pull/374
New Contributors
- @Creesic made their first contribution in github.com/rexglue/rexglue-sdk/pull/373
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.8.0...v0.9.0
-
v0.8.0 2.7k
Release notes
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.8...v0.8.0
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.8...v0.8.0
-
v0.7.8 213
Release notes
What's Changed
- fix(build): require Linux audio backends by @birabittoh in github.com/rexglue/rexglue-sdk/pull/299
New Contributors
- @birabittoh made their first contribution in github.com/rexglue/rexglue-sdk/pull/299
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.7...v0.7.8
What's Changed
- fix(build): require Linux audio backends by @birabittoh in github.com/rexglue/rexglue-sdk/pull/299
New Contributors
- @birabittoh made their first contribution in github.com/rexglue/rexglue-sdk/pull/299
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.7...v0.7.8
What's Changed
- fix(build): require Linux audio backends by @birabittoh in github.com/rexglue/rexglue-sdk/pull/299
New Contributors
- @birabittoh made their first contribution in github.com/rexglue/rexglue-sdk/pull/299
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.7...v0.7.8
-
v0.7.7 112
Release notes
What's Changed
- feat(app): add hook for adding log sinks by @Mystixor in github.com/rexglue/rexglue-sdk/pull/293
- codegen: vpkd3d128 tweak by @Graine25 in github.com/rexglue/rexglue-sdk/pull/289
- refactor(system): migrate from legacy move_only functions by @Graine25 in github.com/rexglue/rexglue-sdk/pull/295
- feat(krnl): Improved xbdm export stubs by @twist84 in github.com/rexglue/rexglue-sdk/pull/296
New Contributors
- @twist84 made their first contribution in github.com/rexglue/rexglue-sdk/pull/296
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.6...v0.7.7
What's Changed
- feat(app): add hook for adding log sinks by @Mystixor in github.com/rexglue/rexglue-sdk/pull/293
- codegen: vpkd3d128 tweak by @Graine25 in github.com/rexglue/rexglue-sdk/pull/289
- refactor(system): migrate from legacy move_only functions by @Graine25 in github.com/rexglue/rexglue-sdk/pull/295
- feat(krnl): Improved xbdm export stubs by @twist84 in github.com/rexglue/rexglue-sdk/pull/296
New Contributors
- @twist84 made their first contribution in github.com/rexglue/rexglue-sdk/pull/296
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.6...v0.7.7
What's Changed
- feat(app): add hook for adding log sinks by @Mystixor in github.com/rexglue/rexglue-sdk/pull/293
- codegen: vpkd3d128 tweak by @Graine25 in github.com/rexglue/rexglue-sdk/pull/289
- refactor(system): migrate from legacy move_only functions by @Graine25 in github.com/rexglue/rexglue-sdk/pull/295
- feat(krnl): Improved xbdm export stubs by @twist84 in github.com/rexglue/rexglue-sdk/pull/296
New Contributors
- @twist84 made their first contribution in github.com/rexglue/rexglue-sdk/pull/296
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.6...v0.7.7
-
v0.7.6 305
Release notes
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.5...v0.7.6
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.5...v0.7.6
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.5...v0.7.6
-
v0.7.5 284
Release notes
What's Changed
- v0.7.5 - REX_ API Surface, Content Management, and Logging Overhaul by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/288
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.4...v0.7.5
What's Changed
- v0.7.5 - REX_ API Surface, Content Management, and Logging Overhaul by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/288
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.4...v0.7.5
What's Changed
- v0.7.5 - REX_ API Surface, Content Management, and Logging Overhaul by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/288
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.4...v0.7.5
-
v0.7.4 480
Release notes
Summary
- Vectorized PPC shift and rotate instructions (vslb, vslw, vslh, vrlh, vsrh, vsrah) using SIMDe intrinsics, plus added SIMDe extension helpers for specialized shift ops
- Vectorized vexptefp PPC instruction
- Refactored PPC test infrastructure with inja templates and hierarchical naming
- Added cvar to gate premasking scaled resolve L2 blocks
Fixes
- Fixed host-guest frame pacing by creating overlays on demand and correcting guest vblank counter pacing (Thank you @Mystixor !)
- Allocated rexcrt heap from virtual heap to avoid system heap contention
- General ordering and cleanup of tear down functions
What's Changed
- v0.7.4 - PPC Vector Shifts, Frame Pacing, and System Stability by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/276
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.3...v0.7.4
What's Changed
- v0.7.4 - PPC Vector Shifts, Frame Pacing, and System Stability by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/276
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.3...v0.7.4
What's Changed
- v0.7.4 - PPC Vector Shifts, Frame Pacing, and System Stability by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/276
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.3...v0.7.4
-
Release notes
Summary
- Add guest lifecycle hook virtuals to
ReXApp(OnBeforeModuleLaunch,OnAfterModuleLaunch) with a staged module launch refactor splittingKernelState::LaunchModuleintoPrepareModuleLaunch+Resume - Add Tracy fiber attribution for cooperative guest threads, with fiber enter/exit hooks in rexcrt and unique fiber identifiers for the profiler (Thank you @Mystixor!)
- Allow
Runtimeto initialize without aGraphicsSystemfor native rendering implementations, with null guards on kernel video exports and GPU command processors - New PPC instruction implementations:
vminuw,fctiw,stmw,lvxl,stvxl,stvebx(Thank you @Graine25!) - Add command CVAR type backed by
std::function<void()>(Thank you @SolarCookies!) - Add
GetNativeWindowHandle()to Window base class - Add name filter to IDA export script
- Add -dev build version marker
Fixes
- Fix off-by-one in
ObjectTable::LookupTableandRestoreHandlebounds check - Fix
LogCaptureSinkring buffer race by synchronizing writes withmutable_mutex_ - Fix console overlay losing command output on log sink refresh
- Make
g_snapshotatomic for safe cross-thread perf counter reads - Fix ODR violation caused by improper build propagation of profiling defines to
rexcore(Thank you @Mystixor!)
What's Changed
- v0.7.3 - Guest Lifecycle Hooks, Fiber Profiling, and Xenos-Less Support by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/271
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.2...v0.7.3
What's Changed
- v0.7.3 - Guest Lifecycle Hooks, Fiber Profiling, and Xenos-Less Support by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/271
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.2...v0.7.3
What's Changed
- v0.7.3 - Guest Lifecycle Hooks, Fiber Profiling, and Xenos-Less Support by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/271
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.2...v0.7.3
- Add guest lifecycle hook virtuals to
-
v0.7.2 317
Release notes
What's Changed
- v0.7.2 - Tracy Profiler and Misc Fixes by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/261
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.1...v0.7.2
What's Changed
- v0.7.2 - Tracy Profiler and Misc Fixes by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/261
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.1...v0.7.2
What's Changed
- v0.7.2 - Tracy Profiler and Misc Fixes by @tomcl7 in github.com/rexglue/rexglue-sdk/pull/261
Full Changelog: github.com/rexglue/rexglue-sdk/compare/v0.7.1...v0.7.2
Works for me
Did it work on your PC? A quick report tells other players which versions are safe to try.
Discussion
No posts yet. Ask a question, share your setup or post a clip.
Sign in to post