A work-in-progress native PC port of Yakuza: Dead Souls, built by statically recompiling the original PlayStation 3 executable.
The project translates the game's PowerPC PPU code and Cell SPU programs into native code and replaces the PS3 kernel, system libraries, SPURS, graphics, audio, input and filesystem with a native runtime. It needs no PS3 firmware: every system component the game calls is implemented from scratch.
This is an experimental preservation and engineering project. It is not a finished port.
Development began on June 9, 2026, the fifteenth anniversary of the original Japanese release of Ryū ga Gotoku: Of the End.
The port currently:
The main open problem is performance in heavy scenes: the crowded outdoor New Game opening runs at roughly 20 FPS. Performance improvements are being actively worked on.
third_party/ffmpeg unless you pass -DYZ_FFMPEG_DIR=<path>. Without it the game still builds, but movies are skipped.The game's code is not in this repository. You generate it from your own copy of the game, then build. yakuza/REGENERATE.md lists the files to extract and decrypt and the exact commands. In short:
py -3 tools\find_functions.py game\EBOOT.elf -o functions.json
py -3 tools\ppu_lifter.py game\EBOOT.elf --output recomp\ --functions functions.json --override-funcs yakuza\movie_overrides.txt
py -3 tools\lift_prx.py game\ogrez_shader_ps3.ppu.elf --base 0x02200000 --output recomp_prx\
py -3 tools\ppu_lifter.py recomp_prx\ogrez_shader_ps3.ppu_image.bin --raw --base 0x02200000 --functions recomp_prx\ogrez_shader_ps3.ppu_functions.json --output recomp\prx --header-name pxd_shader_recomp.h --source-name pxd_shader_recomp --table-name pxd_shader_function_table --extern-funcs recomp\ppu_recomp.h
py -3 tools\gen_spu_images.py
Then, from a Visual Studio x64 developer prompt:
cd yakuza
cmake --preset release
cmake --build --preset release
cd ..
The first build takes a while: the lifted game code is several million lines of C++, compiled with whole-program optimization.
Put the disc contents under gamedata/dev_bdvd/ and start the runner from the repository root:
.\yakuza\build_release\yakuza_recomp.exe game\EBOOT.elf
Saves go to gamedata/dev_hdd0/. A controller works through XInput. On the keyboard, Enter is Start, Backspace is Select, the arrow keys are the D-pad, WASD is the left stick, the number pad is the right stick, X/C/V/Z (or K/L/I/J) are Cross/Circle/Triangle/Square, Q and E are L1 and R1, and 1 and 3 are L2 and R2. Escape closes the game.
A few optional environment variables:
| Variable | Effect |
|---|---|
YZ_GPU=high-performance | Render on the discrete GPU of a laptop with two GPUs. By default Windows chooses, usually the integrated GPU that drives the display, which is faster here because the game is limited by the CPU. |
YZ_SPURS_PARALLEL_JOBS=0 | Run SPU jobs on one host thread instead of two. |
YZ_PPU_AFFINITY=<mask> | Pin the game's PPU threads to the host cores in this mask. |
YZ_THREAD_PRIO=1 | Map the game's thread priorities onto Windows thread priorities. |
YZ_SEPARATE_CRITICAL_CORES=1 | Give the RSX consumer and the main SPU worker their own cores. |
RSX_D3D_DEBUG=1 | Enable the Direct3D 12 debug layer (needs the Graphics Tools feature). |
tools/ holds the recompiler: an ELF and PRX loader, PPU and SPU disassemblers, and the lifters that turn each PPU function and each SPU program into C/C++. runtime/ is the machine the lifted code runs on: guest memory, PPU and SPU contexts, the lv2 system calls and SPU DMA. libs/ replaces the PS3 system libraries the game imports, including SPURS, the gcm graphics library, audio, input, save data and the filesystem. yakuza/ is the game itself: the runner, the few game functions replaced by hand (such as movie playback) and the Direct3D 12 renderer's hookup to the game's RSX command stream.
The original ps3recomp toolkit and runtime were created by sp00nznet; this port started as a fork of it.
The PowerPC, Cell Broadband Engine, SPU and AltiVec manuals from IBM and Power.org, and the NV40 documentation from the envytools and Mesa projects and psdevwiki, describe the hardware this port implements. RPCS3 was used as a behavioural reference when checking results; none of its code is included.
This project contains no game code, game data, firmware, encryption keys or Sony SDK material. You need your own legally obtained copy of the game.
The source code in this repository is available under the MIT License.
A work-in-progress native PC port of Yakuza: Dead Souls, built by statically recompiling the original PlayStation 3 executable.
The project translates the game's PowerPC PPU code and Cell SPU programs into native code and replaces the PS3 kernel, system libraries, SPURS, graphics, audio, input and filesystem with a native runtime. It needs no PS3 firmware: every system component the game calls is implemented from scratch.
This is an experimental preservation and engineering project. It is not a finished port.
Development began on June 9, 2026, the fifteenth anniversary of the original Japanese release of Ryū ga Gotoku: Of the End.
The port currently:
The main open problem is performance in heavy scenes: the crowded outdoor New Game opening runs at roughly 20 FPS. Performance improvements are being actively worked on.
third_party/ffmpeg unless you pass -DYZ_FFMPEG_DIR=<path>. Without it the game still builds, but movies are skipped.The game's code is not in this repository. You generate it from your own copy of the game, then build. yakuza/REGENERATE.md lists the files to extract and decrypt and the exact commands. In short:
py -3 tools\find_functions.py game\EBOOT.elf -o functions.json
py -3 tools\ppu_lifter.py game\EBOOT.elf --output recomp\ --functions functions.json --override-funcs yakuza\movie_overrides.txt
py -3 tools\lift_prx.py game\ogrez_shader_ps3.ppu.elf --base 0x02200000 --output recomp_prx\
py -3 tools\ppu_lifter.py recomp_prx\ogrez_shader_ps3.ppu_image.bin --raw --base 0x02200000 --functions recomp_prx\ogrez_shader_ps3.ppu_functions.json --output recomp\prx --header-name pxd_shader_recomp.h --source-name pxd_shader_recomp --table-name pxd_shader_function_table --extern-funcs recomp\ppu_recomp.h
py -3 tools\gen_spu_images.py
Then, from a Visual Studio x64 developer prompt:
cd yakuza
cmake --preset release
cmake --build --preset release
cd ..
The first build takes a while: the lifted game code is several million lines of C++, compiled with whole-program optimization.
Put the disc contents under gamedata/dev_bdvd/ and start the runner from the repository root:
.\yakuza\build_release\yakuza_recomp.exe game\EBOOT.elf
Saves go to gamedata/dev_hdd0/. A controller works through XInput. On the keyboard, Enter is Start, Backspace is Select, the arrow keys are the D-pad, WASD is the left stick, the number pad is the right stick, X/C/V/Z (or K/L/I/J) are Cross/Circle/Triangle/Square, Q and E are L1 and R1, and 1 and 3 are L2 and R2. Escape closes the game.
A few optional environment variables:
| Variable | Effect |
|---|---|
YZ_GPU=high-performance | Render on the discrete GPU of a laptop with two GPUs. By default Windows chooses, usually the integrated GPU that drives the display, which is faster here because the game is limited by the CPU. |
YZ_SPURS_PARALLEL_JOBS=0 | Run SPU jobs on one host thread instead of two. |
YZ_PPU_AFFINITY=<mask> | Pin the game's PPU threads to the host cores in this mask. |
YZ_THREAD_PRIO=1 | Map the game's thread priorities onto Windows thread priorities. |
YZ_SEPARATE_CRITICAL_CORES=1 | Give the RSX consumer and the main SPU worker their own cores. |
RSX_D3D_DEBUG=1 | Enable the Direct3D 12 debug layer (needs the Graphics Tools feature). |
tools/ holds the recompiler: an ELF and PRX loader, PPU and SPU disassemblers, and the lifters that turn each PPU function and each SPU program into C/C++. runtime/ is the machine the lifted code runs on: guest memory, PPU and SPU contexts, the lv2 system calls and SPU DMA. libs/ replaces the PS3 system libraries the game imports, including SPURS, the gcm graphics library, audio, input, save data and the filesystem. yakuza/ is the game itself: the runner, the few game functions replaced by hand (such as movie playback) and the Direct3D 12 renderer's hookup to the game's RSX command stream.
The original ps3recomp toolkit and runtime were created by sp00nznet; this port started as a fork of it.
The PowerPC, Cell Broadband Engine, SPU and AltiVec manuals from IBM and Power.org, and the NV40 documentation from the envytools and Mesa projects and psdevwiki, describe the hardware this port implements. RPCS3 was used as a behavioural reference when checking results; none of its code is included.
This project contains no game code, game data, firmware, encryption keys or Sony SDK material. You need your own legally obtained copy of the game.
The source code in this repository is available under the MIT License.