Skip to content

IOP reboot

Rick Gaiser edited this page Mar 5, 2025 · 1 revision

The IOP reboot is where the magic happens. Main goal is to replace the cdvdman and cdvdfsv with custom modules that emulate the CDVD. The EE is in charge of performing the reboot. We change the IOP reboot command in the EE_CORE by adding our own replacement modules, provided by the "image driver" at img0:

  • Change SifIopReset("", 0) to SifIopReset("img0", 0)
  • Change SifIopReset("cdrom0:modules/ioprp.img", 0) to SifIopReset("cdrom0:modules/ioprp.img img0", 0)

The following chapters describe at what moment the IOP is rebooted, how and why.

Neutrino BE to LE (optional)

When neutrino is started without the -qb QuickBoot option, an extra IOP reboot is needed to get access to the BSD (Backing Store Device) containing the ISO image.

SifIopReset("", 0)

Neutrino LE to EE

When neutrino changes from Load Environment (LE) to Emulation Environment (EE) the first IOP reboot happens. There is no game IOPRP image yet. After this first reboot the emulated CDVD will become available, and the game ELF can be loaded from there.

SifIopReset("img0", 0)

Game requested IOP reboot

One of the first things every game does, is reboot the IOP with updated modules. This will update all builtin IOP modules to the latest version at the time of game developement. This reboot can be problematic becouse the state of the IOP is unknown:

  • A lot of IOP memory can be used, leaving not enough room to reboot with replacement modules.
  • The IOP can already be halfway a reboot, no longer responding to RPC requests, needed for loading the "image driver".

For this reason, a 3 stage reboot is the safest (and slowest) solution:

SifIopReset("", 0);                              // Reboot back to BIOS
SifIopReset("img0", 0);                          // Reboot with neutrino modules
SifIopReset("cdrom0:modules/ioprp.img img0", 0); // Reboot with neutrino modules AND game modules

The first reboot does not require RPC services or memory, but after reboot we don't have access to the game's IOPRP. The second reboot makes the emulated CDVD available, but the game's IOPRP is not yet loaded. The third reboot will reboot with both emulated CDVD and the game's updated modules.

Clone this wiki locally