shadPS4

shadps4-emuGPL-2.0活跃维护 有专家点评

用 C++ 编写的 PlayStation 4 模拟器,支持 Windows、Linux、macOS 和 FreeBSD,让玩家能在电脑上运行 PS4 游戏。

PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++

v.0.21.0发布于 2026-10-30 13:38 UTC34,116star +32 / 7 天2,893fork同步于 2026-11-10 23:22 UTC

专家点评

上手难度:硬核更新于 2026-11-11

早期 PS4 模拟器核心,在 PC 上跑独占游戏,替代真机做兼容性验证

适用场景

  • 想在自己机器上跑 Bloodborne 这类 PS4 独占、又不想买主机:它是目前少数能实际进游戏的开源 PS4 模拟器,代价是画面 bug 要自己扛
  • 做模拟器/图形栈研究:C++23 + Vulkan + SDL3 的代码库,F12 直接接 RenderDoc 抓帧,比在闭源模拟器上做渲染分析可行
  • 在 Linux 或 macOS 上验证 PS4 游戏兼容性:跨平台是它相对其他 PS4 模拟器项目的差异点,macOS 侧有硬性版本门槛
  • 给游戏打补丁/做 mod 的前期探索:issue 里有加载原生共享库的请求,说明这条路还没铺好,只适合愿意读代码的人

踩坑

  • 直接 clone 这个仓库跑不起来图形界面:README 明说这里只有核心,普通使用要另下 QtLauncher,第一次上手容易卡在这一步
  • 固件 sys_modules 要自己从合法持有的 PS4 上 dump 并放进指定目录,没有这一步任何游戏都起不来,这不是配置问题而是前置条件
  • issue 列表里 Bloodborne 相关的画面问题(过曝、顶点爆炸、分平台 bug 汇总)反复出现且被顶得很高,说明兼容性是按游戏逐个修的,别指望换个游戏就顺
  • macOS 要求 26.0 以上且不支持 Intel Mac,老机器直接出局

同类对比

同赛道可对比 RPCS3(PS3,成熟度高得多)和 DuckStation(PS1)来校准预期;如果目标是稳定玩 PS4 游戏而不是折腾模拟器本身,现阶段真机仍是更省事的选择。

怎么上手

由 README 提炼,执行前请确认
shadPS4 CUSA00001
硬件要求按 README 说明

README 未说明具体显存或 GPU 型号要求;macOS 需至少 macOS 26.0 且不支持 Intel Mac。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 C++ 写的早期 PS4 模拟器,能在 Windows、Linux、macOS 上运行 PS4 游戏

用 C++ 编写的 PlayStation 4 模拟器,支持 Windows、Linux、macOS 和 FreeBSD,让玩家能在电脑上运行 PS4 游戏。

核心能力

  • 用 C++ 实现 PS4 模拟器核心,支持多平台
  • 通过命令行按游戏 ID 或 ELF 路径启动游戏
  • 支持加载 PS4 固件 sys_modules 模块
  • 内置键盘映射与 Xbox、DualShock 手柄支持
  • 支持 F10 显示 FPS、F12 触发 RenderDoc 抓帧

容易踩的坑

本仓库只是模拟器核心,不含 GUI,普通用户需另下载 QtLauncher;运行游戏需自行从合法拥有的 PS4 主机 dump 固件模块并放入 sys_modules 文件夹;项目仍处早期开发阶段,不要期待完美体验。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v.0.21.0
  1. Pre-release-shadPS4-2026-11-10-4788f0b108a6faaae5105f8ac88ef8e1935e2b22Pre-release-shadPS4-2026-11-10-4788f0bpre-release2026-11-10 · 2026-11-10 10:57 UTC
    查看更新说明

    Full Changelog: v.0.21.0...4788f0b

  2. Pre-release-shadPS4-2026-11-09-62dc5d4004594aa6dc5798c7bea0ff51fc0f15dbPre-release-shadPS4-2026-11-09-62dc5d4pre-release2026-11-09 · 2026-11-09 15:31 UTC
    查看更新说明

    Full Changelog: v.0.21.0...62dc5d4

  3. Pre-release-shadPS4-2026-11-07-33e73127119f672f9f08b8a5a7f71600263f61d9Pre-release-shadPS4-2026-11-07-33e7312pre-release2026-11-07 · 2026-11-07 14:16 UTC
    查看更新说明

    Full Changelog: v.0.21.0...33e7312

  4. Pre-release-shadPS4-2026-11-06-50c5c1b4e86e275b2e9df9c33606a934b037684cPre-release-shadPS4-2026-11-06-50c5c1bpre-release2026-11-06 · 2026-11-06 22:37 UTC
    查看更新说明

    Full Changelog: v.0.21.0...50c5c1b

  5. v.0.21.0shadps4 v0.21.0 - codename Until Mavethee Dawn最新正式版2026-10-30 · 2026-10-30 13:38 UTC

    Another week another release . There are ton of changes , so why not ?

    Core

    • Properly check where an input came from for digital->analog input smoothing
    • cpu_patches: Work around Rosetta 2 mistranslating negated scalar compares
    • file_sys: Report stable file identities in stat and fstat
    • Allow file type identification for '/addcont' path
    • emulator: stop clearing temporary data on boot
    • Add PT_SCE_MODULE_PARAM case
    • cpu_patches: Fix JIT patching at addresses outside any module
    • core: Fix MemoryManager::Free unmapping past the released rang
    • file_sys: don't abort when a guest path goes through a regular file
    • use VMA pointers instead of copies in TryWriteBacking
    • cpu_patches: Workaround Rosetta 2 crash on VMASKMOVPS/PD
    • Handle ELF metadata and toolchain comments program headers
    • common: reuse one high-resolution waitable timer per thread in AccurateSleep
    • Don't abort when optional ELF metadata segments can't be read
    • cpu_patches: Fix register clobbering in Rosetta 2 VMASKMOV workaround
    • renderdoc: Add library name for macOS
    • renderdoc: Add alternate path for macOS
    • lru_cache: Fix early stop in ForEachItemBelow
    • Avoid deadlock when Shutdown is re-entered on the same thread
    • Check if elf info is initialized when shutting down

    Libraries

    • kernel: Implement I/O event queue APIs with Core::Net integration
    • kernel: fail rmdir on non-empty directories with ENOTEMPTY
    • app_content: Implement sceAppContentTemporaryDataMount
    • kernel: Try lock without wait in timed mutex if deadline has passed
    • usbd: Implement libSceUsbStorage HLE for virtual USB media access
    • http: allowing headers with surrounding whitespace
    • kernel, rtc: Fix timezone and DST calculation
    • music: Implement libSceMusicPlayerService HLE
    • videodec2: Drain pending frames and wrap in RAII
    • usbstorage: Correct OrbisUsbStorageDeviceInfo layout and population
    • app_content: Implement sceAppContentAddcontUnmount
    • app_content: Implement TemporaryData mount and unmount
    • np_auth rewrite
    • Ajm: Auto-detect and safely parse RIFF headers for ATRAC9
    • libSceVoice: stub a disconnected microphone to fix BO2 and BO3 hangs
    • net: report recv_queue_length in sceNetGetSockInfo
    • kernel: Register missing filesystem symbols and fix /dev/null device
    • kernel: return ENOENT from mkdir when the parent does not exist
    • kernel: return EBADF when writing to a file opened read-only
    • kernel: return EINVAL from ftruncate for bad lengths and read-only fds
    • kernel: return ENOENT from unlink when the file does not exist
    • pad: Implement scePadReadExt and scePadReadStateExt
    • gnmdriver: Fix remapped compute queues starting at a stale ring offset
    • app_content: Load additional content from linked services (SERVICE_ID_ADDCONT_ADD_n)
    • app_content: Populate add-on entitlement keys
    • app_content: Fix entitlement keys and service labels
    • playgo: Fix language mask UB and default install speed
    • kernel: Fix self-rename deletion and host path tracking in posix_rename
    • music: Implement sceMusicPlayerServiceSetUsbStorageDeviceInfo
    • kernel: Implement posix_flock and sceKernelFlock
    • audio3d: Fix swapped attribute ids
    • audio3d: Fix swapped attribute ids (OpenAL)
    • kernel: Improve Neo mode handling and implement missing APIs
    • kernel: return ENOENT from open(O_CREAT) when the parent does not exist
    • videodec: libSceVdecCore HLE and VideoCore server interface callbacks
    • np_trophy: Fix platinum trophy never unlocking
    • threads: fix stack base value in windows
    • share_play: Implement sceSharePlayGetCurrentConnectionInfoA
    • net: answer PS4 device discovery on UDP 987
    • np_score : fixed a few inaccurancy returns and data transfers
    • kernel: Fix filesystem validation and posix_select
    • pad: report the DualShock 4 touchpad height (942) instead of 950
    • kernel: return ENOTDIR from mkdir when the parent is a file
    • save_data: deliver backup completion callbacks
    • fiber: Relocate fiber stack

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译
    Bloodborne by From SoftwareHatsune Miku Project DIVA Future Tone by SEGA
    Bloodborne screenshotProject DIVA screenshot
    Yakuza 0 by SEGADRIVECLUB™ by Evolution Studios
    Yakuza screenshotDRIVECLUB screenshot

    General information

    shadPS4 is an early PlayStation 4 emulator for Windows, Linux and macOS written in C++.

    [!IMPORTANT] This is the emulator core, which does not include a GUI. If you just want to use the emulator as an end user, download the QtLauncher instead.

    If you encounter problems or have doubts, do not hesitate to look at the Quickstart.
    To verify that a game works, you can look at shadPS4 Game Compatibility.
    To discuss shadPS4 development, suggest ideas or to ask for help, join our Discord server.
    To get the latest news, go to our X (Twitter) or our website.
    You can donate to the project via our Kofi page.

    Status

    [!IMPORTANT] shadPS4 is early in development, don't expect a flawless experience.

    Currently, the emulator can successfully run games like Bloodborne, Dark Souls Remastered, Red Dead Redemption, and many other games.

    Why

    This project began for fun. Given our limited free time, it may take some time before shadPS4 can run more complex games, but we're committed to making small, regular updates.

    Building

    Docker

    For building shadPS4 in a containerized environment using Docker and VSCode, check the instructions here:
    Docker Build Instructions

    Windows

    Check the build instructions for Windows.

    Linux

    Check the build instructions for Linux.

    macOS

    Check the build instructions for macOS.

    [!IMPORTANT] macOS users need at least macOS 26.0 to run shadPS4. Intel Macs are not supported.

    Usage examples

    [!IMPORTANT] For a user-friendly GUI, download the QtLauncher.

    To get the list of all available commands and also a more detailed description of what each command does, please refer to the --help flag's output.

    Below is a list of commonly used command patterns:

    shadPS4 CUSA00001 # Searches for a game folder called CUSA00001 in the list of game install folders, and boots it.
    shadPS4 --fullscreen true --config-clean CUSA00001    # the game argument is always the last one,
    shadPS4 -g CUSA00001 --fullscreen true --config-clean # ...unless manually specified otherwise.
    shadPS4 /path/to/game.elf # Boots a PS4 ELF file directly. Useful if you want to boot an executable that is not named eboot.bin.
    shadPS4 CUSA00001 -- -flag1 -flag2 # Passes '-flag1' and '-flag2' to the game executable in argv.
    

    Debugging and reporting issues

    For more information on how to test, debug and report issues with the emulator or games, read the Debugging documentation.

    Keyboard and Mouse Mappings

    [!NOTE] Some keyboards may also require you to hold the Fn key to use the F* keys. Mac users should use the Command key instead of Control, and need to use Command+F11 for full screen to avoid conflicting with system key bindings.

    ButtonFunction
    F10FPS Counter
    Ctrl+F10Video Debug Info
    F11Fullscreen
    F12Trigger RenderDoc Capture (or game-only screenshot if RenderDoc is unavailable)
    Alt+F12Capture screenshot including HUD/dialog overlays

    [!NOTE] Xbox and DualShock controllers work out of the box.

    Controller buttonKeyboard equivalent
    LEFT AXIS UPW
    LEFT AXIS DOWNS
    LEFT AXIS LEFTA
    LEFT AXIS RIGHTD
    RIGHT AXIS UPI
    RIGHT AXIS DOWNK
    RIGHT AXIS LEFTJ
    RIGHT AXIS RIGHTL
    TRIANGLENumpad 8 or C
    CIRCLENumpad 6 or B
    CROSSNumpad 2 or N
    SQUARENumpad 4 or V
    PAD UPUP
    PAD DOWNDOWN
    PAD LEFTLEFT
    PAD RIGHTRIGHT
    OPTIONSRETURN
    BACK BUTTON / TOUCH PADSPACE
    L1Q
    R1U
    L2E
    R2O
    L3X
    R3M

    Keyboard and mouse inputs can be customized in the settings menu by clicking the Controller button, and further details and help on controls are also found there. Custom bindings are saved per-game. Inputs support up to three keys per binding, mouse buttons, mouse movement mapped to joystick input, and more.

    Firmware files

    shadPS4 can load some PlayStation 4 firmware files. The following firmware modules are supported and must be placed in shadPS4's sys_modules folder.

    ModulesModulesModulesModules
    libSceAt9Enc.sprxlibSceAudiodec.sprxlibSceAudiodecCpu.sprxlibSceAudiodecCpuDdp.sprx
    libSceAudiodecCpuDtsHdLbr.sprxlibSceAudiodecCpuHevag.sprxlibSceAudiodecCpuM4aac.sprxlibSceAvPlayer.sprx
    libSceAvPlayerStreaming.sprxlibSceBeisobmf.sprxlibSceBemp2sys.sprxlibSceCesCs.sprx
    libSceFont.sprxlibSceFontFt.sprxlibSceFreeTypeOl.sprxlibSceFreeTypeOptOl.sprx
    libSceFreeTypeOt.sprxlibSceJpegDec.sprxlibSceJpegEnc.sprxlibSceJson.sprx
    libSceJson2.sprxlibSceLibcInternal.sprxlibSceNgs2.sprxlibScePngEnc.sprx
    libScePsmKitSystem.sprxlibSceRtc.sprxlibSceRudp.sprxlibSceSystemGesture.sprx
    libSceUlt.sprxlibSceWkFontConfig.sprxlibSceXml.sprxlibSceDepth.sprx
    libScePadTracker.sprxlibSceMoveTracker.sprx

    [!Caution] The above modules are required to run the games properly and must be dumped from your legally owned PlayStation 4 console.

    Main team

    Logo is done by Xphalnos

    Contributing

    If you want to contribute, please read the CONTRIBUTING.md file.
    Open a PR and we'll check it :)

    Special Thanks

    A few noteworthy teams/projects who've helped us along the way are:

    • Panda3DS: A multiplatform 3DS emulator from our co-author wheremyfoodat. They have been incredibly helpful in understanding and solving problems that came up from natively executing the x64 code of PS4 binaries

    • fpPS4: The fpPS4 team has assisted massively with understanding some of the more complex parts of the PS4 operating system and libraries, by helping with reverse engineering work and research.

    • yuzu: Our shader compiler has been designed with yuzu's Hades compiler as a blueprint. This allowed us to focus on the challenges of emulating a modern AMD GPU while having a high-quality optimizing shader compiler implementation as a base.

    • felix86: A new x86-64 → RISC-V Linux userspace emulator

    • emudev.org: A network of people interested in the documentation, emulation, simulation and re-implementation of hardware near extinction . Belongs to my friend skmp and me (shadow) also a member of it

    License