Experimental Sony PlayStation 2 emulator and debugger
Warning
This emulator is under development, it can only run a very small number of commercial games
Iris has a graphical user interface and also supports launching from the command line:
Usage: iris [OPTION]... <path-to-disc-image>
-b, --bios Specify a PlayStation 2 BIOS dump file
--rom1 Specify a DVD player dump file
--rom2 Specify a ROM2 dump file
-d, --boot Specify a direct kernel boot path
-i, --disc Specify a path to a disc image file
-x, --executable Specify a path to an ELF executable to be
loaded on system startup
--slot1 Specify a path to a memory card file to
be inserted on slot 1
--slot2 Specify a path to a memory card file to
be inserted on slot 2
-h, --help Display this help and exit
-v, --version Output version information and exit
Launching a game or executable through the GUI is also very easy, just go to Iris > Open... and pick a disc image or ELF executable.
Building the emulator should be pretty straightforward, just recursively clone the repository and follow the steps:
Building for Linux targets requires SDL2, you may use apt
on Debian-based distros to obtain it. You will also need a Python interpreter (and python-is-python3
)
sudo apt update
sudo apt upgrade
sudo apt install libsdl2-dev python3 python-is-python3
Then just run the following commands:
git clone https://github.com/allkern/iris --recursive
cd iris
./setup-gl3w.sh
make -j8
Our Windows build system currently targets GCC only, you can get a toolchain through MSYS2 or MinGW. You will additionally need to install a Python interpreter so build-deps
can execute the gl3w download script.
Once that's done, just execute the following commands:
git clone https://github.com/allkern/iris --recursive
cd iris
./build-deps.ps1
./build-win.ps1
Warning
Iris should support macOS but hasn't been fully tested yet
Building on macOS requires SDL2 and dylibbundler
, you may install both using brew
but keep in mind macOS builds aren't actively tested and may not work.
git clone https://github.com/allkern/iris --recursive
cd iris
./setup-gl3w.sh
./build.sh
Booting a small number of commercial games in-game, and a slightly bigger set of games can boot to the title screen. Most of them do nothing though, an the ones that do usually run way too slow to be playable.
Pretty much all BIOSes I've tried work just fine, even some obscure ones like the Chinese BIOS and the PSX DESR BIOS (more on this later).
It is also possible to specify paths to ROM1 (DVD player) and ROM2 (Chinese extensions, required for the Chinese BIOS).
The only caveat is that none of them render any background graphics when booting, and the little orbs and 3D models. This is probably due to my terrible VU emulation and might be fixed soon.
Support for the PSX DESR console is early but somewhat functional. The DESR BIOS plays the boot animation but later fails some sort of diagnostic test. The DESR requires Flash, ATA and MagicGate emulation, which Iris doesn't yet support.
Booting to the XMB should be possible once these features are implemented, and is one of my medium-term goals for this project.
If you want to try it for yourself, you need to dump the BIOS out of your PSX console, then just clone the desr
branch, build the emulator and set up the BIOS, ROM1 and ROM2 dumps in Settings > BIOS, or through the command line.
I would like to thank the emudev Discord server, Ziemas, Nelson (ncarrillo), cakehonolulu, PSI-rockin, noumi and the PCSX2 team for their kind support.
This project makes use of ImGui, gl3w, toml++, Portable File Dialogs and stb_image
This console is significantly more complex compared to the PS1, here's a rough list of components:
π‘ EE (R5900) CPU
- π‘ FPU
- π‘ MMI (SIMD)
- π‘ TLB
- π‘ DMAC
- π’ INTC
- π‘ Timers
- π’ GIF
- π‘ GS
- π‘ VU0
= π‘ Macro mode
= π‘ Micro mode
= π΄ VIF0
- π‘ VU1 (always micro mode)
= π‘ VIF1
- π‘ IPU
π’ IOP (R3000) CPU
- π‘ DMAC
- π’ INTC
- π‘ Timers
- π’ CDVD
- π’ SIO2 (controllers and Memory Cards)
- π’ SPU2
- π‘ DEV9
- π‘ USB/FireWire?
- π΄ Ethernet
- π΄ PS1 backcompat (PS1 hardware)
π‘ SIF