DuckStation (Source)
DuckStation is an simulator/emulator of the Sony PlayStation(TM) console, focusing on playability, speed, and long-term maintainability. The goal is to be as accurate as possible while maintaining performance suitable for low-end devices. "Hack" options are discouraged, the default configuration should support all playable games with only some of the enhancements having compatibility issues.
A "BIOS" ROM image is required to to start the emulator and to play games. You can use an image from any hardware version or region, although mismatching game regions and BIOS regions may have compatibility issues. A ROM image is not provided with the emulator for legal reasons, you should dump this from your own console using Caetla or other means.
* CPU Recompiler/JIT (x86-64, armv7/AArch32 and AArch64)
* Hardware (D3D11, D3D12, OpenGL, Vulkan) and software rendering
* Upscaling, texture filtering, and true colour (24-bit) in hardware renderers
* PGXP for geometry precision, texture correction, and depth buffer emulation
* Adaptive downsampling filter
* Post processing shader chains
* "Fast boot" for skipping BIOS splash/intro
* Save state support
* Windows, Linux, highly experimental macOS support
* Supports bin/cue images, raw bin/img files, MAME CHD, single-track ECM, MDS/MDF, and unencrypted PBP formats.
* Direct booting of homebrew executables
* Direct loading of Portable Sound Format (psf) files
* Digital and analog controllers for input (rumble is forwarded to host)
* Namco GunCon lightgun support (simulated with mouse)
* NeGcon support
* Qt and NoGUI frontends for desktop
* Automatic updates for Windows builds
* Automatic content scanning - game titles/hashes are provided by redump.org
* Optional automatic switching of memory cards for each game
* Supports loading cheats from existing lists
* Memory card editor and save importer
* Emulated CPU overclocking
* Integrated and remote debugging
* Multitap controllers (up to 8 devices)
* RetroAchievements
* Automatic loading/applying of PPF patches
Requirements (Debian/Ubuntu package names):
- CMake (
cmake
) - SDL2 (
libsdl2-dev
,libxrandr-dev
) - pkgconfig (
pkg-config
) - Qt 5 (
qtbase5-dev
,qtbase5-private-dev
,qtbase5-dev-tools
,qttools5-dev
) - libevdev (
libevdev-dev
) - git (
git
) (Note: needed to clone the repository and at build time) - When Wayland is enabled (default):
libwayland-dev
libwayland-egl-backend-dev
extra-cmake-modules
- Optional for RetroAchievements (on by default): libcurl (
libcurl4-gnutls-dev
) - Optional for framebuffer output: DRM/GBM (
libgbm-dev
,libdrm-dev
) - Optional for faster building: Ninja (
ninja-build
)
- Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows (
git clone https://github.com/stenzek/duckstation.git -b dev
). - Create a build directory, either in-tree or elsewhere.
- Run CMake to configure the build system. Assuming a build subdirectory of
build-release
, runcmake -Bbuild-release -DCMAKE_BUILD_TYPE=Release
. If you have installed Ninja, add-GNinja
at the end of the CMake command line for faster builds. - Compile the source code. For the example above, run
cmake --build build-release --parallel
. - Run the binary, located in the build directory under
bin/duckstation-qt
.