@TerryHB_ @ItsJojoTho Decomp/Recomp:
GloriousEggroll/squarehole360
squarehole360 is a native PC port of Gears of War 3 for Linux and Windows, built from your own Xbox 360 copy of the game. The game's PowerPC code is converted ahead of time into native x86-64 code, so no emulator runs while you play. On top of that sits a Vulkan renderer written for this game, plus modern PC features:
- FSR 3.1, DLSS and XeSS upscaling, with frame generation
- HDR and VRR on Wayland
- An in-game settings menu
- System Link and internet multiplayer through a lobby server you can host yourself
Compared with Xenia
Xenia is a general Xbox 360 emulator. It runs any game by:
- Translating the CPU code while the game runs (JIT)
- Reading the low-level command packets the game sends to the console's GPU (PM4) and emulating that GPU in Vulkan or D3D12, including its 10 MB EDRAM
- Translating shaders while the game runs
We differ in four ways:
- CPU: the game is recompiled once ahead of time, with no JIT.
- Rendering: we capture the game's Direct3D calls instead of GPU packets, and render them with real Vulkan render targets that use the GPU's own depth and blending hardware. That is closer to how DXVK works than to an emulator.
- Shaders: translated ahead of time and cached, so new effects don't cause stutter.
- Scope: built for one game, so it can rely on Gears 3's behaviour instead of handling every game.
We still use Xenia's work through rexglue-sdk:
- The kernel and system emulation, memory, audio, input and windowing
- Its Vulkan command processor, which now only owns the GPU device and render thread and hands occlusion-query results back to the game; it no longer draws
- A few routines copied from Xenia: texture untiling, EDRAM address math and FSI precision math
Compared with XenonRecomp
XenonRecomp (hedge-dev, the tool behind Unleashed Recompiled) is a static recompiler: it converts the CPU code, and each port supplies its own runtime and renderer. Here is how it relates to our project:
- The recompiler: rexglue-sdk was inspired by XenonRecomp, and its README credits it as the basis for much of rexglue's code analysis and instruction translation.
- The shader translator: we use XenosRecomp, the shader translator from the same team, with a small adapter for Gears 3's stripped shaders.
- The runtime: unlike a bare XenonRecomp port, we run on rexglue's runtime, which comes from Xenia, rather than one written from scratch.
- The renderer: rather than replacing the game's graphics layer outright, we let the game's own Direct3D library keep running and capture its calls. It still builds the GPU command buffers, which we ignore. Stage 4 of docs/direct-renderer-plan.md would replace the game's draw functions so it stops building them.
In short: XenonRecomp's style of static recompilation, Xenia's runtime underneath, and a renderer of our own with modern PC features on top.
Eventual goal is to make it a framework for porting other games (starting with the gears series). Short term goals are to move away from the remaining xenia emulated bits (as noted the major work was dropping their gpu renderer for our own). The base of our renderer was derived from the Sonic Unleashed recomp
1 like · 74 views
Mentions
@Sk7_Here @PCMR_LATAM theres no release yet as im still working through the campaign to iron out bugs, but the current code is here: GloriousEggroll/squarehole360 the non-graphics parts are using a modified version of rexglue-sdk while the graphics backend is a custom backend made from heavily modified version of the one used in the Sonic Unleashed recomp
@TerryHB_ @ItsJojoTho Decomp/Recomp: GloriousEggroll/squarehole360 squarehole360 is a native PC port of Gears of War 3 for Linux and Windows, built from your own Xbox 360 copy of the game. The game's PowerPC code is converted ahead of time into native x86-64 code, so no emulator runs while you play. On top of that sits a Vulkan renderer written for this game, plus modern PC features: - FSR 3.1, DLSS and XeSS upscaling, with frame generation - HDR and VRR on Wayland - An in-game settings menu - System Link and internet multiplayer through a lobby server you can host yourself Compared with Xenia Xenia is a general Xbox 360 emulator. It runs any game by: - Translating the CPU code while the game runs (JIT) - Reading the low-level command packets the game sends to the console's GPU (PM4) and emulating that GPU in Vulkan or D3D12, including its 10 MB EDRAM - Translating shaders while the game runs We differ in four ways: - CPU: the game is recompiled once ahead of time, with no JIT. - Rendering: we capture the game's Direct3D calls instead of GPU packets, and render them with real Vulkan render targets that use the GPU's own depth and blending hardware. That is closer to how DXVK works than to an emulator. - Shaders: translated ahead of time and cached, so new effects don't cause stutter. - Scope: built for one game, so it can rely on Gears 3's behaviour instead of handling every game. We still use Xenia's work through rexglue-sdk: - The kernel and system emulation, memory, audio, input and windowing - Its Vulkan command processor, which now only owns the GPU device and render thread and hands occlusion-query results back to the game; it no longer draws - A few routines copied from Xenia: texture untiling, EDRAM address math and FSI precision math Compared with XenonRecomp XenonRecomp (hedge-dev, the tool behind Unleashed Recompiled) is a static recompiler: it converts the CPU code, and each port supplies its own runtime and renderer. Here is how it relates to our project: - The recompiler: rexglue-sdk was inspired by XenonRecomp, and its README credits it as the basis for much of rexglue's code analysis and instruction translation. - The shader translator: we use XenosRecomp, the shader translator from the same team, with a small adapter for Gears 3's stripped shaders. - The runtime: unlike a bare XenonRecomp port, we run on rexglue's runtime, which comes from Xenia, rather than one written from scratch. - The renderer: rather than replacing the game's graphics layer outright, we let the game's own Direct3D library keep running and capture its calls. It still builds the GPU command buffers, which we ignore. Stage 4 of docs/direct-renderer-plan.md would replace the game's draw functions so it stops building them. In short: XenonRecomp's style of static recompilation, Xenia's runtime underneath, and a renderer of our own with modern PC features on top. Eventual goal is to make it a framework for porting other games (starting with the gears series). Short term goals are to move away from the remaining xenia emulated bits (as noted the major work was dropping their gpu renderer for our own). The base of our renderer was derived from the Sonic Unleashed recomp