DuckStation - PlayStation 1,又称 PSX 模拟器
Windows 10/11 (x64/ARM64)、Linux (AppImage/Flatpak) 和 macOS (11.0+ 通用版) 的最新构建: https://github.com/stenzek/duckstation/releases/tag/latest
Discord 服务器: https://www.duckstation.org/discord.html
DuckStation 是一个索尼 PlayStation(TM) 游戏机的模拟器/仿真器,注重可玩性、速度和长期可维护性。其目标是在保持适合低端设备性能的同时尽可能准确。不鼓励使用"黑客"选项,默认配置应该支持所有可玩的游戏,只有一些增强功能可能存在兼容性问题。
启动模拟器并玩游戏需要一个"BIOS"ROM 镜像。您可以使用任何硬件版本或地区的镜像,尽管游戏地区和 BIOS 地区不匹配可能会出现兼容性问题。出于法律原因,模拟器不提供 ROM 镜像,您应该使用 Caetla 或其他方法从您自己的游戏机中提取。
功能
DuckStation 具有使用 Qt 构建的功能齐全的前端,以及基于 Dear ImGui 的全屏/电视用户界面。
其他功能包括:
- CPU 重编译器/JIT(x86-64、armv7/AArch32、AArch64、RISC-V/RV64)。
- 硬件(D3D11、D3D12、OpenGL、Vulkan、Metal)和软件渲染。
- 硬件渲染器中的上采样、纹理过滤和真彩色(24 位)。
- 通过光栅化顺序视图/片段着色器互锁实现精确混合。
- PGXP 用于几何精度、纹理校正和深度缓冲模拟。
- 自适应运动去隔行。
- 自适应下采样滤波器。
- 后处理着色器链(GLSL 和 Reshade FX)。
- "快速启动"以跳过 BIOS 启动画面/介绍。
- 支持保存状态,具有预运行和倒带功能。
- 支持 Windows、Linux、macOS。
- 支持直接从 CD、bin/cue 镜像、原始 bin/img 文件、MAME CHD、单轨 ECM、MDS/MDF 和未加密的 PBP 格式读取。
- 将光盘镜像预加载到 RAM 以避免磁盘休眠引起的卡顿。
- 自动加载/应用 PPF 补丁。
- 直接启动自制可执行文件。
- 直接加载便携式声音格式(psf)文件。
- 数字和模拟控制器输入(震动反馈传递给主机)。
- 支持 GunCon 和 Justifier 光枪(用鼠标模拟)。
- 支持 NeGcon。
- Qt 和"大屏幕"用户界面。
- 自动更新,包括预览和最新版本通道。
- 自动内容扫描 - 游戏标题/哈希由 redump.org 提供。
- 可选的每个游戏自动切换记忆卡。
- 支持从现有列表加载作弊码。
- 记忆卡编辑器和存档导入器。
- 模拟 CPU 超频。
- 集成和远程调试。
- 多接口控制器(最多 8 个设备)。
- RetroAchievements。
- Discord Rich Presence。
- 使用 Media Foundation(Windows)和 FFmpeg(所有平台)后端的视频捕获。
系统要求
- 比土豆快的 CPU。但需要是 x86_64(SSE4.1)、AArch32/armv7、AArch64/ARMv8 或 RISC-V/RV64。
- 对于硬件渲染器,需要支持 OpenGL 3.1/OpenGL ES 3.1/Direct3D 11 功能级别 10.0(或 Vulkan 1.0)及以上的 GPU。基本上是过去 10 年左右生产的任何 GPU。
- SDL、XInput 或 DInput 兼容的游戏控制器(如 XB360/XBOne/XBSeries)。Windows 上的 DualShock 3 用户需要安装 PlayStation Now 中包含的官方 DualShock 3 驱动程序。
下载和运行
DuckStation 的 Windows x64/ARM64、Linux x86_64(AppImage/Flatpak 格式)和 macOS 通用二进制文件可通过 GitHub Releases 获得,并在每次提交/推送时自动构建。通过其他来源分发的二进制文件或包可能已过时,开发者不提供支持,请向这些分发者寻求支持,而不是我们。
对于 x86 机器(大多数系统),您需要支持 SSE4.1 指令集的 CPU。这包括 2007 年后生产的所有 CPU。如果您想在较旧的 CPU 上使用 DuckStation,v0.1-6995 是最后一个不需要 SSE4.1 的版本。
Windows
DuckStation 要求 Windows 10/11,特别是 1809 版本或更新版本。如果您仍在使用 Windows 7/8/8.1,DuckStation 将无法在您的操作系统上运行。在 2023 年继续使用这些操作系统应被视为安全风险,我建议您更新到受供应商支持的系统。 如果您必须使用较旧的操作系统,v0.1-5624 是最后一个可以运行的版本。但不要期望得到任何帮助,这些构建不再受支持。 下载步骤:
- 前往 https://github.com/stenzek/duckstation/releases/tag/latest,下载 Windows x64 版本。这是一个包含预编译二进制文件的 zip 压缩包。
- 或者,直接下载链接:https://github.com/stenzek/duckstation/releases/download/latest/duckstation-windows-x64-release.zip
- 将压缩包解压到一个子目录中。压缩包没有根子目录,所以如果不解压到子目录,直接解压到当前目录会在下载目录中散落一堆文件。
下载并解压后,您可以通过运行 duckstation-qt-x64-ReleaseLTCG.exe
来启动模拟器。按照设置向导开始使用。
如果出现缺少 vcruntime140_1.dll
的错误,您需要更新 Visual C++ 运行时。 您可以从以下页面进行更新:https://support.microsoft.com/en-au/help/2977003/the-latest-supported-visual-c-downloads。具体来说,您需要 x64 运行时,可以从 https://aka.ms/vs/17/release/vc_redist.x64.exe 下载。
Linux
Linux 版本的 DuckStation 仅支持发布页面中的 AppImage 和 Flatpak。如果您从其他来源或发行版(例如 EmuDeck)安装了 DuckStation,请联系打包者寻求支持,我们无法控制这些版本。
Flathub 上的发布版本是官方的,与 GitHub 上的最新滚动/稳定版本同步。
您不应该从非官方仓库(如 AUR)安装 DuckStation,这些版本已知存在问题。
AppImage
AppImage 需要与 Ubuntu 22.04 或更新版本相当的发行版才能运行。
- 前往 https://github.com/stenzek/duckstation/releases/tag/latest,下载
duckstation-x64.AppImage
。 - 对下载的 AppImage 运行
chmod a+x
命令 -- 完成此步骤后,AppImage 可以像普通可执行文件一样运行。
Flatpak
- 前往 https://github.com/stenzek/duckstation/releases/tag/latest,下载
duckstation-x64.flatpak
。 - 运行
flatpak install ./duckstation-x64.flatpak
。
或者,如果您已设置 FlatHub:
- 运行
flatpak install org.duckstation.DuckStation
。
使用 flatpak run org.duckstation.DuckStation
启动,或在桌面环境的启动器中选择 DuckStation
。按照设置向导开始使用。
macOS
提供适用于 x64 和 ARM64(Apple Silicon)的通用 macOS 构建版本。
需要 macOS Big Sur(11.0)或更高版本,这也是 Qt 的最低要求。
下载步骤:
- 前往 https://github.com/stenzek/duckstation/releases/tag/latest,下载
duckstation-mac-release.zip
。 - 双击解压 zip 文件。
- 打开 DuckStation.app,也可以先将其移动到您想要的位置。
- 根据 GateKeeper 配置,首次运行时可能需要右键点击 -> 打开,因为对于一个没有收入的项目来说,代码签名证书是不可能的。
Android
您需要一台搭载 armv7(32 位 ARM)、AArch64(64 位 ARM)或 x86_64(64 位 x86)的设备。推荐使用 64 位,32 位的要求更高,您可能需要至少 1.5GHz 的 CPU。
从 Google Play 下载:https://play.google.com/store/apps/details?id=com.github.stenzek.duckstation APK 和测试版下载:https://www.duckstation.org/android/
不提供 Android 应用的支持,它是免费的,您的期望应该与此相符。请不要就相关问题给我发邮件或寻求帮助,您将被忽略。
使用方法:
- 安装并首次运行应用。
- 按照设置向导操作。
如果您有外部控制器,需要在设置中映射按钮和摇杆。
LibCrypt 保护和 SBI 文件
许多 PAL 地区游戏使用 LibCrypt 保护,需要额外的 CD 子通道信息才能正常运行。LibCrypt 不起作用通常表现为游戏卡住或崩溃,但有时也会影响游戏玩法,具体取决于游戏如何实现它。
对于这些游戏,请确保 CD 映像及其对应的 SBI(.sbi)文件具有相同的名称,并放在同一目录中。当 DuckStation 在 CD 映像旁找到 SBI 文件时,会自动加载它。
例如,如果您的光盘映像名为 Spyro3.cue
,您应该将 SBI 文件放在同一目录下,并将其命名为 Spyro3.sbi
。
也支持带有内置子通道信息的 CHD 映像。
构建
Windows
要求:
- Visual Studio 2022
- 克隆仓库:
git clone https://github.com/stenzek/duckstation.git
。 - 从 https://github.com/stenzek/duckstation-ext-qt-minimal/releases/download/latest/deps-x64.7z 下载依赖包,并解压到
dep\msvc
。 - 在根目录中打开 Visual Studio 解决方案
duckstation.sln
,或使用"打开文件夹"进行 cmake 构建。 - 构建解决方案。
- 二进制文件位于
bin/x64
目录。 - 运行
duckstation-qt-x64-Release.exe
或您使用的其他配置。
Linux
必需依赖
Ubuntu/Debian 软件包名称:
build-essential clang cmake curl extra-cmake-modules git libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdecor-0-dev libegl-dev libevdev-dev libfontconfig-dev libfreetype-dev libgtk-3-dev libgudev-1.0-dev libharfbuzz-dev libinput-dev libopengl-dev libpipewire-0.3-dev libpulse-dev libssl-dev libudev-dev libwayland-dev libx11-dev libx11-xcb-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor-dev libxcb-damage0-dev libxcb-glx0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinput-dev libxcb-xkb-dev libxext-dev libxkbcommon-x11-dev libxrandr-dev lld llvm ninja-build pkg-config zlib1g-dev
Fedora 软件包名称:
alsa-lib-devel brotli-devel clang cmake dbus-devel egl-wayland-devel extra-cmake-modules fontconfig-devel gcc-c++ gtk3-devel libavcodec-free-devel libavformat-free-devel libavutil-free-devel libcurl-devel libdecor-devel libevdev-devel libICE-devel libinput-devel libSM-devel libswresample-free-devel libswscale-free-devel libX11-devel libXau-devel libxcb-devel libXcomposite-devel libXcursor-devel libXext-devel libXfixes-devel libXft-devel libXi-devel libxkbcommon-devel libxkbcommon-x11-devel libXpresent-devel libXrandr-devel libXrender-devel lld llvm make mesa-libEGL-devel mesa-libGL-devel ninja-build openssl-devel patch pcre2-devel perl-Digest-SHA pipewire-devel pulseaudio-libs-devel systemd-devel wayland-devel xcb-util-cursor-devel xcb-util-devel xcb-util-errors-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel xcb-util-wm-devel xcb-util-xrm-devel zlib-devel
构建
- 克隆仓库:
git clone https://github.com/stenzek/duckstation.git
,cd duckstation
。 - 构建依赖项。如果你愿意,可以将它们保存在树外。这将需要一段时间。
scripts/deps/build-dependencies-linux.sh deps
。 - 运行 CMake 配置构建系统。假设构建子目录为
build-release
,运行cmake -B build-release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_PREFIX_PATH="$PWD/deps" -G Ninja
。如果你想要发布(优化)版本,请包含-DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
。 - 编译源代码。对于上面的示例,运行
ninja -C build-release
。 - 运行二进制文件,位于构建目录下的
./build-release/bin/duckstation-qt
。
macOS
要求:
- CMake
- Xcode
- 克隆仓库:
git clone https://github.com/stenzek/duckstation.git
。 - 构建依赖项。这将需要一段时间。
scripts/deps/build-dependencies-mac.sh deps
。 - 运行 CMake 配置构建系统:
cmake -Bbuild-release -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$PWD/deps"
。 - 编译源代码:
cmake --build build-release --parallel
。 - 运行二进制文件,位于构建目录下的
bin/DuckStation.app
。
用户目录
"用户目录"是你应该放置 BIOS 映像的地方,设置会保存在这里,默认情况下也会在这里保存记忆卡和保存状态。 可选的 SDL 游戏控制器数据库文件 也可以放在这里。
根据你使用的平台,这个目录位于以下位置:
- Windows:我的文档\DuckStation
- Linux:
$XDG_DATA_HOME/duckstation
,或~/.local/share/duckstation
。 - macOS:
~/Library/Application Support/DuckStation
。
因此,如果你使用 Linux,你应该将 BIOS 映像放在 ~/.local/share/duckstation/bios
中。首次运行 DuckStation 时会创建这个目录。
如果你希望使用"便携式"构建,即用户目录与可执行文件位于同一位置,请在 DuckStation 可执行文件所在的目录中创建一个名为 portable.txt
的空文件。
Qt 前端的按键绑定
你的键盘或游戏控制器可以用来模拟各种 PlayStation 控制器。控制器输入支持通过 DInput、XInput 和 SDL 后端,可以在 设置 -> 常规设置
中更改。
要绑定你的输入设备,请转到 设置 -> 控制器
。模拟控制器的每个按钮/轴都会列出,旁边是当前绑定的设备上对应的键/按钮。要重新绑定,点击按钮/轴名称旁边的框,然后按下你想要绑定的输入设备上的键或按钮。绑定震动时,只需按下你希望发送震动的控制器上的任意按钮。
SDL 游戏控制器数据库
DuckStation 发布版本附带了 SDL 控制器后端的游戏控制器映射数据库,由 https://github.com/mdqinc/SDL_GameControllerDB 提供。包含的 gamecontrollerdb.txt
文件可以在 DuckStation 程序目录的 resources
子目录中找到。
如果你在使用 SDL 控制器后端绑定控制器时遇到问题,可能需要在数据库文件中添加自定义映射。复制 gamecontrollerdb.txt
并将其放在你的用户目录中(或者如果在便携模式下运行,直接放在程序目录中),然后按照 SDL_GameControllerDB 仓库中的说明创建新的映射。将此映射添加到新的 gamecontrollerdb.txt
副本中,然后你的控制器应该就能被正确识别了。
默认按键设置
控制器1:
- 左摇杆: W/A/S/D
- 右摇杆: T/F/G/H
- 方向键: 上/左/下/右
- 三角形/方形/圆形/叉号: I/J/L/K
- L1/R1: Q/E
- L2/R2: 1/3
- L3/R3: 2/4
- 开始键: 回车
- 选择键: 退格
快捷键:
- Esc键: 打开暂停菜单
- F11: 切换全屏模式
- Tab键: 临时禁用速度限制器
- 空格键: 暂停/恢复模拟
免责声明
图标来自icons8: https://icons8.com/icon/74847/platforms.undefined.short-title
"PlayStation"和"PSX"是Sony Interactive Entertainment Europe Limited的注册商标。本项目与Sony Interactive Entertainment没有任何关联。