Noctane: a highly WIP original PlayStation emulator

80 points norepimorphism

Inspired by the first release of a Game Boy emulator that I came across on r/rust yesterday, I decided I should share what has been achieved thus far on my PSX emulator, which has been in the works for the past month and a half. While I know PlayStation emulators already exist, and some have even been written in Rust, I decided it would be a great learning project.

Currently, Noctane is a fairly-complete implementation of the PSX CPU and CPU bus, and some I/O registers have been partly implemented (e.g., timers, DMAs). The GPU, Geometry Transformation Engine (GTE), and Sound Processing Unit (SPU) are nearly wholly unimplemented. I also wrote a CD-ROM reader that can list the file hierarchy of ISO images.

Noctane offers a CLI debugger, which is capable of setting and clearing breakpoints based on address or symbol; printing the contents of I/O registers, CPU registers, and the I-cache; and stepping execution either discretely or continuously. Noctane also provides a cross-platform, native-feeling GUI application, although it is far from complete.

Alas, there are no graphics yet. :(

But, here's some screenshots of the Sony BIOS running!

Standard Output \(\stdout\\\) during the Sony BIOS, as viewed in the debugger.

The instruction cache \(I-cache\) during the Sony BIOS, as viewed in the debugger.

See the code here. Documentation for the CPU is mostly there, but it's lacking in some areas.

As this is a personal project, I will not be accepting many PRs outside bug fixes and documentation corrections or additions.