Saw2Recomp
Saw2Recomp is a native PC port of Saw II: Flesh & Blood for Windows that allows playing the game with a launcher for installation and settings.
- Type: PC port
- Game: Saw II: Flesh & Blood
- Runs on Windows
- By Matt-code-d
- Latest release v0.1.7, 2026-10-27
- Source: https://github.com/Matt-code-d/Saw2Recomp
README
Unofficial native PC port of Saw II: Flesh & Blood (Xbox 360) built with the ReXGlue SDK (v0.10.0).
This is a static recompilation, not an emulator. The PowerPC code inside Default.xex is translated ahead of time to C++ and linked against the ReXGlue runtime (Xenos GPU, audio, input, filesystem). There is no JIT in the play path.
Bring your own dump. This repository does not ship game files, ISOs, or XEXes. You need a legally owned Xbox 360 copy.
Author: Matt-code-d
Title ID: 4B4E0822 · Engine: Unreal Engine 3 (SAW2GAME/CookedXenon)
Status
Playable on Windows (RelWithDebInfo) with a WPF launcher for ISO install, language detection, and common runtime flags.
Still early: expect occasional missing PPC function hints (easy to patch), and a few graphics quirks (see Known issues). Achievements unlock and persist; the host toast UI is disabled because it was crashing this title.
See PROGRESS.md for the bring-up log.
Quick start (launcher)
- Install the .NET 8 Desktop Runtime (and the .NET 8 SDK if you build from source).
- Build the game once (below). CMake also publishes
Saw2Launcher.exeinto the same folder assaw2.exe. - Put extract-xiso at
../tools/extract-xiso/artifacts/extract-xiso.exe(sibling of this repo), and the ReXGlue SDK at../tools/rexglue-sdk-bin/win-amd64. - Run the launcher from the build output (or
dotnet runfromlauncher/while developing):
.\out\build\win-amd64-relwithdebinfo\Saw2Launcher.exe
In the launcher:
- SETUP / ISO → pick your
.iso→ EXTRACT & INSTALL - LANGUAGE → only packs present on that disc are listed
- VIDEO / AUDIO / INPUT → tune as you like
- PLAY
Settings land in %USERPROFILE%\Documents\saw2\launcher_settings.json. Logs go to Documents\saw2\saw2.log.
Prefer RelWithDebInfo for play. Debug can assert in the Xenos path.
Game data layout
After extract (gitignored — never commit this):
game/
Default.xex
SAW2GAME/
CookedXenon/
Movies/
Xbox360TOC.txt
Build from source
Prerequisites
- Windows 10/11 x64
- CMake 3.25+, Ninja, Clang / VS 2022 clang-cl
- Vulkan-capable GPU + Vulkan SDK
- ReXGlue SDK 0.10.0 unpacked to
../tools/rexglue-sdk-bin/win-amd64
Codegen + compile
$env:PATH = "..\tools\rexglue-sdk-bin\win-amd64\bin;$env:PATH"
$env:CMAKE_PREFIX_PATH = "..\tools\rexglue-sdk-bin\win-amd64"
# Needs Default.xex under game/ (from your ISO)
rexglue codegen saw2_manifest.toml
cmake --preset win-amd64-relwithdebinfo -DCMAKE_PREFIX_PATH="..\tools\rexglue-sdk-bin\win-amd64"
cmake --build --preset win-amd64-relwithdebinfo
Binaries (same folder): out/build/win-amd64-relwithdebinfo/saw2.exe and Saw2Launcher.exe
If the game dies with [FATAL] Call to invalid or unregistered function at 0x........, add that address to config/functions.toml, re-run codegen, rebuild. That is the normal bring-up loop for ReXGlue titles.
Launcher settings (what they map to)
| Panel | Runtime |
|---|---|
| VIDEO | resolution, window size, fullscreen, letterbox, V-Sync, FPS / guest refresh, VRR tearing, present effect (bilinear / CAS / FSR*) |
| AUDIO | mute, SDL queue depth |
| INPUT | sdl / xinput, mouse+keyboard, sensitivity |
| LANGUAGE | --user_language from packs on your ISO |
| ADVANCED / MODS | boot logo skip via UE3 -nostartupmovies (guest --cl=), experimental HUD mod (health/syringes/items), achievements on/off + safe text toast, log level, extra CLI args |
*FSR/CAS need a FidelityFX-enabled Xenos build of the SDK. Stock 0.10.0 binaries usually expose bilinear only. DLSS is not available on the Xenos path.
Known issues
- Squares in fog / mist — mitigated by defaulting
use_fuzzy_alpha_epsilon(override with--no-use_fuzzy_alpha_epsilonif needed). - Black squares in water puddles / some reflections — fixed with D3D12
rov+gpu_allow_invalid_fetch_constants(present upscaling FSR/CAS/bilinear is independent). Avoid stacking--readback_resolve,--gamma_render_target_as_unorm16, or--clear_memory_page_statenear water — they hitch.resolution_scalestays 1 so ROV cost isn’t multiplied. - Movie subtitle tracks — disc ships unsuffixed Movies/*.txt; localized probes like lvla_p_ITA.txt are hardlinked at launch so cutscene captions resolve.
- Missing
.xxxprobes in the log (Textures.xxx, numeric hashes, etc.) are often optional UE3 companions — noisy, not always fatal. - Achievements — launcher Mods toggle; unlocks save under
Documents\saw2\achievementswith a safe text toast when enabled (stock ImGui achievement dialog stays off). - HUD health — experimental guest memory bind; may not track real HP yet.
- Input race — guest
XamInput*calls are serialized (same heap-corruption race fixed in other ReXGlue ports when a pad is connected).
Project layout
saw2-recomp/
config/functions.toml # manual PPC function boundaries
src/ # app hooks + game fixes
launcher/ # WPF setup / play UI
generated/ # codegen output (local; regenerated)
game/ # your dump (gitignored)
Credits
- ReXGlue SDK — Tom Clay and contributors
- Xenia / Xenia Canary — foundations for the Xenos runtime
- extract-xiso
Port work by Matt-code-d.
Some bring-up steps (function-boundary hunting, launcher wiring, crash triage) used AI assistance as a tool alongside manual reverse-engineering and testing. The runtime, game dump handling, and final decisions stay human-owned.
Contributing
See CONTRIBUTING.md for setup, the missing-function loop, and PR rules.
License
This repository’s original code is under the MIT License (attribution required).
MIT covers only this port’s own work. It does not cover the game itself or third-party libraries/SDKs/tools (ReXGlue, extract-xiso, etc.) — those keep their own licenses.
Legal
No copyrighted assets, disc images, or XEX binaries are redistributed here. Use only with a copy you own.
Saw II: Flesh & Blood © Konami / Zombie Studios / respective rights holders. This project is unofficial and unaffiliated.
This project is built around not sharing game data. The repo and releases ship tooling only; every user must provide their own dump locally.
The maintainer does not authorize, host, or endorse any upload/reupload of game files to the internet (or elsewhere). Anyone who redistributes game content does so on their own, outside this project.
To the fullest extent permitted by law, the maintainer disclaims liability for such third-party redistribution.