# Unchallenged 3 Unchallenged 3 is a [ReXGlue](https://github.com/rexglue)-based native PC static recompilation of **UFC Undisputed 3** (Xbox 360) It can launch with different resolutions and graphical improvements including: 1080p, 2k and 4k You must provide your own legally obtained disc image. This repository contains **no** game assets, retail binaries, code generated from a retail binary, keys, or downloads. ![](docs/screens/Screenshot%202026-07-01%20083716.png) ![](docs/screens/Screenshot%202026-07-01%20083751.png) ## Dependencies - **CMake** 3.25+ and **Ninja** - **LLVM/Clang** at `C:\Program Files\LLVM` (the presets reference it there) - **Visual Studio 2022 Build Tools** with the Desktop C++ workload (MSVC headers, Windows SDK, `vcvarsall.bat`) - **Python 3** (for the game extractor; standard library only) ## Build & Run Run the CMake commands from an **"x64 Native Tools Command Prompt for VS 2022"** with `C:\Program Files\LLVM\bin` on `PATH`, so Clang finds the MSVC/Windows SDK environment. Each step must succeed before the next. **1. Clone with submodules** (the ReXGlue SDK fork is a submodule under `tools/`): ``` git clone --recurse-submodules cd public-repo-3u ``` Already cloned without `--recurse-submodules`? Run `git submodule update --init --recursive`. **2. Extract your game.** Put your own legal UFC Undisputed 3 disc image in `iso\`, then: ``` python scripts\extract_iso.py ``` This writes the game files to `game\` (with `game\default.xex`). You can also pass an explicit path: `python scripts\extract_iso.py path\to\game.iso`. **3. Build the ReXGlue SDK fork** (once). Tracy is a profiler the playable build does not need and is disabled to keep the link clean: ``` cmake --preset win-amd64 -S tools\rexglue-sdk -DREXGLUE_ENABLE_TRACY=OFF cmake --build tools\rexglue-sdk\out\build\win-amd64 --config Release --target install ``` Installs to `tools\rexglue-sdk\out\install\win-amd64`, where the project preset looks. **4. Configure** (the preset already knows the compiler and SDK location): ``` cmake --preset release ``` **5. Generate the recompiled code** from your game copy: ``` cmake --build build\u3-ninja-release --target u3_codegen ``` **6. Build the host:** ``` cmake --build build\u3-ninja-release --target u3 ``` **7. Run:** ``` build\u3-ninja-release\u3.exe --game_data_root=game ``` During boot, press **Start** to skip intro/menu videos. During fighter intros, tap **A** a few times to reach the match faster. After the first build, re-run step 6 to rebuild the host. Re-run step 5 first only when you change codegen config in `config\u3_rexglue_overrides.toml`. ## Display / Resolution Video options are opt-in `u3.exe` flags. Passing none keeps the native default. - `--draw_resolution_scale_x=2 --draw_resolution_scale_y=2` — internal render multiplier of the ~720p native target. **The knob that actually sharpens the image**, at real GPU cost. Validated 1–3; higher may break the 60 FPS live-match baseline. - `--no-fullscreen --window_width=1920 --window_height=1080` — exact output size in a window. In borderless fullscreen (the default) the output follows your desktop resolution, so window size is advisory there. - `--mnk_mode` — keyboard + mouse input. `--input_backend=xinput` — force XInput pads. ### Launching at higher resolutions Run from the repo root. Borderless fullscreen (the default) outputs at your **desktop resolution**; use a window for exact pixels. ``` :: 2K (1440p) window build\u3-ninja-release\u3.exe --game_data_root=game --no-fullscreen --window_width=2560 --window_height=1440 :: 4K (2160p) window build\u3-ninja-release\u3.exe --game_data_root=game --no-fullscreen --window_width=3840 --window_height=2160 :: Fullscreen (output follows your desktop resolution) build\u3-ninja-release\u3.exe --game_data_root=game --fullscreen :: Sharper: also supersample the internal render (2x), at real GPU cost build\u3-ninja-release\u3.exe --game_data_root=game --no-fullscreen --window_width=2560 --window_height=1440 --draw_resolution_scale_x=2 --draw_resolution_scale_y=2 ``` FSR upscaling + CAS sharpening (`--present_fsr_quality_mode=quality --present_cas_additional_sharpness=0.5`) exists but is **off by default and GPU-expensive** — a higher render scale already looks sharp. See [docs/development.md](docs/development.md) for the full cvar list. ## Current Status Game is fully playable with working offline multiplayer with connected controllers. Online multiplayer is a work in progress. ### Known Issues Create a fighter and custom assets do not load properly and this is being tracked as a bug. Tutorials don't load fighters properly and instead show placeholder assets. ## Required ReXGlue Fork The `tools/rexglue-sdk` submodule is the minimal `u3-compat` ReXGlue SDK fork, which carries only the two runtime fixes the playable build requires: - **60 FPS live-match fix** — high-resolution Windows short sleeps for `WAIT_REG_MEM` wait packets (replaces coarse `Sleep()` granularity for sub-20 ms waits). - **Game saves** — offline Xbox 360 profile/content/save support backed by a local user-data root. Nothing else is in the public fork. ## Legal / Repo Hygiene Keep this repo free of game assets and generated game-derived code. See [docs/legal.md](docs/legal.md).