Noctane: a highly WIP original PlayStation emulator
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.