TimeSplitters 2 Recomp

TimeSplitters 2 Native PC Port is a native PC port of TimeSplitters 2 for Windows, Linux, and Steam Deck with 60 FPS and up to 4K resolution.

README

TimeSplitters 2, native PC port: Linux and Steam Deck (Windows in progress), 60 FPS, 16:9, up to 4K, online multiplayer

TimeSplitters 2 — Native PC Port

The PS2 classic, recompiled into a real PC game — no emulator. Linux and Steam Deck now, Windows next.
60 FPS, true 16:9, up to 4K, mouse and keyboard, split-screen, and the online multiplayer the PS2 version never got.

Download Windows Linux Steam Deck Online

Listed on PlayPorted

No install Renderer Verified AI-assisted License

Play it · Online · What makes it different · Gallery · Before / after · FAQ · Status · How it works · Docs

Level intros of Chicago, Aztec and the Siberia opening, rendered by the port at 2x internal resolution in 16:9 Level intros (Chicago, Aztec, the Siberia opening) straight from the port: 16:9, 2× internal resolution, no ghosting. Captured from an automated run, every 4th frame.

Tip

Version 1.0 is out for Linux and Steam Deck. New since 0.9: online multiplayer with an in-game server browser and a ts2-server in the package (how it works), mouse and keyboard play (new, not finished), a settings menu in the game's own style (English / Deutsch), F8 video recording at the internal resolution and a F7 free camera for screenshots. On the Steam Deck mouse aiming starts off, so taps on the screen or trackpad never steal the controls.

Windows is in progress. The Windows build runs (60 FPS under Wine, release candidates played on a real PC), but the final package still crashes at start on real hardware, so it is not part of 1.0.0. It follows as soon as that is fixed (status).

Important

Bring your own game. You need your own copy of TimeSplitters 2 (USA, SLUS-203.14). This repository and the releases contain no game code, no game assets and no BIOS. The launcher turns your disc image into your build on your PC.

60 FPS
every frame shown,
16.7 ms each
16:9
real Hor+ widescreen,
HUD in proportion
up to 8×
internal resolution
(4K and above)
16 players
online with server
browser
Linux + Deck
Windows build
in progress
~3 min
from disc image
to playing
Story 10/10 levels · Arcade League · Challenge · MapMaker · co-op split-screen · checked frame by frame against PCSX2

Play it in 3 minutes

Download the package for your system from Releases, extract it, start the launcher and pick your disc image. The launcher checks the disc, extracts it and builds the game once with a progress bar (about 3 minutes on a desktop PC). Then press Play.

Nothing to install: each package brings its own compiler and prebuilt libraries, and only the code generated from your disc is compiled on your PC.

🪟 Windows 10 / 11 (in progress)🐧 Linux🎮 Steam Deck

Not released yet. The Windows build works under Wine and release candidates ran on a real PC, but the final package crashes at start on real hardware. It will be added to the release once that is fixed.

Status and what was found so far

  1. Download …-linux-x86_64.tar.xz, extract it
  2. Run ./TS2-Recomp.sh
  3. Pick your ISO, wait, Play

Needs only python3; runs on any current distribution.

  1. Set it up in Desktop Mode with the Linux package
  2. Add TS2-SteamDeck.sh to Steam
  3. Play in Game Mode

Deck detected automatically, tuned for a steady 60 FPS. Step by step

In the game: ESC / F1 / Guide = settings menu and server browser · F7 = free camera · F8 = record video · F9 = FPS · F10 = turbo · F11 or Alt+Enter = fullscreen · F12 = screenshot

Mouse and keyboard: click into the game to capture the mouse (ESC releases it). Mouse look with the game's own aim-mode crosshair (pinned to the centre, shots land on it), left = fire, right = zoom (hold), middle/Q = secondary fire, E/Space = use, R = reload, C = crouch, wheel = weapon, WASD = move. Every key and mouse button can be rebound in the settings menu while playing; sensitivity, zoom sensitivity and invert are there too. On the Steam Deck mouse aiming is off by default, and on every system touching the gamepad hands control straight back to it. Mouse play is new and not finished yet (aim-mode walking speed, vehicles): what is done and what is open.

Online multiplayer

Note

New in 1.0. Tested on a LAN so far; the first matches over the internet are what the community list is for – add your server with a pull request to server/servers.txt.

The PS2 game had LAN play through the Network Adapter; online play was cut before release. This port brings it online. Everyone on the same ts2-server meets in Arcade → Network as if on one LAN, with all modes, all maps and up to 16 players.

First online match: the joining game finds the server, both players in the lobby, Deathmatch on Mexican Mission from both sides

  • In-game server browser in the style of the classic PC shooters: server list, players, ping, password, favourites, direct address. It opens by itself at Arcade → Network.
  • Host your own server with one command: ./ts2-server --name "My server". It is included in the package and is a single C++ file without dependencies (it also builds on Windows with MSVC). How to host
  • One server for every platform: Linux and Steam Deck players meet on the same ts2-server; the Windows version will join the same servers.
  • Nothing in the game is changed: you use the original menus, Start Game to host and Join Game to join.
  • Your IP stays private: players only ever talk to the server, never to each other. The server is a dumb relay with rate limits and connection caps, and ships with a hardened systemd unit. Security model

Roadmap and technical details: ONLINE

What makes it different

Native, not emulatedThe game's MIPS code is recompiled into C++ and compiled for your CPU. No CPU emulation at runtime; only graphics and sound come from PCSX2's GS and SPU2.
Online the PS2 never hadThe original LAN mode, carried over the internet by a small relay server, with a real server browser.
One clickSame game on Linux and Steam Deck (Windows in progress). The launcher does everything; you only bring the disc.
Better than the original, faithful where it counts60 FPS, real 16:9 instead of stretching, 1×–8× resolution, optional fixes (frame blending off, no letterbox). Everything else behaves like the PS2.
Checked against PCSX2Every fix is measured against the emulator (savestates, screenshots, register logs) before it lands. VERIFICATION
Open and legalGPL-3.0, no game data in the repository, every bug and fix documented. FINDINGS

Features

Picture

  • Real 16:9 (Hor+), HUD and menus kept in 4:3 proportion
  • Internal resolution 1×–8×, anisotropic filtering, FXAA, AMD CAS
  • Original frame blending ("ghosting" when turning) switchable, off by default
  • Cutscenes without letterbox bars (switchable)
  • PCSX2 texture packs from texturpakete/

Play

  • Locked 60 FPS in game, menus and split-screen
  • Split-screen for 2 players; a third gamepad turns on the multitap
  • Online play with server browser, up to 16 players
  • Modern gamepads (SDL3), rumble, pressure buttons
  • Mouse look with the original aim-mode crosshair, free key/mouse binding in the menu (new, not finished)
  • In-game settings menu, memory card saves, built-in hang report

Gallery

Siberia gameplay recorded with F8Aztec Ruins level intro
Online Deathmatch on Mexican MissionStory co-op split-screen: both players in the tunnel
Chicago level introAztec Ruins: the time crystal
Story, Siberia: sniper rifle at the camp fenceArcade: close combat in the tomb
Level intro: the wall of Oblask DamCharacter select at 16:9
All pictures straight from the port on the author's own disc: no AI upscaling, no texture pack. The two clips were recorded with the built-in F8 capture.

Before / after

The same frame at the PS2's output resolution and at 4x internal resolution, with a moving divider

▶ Open the interactive slider – drag between the PS2 picture and the port, for resolution and for 4:3 vs 16:9.

Same frame of the same input replay: original 4:3 (left) vs real 16:9 (right)

Same frame of the same input replay: original 4:3 (left), real 16:9 with more of the scene (right). All shots from the port's renderer on the author's own disc, no AI upscaling, no texture pack.

FAQ

Do I need PCSX2 installed?No. The package brings the small GS/SPU2 bridge it needs. Nothing else is installed on your system.
Which disc works?The USA release, SLUS-203.14, as an .iso dump of your own disc. PAL and Japanese discs are different builds and will not work (yet).
Is it an emulator with extra steps?No. The game's CPU code is translated to C++ once and compiled for your PC. At runtime there is no MIPS interpreter or JIT, only the GS/SPU2 (graphics and sound) from PCSX2. That is why it holds 60 FPS on a Steam Deck.
Why does it compile on my PC?Because the translated game code is derived from your disc and must not be distributed. Your PC turns your disc into your build, once, with the compiler that ships in the package.
Controller, mouse or both?Both, at the same time. Gamepads through SDL3 (any modern pad, rumble, pressure buttons), mouse look with the game's own crosshair, all keys and buttons rebindable in the menu. Mouse play is the newest part and not finished.
Can I play with friends?With 1.0: online through a ts2-server (host your own in one command, up to 16 players), or split-screen on one PC today.
Does it change how the game plays?No. The PS2 game logic runs unchanged; the visible differences (60 FPS, 16:9, no ghosting, no letterbox) are switchable, and the Easy/Normal/Hard quirks of the original are all still there.

Status

Project status per area

✅ Already theretitle, profiles, Story (all 10 levels load and play, Siberia played through), Story co-op, Arcade League, Challenge, MapMaker, options, bonus trailer, memory card, sound
🆕 New in 1.0online multiplayer with in-game server browser · ts2-server in the package · mouse and keyboard play · TS2-style settings menu (EN/DE) · F8 video recording · F7 free camera
🟡 Being testedmouse play beyond Siberia/Arcade (open points), Story levels 2–10 by hand (automated runs are clean), Arcade Custom, 3–4 players via multitap, online over the internet
🛠 Coming in updatesWindows release (start crash on real hardware) · softer snow haze at high resolutions · mouse polish (aim-mode walking speed, vehicles) · HUD anchored to the 16:9 edges · dedicated server that runs matches without a hosting player

Every build: CHANGELOG · open issues: KNOWN_ISSUES · found a bug? Open an issue and attach build/spielen.log.

Which TimeSplitters 2 port is this? As far as we know the only active recompilation of the PS2 version, checked frame by frame against PCSX2. split2-recomp recompiles the Xbox version instead; both are worth a look.

How it was built

  1. PCSX2 is the reference, always. Every scene is first run in PCSX2 with a scripted virtual gamepad; savestates at fixed frames give the "truth" for RAM, GS registers and pictures.
  2. The port replays the same inputs headless and dumps the same things. A difference is a bug; the diff says where.
  3. Fixes go into the recompiler or the runtime, not into the game. The game's own code stays as it came off the disc; every finding is written down (FINDINGS), from FPU rounding to a frozen COP0 counter that kept the network code silent.
  4. Every build is numbered and tested (pc001 … pc118): 60 FPS check, all ten story levels, split-screen, package setup as a fresh user on Linux, the whole Windows chain under Wine, and CI jobs on real Windows.
  5. Tools were built along the way: input record/replay, RAM-diff search (that is how the camera and player position for mouse look were found), write watches with native backtraces, a hang reporter, frame capture.

A human maintainer sets direction and play-tests on real hardware; an AI coding agent (Claude) does most of the reverse engineering, implementation and measurement. See AI disclosure and VERIFICATION.

How it works

flowchart LR
    ISO["your disc image"] --> E["SLUS_203.14"]
    E --> R["PS2Recomp fork<br/>R5900 → C++"]
    E --> V["VU1 microcode → C++/SSE"]
    R --> B["native executable"]
    V --> B
    RT["runtime: kernel · IOP · DMA/VIF/GIF · timing · network"] --> B
    B -->|GIF · SPU2| GS["PCSX2 GS (Vulkan) + SPU2"]
    B -->|virtual LAN| S["ts2-server"]

No CPU emulation at runtime: the game's MIPS code becomes C++ and is compiled for your PC. Only graphics (GS) and sound (SPU2) come from PCSX2, through a small bridge library. The PS2 network adapter is emulated and connected to a ts2-server, so the game's own LAN code plays online.

Documentation

ONLINEonline multiplayer: how it works, roadmap · host a server
MOUSEmouse and keyboard play: how it is done, what is still open
STEAM_DECKsetup and Game Mode on the Deck
WINDOWS_PORThow the Windows build works and how it was tested
BUILDINGhow the game is built on your PC, all settings
CHANGELOGevery build and release
FINDINGSevery bug found against the reference and how it was fixed
PERFORMANCEframe-rate measurements and optimisations
VERIFICATIONhow changes are checked
KNOWN_ISSUESopen issues

Legal

  • Tooling and runtime under GPL-3.0 (a fork of PS2Recomp), plus a patch and bridge for PCSX2 under PCSX2's license.
  • No code, data, textures, text, audio or BIOS from the game or from Sony. Translations of the game's code are produced locally from your own disc and never committed.
  • You must own the game and dump your own disc. Do not share dumps or generated code.
  • TimeSplitters is a trademark of its respective owners. This project is not affiliated with or endorsed by them.

Credits

PS2Recomp (recompiler and runtime base) · PCSX2 (GS/SPU2 and the hardware reference) · ps2autotests · ps2sdk and the PS2 homebrew community · methods from the author's Shadow of the Colossus port.

AI disclosure

Built by a human maintainer together with Claude (Anthropic) working as a coding agent. The maintainer sets direction, owns the hardware and play-testing and makes the decisions; the agent did most of the reverse engineering, implementation, measurement and documentation. Every change is checked against the reference before it lands.

Support

The port is free and stays free. If you want to say thanks anyway: ☕ ko-fi.com/destinity13