Project VektaKillzone HD: Unofficial PC Port (static recompilation)

A native Linux and Windows x64 port of the 2011 PS3 remaster of the first Killzone, made by static recompilation: the game's PowerPC and SPU code is translated to C++ ahead of time and compiled into a PC program on your machine; graphics go through Vulkan. 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 · checked 2026-10-30 · 19 game features · 23 PC features

The same data as FEATURES.md, where every row has its evidence. Works is claimed only with a recorded result, on the maintainer's machine (Linux x64, RTX 3070 Ti) unless a row says otherwise.

  • Boot and menusevery run since 2026-10-14
    Works
  • Level 1played by hand from start to end
    Works
  • Levels 2 to 11all load and reach gameplay; not each played to its end
    Partial
  • Movies30 movies; runs without FFmpeg skip them
    Works
  • SavesContinue returns to the checkpoint; a checkpoint save checked end to end is still to do
    Works
  • Soundthe firmware's MP3 decoder runs translated
    Works
  • Trophiesunlocked and logged locally with names, grades and platinum; no on-screen notice
    Partial
  • Linux buildbuilt and played on the maintainer's machine; BUILDING.md
    Works
  • Windowsruns under Wine, Proton and on Windows; the campaign not checked there
    Partial
  • Frame ratea steady 60 fps by default; the 144 Hz mode at about 131 to 134 fps
    Works
  • Installertools/install.sh on Linux; on Windows a release folder (tools/release/assemble_payload.py, run.cmd) builds with the bundled toolchain, and a setup program installs it; both are built and published from the next release on
    Partial

The PS3 game, feature by feature

  • Works14
  • Partial3
  • Not yet1
  • Not applicable1
Boot and menus
FeatureOn the PS3In the portState
Logos, opening movie, front end, options, pause menuas shippedWorks
Campaign
FeatureOn the PS3In the portState
Level 1first levelWorks
Levels 2 to 11the rest of the campaignall load and reach gameplay; not each played to its endPartial
Cutscene and level moviesAVI movies through cellSail(FFmpeg)Works
Game logic timing30 Hzat 30 and 60 Hz; 144 Hz with one known problem (KNOWN_ISSUES.md)Works
Saves
FeatureOn the PS3In the portState
Profile, checkpoints, Continueone profile saveContinue returns to the checkpoint; a checkpoint save checked end to end is still to doWorks
Controls
FeatureOn the PS3In the portState
DualShock 3 layoutpadwith any SDL controllerWorks
Rumblepad vibrationWorks
Controller options (sensitivity, invert)Pause > ControlsWorks
Graphics
FeatureOn the PS3In the portState
1280x720 picture720pat any window sizeWorks
Anti-aliasing (MLAA on the SPUs)jm_post job chainthe game's own MLAA reimplemented as a GPU pass, equal to the SPU code except at about 0.6 % of edge pixels (KZ_MLAA=gpu, default; spu runs the original jobs, slowly; off)Works
Glow and motion blur (jm_post)event-driven SPU jobszero in normal play; only the slow KZ_MLAA=spu path computes themPartial
HUD, menus, fontsas shippedWorks
Sound
FeatureOn the PS3In the portState
Music, effects, dialogueMultiStream on the SPUs, MP3 streamsWorks
Surroundthe console's output settingstereo, 5.1, 7.1Works
Languages
FeatureOn the PS3In the portState
Voice, subtitles, menusEnglish, French, Spanish (by console language)chosen on the PC pageWorks
Trophies
FeatureOn the PS3In the portState
Trophy unlocksPSN trophiesunlocked and logged locally with names, grades and platinum; no on-screen noticePartial
Multiplayer
FeatureOn the PS3In the portState
"One / Two Player" in the menulocalcheckedNot yet
Online
FeatureOn the PS3In the portState
PSNsign-in, trophies syncNot applicable

What the port adds

23 PC features available now, on a PC page inside the game's own Options and Pause menus. Changes to how the game plays stay optional.

All 23 PC features
FeatureDefaultWhere it is set
Display mode: window, borderless, fullscreen; Alt+Enterwindowdisplay; KZ_FULLSCREEN=1 in tools/play.sh
Output resolution and refresh rate1280x720, the monitor's rateresolution, refresh; resizable window, aspect kept
Internal resolution scale, 50 % to 200 %100 %scale; applies on the next start
V-Sync on, off, adaptive; VRRonvsync
NVIDIA Reflex: off, on, on + boost (VK_NV_low_latency2)offreflex; "not available" without the extension; no measured fps or latency change in Level 7
Frame-rate limit 30, 60, 144 (the game clock follows)60fps_limit; 30 is the PS3's
AMD FSR 1 upscaling and RCAS sharpeningbilinearupscaler, sharpness
Anisotropic filtering: the game's own, off, 2x to 16xthe game'sanisotropic
Widescreen Hor+ (21:9, 32:9 and wider), menus and movies kept 16:9onwidescreen
Field of view, 40 to 90 degrees vertical (the game's is 56.25)the game'sfov; zoom and the first-person weapon keep the game's framing
HUD size and positionthe game'shud_size, hud_position
Presets: Original (PS3), Performance, Balanced, QualityCustom when nothing matches
Keyboard and mouse: direct mouse look with its own sensitivity and invert, mouse in menus and dialogsonmouse_yaw, mouse_pitch, mouse_invert; keys in kz1hd_keys.ini (written on the first run; edit to remap)
Controllers through SDL, with keyboard and mouse at the same timemergedcontrollers; PAD_MOUSE_STICK=1 puts the mouse on the right stick instead
Button prompts and the Controls picture follow the device (keyboard and mouse, Xbox, PlayStation, Nintendo)auto
Sound output: stereo, 5.1, 7.1stereospeakers
Language: system, English (US, UK), French, Spanishsystemlanguage
Skip the opening movie (the logos stay)offintro = off, KZ_SKIP_INTRO=1
Statistics overlay (MangoHUD, Linux)offoverlay = mangohud, KZ_MANGOHUD=1
Quit Game in the Options sub-menu; closing the window waits for a save in progresson
The game's own Debug Options in the pause menu (God Mode, Next Level, ...)offKZ_DEBUG_MENU=1
All 11 levels selectable in the campaign menuoffKZ_UNLOCK_LEVELS=1
Local trophy log from the game's own trophy setonneeds TROPDIR in the run folder (tools/setup-vfs.sh)
The port itself
FeatureNotesState
Linux x64 buildWorks
Windows x64 exe (cross-built on Linux)runs under Wine, Proton and on Windows; the campaign not checked therePartial
Frame ratea steady 60 fps by default; the 144 Hz mode at about 131 to 134 fpsWorks
Installer that builds the port on the player's PCtools/install.sh on Linux; on Windows a release folder (tools/release/assemble_payload.py, run.cmd) builds with the bundled toolchain, and a setup program installs it; both are built and published from the next release onPartial

Every feature, with evidence

Unreleased

not released yet

  • AddedThe Windows setup program asks for your files on pages of its own (the game folder, the decrypted EBOOT, archive and libsre, and dev_flash for the music), checks their kind and size before copying anything, and builds the port in the wizard with a progress bar and a Stop button; when the build stops it says why and opens the log. Silent installs take the files as switches (/GAME= and the others). After Project Helghast's and Project Pyrrhus's setup programs (MIT). release.yml installs it on the Windows runner with stand-ins for the files (tools/release/fake_game_files.py) and checks that the build runs and stops at the check.
  • AddedStart menu entries "Verify and rebuild" (checks the installed files, then your game files, and rebuilds what changed), "Open saves folder" and "Make a support package" (a zip of the logs and settings for a bug report, without your user name, saves or game files). After Project Helghast's (MIT).
  • AddedThe setup refuses install folders the build cannot use ([ ] ; in the path, OneDrive, system and profile folders), also for silent installs. Installing over an earlier version replaces the payload's folders whole, so nothing stale is left, and keeps the build, the game folder and the saves. The uninstaller asks whether to delete the saves and settings (default No).
  • AddedThe setup program is dark, with side and header images for every screen scale and its own setup and uninstall icons (tools/release/installer_art.py).
  • AddedThe Linux release folder (tools/release/assemble_payload.py --platform linux --tar): the port's sources, the patched ps3recomp and a pinned toolchain (Zig 0.17.0 as the C and C++ compiler, CMake, Ninja, SDL2, zlib, glslang, the Vulkan headers and FFmpeg 9's libraries), so a player needs only the usual desktop libraries (Python 3.10 or newer, glibc 2.31 or newer, SDL2, a Vulkan driver). run.sh asks for your files and builds there, play.sh starts the game. The binaries target glibc 2.31 (port/cmake/zig-linux.cmake, tools/release/zig/, tools/release/build_linux_deps.py); KZ_LINUX_TOOLCHAIN=pinned selects that toolchain in a source checkout too.
  • AddedReleases after 0.2.0 carry that folder as project-vekta-X.Y.Z-linux.tar.gz: .github/workflows/release.yml builds it and checks it in a Debian 11 container with no compiler (tools/release/check_linux_folder.sh).
  • ChangedA copy the setup program installed keeps its saves and settings in %APPDATA%\Project Vekta, so a new install or an uninstall leaves them alone; the setup's "Portable" option keeps them in the install folder instead. Saves an earlier version left in the install folder move there on the next start.
  • FixedThe Linux folder's build no longer stops at the compile step with "unknown CPU: 'x86'": its Zig wrappers spell the port's -march=x86-64-v3 the way Zig names CPUs (x86_64_v3).
  • FixedThe Linux folder's link no longer fails on mallinfo2 (glibc 2.33; the folder targets 2.31): the stats line's heap count looks it up at run time and falls back to mallinfo.
  • FixedThe limit of flips the game may queue ahead of the screen (PS3_GCM_MAX_QUEUED_FLIPS, default 2) no longer drifts: each flip done at once, instead of queued in the command buffer, loosened it by one for good (patch 2040). The queued value in the [kz-stats] lines stays at the real count.
  • FixedWindows: a controller that was detected but gave no input (seen on a OneXPlayer X2 Mini Pro's built-in Xbox-style pad, issue #19) works without setting SDL_JOYSTICK_RAWINPUT=0 by hand: the port turns SDL's Raw Input joystick driver off (patch 4012). Setting SDL_JOYSTICK_RAWINPUT=1 brings it back.
  • FixedGitHub shows the licence as MIT again (it read "Other", issue #27): LICENSE holds the MIT text alone, and the note that it covers only the port, not the game, moved to NOTICE.md and the README. Same terms as before.

0.2.0

1 Nov 2026 · pre-release

  • AddedThe Windows release folder (tools/release/assemble_payload.py): the port's sources, the patched ps3recomp and the pinned Windows toolchain, with no Git or MSYS needed. run.cmd asks for your files and builds KZ1HD.exe there, and play.cmd starts it (tools/release/launch.py).
  • AddedThe Windows setup program (installer/vekta.iss, Inno Setup, per-user install) and the launcher Project Vekta.exe with the project's icon, which builds on its first start and then plays (tools/release/build_launcher.py, build_setup.py).
  • AddedReleases carry the Windows setup program and the Windows folder as a zip beside the source archive, each with a .sha256. .github/workflows/release.yml builds both from the tag: the folder on Linux, the setup program on Windows, where it is also installed, checked against the folder's manifest.json and uninstalled (tools/release/check_install.py); tools/release/release_check.py checks the five files.
  • AddedThe build steps are one Python tool, tools/kzbuild.py (patch, lift, vfs, build), so the same code builds on Windows with the pinned toolchain; tools/ps3recomp-patched.sh, tools/lift.sh, tools/setup-vfs.sh, tools/build.sh and tools/build-win.sh run it and their output is unchanged. Where links cannot be made the game folder gets copies of the EBOOT and the archive.
  • AddedThe Windows build's toolchain is pinned in the repository (tools/release/toolchain.json): llvm-mingw, SDL2, zlib, glslang, the Vulkan headers and FFmpeg 9 (its DLLs go beside the exe for the movies), fetched and checked by SHA-256 (tools/release/fetch_toolchain.py), zlib and glslang built with that compiler (tools/release/build_win_deps.py); tools/build-win.sh uses it, so the cross build needs no MinGW packages (KZ_WIN_TOOLCHAIN=system keeps the old route). The Windows setup program carries the same pins.
  • AddedAn applications-menu entry with the project's own icon (assets/icon.svg): tools/install.sh offers it after a build (firstrun.py --desktop, --remove-desktop).
  • Addedtools/install.sh: one command asks where your files are, checks them, then patches, lifts and builds with one progress bar, and keeps the paths in work/paths.env for every script (tools/release/firstrun.py, after Project Pyrrhus's and Project Helghast's first-run builder); a stopped or failed run resumes at that step.
  • AddedKZ_JOBS sets the lift's and the compile's parallel jobs (the installer picks it from free memory).
  • Fixedtools/play.sh names the missing step when there is no work/vfs or no build yet.

0.1.0

31 Oct 2026 · pre-release

  • AddedThe game's own MLAA anti-aliasing, reimplemented as a GPU compute pass equal to the SPU code (patches 2035 to 2037, KZ_MLAA=gpu|spu|off); the first frame no longer waits for the driver to compile it.
  • AddedNVIDIA Reflex (Off, On, On + Boost) on the PC page, through VK_NV_low_latency2 (patch 2038).
  • AddedIn-game key capture for remapping screens (patch 4011).
  • Addedtools/wine-test.sh runs the Windows build under Wine or Proton for a minute and says whether it held its frame rate; it passed at 144 fps under both on the maintainer's machine.
  • Addedtools/mlaa_harness and tools/mlaa_probe: the lifted MLAA jobs run outside the game, test patterns and checks.
  • AddedReleases: VERSION holds the one version string; tools/release/bump_version.py moves it everywhere and turns this section into the release's entry; a pushed tag builds a reproducible source archive (the tree with ps3recomp at its pinned commit) and opens a draft pre-release with notes from this file and SHA-256 sums (docs/RELEASE-CRITERIA.md).
  • ChangedThe project page is generated whole from the repository (the feature table, the screenshots, this changelog, the requirements and the patch series) and laid out like the Killzone 2 and Killzone 3 ports' pages; docs/FEATURES.md gains a section on the port itself (builds, frame rate, installer).
  • Fixedtools/release/bump_version.py leaves an empty ## [Unreleased] above the entry it releases, and an empty entry is not news on the project page.
  • Fixedtools/ps3recomp-patched.sh also works in an unpacked source archive, where there is no git checkout.
  • FixedAn SPU write into a GPU-mapped range that overlaps one already unmapped is seen as GPU-mapped again (patch 2039), and the SPU poison-write diagnostic works with SPU_POISON_DMA_WATCH (patch 1019); both found by ps3recomp's own tests, which now run on the patched tree in CI (patch 0004).
  • FixedAn SPU that reserves a line while another SPU's plain write to it is being copied now loses the reservation at once, not at the next 10 ms poll (patch 1020).

The whole changelog

About the port

how it works · ps3recomp v0.18.0 · 104 patches

The port is built on ps3recomp (MIT), pinned at v0.18.0 with 104 patches of this project: 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 Vulkan. It builds natively on Linux, and on Linux for Windows; the Windows build is tested under Wine, Proton and on Windows.

It follows Project Helghast and Project Pyrrhus, the same method applied to Killzone 3 and Killzone 2, and reuses their general runtime work. About 65 % of Killzone HD is done, and 43 % of the whole trilogy plan; what comes next: the roadmap.

The technical overview

Changelog

  • Unreleased The Windows setup program asks for your files on pages of its own (the game folder, the decrypted EBOOT, archive and...
  • Unreleased Start menu entries "Verify and rebuild" (checks the installed files, then your game files, and rebuilds what changed)...
  • Unreleased The setup refuses install folders the build cannot use ([ ] ; in the path, OneDrive, system and profile folders), also...
  • Unreleased The setup program is dark, with side and header images for every screen scale and its own setup and uninstall icons...
  • Unreleased The Linux release folder (tools/release/assemble_payload.py --platform linux --tar): the port's sources, the patched...
  • Unreleased Releases after 0.2.0 carry that folder as project-vekta-X.Y.Z-linux.tar.gz: .github/workflows/release.yml builds it...
  • Unreleased A copy the setup program installed keeps its saves and settings in %APPDATA%\Project Vekta, so a new install or an...
  • Unreleased The Linux folder's build no longer stops at the compile step with "unknown CPU: 'x86'": its Zig wrappers spell the...

Newest first; the full list: CHANGELOG.md.

Objectives

  • "One / Two Player" in the menu (not yet)
  • Levels 2 to 11 (partial)
  • Glow and motion blur (jm_post) (partial)
  • Trophy unlocks (partial)
  • Windows x64 exe (cross-built on Linux) (partial)

The next features still open; all of them: FEATURES.md, and the plan: ROADMAP.md.