StarPSX is a free, open-source PlayStation 1 emulator written in Rust. It features a native cross-platform GUI (eframe/egui) with a built-in debugger.
Warning
This project is currently highly work in progress and is not yet suitable for playing games end-to-end. Many features are incomplete or missing.
Download the latest binaries from the official releases or if you are using an Arch Linux based system, its available on the AUR as the starpsx-bin package.
StarPSX is designed to be lightweight. On Windows and macOS, no additional dependencies are required.
cargo build --releaseOn Linux, ensure the following development packages are installed:
sudo apt install libudev-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev libasound2-devStarPSX defaults to a GUI but also supports CLI-based usage.
Usage: starpsx [OPTIONS] [FILE]
Arguments:
[FILE] File to start the emulator with
Options:
-s, --show-vram Display full VRAM
-a, --auto-run Skip GUI and auto-start the emulator
-d, --debugger-view Show debugger_view on startup
-h, --help Print help
-V, --version Print version
core: Frontend-agnostic library containing the main emulator logic.renderer: Software rasterizer written from scratch (hardware backend planned).frontend: The main user interface crate implemented usingeframe/egui.
| Component | Status | Notes |
|---|---|---|
| CPU | 🟢 Done | passes most test ROMs |
| GPU | 🟢 Done | works well with some bugs |
| DMA | 🟡 Partial | burst and linked-list DMA supported |
| Timers | 🟢 Done | functional but may contain inaccuracies |
| CDROM | 🟡 Partial | boots a few games |
| GTE | 🟢 Done | passes all tests |
| SPU | 🔴 Not started | |
| Gamepad | 🟢 Done | full analog pad support |
| Memory Card | 🔴 Not started | |
| MDEC | 🔴 Not started |
- psx-spx for PlayStation documentation
- jsgroth’s PSX emulator blog posts
- duckstation for behavior comparison
- The folks over at the EmuDev Discord
- Lionel Flandrin's Rustation for GTE reference