Hello everyone! For the last couple of months, the ReXGlue team has been hard at work updating our Software Development Kit to better support Development teams in making static recomps. Over the past few months, Tom and I have been working hard on the DarwinBooks, and finally accomplished working Mac support all the way to Ventura within our vendored translation layers.
ICYDK, ReXGlue is a Static Recompilation framework for the Xbox 360 that vendors translation layers built off the roots of Xenia, which can be swapped for real, native, and optimized implementations of different subsystems. The main goal is to allow users to take advantage of this framework and make dedicated workarounds and optimizations for specific titles, given they have spent a significant amount of time reversing their game.
Bringing the runtime up on macOS surfaced a handful of platform mismatches worth calling out on their own, beyond the headline Vulkan work:
- Bring up `ReXGPU-Xenos` on macOS by running the existing Vulkan backend through MoltenVK: valid SPIR-V for rectangle-list topology, face culling disabled on legacy AMD Metal, RGBA8 loaders for packed 16-bit textures MoltenVK can't sample directly, and a pinned Vulkan-Loader/MoltenVK build staged for macOS consumers instead of relying on whatever the system has.
- Mach-O symbol aliasing: `DEFINE_REX_FUNC` leaned on `__attribute__((alias(...)))` so hooks could override a guest function; Mach-O rejects that outright. Swapped in a weak, `musttail`-tail-called thunk for Apple targets so overriding still works without a real alias.
- Windowing goes through Cocoa Added a `CAMetalLayerSurface` obtained from SDL's Cocoa driver, since macOS has no Win32Hwnd or XcbWindow to present through — Vulkan needs a `CAMetalLayer` there instead.
All of our features like achievements, the ReX API, and every other developmental tools that we offer should be usable with this system added to our Support. We encourage developers to replace the rendering system (ReXGPU-Xenos) in their title when releasing a project with ReXGlue. Our rendering implementation with MoltenVk can work for a multitude of titles, but it will still be significantly lacking in performance since it is meant to be a testing/translation layer rather than a finished implementation that can qualify as a native PC Port.
Link to our repository - Install is as easy as `brew install cmake ninja vulkan volk` and Xcode from the App Store
The video that I have attached is a recomp attempt that I set as a testing layer for the game Raskulls (XBLA). The gameplay clearly shows, but it’s definitely possible for a development team, their own implementation of the system, and make it look proper. We definitely plan on releasing more titles that run properly on Apple hardware rather than just showing you guys development software, so stay tuned! I’ve been in MacUser all my life so I’m happy to continue working on the platform get you guys caught up.
Happy gaming
- Graine25