StarPSX is a free and open-source PlayStation 1 emulator written in Rust. This project is highly work in progress and not yet suitable for playing games end-to-end.
StarPSX features a native cross-platform GUI frontend built using eframe / egui, with a CLI mode and a basic debugger available for automation and development workflows.
GitHub: Download the latest binaries from the official releases.
Arch Linux (AUR):
paru -S starpsx-binStarPSX aims to remain self-contained and depends only on the Rust toolchain.
cargo build --releaseRunning the binary without arguments launches the GUI frontend:
starpsxFrom the GUI you can:
- Select a BIOS image
- Load a game or PS-EXE
- Control emulator state (pause / restart)
- Open the debugger
- View runtime metrics
The CLI can be used to skip the GUI and immediately start emulation and also has other useful flags:
starpsx --help
The project is split into three main crates:
-
core A library crate that hosts the main emulator logic (CPU, GPU, DMA, timers, etc). This crate is frontend-agnostic and can be reused by different UIs.
-
renderer A software rasterizer written from scratch. Used by
coreto draw into a framebuffer. Support for multiple rendering backends (software / hardware) is planned. -
frontend The main binary crate providing the user interface. Currently implemented using
eframe/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 |
| Gamepad | Done | full analog pad support |
| Memory Card | Not started | |
| SPU | Not started | |
| GTE | 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