Skip to content

kaezrr/starpsx

Repository files navigation

StarPSX

StarPSX is a fast, cross-platform PlayStation 1 emulator written entirely in Rust with no external dependencies, making it exceptionally easy to build and highly portable. Available on Linux, Windows, and macOS.

I primarily develop on Linux, so other platform support may be rough at times; feel free to open an issue.

Showcase



See the Compatibility Wiki for the current list of running games.

Installation

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 (it may be outdated because I maintain the package in my free time.)

Building

StarPSX is designed to be lightweight. On Windows and macOS, no additional dependencies are required.

cargo build --release

On Linux, ensure the following development packages are installed:

sudo apt install libudev-dev libasound2-dev

Running

StarPSX requires a PlayStation BIOS image to run. On first launch, go to Settings > BIOS Settings and select your BIOS file.

The recommended BIOS is SCPH-1001 (NTSC-U), this is the version all games are tested against. Other BIOS versions may work but are untested.

StarPSX defaults to a GUI but also supports CLI-based startup:

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
  -f, --full-speed     Run emulator at full speed
  -h, --help           Print help
  -V, --version        Print version

Project Structure

Project Architecture
  • core: Frontend-agnostic library containing the main emulator logic.
  • renderer: Software rasterizer written from scratch.
  • frontend: The main user interface crate implemented using eframe / egui.
  • cue: Cue parsing library written from scratch.
  • procmac: Helpful procedural macros.

Component Status

Component Status Notes
CPU 🟢 Passes most test ROMs
GPU 🟡 Works well with some minor visual bugs in some games
DMA 🟡 Issues with IRQ timings and infinite linked lists
Timers 🟢 Functional but may contain inaccuracies
CDROM 🟡 Some unimplemented commands and timing issues
GTE 🟢 Passes all test ROMs except timing
Gamepad 🟢 Full analog pad support
Memory Card 🟢 Per-title and shared cards implemented
MDEC 🟢 Passes most test ROMs
SPU 🟡 No sweep volume implementation

Acknowledgements

About

A cross-platform Sony PlayStation 1 emulator written in Rust.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project