About `prussia`
Prussia is a Rust-based Software Development Kit (SDK) for the PlayStation 2, enabling developers to write homebrew software in Rust. It leverages Rust's safety and performance to interact with PS2 hardware, including GPU, embedded SIMD units, sound, controller, network, and memory card support. The SDK provides low-level crates such as prussia_rt (runtime), prussia_bios (BIOS access), prussia_debug, prussia_dma (DMA), and prussia_intc (interrupt controller). Development requires a PS2 with Free MCBoot and PS2Link (or PCSX2 emulator with a legal BIOS dump), nightly Rust, MIPS binutils, and a Linux environment. Prussia currently operates in a #![no_std] environment and is not yet available on crates.io.
Key Features
Rust-based SDK for PlayStation 2 homebrew
Supports GPU, embedded SIMD, sound, controller, network, and memory card
No_std environment (no Rust standard library)
Includes runtime (prussia_rt), BIOS access (prussia_bios), debug, DMA, and interrupt controller crates
Example project hello-rs provided
Works on real PS2 hardware via Free MCBoot and PS2Link, or on PCSX2 emulator
Requires nightly Rust and MIPS binutils
Pros & Cons
Pros
- Leverages Rust's memory safety to prevent common bugs like DMA reading unallocated memory
- Competitive performance with C and C++
- PlayStation 2 hardware is cheap (~£40) and widely available
- Capable GPU with embedded SIMD units
- Active community on IRC (#psugnd) and EmuDev Discord
Cons
- Not yet published on crates.io (must use local path)
- Requires nightly Rust and MIPS binutils
- No standard library support (no_std only)
- Real hardware requires Free MCBoot and PS2Link setup
- Linux required (WSL does not work; macOS untested)
Best For
Homebrew game development for PlayStation 2Learning and experimenting with PS2 hardware programmingLow-level embedded systems development on PS2
FAQ
What is Prussia?
Prussia is a Rust SDK for the PlayStation 2, allowing developers to write homebrew software in Rust while leveraging the language's safety and performance.
How do I get started with Prussia?
You need a PS2 with Free MCBoot and PS2Link, or PCSX2 emulator with a legal BIOS dump. Copy ps2.json from the hello-rs project into your project root, add dependencies like prussia_rt, and build with cargo build.
Does Prussia support the Rust standard library?
No, Prussia does not yet support the Rust standard library; development is done in a #![no_std] environment.