news 2026/9/10 21:32:13

shadPS4 模拟器完全指南:从源码构建、命令行启动到游戏调试的实战手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
shadPS4 模拟器完全指南:从源码构建、命令行启动到游戏调试的实战手册

shadPS4 模拟器完全指南:从源码构建、命令行启动到游戏调试的实战手册

【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4

shadPS4 是一个用 C++ 编写的早期 PlayStation 4 模拟器,支持 Windows、Linux、macOS(官方构建目标还包括 FreeBSD)等多平台运行。本文以仓库根目录的 README.md 为主线,结合 src/main.cpp、src/core/emulator_settings.h 与 documents 下的构建、调试文档,系统讲解 shadPS4 的项目现状、多平台构建方式、命令行启动参数、配置文件体系、键盘鼠标映射与固件(firmware)加载要求,帮助你在当前仓库中完成从「拉取源码」到「运行一款 PS4 游戏」再到「定位并报告问题」的完整流程。

项目概览与当前状态

shadPS4是一个处于早期开发阶段的PlayStation 4 模拟器,核心由 C++ 编写,目标是让 PS4 游戏在 Windows、Linux 和 macOS 上运行。官方项目定位与当前进度在 README 中有明确说明:

  • 早期开发状态:README 明确指出 "shadPS4 is early in development, don't expect a flawless experience."(shadPS4 正处于早期开发阶段,不要期待完美无缺的体验),这意味着部分游戏可能无法启动、存在崩溃或图形错误。
  • 可运行的游戏示例:目前可以成功运行 [Bloodborne]、Dark Souls Remastered、Red Dead Redemption 等游戏(截图见 documents/Screenshots/1.png 至 documents/Screenshots/4.png,分别展示了 Bloodborne、Hatsune Miku Project DIVA Future Tone、Yakuza 0 与 DRIVECLUB 的运行效果)。
  • 项目动机:项目以兴趣为起点,因维护者业余时间有限,功能的推进以小步快跑的方式持续更新(见 README "Why" 一节)。

[!IMPORTANT] 仓库内是模拟器核心(emulator core),不包含图形界面。如果只想作为普通用户使用,请下载官方配套的QtLauncher发行版;如果要使用内置的大屏界面,可用命令行-b(Big Picture 模式)启动,详见下文命令行章节。

从源码结构看,模拟器的核心模块分布在 src/core(内核、文件系统、库模拟)、src/shader_recompiler(GCN 着色器重编译到 SPIR-V)、src/video_core(AMD GPU 的 Liverpool 命令处理器与 Vulkan 渲染后端)等目录,这是理解其架构深度的起点。

构建 shadPS4:四种方式的完整步骤

README 的 "Building" 一节为每个平台都链接了独立文档,本仓库中对应文件位于 documents/building-docker.md、documents/building-windows.md、documents/building-linux.md 和 documents/building-macos.md。以下按平台整理出可直接复制的命令。

通用前提:递归克隆

项目依赖大量 Git 子模块(见 externals 目录下的 CLI11、SDL3、glslang、Vulkan-Headers 等),克隆时必须带--recursive

git clone --recursive https://github.com/shadps4-emu/shadPS4.git cd shadPS4

如果已经克隆过但缺少子模块,可随时补拉:

git submodule update --init --recursive

Linux 构建

Linux 官方文档明确建议:Clang 18 是推荐编译器(官方构建与 CI 均使用它);若用 GCC 构建遇到问题,请在提[APP BUG]问题或 PR 前至少先用 Clang 成功构建一次,以排除编译器差异。

安装依赖(不同发行版命令不同):

  • Debian / Ubuntu:
sudo apt install build-essential clang git cmake libasound2-dev \ libpulse-dev libopenal-dev libssl-dev zlib1g-dev libedit-dev \ libudev-dev libevdev-dev libsdl2-dev libjack-dev libsndio-dev \ libvulkan-dev vulkan-validationlayers libpng-dev
  • Fedora:
sudo dnf install ninja-build clang git cmake libatomic alsa-lib-devel \ pipewire-jack-audio-connection-kit-devel openal-soft-devel \ openssl-devel libevdev-devel libudev-devel libXext-devel \ libXcursor-devel libXi-devel libXrandr-devel libXScrnSaver-devel \ vulkan-devel vulkan-validation-layers libpng-devel libuuid-devel
  • Arch Linux:
sudo pacman -S base-devel clang git cmake sndio jack2 openal \ sdl2 vulkan-validation-layers libpng

注意:AUR 上的shadps4-git包并非官方维护,且默认使用 GCC 编译器,请自行斟酌使用。

  • OpenSUSE:
sudo zypper install clang git cmake libasound2 libpulse-devel \ libsndio7 libjack-devel openal-soft-devel libopenssl-devel \ zlib-devel libedit-devel systemd-devel libevdev-devel \ vulkan-devel vulkan-validationlayers libpng-devel
  • Nix Flake 开发环境(本仓库根目录自带 flake.nix):
nix develop cmake -S . -B build/ ln -s ./build/compile_commands.json .
  • Nix Flake 直接构建(debug / release / releaseWithDebInfo 三种配置):
nix build .?submodules=1#debug nix build .?submodules=1#release nix build .?submodules=1#releaseWithDebInfo

推荐的终端构建方式(官方文档中的 Option 1,最推荐):

cmake -S . -B build/ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ cmake --build ./build --parallel$(nproc)
  • 如需调试版本,在第一条命令后追加-DCMAKE_BUILD_TYPE=Debug
  • 如果构建过程中电脑卡死(资源占用过高),去掉--parallel$(nproc)即可;
  • 构建产物为./build/shadps4,直接运行可查看选项列表。

其他两种方式

  • Option 2:cmake-gui——打开 cmake-gui,分别指定源码目录(如/home/user/shadPS4)与构建目录(/home/user/shadPS4/build),Configure 时选择 "Unix Makefiles",在 "Specify native compilers" 中把 C/CXX 编译器设为/bin/clang/bin/clang++,Configure 完成后点 Generate,再回到终端执行 Option 1 的步骤 2;
  • Option 3:Visual Studio Code——安装 "CMake Tools" 扩展,在 CMake 选项卡中配置并构建,可参考 documents/Screenshots/Linux 下的截图(1.png对应关闭自动配置选项、3.png对应安装扩展、4.png对应 CMake 配置界面、5.png对应选择启动目标为shadPS4/build下的可执行文件)。

Windows 构建

Windows 官方文档强调两件事:ARM64 目前不受支持(无法构建也无法运行,相关说明仅面向开发者);测试旧版本构建时不要加--depth 1,否则会因缺少提交历史而无法切换到旧提交。

方式一:Visual Studio 2022

  1. 安装 VS2022 Community 时,勾选Desktop development with C++,再在 "Individual Components" 中安装C++ Clang Compiler for WindowsMSBuild support for LLVM
  2. 安装 [Git for Windows],然后克隆:
git clone --depth 1 --recursive https://github.com/shadps4-emu/shadPS4
  1. 在 Visual Studio 中选择Open a local folder打开含CMakeLists.txt的源码目录;
  2. 将配置从Clang x64 Debug切到Clang x64 Release(常规非调试构建),把启动项设为shadps4.exe,执行Build -> Build All
  3. 产物位于C:\path\to\source\Build\x64-Clang-Release\

方式二:VSCode + Visual Studio Build Tools需要 Git for Windows、LLVM 19.1.1(文档说明 CI 格式校验使用 clang19)、CMake 4.2.3+、Ninja 1.13.2+,全部加入系统 PATH;然后安装 VS Build Tools(MSVC + Windows SDK)。构建前可用以下命令校验环境:

git --version cmake --version ninja --version clang --version

仓库还提供了 VSCode 工作区配置思路(cmake.generator: Ninjaclangd智能提示、editor.formatOnSave+clang-format),对应扩展截图见 documents/Screenshots/windows/vscode-ext-1.png、vscode-ext-2.png 与 vscode-ext-3.png。构建后shadps4.exe位于shadps4\shared\Build\x64-Clang-Release\

方式三:MSYS2/MinGW——官方文档提醒MSYS2 构建当前已损坏,Windows 上请优先使用方式一或方式二;ARM64 环境下的 MSYS2 CLANGARM64 步骤仅面向开发者。另外,MSYS2 产物依赖 MSYS2 运行环境与 DLL,不便直接分发。

macOS 构建

macOS 构建要求Xcode 26.0 或更新版本,且 README 明确:运行 shadPS4 至少需要 macOS 26.0,不支持 Intel Mac(src/main.cpp 在启动时也会通过sysctl.proc_translated检测 Apple Silicon 并弹出提示)。

  1. 安装 Homebrew 并配置 PATH:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zprofile eval $(/opt/homebrew/bin/brew shellenv)
  1. 安装构建工具与依赖:
brew install clang-format cmake
  1. 安装构建 KosmicKrisp Vulkan 驱动所需依赖(可在配置时用-DENABLE_SYSTEM_VULKAN=ON跳过,前提是你已有兼容的 Vulkan 环境):
brew install meson ninja pkg-config llvm spirv-tools spirv-llvm-translator libclc pip3 install --break-system-packages mako packaging pyyaml
  1. 克隆、配置、构建:
git clone --recursive https://github.com/shadps4-emu/shadPS4.git cd shadPS4 cmake -S . -B build/ -DCMAKE_OSX_ARCHITECTURES=x86_64 cd build/ cmake --build . --parallel$(sysctl -n hw.ncpu)
  1. 运行(直接传入游戏 eboot.bin 路径):
./shadps4 /"PATH"/"TO"/"GAME"/"FOLDER"/eboot.bin

Docker 容器构建(含 VSCode 支持)

仓库在 documents/Docker Builder/docker-compose.yml 中提供了容器编排文件,镜像内预置了 Clang、CMake、SDL2、Vulkan 等全部构建依赖,宿主无需手动安装任何工具链。

cd <path-to-repo> # 进入含 Docker Builder 目录的仓库根 docker compose up -d # 启动容器 mkdir emu && cd emu git clone --recursive https://github.com/shadps4-emu/shadPS4.git . git submodule update --init --recursive

之后两种构建路径任选:

  • CMake Tools(GUI)CMake Tools > Configure > '>',再Build > '>',产物在Build文件夹;
  • 纯命令行
cmake -S . -B build/ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ cmake --build ./build --parallel $(nproc)

产物位于./build/shadps4。随后在 VSCode 中打开仓库,CMake Tools 扩展会自动识别容器内(或挂载卷上)的构建目录,可直接完成配置、构建与调试。官方文档还提示:容器内使用 Clang 可保证 Linux 与 macOS runner 的构建一致性,跨平台(含 Windows .exe)产物建议交给 GitHub Actions。

命令行使用:参数体系与启动游戏

README "Usage examples" 一节给出了常用的命令行模式,其底层参数解析实现在 src/main.cpp(基于 CLI11 库)。完整参数清单可用--help获取,以下为常用模式与对应源码行为:

shadPS4 CUSA00001 # 在游戏安装目录列表中查找名为 CUSA00001 的游戏文件夹并启动 shadPS4 --fullscreen true --config-clean CUSA00001 # 游戏参数永远放在最后, shadPS4 -g CUSA00001 --fullscreen true --config-clean # ...除非用 -g 显式指定 shadPS4 /path/to/game.elf # 直接启动 PS4 ELF 可执行文件,适合非 eboot.bin 命名的可执行文件 shadPS4 CUSA00001 -- -flag1 -flag2 # 把 '-flag1' '-flag2' 原样传给游戏进程的 argv

位置参数与-gguest_arg位置参数与-g/--game均用于指定"游戏路径或 ID"(src/main.cpp)。当传入的是游戏 ID(如CUSA00900,即美版 Bloodborne)而非实际路径时,主程序会遍历配置的游戏安装目录(EmulatorSettings.GetGameInstallDirs()),用Common::FS::FindGameByID按 ID 递归查找(最大深度 5 层)其 eboot(src/main.cpp)。--之后的所有参数会被完整收集到gameArgs并原样传给游戏(src/main.cpp)。

其他实用参数(源码确认):

参数作用
-p, --patch <file>指定要应用的补丁文件,写入MemoryPatcher::patch_file
-i, --ignore-game-patch禁用游戏补丁的自动加载(MntPoints::ignore_game_patches = true
-b, --big-picture以 Big Picture 模式启动(无参数运行时的推荐入口)
--same-processBig Picture 模式下在相同进程中启动游戏
-f, --fullscreen true\|false切换全屏(仅接受 true/false,其余值报错并退出)
--show-fps显示 FPS 计数器
--config-clean使用 Clean 配置模式(忽略存档与游戏专属配置,仅用出厂默认值)
--config-global使用 Global 配置模式(忽略游戏专属覆盖项)
--add-game-folder <dir>把目录加入游戏安装目录列表并保存后退出
--set-addon-folder <dir>设置附加内容(addon/DLC)安装目录并保存后退出
--mount <src:dst>挂载源目录到目标路径
-e, --env <VAR>向游戏进程传递环境变量
--override-root <dir>覆盖用户根目录(必须是已存在目录)
--wait-for-debugger/--wait-for-pid <pid>等待调试器 / 等待指定进程
--log-append以追加方式写日志(对应日志配置append

无参数直接运行shadPS4会弹出提示框并打印帮助信息:这是一个 CLI 应用,可使用-b进入 Big Picture 模式,或改用 QtLauncher 获取独立 GUI(src/main.cpp)。

从源码调用链看,命令行解析完成后会依次完成:日志初始化(Common::Log::Setup("shadps4.log"))、IPC 初始化(IPC::Instance().Init())、用户设置与密钥管理器加载(UserSettings.Load()/KeyManager::LoadFromFile())、模拟器配置加载(EmulatorSettingsImpl::Load()),最终调用emulator->Run(ebootPath, gameArgs, ...)进入游戏运行流程(src/main.cpp)。

配置文件体系:config.json 与常用参数

README 与 documents/Debugging/Debugging.md 指出:模拟器启动后会在user文件夹生成config.json,通过编辑该文件可精细调整模拟器行为。其序列化与覆盖逻辑定义在 src/core/emulator_settings.h:每个配置项是Setting<T>,支持"出厂默认值 / 全局值 / 游戏专属覆盖值"三层模型(ConfigMode::Default/Global/Clean),这也是--config-clean--config-global两个 CLI 参数的语义来源(emulator_settings.h)。

以下是文档与源码共同确认的值得调整的配置条目:

Log 日志配置

含义与取值
sync是否同步写日志。默认true(保证消息顺序);追求性能可设false;上报问题时建议恢复true以获得有序日志
filter按日志类设置级别,格式<类>:<级别> ...,多个用空格分隔,如Render:Warning Lib.Pad:Error;子类格式同控制台所见(如Core.Linker)。级别顺序trace, debug, info, warning, error, critical, off,设置某级别会屏蔽其之前所有级别并记录其后级别。示例:Lib.Pad:Critical只记录该类的 critical;*:Off Render.Vulkan:Info屏蔽一切但保留 Vulkan 渲染的 Info 级
flush_level达到该级别(含)即触发刷盘
skip_duplicate是否跳过完全相同的日志行(默认true,以Skipped N duplicate messages..提示)
max_skip_duration相同日志行的去重时间窗口(毫秒),默认5'000
append是否追加写日志文件(默认覆盖,也可用 CLI--log-append
separate是否按游戏分文件写到log/{GAME ID}.log(默认写log/shad_log.txt
size_limit日志文件大小上限(字节),默认 100 MB
type仅 Windows:wincolor(WriteConsole*)或msvc(OutputDebugString*),默认wincolor

上述默认值与源码一一对应:sync{true}filter{""}max_skip_duration{5'000}separate{false}size_limit{100_MB}skip_duplicate{true}(emulator_settings.h)。日志实现基于 spdlog,级别枚举在 src/common/logging/log.h 中定义为Trace/Debug/Info/Warning/Error/Critical/Off,与文档描述的过滤语法完全一致。

GPU 与 Vulkan 配置

含义
dump_shaders导出模拟器加载的着色器,导出目录为../user/shader/dumps(默认false
null_gpu关闭渲染(无 GPU 后端输出,用于性能/逻辑测试,默认false
window_width/window_height游戏窗口宽高(默认 1280×720)
full_screen_mode以无边框全屏窗口显示游戏(默认Windowed
present_mode呈现模式,默认Mailbox
hdr_allowed是否允许 HDR(默认false
fsr_enabled/rcas_enabled/rcas_attenuationFSR 超分开关(默认关)、RCAS 锐化开关(默认开)与衰减强度(默认 250)
vblank_frequency垂直同步频率,源码强制下限 30 Hz(emulator_settings.h)
vkvalidation_*Vulkan 校验层相关(enabledcoresyncgpu
renderdoc_enabled安装 RenderDoc 时自动挂钩,便于调试着色器与游戏渲染(默认false

游戏专属覆盖(per-game overrides):从源码可以确认,General/Log/Debug/Input/Audio/GPU/Vulkan各配置组都暴露了GetOverrideableFields(),可对单个字段写入"游戏专属值",并在游戏退出时通过ClearGameSpecificOverrides()恢复全局设置(emulator_settings.h)。这与 README 中"自定义键鼠绑定按游戏分别保存"的说明相互印证。

键盘与鼠标映射(快捷键)

README 提供了完整的默认快捷键表。Mac 用户需用 Command 键代替 Control,并使用 Command+F11 进入全屏,以避免与系统快捷键冲突;部分键盘可能需按住 Fn 才能使用 F* 键。

按键功能
F10FPS 计数器
Ctrl+F10视频调试信息
F11全屏
F12触发 RenderDoc 捕获(若 RenderDoc 不可用则截取游戏画面)
Alt+F12截取包含 HUD/对话框浮层的截图

控制器默认映射(Xbox 与 DualShock 手柄开箱即用):

控制器按键键盘等价键
LEFT AXIS UP / DOWN / LEFT / RIGHTW / S / A / D
RIGHT AXIS UP / DOWN / LEFT / RIGHTI / K / J / L
TRIANGLE / CIRCLE / CROSS / SQUARENumpad 8 或 C / Numpad 6 或 B / Numpad 2 或 N / Numpad 4 或 V
PAD UP / DOWN / LEFT / RIGHT↑ / ↓ / ← / →
OPTIONSRETURN
BACK BUTTON / TOUCH PADSPACE
L1 / R1 / L2 / R2 / L3 / R3Q / U / E / O / X / M

键盘鼠标输入可在设置菜单中点击 Controller 按钮进行自定义,自定义绑定按游戏分别保存;每个绑定最多支持三个按键,还支持鼠标按键、鼠标移动映射到摇杆等高级功能(README 末尾说明)。

固件文件:sys_modules 与 LLE 模块

PS4 游戏依赖部分系统固件模块,shadPS4 需要从sys_modules文件夹加载以下模块才能正常运行游戏。README 给出完整清单(节选),包括:libSceAt9Enc.sprxlibSceAudiodec.sprxlibSceAudiodecCpu*.sprxlibSceAvPlayer.sprxlibSceFont.sprxlibSceFreeType*.sprxlibSceJpegDec/Enc.sprxlibSceJson*.sprxlibSceLibcInternal.sprxlibSceNgs2.sprxlibScePngEnc.sprxlibSceRtc.sprxlibSceRudp.sprxlibSceSystemGesture.sprxlibSceUlt.sprxlibSceWkFontConfig.sprxlibSceXml.sprxlibSceDepth.sprxlibScePadTracker.sprxlibSceMoveTracker.sprx等。

[!Caution] 以上模块是游戏正常运行所必需的,且必须从你合法拥有的 PlayStation 4 主机中提取(dump),请勿分享或下载来源不明的固件文件。

从实现层面看,这些模块对应 src/core/libraries 下各库的 LLE(低级模拟)路径,模拟器会按需加载sys_modules中的 SPRX 文件;配置中的sys_modules_dir(见 emulator_settings.h)即指向该目录。

调试、诊断与问题报告规范

断点调试环境搭建

documents/Debugging/Debugging.md 详细说明了 Windows + Visual Studio 的调试配置流程:

  1. 文件夹方式打开项目(不要手动运行cmake ..之类命令);
  2. 在解决方案资源管理器中切换到CMake Targets View
  3. 右键shadps4 (executable)Set as Startup Item(即可用 F5 调试);
  4. 再右键选择Add debug configuration,在首个configurations条目中加入"args": [],把游戏路径填为参数(如同命令行启动);
  5. 选择合适的 CMake 配置:日常调试选x64-Clang-Debug;需要带优化的 Release 测试建议选x64-Clang-RelWithDebInfo(仍会生成调试符号,便于排查仅在 Release 配置出现的 bug);
  6. Debug > Start Debugging(F5)调试,或Start Without Debugging(Ctrl+F5)测试游戏性能。

Linux 注意:RenderDoc 在 Wayland 下不可用,需以SDL_VIDEODRIVER=x11环境变量运行模拟器。

游戏崩溃时的分析流程

文档给出的标准排查步骤(适用于任何平台):

  1. 分析日志:启动模拟器时默认会打开控制台,输出与日志文件(<emulator executable>/user/log/{shadps4.log, shad_log.txt, {GAME ID}.log})相同的内容。推荐自底向上阅读:末尾是否有指向崩溃原因的 Critical/Error 消息?最后几条是否涉及游戏文件加载?游戏窗口是否画出了画面?随后再从开头扫一遍初始化、内存映射、链接器等错误;若shadps4.log含 error,应随问题一起上报;
  2. 分析堆栈:调试器遇到异常/违规访问时会中断(break)。在堆栈跟踪窗口定位调用链,用 Locals / Watch 窗口检查变量与执行上下文;
  3. 判定崩溃原因:日志并不总能精确指示崩溃原因——部分 error 并非致命,Critical级别最可能对应崩溃点;若堆栈末端是渲染相关函数,基本可断定是渲染问题,视频播放同理;
  4. 识别"有意为之"的崩溃:如果出现写操作的访问违规(access violation),且函数看起来在做内存拷贝,这很可能是模拟器开发者故意抛出的预期异常(用于捕获游戏写入数据的过程),仅存在于开发期构建。此时应:在调试器中排除(忽略)此类访问违规异常后继续运行,观察堆栈、变量与寄存器变化——Release 构建下游戏正常就是这类异常的最佳旁证。

问题报告规范

  • 报告游戏相关问题时,必须给出唯一可识别的游戏名与对应区域的CUSA-xxxxx编码,最好补充版本号(尤其当不同版本行为不同时):
    • 好的命名示例:Amplitude (2016) CUSA02480Rock Band 4 (CUSA02084) v1.0inFamous: Second Son [CUSA-00004]
    • 不理想的示例:The WitnessGTA 5Watch Dogs(无法区分区域/版本)。
  • 小问题或不确定定位时,可到 Discord 的 #development 频道简洁说明发现;兼容性进展建议发布到游戏兼容性追踪器;
  • 不要在模拟器问题追踪器里发布无法在源码中定位的、未经证实的游戏专属问题。好问题示例:"Crash inShader::Gcn::CFG::EmitBlocks(), out of bounds list access"(附堆栈、指向仓库代码);坏示例:"Amplitude crashes on boot, access violation"(重复标题、只谈游戏、拒绝补充细节)。

着色器补丁(Shader Patching)进阶技巧

对于需要修改渲染行为的场景,documents/patching-shader.md 提供了完整的着色器补丁工作流(与dump_shaders/patch_shaders配置项及shader/patch目录配合):

  1. 安装 Vulkan SDK,确保spirv-crossglslc已加入 PATH
  2. config.toml中启用dumpShaders
  3. 运行模拟器收集着色器后,用spirv-cross -V fs_0x000000.spv --output fs_0x000000.glsl把 SPIR-V 反编译为 GLSL;
  4. 按需编辑 GLSL 文件;
  5. glslc --target-env=vulkan1.3 --target-spv=spv1.6 -fshader-stage=frag fs_0x000000.glsl -o fs_0x000000.spv编译回 SPIR-V(务必把-fshader-stage换成与着色器对应的正确阶段,如vert/frag/comp);
  6. 把更新后的.spv放入shader/patch文件夹,文件名与原着色器一致;
  7. 在配置中启用patchShaders后重启模拟器。

社区、贡献与许可

  • 主团队:georgemoralis、psucien、viniciuslrangel、roamic、squidbus、frodo、Stephen Miller、kalaposfos13 等;Logo 由 Xphalnos 设计(README "Main team" 一节)。
  • 贡献方式:阅读 CONTRIBUTING.md 后提交 PR 即可。
  • 特别致谢:README 提及项目受益于 Panda3DS(x64 原生执行 PS4 二进制问题的经验)、fpPS4(PS4 操作系统与库的逆向研究)、yuzu 的 Hades 着色器编译器(作为着色器编译器的蓝本,得以专注现代 AMD GPU 模拟)、felix86 与 emudev.org 社区。
  • 许可证:项目采用GPL-2.0(见 LICENSE),各源文件与文档顶部均带 SPDX 头(如SPDX-License-Identifier: GPL-2.0-or-later)。
  • 版本演进:从 documents/changelog.md 可以看到项目自 2023 年 9 月首个公开版本(v0.0.1)以来的里程碑——v0.1.0 加入着色器重编译器后大量游戏开始可玩,v0.2.0 加入 macOS 支持,v0.3.0 加入作弊/补丁、DLC 与奖杯解锁,v0.4.0 引入帧图(frame graph)、精确 60fps 时序、触摸板支持、IME 与 videodec2 等,印证了 README 中"以小步快跑的方式持续更新"的定位。

通过本文,你已经掌握了 shadPS4 的完整使用链路:选择适合平台的构建方式编译出shadps4可执行文件,用游戏 ID 或 ELF 路径配合--fullscreen--config-clean等参数启动游戏,通过config.json调整日志与渲染行为,依据键盘映射表操作,并在遇到问题时按规范完成调试与上报。项目的详细 Wiki、游戏兼容性列表与最新动态可通过 README 中的链接继续跟进。

【免费下载链接】shadPS4PlayStation 4 emulator for Windows, Linux, macOS and FreeBSD written in C++项目地址: https://gitcode.com/GitHub_Trending/sh/shadPS4

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 21:24:12

Python游戏开发中的碰撞检测原理与优化实践

1. Python游戏开发中的碰撞检测核心原理 碰撞检测是游戏开发中最基础也最关键的物理交互系统。在Python游戏开发中&#xff0c;我们通常使用两种主流实现方式&#xff1a;基于矩形区域的边界检测和基于像素级的精确检测。 1.1 矩形碰撞检测&#xff08;AABB算法&#xff09; …

作者头像 李华
网站建设 2026/9/10 21:17:56

DEM分辨率与精度选择指南:从基础概念到工程实践

1. 数字高程模型基础概念解析 数字高程模型&#xff08;Digital Elevation Model&#xff0c;简称DEM&#xff09;是地理信息系统中最基础也是最重要的空间数据之一。简单来说&#xff0c;DEM就是用数字形式对地形表面进行建模表达的数据集。我第一次接触DEM是在2008年参与一个…

作者头像 李华