Waah! Wh-Wh-Wh-What is it?
ruby (ルビィ) is a PlayStation emulator written in C++.
- CPU
- RAM
- DMA
- GPU
- CDROM
- Interrupts
- Timers
- Controllers and Memory Cards
- GTE
- SPU
- SIO
- PIO
- Controllers only support one digital joypad.
- SPU only supports read/writes to registries, there is no sound output.
- There are a lot of problems with the GPU OpenGL renderer. Notably 24BPP mode and transparent pixel rendering are not working causing many rendering artifacts in some games.
- CD-ROM is missing a lot of commands and only supports single-track games.
- PlayStation BIOS: SCPH1001 (SHA1: 10155d8d6e6e832d6ea66db9bc098321fb5e8ebf)
- GCC 9.2.0 (C++17)
- OpenGL 4.5
- SDL2
$ mkdir build
$ cd build
$ cmake ..
$ make -j8
$ mkdir build
$ cd build
$ cmake -G 'MSYS Makefiles' ..
$ make -j8
$ mkdir build
$ cd build
$ cmake -DHANA=ON ..
$ make -j8
If compiled with GDB support, pressing the backspace key at any time will stop the emulator until GDB is attached to localhost:2109
. You will need a GDB build with support for MIPS little endian.
$ mipsel-unknown-linux-gnu-gdb
$ target remote localhost:2109
$ (gdb) info registers
zero at v0 v1 a0 a1 a2 a3
R0 00000000 00000001 000022bc 1c42220a 00000001 00000001 00000000 00000260
t0 t1 t2 t3 t4 t5 t6 t7
R8 80080000 04000000 050eccf0 5e42220a 40000000 00000008 00008000 00000000
s0 s1 s2 s3 s4 s5 s6 s7
R16 00000027 00000027 00000027 0000000d 0000003c 00000003 00000003 00000003
t8 t9 k0 k1 gp sp s8 ra
R24 000022bc 000022bb 8005aa18 00000f1c a0010ff0 801ffcd8 801fff00 80059d18
sr lo hi bad cause pc
00000001 00000027 00000000 8005aa14 00000020 80059e00
fsr fir
<unavl> <unavl>
For a comprehensive list of supported GDB features, see libHana.
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j8
$ mkdir build
$ cd build
$ cmake -G 'MSYS Makefiles' -DCMAKE_BUILD_TYPE=Release ..
$ make -j8
$ ./build/ruby # with SCPH1001.BIN in $PWD
$ ./build/ruby --exe TESTNAME.exe
amidog CPU tests: psxtest_cpu.exe (SHA1: 023aec8c92aaaf4d3b07956e26dd6c77ff397456)
amidog GTE tests: psxtest_gte.exe (SHA1: 1de49e77203d55ae82a04eecc715bf61bbc5ef9b)
This emulator, like many others, is based on the Nocash PSX Specifications. For ease of access and review purposes, relevant parts of the specification are pasted before the implementation.