# Splinter Cell: Double Agent - XBE Recomp
An unofficial native PC port of the original Xbox version of Splinter Cell: Double Agent via static recompilation, built into a 64 bit Windows executable. The game's x86 code is translated to C++ ahead of time, the Xbox kernel, Direct3D and DirectSound calls are implemented on Windows, and everything is drawn with Direct3D 12 and played through XAudio2. Made with the [Xbox XBE Recomp](https://github.com/TGP482/XboxXBE-Recomp) tool, created for this game originally.
> [!NOTE]
> This project does not include any game assets. You must provide the files from your own legally acquired copy of the game to install or build.
## Installation
The latest version of [SCDA-XBERecomp](https://github.com/TGP482/SCDA-XBERecomp/releases) can be found in the Releases page.
- Place your game files in the `assets` folder. This can be an ISO, or the extracted data files.
- Run `SCDA.exe`. The first start compiles the game's code for your PC,this only happens once.
- Recomp Settings can be adjusted in the in-game options menu while the game is running, or through the Settings overlay, which is opened with F10 by default.
## Features
### Display
- **Monitor** - Picks the monitor the game shows on, for Fullscreen and Borderless (and where Windowed opens). Lists every connected monitor by its Windows number and desktop resolution.
- **Display Mode** - Switch between Fullscreen, Borderless and Windowed.
- **Resolution** - Lists every mode your monitor reports and defaults to your desktop resolution, replacing the original 640x480 resolution.
- **Render Resolution** - Renders the game at 20% to 200% of the output resolution, allowing supersampling or downscaling independent of the window size.
- **Field of View** - Sets the horizontal field of view during gameplay from 45 to 140 degrees, with 75 being the game's default. Cutscenes, scopes, gadget views and lock picking keep the original.
- **Max Frame Rate** - Caps the frame rate to your monitor's refresh rate or a custom value, or removes the cap entirely, replacing the Xbox's 30 FPS limiter.
- **V-Sync** - Reduces screen tearing.
- **HDR Output** - Enables HDR10 output on displays with Windows HDR turned on, detected automatically. Highlights extend up to the display's peak brightness.
- **FPS Counter** - Displays the frame rate on screen.
- **FMV Scale** - Choose between Fill, which makes the FMVs fill widescreen displays, and 4:3, which shows them in a 4:3 frame as on the original Xbox.
### Graphics
- **Multisample Antialiasing (MSAA)** - Enables 2x, 4x or 8x MSAA to smooth jagged edges while preserving a sharp image. MSAA does not smooth alpha-tested edges such as fences and foliage.
 |
 |
| Off |
MSAA 8x |
- **Subpixel Morphological Antialiasing (SMAA)** - Enables SMAA to smooth jagged edges across the whole frame with a softer image. SMAA also smooths alpha-tested edges such as fences and foliage, and can be combined with MSAA.
 |
 |
| Off |
SMAA |
- **Anisotropic Filtering** - Forces the selected anisotropic filtering level on all textures.
 |
 |
| Off |
Anisotropic 16x |
- **Shadow Resolution** - Raises the shadow resolution from the Xbox's 512x512 (default) up to 8192x8192.
 |
 |
| 512x512 |
8192x8192 |
- **Shadow Distance** - Increases the distance at which lights and their shadows turn off by up to 8x.
 |
 |
| Shadow Distance 1x |
Shadow Distance 8x |
- **Shadow Filter** - Choose between SM1.1, the Xbox shadow filter (default), and SM3 Soft, the Chaos Theory PC Shader Model 3 soft shadow filter.
- **Ambient Occlusion** - Adds screen space ambient occlusion, creating soft contact shadows where surfaces meet. Choose between SSAO and GTAO.
### Shader Model 3
- **Shader Model** - Choose between Shader Model 1.1, the Xbox look, and Shader Model 3.0, which enables the Chaos Theory PC style features.
 |
 |
| Off |
On |
- **HDR Rendering** - Enables Shader Model 3 HDR rendering.
- **Tone Mapping** - Enables Shader Model 3 tone mapping.
### Input
- **Mouse and Keyboard** - Full keyboard and mouse support with raw input, adjustable sensitivity, inverted look and rebindable controls.
- **Controller** - Controller with SDL3 support, buttons can be rebound from the Controller page. Defaults match the Xbox layout.
 |
 |
| Mouse and Keyboard |
Controller |
### General
- **Skip Intro** - Skips the intro logos.
- **Pause On Focus Loss** - Pauses the game and its sound while the window is in the background or minimized.
- **Co-op Support** - Co-op can be played online by directly connecting to a friend's IP address, over LAN, or in split-screen.
- **Co-op Tick Rate** - Raises the co-op update rate, which is capped at 22 Hz in the original game, up to 142 Hz. Both players must use the same value.
- **Co-op Min Input Delay** - Lowers the minimum input delay in co-op from the original 50 ms down to 0 ms. Both players must use the same value.
### Miscellaneous
- **Boot Splash** - Place a `SplinterCell4Logo.png` (or `.bmp`) beside the exe to display a splash screen at launch.
- **Custom Menu Cursor** - Place a `cursor.png` (or `cursor.dds`) beside the exe to replace the Windows arrow in the game's menus.
## Playing Online
Co-op and Versus can be played online by connecting directly to the host's IP address. No third-party programs are needed.
- Press F10 by default to open the Settings overlay.
- Enter the host's IP address in **Coop Join IP** for Co-op or **Versus Join IP** for Versus.
- From the Co-op or Versus menu, select LAN and join the host's session from the list.
### Hosting a Game Session
As the host, you must port forward the following ports on your router so other players can connect to you:
| Protocol | Port |
|----------|------|
| UDP | 9100 |
| UDP | 1000 |
| UDP | 1010 |
> [!TIP]
> If you're unable to port forward, such as when your connection is behind CGNAT, or would like to keep your IP address private, you can use a virtual LAN service to play together instead.
## System Requirements
### Minimum
- **OS**
- Windows 10 64-bit
- **CPU** with 2 cores and support for SSE4.2 and POPCNT
- Intel Nehalem (Intel Core 1st Generation)
- AMD Bulldozer (AMD FX series)
- **GPU** with support for Direct3D 12
- NVIDIA GeForce GT 630 (Kepler)
- AMD Radeon HD 7750
- Intel HD Graphics 510 (Skylake)
- **Memory**
- 4 GB
- **Storage**
- 6 GB for the game files, the compiled game code, saves and shader cache
## Building
### 1. Clone the Repository
Clone this repository using [Git](https://git-scm.com/).
```
git clone https://github.com/TGP482/SCDoubleAgent-XBERecomp.git
```
### 2. Add the Required Game Files
Place your extracted game data files in the `assets` folder. `default.xbe` and `sc4_adv.xbe` must be there, with the `Default`, `Media` and `adv` folders beside them.
> [!NOTE]
> Building does not support the ISO format, so the files must be extracted. ISOs only work for playing.
### 3. Install Dependencies
Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) and select the following **Workloads** and **Individual components**:
- Desktop development with C++
- C++ Clang tools for Windows
- C++ CMake tools for Windows
> [!TIP]
> `build.bat` offers to install the Clang and CMake components for you if they're missing.
### 4. Build the Project
- Run `build.bat`. The first build recompiles the entire game and can take 30 to 90 minutes on weaker systems.
- When it finishes, run `out\build\release\SCDA.exe`.