Skip to content

About

Perfect Dark Zero [Xbox360] game static recompilation project based on RexGlue-SDK

Topics

Resources

Stars

24 stars

Watchers

2 watching

Forks

Repository files navigation

PerfectDarkZeroRecomp

PerfectDarkZeroRecomp

A static recompilation of Perfect Dark Zero (Xbox 360, 2005, Title ID 4D5307D3) to native PC, built on the ReXGlue SDK. The game's PowerPC code is translated into C++ and compiled. There is no emulator.

This project is not affiliated with Microsoft or Rare. It contains no game files: you need your own legally owned copy of the game.

Status

  • Fully playable on Windows: video, audio, gameplay, achievements and saves.
  • Keyboard and mouse support.
  • Optional patches: 60 FPS (on by default) and 16:9.
  • Third-person camera and language selection, see Mods.

Requirements

  • CMake 3.25+, Ninja, and Clang/LLVM. MSVC alone won't build this.
  • The game's files, extracted from your disc or ISO with ABGX360 or extract-xiso.

Build

  1. Clone the repo with its submodule. The ReXGlue SDK is built from source (thirdparty/rexglue-sdk).

    git clone --recursive https://github.com/nikolaygorb/PerfectDarkZeroRecomp.git
    

    If you already cloned without it, run git submodule update --init --recursive.

  2. Copy the extracted game files into assets/, so the path is assets/default.xex. assets/ is gitignored.

  3. Build:

    cmake --preset win-amd64-release
    cmake --build --preset win-amd64-release
    

    There are also Linux and macOS presets (linux-amd64-*, mac-*), but only Windows is tested. Codegen (default.xex → generated/) runs automatically as part of the build.

Check that your dump is the expected retail release: XEX CRC 375EC9BB, Media ID 6D6481013A4FDD3DA32BD2D0-750FF1D9.

Run

out\build\win-amd64-release\perfectdarkzerorecomp.exe

Game files are found in <repo>/assets automatically; use --game_data_root to point somewhere else. Logs go to out\build\<preset>\logs\.

Mods

Third-person camera

Press V in game to switch between first and third person. Set pdz_tp_enable = true in hardware.toml to start in third person. Camera offset and the rest of the options are in src/mod/README.md.

Language

Set user_language in hardware.toml and restart the game:

# 1 = English, 3 = German, 4 = French
user_language = 1   

Only languages your copy of the game includes will work (check assets/pdz/ASSETS/loc/). Anything else falls back to English.

Local player profiles

Press F9 to open the profile list. You can create profiles, rename them and pick the one to play next time. Each profile has its own saves and achievements. A new profile or name takes effect after you restart the game.

The first profile, "User", keeps the saves you already have. Other profiles save to profiles/<id>/ in the user data folder (Documents/perfectdarkzerorecomp by default), so renaming a profile doesn't move its saves. The list is kept in local_profiles.toml in that folder. Settings and the shader cache are shared.

Names are 1–15 characters: letters, digits, spaces, - and _. To use another key, change bind_local_profiles in settings/mapping.toml.

Configuration

All settings live in settings/ and are loaded at startup. Most can also be changed in game from the F4 overlay.

File What it covers
hardware.toml renderer, window, patches (pdz_fps60_unlock, pdz_aspect_ratio_16_9), pdz_gpu_wait_mode, third-person camera (pdz_tp_*), language (user_language)
mapping.toml input backend, keyboard and mouse (mnk_*), key bindings including bind_third_person

Development notes

  • Set dev_debug_runtime = true to stub every unknown function and log missing ones to logs/stub_sweep.txt and logs/missed_functions.txt.
  • Game-specific hooks are in src/: patches, the GPU wait hook in render/, and the camera mod in mod/.

Credits

License

MIT. See LICENSE. This applies to this project's own code only, not to the game or its assets.

About

Perfect Dark Zero [Xbox360] game static recompilation project based on RexGlue-SDK

Topics

Resources

Stars

24 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages