A PlayStation (PSX) emulator written in Rust, focusing on a clean, maintainable, and idiomatic codebase.
This project is currently under active development.
- CPU: Basic MIPS R3000A implementation (most instructions supported).
- GPU: Initial WebGPU-based rendering setup (via
wgpu). - Memory: Basic RAM and Interconnect implemented.
- Basic MIPS CPU
- GPU (Rasterization, Shaders)
- SPU (Sound Processing Unit)
- CD-ROM Controller
- MDEC (Motion Decoder)
- Memory Card support
- Accurate Timing & Pipeline Emulation
This project uses:
- wgpu: Cross-platform, safe, pure-Rust graphics API.
- winit: Window handling.
- bytemuck: Casting between plain data types.
- Rust: Ensure you have the latest stable version of Rust installed. Install Rust.
- BIOS: You will need a PlayStation BIOS image (e.g.,
SCPH1001.BIN). Note: These files are copyrighted and cannot be distributed with this emulator.
Clone the repository and build the project:
git clone <repository_url>
cd playstation-emulator
cargo build --releaseTo run the emulator, you need to provide the path to your BIOS file.
# Run the main emulator
cargo run --bin rust_playstation_emulator -- /path/to/your/SCPH1001.BINTo run the graphics test example (Cube):
cargo run --bin cube_examplesrc/bin/: Executable entry points (emulator.rs,cube.rs).src/cpu/: CPU core, registers, and instruction sets.src/gpu/: GPU logic and rendering backend.src/memory/: Memory mapping, RAM, and DMA.src/bios/: BIOS loading and handling.