65b5013da0
Hacky, but aside from not using glad I'm not sure what else to do. |
||
---|---|---|
.github/workflows | ||
android | ||
CMakeModules | ||
dep | ||
src | ||
.clang-format | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
CMakeLists.txt | ||
CMakeSettings.json | ||
duckstation.sln | ||
LICENSE | ||
README.md |
DuckStation - PlayStation 1, aka. PSX Emulator
Features
- CPU Recompiler/JIT (x86-64 and AArch64)
- Hardware (D3D11 and OpenGL) and software rendering
- Upscaling and true colour (24-bit) in hardware renderers
- "Fast boot" for skipping BIOS splash/intro
- Save state support
- Windows and Linux support - macOS may work, but not actively maintained
- Supports bin/cue images, raw bin/img files, and MAME CMD formats.
- Direct booting of homebrew executables
- Digital and analog controllers for input (rumble is forwarded to host)
- Qt and SDL frontends for desktop
- Qt frontend has graphical configuration, and controller binding
- Automatic content scanning - game titles/regions are provided by redump.org
System Requirements
- A CPU faster than a potato.
- For the hardware renderers, a GPU capable of OpenGL 3.0/OpenGL ES 3.0/Direct3D 11 Feature Level 10.0 and above. So, basically anything made in the last 10 years or so.
- SDL-compatible game controller (e.g. XB360/XBOne)
Downloading and running
Prebuilt binaries of DuckStation for 64-bit Windows are available via GitHub Actions CI. To download:
- Press the tick or cross next to the commit, shown under the "Clone or download" button
- Find "Windows Build" and click "details".
- Find the "Artifacts (1)" button in the top-right corner of the page, under "Fork".
- Download the
duckstation-windows-x64-release
artifact. This is a zip file containing the prebuilt binary.
Once downloaded and extracted, you can launch the Qt frontend from duckstation-qt-x64-ReleaseLTCG.exe
, or the SDL frontend from duckstation-x64-ReleaseLTCG.exe
.
To set up:
- Either configure the path to a BIOS image in the settings, or copy one or more PlayStation BIOS images to the bios/ subdirectory.
- If using the SDL frontend, add the directories containing your disc images by clicking
Settings->Add Game Directory
. - Select a game from the list, or open a disc image file and enjoy.
PlayStation game discs do not contain title information. For game titles, we use the redump.org database cross-referenced with the game's executable code.
This database can be manually downloaded and added as cache/redump.dat
, or automatically downloaded by going into the Game List Settings
in the Qt Frontend,
and clicking Update Redump Database
.
Building
Windows
Requirements:
- Visual Studio 2019
- Clone the respository with submodules (
git clone --recursive
orgit clone
andgit submodule update --init
). - Open the Visual Studio solution
duckstation.sln
in the root, or "Open Folder" for cmake build. - Build solution.
- Binaries are located in
bin/x64
. - Run
duckstation-x64-Release.exe
or whichever config you used.
Linux
Requirements:
- CMake
- SDL2
- Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows.
- Create a build directory, either in-tree or elsewhere.
- Run cmake to configure the build system. Assuming a build subdirectory of
build-release
,cd build-release && cmake -DCMAKE_BUILD_TYPE=Release -GNinja ..
. - Compile the source code. For the example above, run
ninja
. - Run the binary, located in the build directory under
src/duckstation/duckstation
.
Android
NOTE: The Android frontend is still incomplete, not all functionality works and some paths are hard-coded.
Requirements:
- Android Studio with the NDK and CMake installed
- Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows.
- Open the project in the
android
directory. - Select Build -> Build Bundle(s) / APKs(s) -> Build APK(s).
- Install APK on device, or use Run menu for attached device.
Default keyboard bindings
Keyboard bindings are currently not customizable. For reference:
- D-Pad: W/A/S/D or Up/Left/Down/Right
- Triangle/Square/Circle/Cross: I/J/L/K or Numpad8/Numpad4/Numpad6/Numpad2
- L1/R1: Q/E
- L2/L2: 1/3
- Start: Enter
- Select: Backspace
Gamepads are automatically detected and supported. Tested with an Xbox One controller. To access the menus with the controller, press the right stick down and use the D-Pad to navigate, A to select.
Useful hotkeys
- F1-F8: Quick load/save (hold shift to save)
- F11: Toggle fullscreen
- Tab: Temporarily disable speed limiter
- Pause/Break: Pause/resume emulation
- Space: Frame step
- End: Toggle software renderer
- Page Up/Down: Increase/decrease resolution scale in hardware renderers
Tests
- Passes amidog's CPU and GTE tests in both interpreter and recompiler modes, partial passing of CPX tests
Screenshots
Disclaimers
Icon by icons8: https://icons8.com/icon/74847/platforms.undefined.short-title
"PlayStation" and "PSX" are registered trademarks of Sony Interactive Entertainment Europe Limited. This project is not affiliated in any way with Sony Interactive Entertainment.