Project PyrrhusKillzone 2: Unofficial PC Port (static recompilation)

A native Windows x64 port of the 2009 PS3 game, made by static recompilation: the game's PowerPC and SPU code is translated to C ahead of time and compiled into a PC program; graphics go through Direct3D 12. No emulator runs at play time.

Status: Partly playable

You need your own copy of the game. This project ships no game code, data, assets or keys.

See the statusSource on GitHub

Status: Partly playable

generated from the project's records · 18 game features · 18 port rows

The same data as FEATURES.md, where every row has its evidence. Works is claimed only with a recorded result.

  • PPU lift of the EBOOTstatic recompilation of all PPU code
    Works
  • Boots under Proton to the first screenloader, PPU start, SPURS, GCM init, first flip
    Works
  • Title screen and main menulanguage select, main menu, New Campaign and difficulty
    Partial
  • Mission 1 loads and runs
    Partial
  • In-level play (move, aim, fire, cover)gamepad
    Partial
  • Full campaign start to finishall missions, checkpoints, cutscenes
    Not yet

The PS3 game, feature by feature

  • Works0
  • Partial11
  • In progress2
  • Not yet5
Campaign
FeatureOn the PS3In the port
Intro movies and cutscene videos28 H.264 720p AVIs with AC-3 5.1 (FFmpeg, LGPL DLLs): the intro movie plays with pictures and clean sound; its 5.1 track is mixed down to stereo (see Surround sound); the other movies are not yet checkedPartial
Title screen and main menulanguage select, main menu, New Campaign and difficultyPartial
Mission 1 loads and runsPartial
In-level play (move, aim, fire, cover)gamepadPartial
Full campaign start to finishall missions, checkpoints, cutscenesNot yet
SIXAXIS motion sectionsvalve wheels, chargesIn progress
Checkpoint save and loadcellSaveDataUserAutoSave/AutoLoadPartial
Pause menuin-level pause screenPartial
Mission Select and difficultymission list with picture, collectibles, difficultyPartial
Full frame rate (30 fps in levels)the PS3 holds about 30 frames per secondIn progress
Audio
FeatureOn the PS3In the port
Sound and musiccellAudio, XVAG sound banksPartial
Surround sound (5.1 / 7.1 output)the PS3 outputs 5.1 and 7.1; the port mixes everything down to stereo (cellAudio opens a 2-channel Windows output and folds the 8-channel port into it)Not yet
Options
FeatureOn the PS3In the port
Settings and controls menusPartial
Multiplayer
FeatureOn the PS3In the port
Skirmish (offline bots)Not yet
Online Warzoneself-hosted only (the project's online rules)Not yet
Other
FeatureOn the PS3In the port
TrophiesNot yet
Debug menu as a test aidTEST MENU (chapter/level/section/weapon select), pause-menu god/ammoPartial
Language selection and subtitleslanguage page, briefing subtitlesPartial

Port work and additions

5 works, 9 partial, 4 in progress, 0 not yet. Changes to how the game plays stay optional.

All port rows
FeatureWhatState
Patched ps3recomp toolkitv0.18.0 + Project Helghast's (the Killzone 3 port's) general patch set + KZ2's ownWorks
PPU lift of the EBOOTstatic recompilation of all PPU codeWorks
Windows buildMinGW x64 exe, memory-capped buildWorks
Update 1.29 EBOOT as the targetport the latest updateWorks
Boots under Proton to the first screenloader, PPU start, SPURS, GCM init, first flipWorks
SPU jobs and SPURS23 SPU ELFs + 36 job modulesIn progress
RSX renderer (D3D12)deferred renderer, 1280x720 2x MSAAPartial
Game data access (PSARC, case-duplicate trees)data_ps3.psarc v1.3, 3,444 unique names; 1.29 added_data + patch_dataPartial
.core resources (RTTIBin<1.58>)core.py decodes KZ2's resourcesPartial
Saves (PROFILE/CHECKPNT/SECTION.DAT)map and stage the game's save filesPartial
Front-end page engine (SVML menus)the game's kin/*.jsp pages from the psarc (interface/svo/svml/<lang>/kin), drawn by the SVO browserPartial
Gyro stand-in for SIXAXISENHANCEMENT: stick or mouseIn progress
Display modesENHANCEMENT: windowed, borderless, exclusive fullscreen, Alt+Enter, display.iniIn progress
Gamepads: PlayStation and XboxENHANCEMENT: pads through SDL3: DualShock 4 tried by hand, with its motion sensor; Xbox and DualSense pads in code onlyPartial
Button prompt choice and pad layoutsENHANCEMENT: PS3, PS4/PS5, Xbox or keyboard prompt symbols; Original or Modern button layoutPartial
Movie playback through FFmpegENHANCEMENT: movies decoded by FFmpeg LGPL decoders in separate DLLsPartial
Reuse an existing RPCS3 installENHANCEMENT: the setup can find an RPCS3 install and reuse its game files, with an optional, separate save copyIn progress
Launcher and window controlsENHANCEMENT: launcher (pad layout, display), window close shuts down cleanlyPartial

Every feature, with evidence

v0.1.2

28 Oct 2026 · pre-release

  • AddedA decrypted disc image (.iso) can be picked instead of a dump folder ("Browse for ISO file" in the setup, or the path in the console). The first run checks the disc inside it, then copies its game files (about 7 GB) into the install folder once; the ISO itself is only read. An encrypted ISO is refused with "this ISO is encrypted; use a decrypted dump".
  • AddedThe setup reads the disc's title id and shows what it found under the folder ("Found: BCUS98116 (Killzone 2, US disc)"). Another game is refused by its title id and name. The Killzone Trilogy disc, whose Killzone 2 is the same title id, is named and allowed as untested.
  • AddedThe game window shows the project's icon in its title bar and taskbar.
  • ChangedPicking the PS3_GAME or PS3_GAME/USRDIR folder of the dump, or the USRDIR folder of the update, works: the setup and the first run use the folder above.
  • ChangedWhen the first start asks for the decrypted EBOOT, a folder is accepted too: it looks for EBOOT.elf in it and in its USRDIR folder, and says where it looked when it is not there. The setup's EBOOT page does the same.
  • ChangedThe update must carry the same title id as the disc; the setup and the first-run check say so when it does not.
  • FixedThe folder hints of the setup and the first-run check offer only Killzone 2 dumps (other games' dumps on a drive are not named) and name up to three .iso files in the folder (or one level down on a drive) beside the folder hints. When no more input comes (a closed console), the first-run check stops with its FAIL lines instead of asking again. The same fixes as Project Helghast PR #17.
  • FixedInstalling into a OneDrive folder is refused, as a precaution taken from a problem reported on Project Helghast: OneDrive synced the build's thousands of files while they were written and locked them. The first-run check also stops when the install or build folder is inside OneDrive (O1), or when a game file is only online in OneDrive (O2, before anything is read, so nothing is downloaded); right-click the game folders and choose "Always keep on this device".
  • FixedWhen the first-run console window is closed with its X, the launcher says so ("its window was closed before it finished; finished steps are kept") instead of showing an error code. It names the first-run log only when the log exists.
  • FixedWhen the setup or the first run stops, the setup's message box, the launcher's dialog and the portable zip's console say why (the same reason the log has). The next start checks your files first and asks again only for the one that was wrong. The setup's EBOOT page refuses the disc's 1.01 EBOOT and names the update's USRDIR folder, where the 1.29 one is; a silent install with /EBOOT= stops with the same text. Adapted from Project Helghast's fix for the same mix-up (its PR #11).
  • FixedWhen a check of your game files fails, the setup's message box, the launcher's dialog and the console say which input failed ("Disc dump", "1.29 update" or "EBOOT"), the path, what is there and what it must hold, and which inputs passed. A disc dump and an update given the wrong way round are named as such, a drive picked instead of a folder gets a pointer to the folders on it that look like the disc or the update, and the disc's PS3_GAME folder given as the update fails its check. Adapted from Project Helghast's fix for the same mix-ups (its PR #14).
  • FixedThe setup's disc page says what a folder without PS3_GAME holds and where PS3_GAME is when it is one folder down; the update page names the path and the missing files, or says the folder is a disc dump.
  • FixedWith a decrypted ISO as the disc, the first-run check could not load its ISO reader under the bundled Python, which does not look in the check's own folder; it now does.
  • FixedGetting your files ready lists what each input must contain, says that the update does not hold the disc archive, and warns against picking a drive instead of the dump folder or the .iso file.
  • FixedUninstalling removes the whole install folder: the first-run logs and their earlier copies no longer keep it behind.
  • Fixed"Verify and rebuild" counts only the files it checked.
  • FixedThe game window's messages (input and window events) are now handled on every frame tick, the same fix as Project Helghast 0.1.4. In our tests a 3.7-second stretch with no messages handled, during a busy catch-up, is gone.
  • FixedThe game's disk cache is rebuilt once when the installed build changes, so the first start after an update loads a little slower. This is a precaution taken from Project Helghast 0.1.4, where a cache left by an older build ended a level with error 20000; it has not been seen on Killzone 2.
  • FixedFiles the game opens to create or append to are now opened the way the console does (the toolkit read three of the open flags with the wrong values). In our tests no visible change yet: the opens seen at start are read-only.
  • FixedThe game window keeps responding while the game builds its graphics pipelines on the first start of a level, which can take several seconds with an empty shader cache: the window now has its own thread, so Windows no longer marks it as not responding. In our tests the longest stretch without an answer went from 7.9 s to 0.05 s; the first start of a level is still slower than later ones.

Release page

v0.1.1

28 Oct 2026 · pre-release

  • AddedA disc dump copied to a FAT32 drive, where the game archive is split into parts (data_ps3.psarc.66600, .66601, and so on), is accepted as it is by the setup, the first-run check and the game. A missing part is named.
  • AddedThe first run checks the disc's game archive against the known copy (check A1) and says when it differs.
  • AddedThe launcher log starts each run with a version line, so a shared log says which version made it.
  • AddedA new page, docs/GETTING-FILES.md, shows what the disc dump, the 1.29 update and the EBOOT must contain and what every first-run check means.
  • ChangedThe game folders are given once: when the build is started later or a check fails, the first start checks the folders from the setup instead of asking for them again.
  • ChangedWhen an upgrade changes the tables the game's code is translated with, the first start translates and builds the game again instead of reusing the old build.
  • ChangedThe help for using an RPCS3 install points to RPCS3's own documentation.
  • FixedInstalled files carry the right time on PCs in time zones west of UTC (the Americas), so the first build does not loop on files dated in the future ("build.ninja still dirty after 100 tries"). The first run stops with a plain message if it finds such files.

Release page

v0.1.0

28 Oct 2026 · tagged, not released

The tag v0.1.0 marks the first build of the Windows installer and portable zip. It was never published as a release: the fixes listed above came first, and the first published release is the next version.

The whole changelog

About the port

how it works

The port is built on ps3recomp (MIT): the PPU code and the game's SPU programs are lifted to C, the PS3 system libraries the game calls are reimplemented, and the game's RSX command stream is replayed on Direct3D 12. The game's archive is read in place from your dump. It is tested on Windows x64 under Proton.

It follows Project Helghast, the same method applied to Killzone 3, and reuses its general runtime work. More in the README.

Changelog

  • 0.1.2 A decrypted disc image (.iso) can be picked instead of a dump folder ("Browse for ISO file" in the setup, or the path...
  • 0.1.2 The setup reads the disc's title id and shows what it found under the folder ("Found: BCUS98116 (Killzone 2, US...
  • 0.1.2 The game window shows the project's icon in its title bar and taskbar.
  • 0.1.2 Picking the PS3_GAME or PS3_GAME/USRDIR folder of the dump, or the USRDIR folder of the update, works: the setup and...
  • 0.1.2 When the first start asks for the decrypted EBOOT, a folder is accepted too: it looks for EBOOT.elf in it and in its...
  • 0.1.2 The update must carry the same title id as the disc; the setup and the first-run check say so when it does not.
  • 0.1.2 The folder hints of the setup and the first-run check offer only Killzone 2 dumps (other games' dumps on a drive are...
  • 0.1.2 Installing into a OneDrive folder is refused, as a precaution taken from a problem reported on Project Helghast...

Newest first; the full list: CHANGELOG.md.

Objectives

  • Full campaign start to finish (not yet)
  • Surround sound (5.1 / 7.1 output) (not yet)
  • Skirmish (offline bots) (not yet)
  • Online Warzone (not yet)
  • Trophies (not yet)

The next game features still open; all of them: FEATURES.md.