https://github.com/kaezrr/starpsx
A WIP PlayStation 1 emulator written in Rust.
https://github.com/kaezrr/starpsx
egui emulation playstation
Last synced: 16 days ago
JSON representation
A WIP PlayStation 1 emulator written in Rust.
- Host: GitHub
- URL: https://github.com/kaezrr/starpsx
- Owner: kaezrr
- License: gpl-3.0
- Created: 2025-06-12T11:35:10.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-02-22T17:40:40.000Z (22 days ago)
- Last Synced: 2026-02-22T22:16:48.366Z (22 days ago)
- Topics: egui, emulation, playstation
- Language: Rust
- Homepage:
- Size: 3.63 MB
- Stars: 223
- Watchers: 7
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-emulators - StarPSX
README
# StarPSX
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.
**See the [Compatibility Wiki](https://github.com/kaezrr/starpsx/wiki/Compatibility) for a list of working games**
## Installation
Download the latest binaries from the [official releases](https://github.com/kaezrr/starpsx/releases/latest) or if you are using an Arch Linux based system, its available on the AUR as the `starpsx-bin` package.
## Building
StarPSX is designed to be lightweight. On Windows and macOS, no additional dependencies are required.
```sh
cargo build --release
```
On Linux, ensure the following development packages are installed:
```sh
sudo apt install libudev-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev libasound2-dev
```
## Usage
StarPSX 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
```
## Project Structure
- **`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 using `eframe` / `egui`.
## Component Status
| 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 | |
## Acknowledgements
- 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