KytyPS5 README

The project's README from github.com/KytyPS5/KytyPS5. As one markdown file: README.md.

KytyPS5

Build KytyPS5 (Windows) Build KytyPS5 (Linux) Build KytyPS5 (macOS) Platform Status License

Weekly updates — game progress, recent fixes and ongoing development.

Development on Discord — KytyPS5 development.

KytyPS5 is a free and open-source PlayStation 5 emulator written in C++ for Windows and Linux, with experimental macOS support. It is based on a heavily modified version of Kyty. The project is in active development, and behavior can change significantly between builds.

[!IMPORTANT] KytyPS5 is not affiliated with Sony Interactive Entertainment or PlayStation. The project does not distribute games or copyrighted system software. Use only game files that you have obtained legally.

Current Status

KytyPS5 can boot 2D games and a selection of 3D games, including titles built with Unreal Engine 4/5, Unity, and custom engines. External low-level emulation modules are neither required nor planned.

Development is currently focused on expanding game compatibility and improving boot reliability.

Windows and Linux are the primary platforms and receive the most testing.

macOS support is experimental. The emulator is built for x86-64 and runs on Apple Silicon under Rosetta 2, with Vulkan provided by MoltenVK. A small number of titles have been verified in-game on Apple Silicon hardware; see Building on macOS.

Community game test results are available in the KytyPS5 Compatibility List.

Bugs and Issues

Compatibility, stability, and performance can vary between versions. You may encounter crashes or graphical glitches, so please include the version you tested when reporting an issue.

Screenshots

Astro Bot
Astro Bot running in KytyPS5
Dreaming Sarah
Dreaming Sarah running in KytyPS5
Neptunia ReVerse
Neptunia ReVerse running in KytyPS5
SILENT HILL: The Short Message
SILENT HILL: The Short Message running in KytyPS5
Demon's Souls
Demon's Souls running in KytyPS5
UFC 5
UFC 5 running in KytyPS5

And many more...

Contributing

Testing games and submitting detailed bug reports are useful ways to contribute. Search existing issues first, then use the Game Emulation Status Report template and attach the complete log file.

Code contributions should be focused, build successfully on the platforms they touch, and include relevant tests where practical. Windows is the primary target, so a change that alters shared code should not regress it; changes confined to a platform's own code paths only need to build there. Because KytyPS5 is still evolving quickly, consider opening an issue before starting a large change.

Formatting

Set up the clang-format hook after cloning:

Install pre-commit using the method appropriate for your platform:

Then install the Git hook:

python -m pre_commit install --install-hooks

It formats staged .cpp, .h, and .inc files in src.

Developer Information

The PS5 graphics architecture is based on AMD RDNA 2. Use AMD's RDNA 2 Instruction Set Architecture Reference Guide (document 70648) as the primary instruction-encoding reference when working on shader decoding and recompilation.

Important areas of the codebase:

The renderer targets Vulkan 1.3. Keep shader changes aligned with both the RDNA 2 ISA semantics and the Vulkan/SPIR-V validation rules.

Building

System requirements

Build requirements (Windows)

The Microsoft C++ compiler (cl.exe) is not supported; use clang-cl.

Open an x64 Native Tools Command Prompt for Visual Studio 2022 (or the equivalent Developer PowerShell), change to the repository root, and initialize the dependencies:

git submodule update --init --recursive

Configure the project. Replace the Qt path with the version installed on your system:

cmake -S . -B _Build/windows -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_PREFIX_PATH="C:/Qt/6.x.x/msvc2022_64"

Build the launcher and stage a runnable installation:

cmake --build _Build/windows --target launcher
cmake --install _Build/windows --prefix _Build/windows/install

The finished application and its runtime dependencies will be placed in _Build/windows/install.

Building on Linux

Install the toolchain and the libraries the bundled SDL3 needs. Without the audio, Wayland and udev development packages SDL3 quietly configures itself without those backends, and the resulting build has no working sound and no gamepad hotplug:

sudo apt-get install --no-install-recommends \
  clang lld ninja-build cmake git glslang-tools pkg-config \
  libgl1-mesa-dev libx11-dev libxcursor-dev libxext-dev libxfixes-dev \
  libxi-dev libxrandr-dev libxss-dev libxtst-dev libxkbcommon-dev \
  libasound2-dev libpulse-dev libudev-dev libdbus-1-dev libwayland-dev wayland-protocols

Qt 6 (Concurrent, Network, Widgets) is required for the launcher — either the distribution packages (qt6-base-dev) or an official Qt installation.

git submodule update --init --recursive

cmake -S . -B _Build/linux -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
  -DCMAKE_PREFIX_PATH="$Qt6_DIR"

cmake --build _Build/linux --target launcher --parallel
cmake --install _Build/linux --prefix _Build/linux/install

The install step copies the Qt libraries and plugins next to the binaries, so _Build/linux/install runs without a matching system Qt. FFmpeg is linked statically from the pinned KytyPS5 FFmpeg core release, including VP9 and WebM support. System FFmpeg packages are not required.

To build kyty_emulator and the kyty_tests target without Qt, use a separate build directory:

git submodule update --init --recursive

cmake -S . -B _Build/linux-no-qt -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
  -DKYTY_BUILD_LAUNCHER=OFF

cmake --build _Build/linux-no-qt --target kyty_emulator kyty_tests --parallel

As on Windows, the MSVC compiler is not used; Clang is required. cl.exe is rejected at configure time.

The CMake source root is the repository root.

Building on NixOS

A development shell provides Clang, CMake, Ninja, Qt 6, the Vulkan headers, and the SDL3 backend libraries. Enter it and configure exactly as on other Linux distributions; the shell exports CMAKE_PREFIX_PATH and QT_PLUGIN_PATH, so the -DCMAKE_PREFIX_PATH="$Qt6_DIR" argument is not needed:

nix-shell # or: nix develop
git submodule update --init --recursive

cmake -S . -B _Build/linux -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++

cmake --build _Build/linux --target launcher --parallel
cmake --install _Build/linux --prefix _Build/linux/install

The configure step downloads the FFmpeg prebuilts and the xbyak, zydis, zstd, and ZArchive sources, so it needs network access; a fully sandboxed nix build would require vendoring those inputs. A Vulkan 1.3 driver must be available at runtime (on NixOS, hardware.graphics.enable = true).

Building on macOS

macOS builds target x86-64 and run under Rosetta 2 on Apple Silicon, so the PS5's x86-64 game code executes through the same translation layer as the emulator itself. Prebuilt archives are attached to releases; the steps below are for building from source.

Requirements:

git submodule update --init --recursive

cmake -S . -B _Build/macos -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_OSX_ARCHITECTURES=x86_64 \
  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
  -DCMAKE_PREFIX_PATH="$Qt6_DIR"

cmake --build _Build/macos --target launcher --parallel
cmake --install _Build/macos --prefix _Build/macos/install

The build re-signs kyty_emulator with the JIT entitlements it needs to execute translated guest code; no manual signing step is required. When the launcher is built, the install also produces _Build/macos/install/KytyPS5.app — double-click to launch the GUI. A flat kyty_emulator is kept for CLI usage.

Vulkan comes from MoltenVK. Download MoltenVK-macos.tar from the MoltenVK releases, then copy MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib next to the flat kyty_emulator (and, for the bundle, into KytyPS5.app/Contents/Frameworks/) and ad-hoc sign it:

codesign --force --sign - _Build/macos/install/libMoltenVK.dylib
# For the bundle (if present):
codesign --force --sign - _Build/macos/install/KytyPS5.app/Contents/Frameworks/libMoltenVK.dylib
codesign --force --sign - _Build/macos/install/KytyPS5.app

Release archives already include a signed libMoltenVK.dylib (both flat and inside the bundle).

Regression tests

Build every regression executable and run the registered tests with:

cmake --build _Build/windows --target kyty_tests
ctest --test-dir _Build/windows --output-on-failure

Use _Build/linux instead of _Build/windows for a Linux build.

Visual Studio Code

A ready-made Visual Studio Code setup is included in .vscode. It configures CMake Tools to build the project with Ninja and clang-cl and provides launch profiles for both launcher.exe and kyty_emulator.exe. It is Windows-only: VS Code settings cannot select a compiler per platform, so on Linux configure from the command line as shown above.

Before using it:

  1. Install the CMake Tools and C/C++ extensions in Visual Studio Code.
  2. Update CMAKE_PREFIX_PATH in .vscode/settings.json to point to your Qt 6 MSVC installation.
  3. Update the --game path in .vscode/launch.json for the Debug kyty_emulator profile.
  4. Open the repository in an x64 Visual Studio developer environment, configure the CMake project, and select a launch profile from Run and Debug.

Running

Update your graphics driver before reporting rendering problems.

To use the graphical launcher:

.\_Build\windows\install\launcher.exe
./_Build/linux/install/launcher
open _Build/macos/install/KytyPS5.app  # or double-click in Finder

On first launch, add one or more game folders in the global settings. The launcher searches those folders recursively for game directories containing eboot.bin and ZArchive (.zar) game dumps whose archive root contains eboot.bin. Select a detected game and run it from the game list. ZArchive dumps are mounted read-only and streamed directly; they do not need to be extracted first.

The emulator can also be started directly with a legally obtained game directory, ELF file, or ZArchive dump:

.\_Build\windows\install\kyty_emulator.exe --game "D:\Games\ExampleGame"
.\_Build\windows\install\kyty_emulator.exe --game "D:\Games\ExampleGame.zar"
./_Build/linux/install/kyty_emulator --game "/games/ExampleGame"
./_Build/linux/install/kyty_emulator --game "/games/ExampleGame.zar"

On macOS, the adjacent flat or app-bundled libMoltenVK.dylib is found automatically; no environment variable is required:

./_Build/macos/install/kyty_emulator --game "/games/ExampleGame"

To override the Vulkan loader, set SDL_VULKAN_LIBRARY:

SDL_VULKAN_LIBRARY=/path/to/libMoltenVK.dylib ./kyty_emulator --game "/games/ExampleGame"

Run kyty_emulator --help to see the available graphics, logging, validation, profiling, and debugging options.

AI Use

AI tools may be used for research, reverse engineering, and development assistance. Contributors must fully understand, review, and test all code they submit and remain responsible for its correctness. Repository communication, including pull-request descriptions, code comments, and issue comments, must come from the human contributor rather than an autonomous AI agent.

Pull requests that include AI-assisted or AI-generated work should disclose the scope of the AI involvement and describe the human review and testing performed before submission. Unverified or untested generated changes may be closed without review.

License

KytyPS5 is licensed under the GNU General Public License version 2 (GPL-2.0-only).

This project is based on the original Kyty, which was released under the MIT License. Kyty's original copyright and license notice are preserved in LICENSES/Kyty-MIT.txt. Third-party components remain subject to the licenses included with those components.

Special Thanks

KytyPS5 (KytyPS5/KytyPS5)

Searching Database…

9.3K ·GitHub
这是什么?KytyPS5 是一个免费开源的 PlayStation 5 模拟器(翻译层),用 C++ 编写,支持 Windows 和 Linux,并对 macOS 提供实验性支持,基于大幅修改的 Kyty 项目。
这是图形界面应用、命令行工具,还是两者兼有?它附带一个基于 Qt6 的图形启动器,用于选择和运行游戏,还有一个独立的 kytyemulator 二进制文件,可以直接从命令行运行。
怎么让游戏跑起来?打开启动器,首次启动时在全局设置中添加你的游戏文件夹,然后从列表中选择检测到的游戏。你也可以直接用 kytyemulator 运行游戏目录、ELF 文件或 ZArchive(.zar)转储文件,无需先解压。
在我的电脑上构建或运行它需要什么?你需要一块支持 Vulkan 1.3 的 GPU 及最新驱动(macOS 上为 MoltenVK),以及合法获取的 PS5 游戏转储文件。从源码构建还需要 CMake、Ninja、Qt 6 和 clang-cl/Clang(明确拒绝使用 MSVC 的 cl.exe 编译器)。
它能运行所有 PS5 游戏吗?不能——它目前能启动 2D 游戏和部分 3D 游戏(虚幻引擎 4/5、Unity 以及自定义引擎),但不同版本之间的兼容性、稳定性和性能差异很大,你可能遇到崩溃或画面故障。
它能在 Apple Silicon Mac 上原生运行吗?不能——macOS 版本面向 x86-64,在 Apple Silicon 上通过 Rosetta 2 运行,因此 PS5 的 x86-64 游戏代码要在模拟器自身翻译层之上再经过 Rosetta 转译;Windows 和 Linux 是主要且测试最充分的平台。
这合法吗?它附带游戏吗?KytyPS5 与索尼没有任何关联,也不分发任何游戏或受版权保护的系统软件——你必须自行提供合法获取的游戏转储文件。
它依赖任何底层硬件模拟模块吗?不依赖,外部底层模拟(LLE)模块既不是必需的也没有相关计划;KytyPS5 完全通过自己的高层翻译层工作。
在哪里可以查看某个具体游戏能否运行?社区测试结果记录在 KytyPS5 兼容性列表中,活跃的开发讨论则在该项目的 Discord 服务器上进行。
着色器重编译器针对什么 GPU 架构?重编译器基于 AMD 的 RDNA 2 指令集解码 PS5 着色器,并将其重新生成为 SPIR-V,供 Vulkan 1.3 宿主后端使用,因此着色器相关的工作必须同时符合 RDNA 2 和 Vulkan/SPIR-V 的规则。
在 Linux 上如何处理音频和 FFmpeg?FFmpeg(含 VP9/WebM 支持)以静态链接方式来自固定版本的 KytyPS5 构建,因此不需要系统安装 FFmpeg,但你仍需要安装 SDL3 所需的音频、Wayland 和 udev 开发包,才能获得正常的声音和手柄热插拔功能。
What are similar projects?sharpemu, shadPS4, dolphin, Yakumo, rpcs3, bbhost, ProsperoEden, pt-pc
Creator
KytyPS5
Size
38.9 MB
Stars
9.3K
Age
4mo
Commits · 90 Days