Skip to content

allkern/iris

Repository files navigation

🐣 Iris

Experimental Sony PlayStation 2 emulator and debugger

Screenshots

Usage

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

Building the emulator should be pretty straightforward, just recursively clone the repository and follow the steps:

Linux

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

Windows

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

macOS

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

Progress

Commercial games

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.

BIOS

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.

PSX DESR

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.

Special thanks and acknowledgements

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

Components

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

About

Experimental PlayStation 2 emulator

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages