In-Game Reset (IGR)
In-Game Reset lets you leave a running game — or power the console off — without touching the console's own Reset button. It is a controller shortcut that works from inside the game.
RiptOPL installs a small hook into the running game that watches the controller for a reserved button combination. When it sees one, it tears the game down and either leaves for the PS2 browser (or the ELF set in IGR Path) or shuts the console down.
The button combinations
Every combination starts the same way: hold all four shoulder buttons — L1 + L2 + R1 + R2 — and then, while still holding them, press the second half.
| Hold | Then press | Result |
|---|---|---|
| L1 + L2 + R1 + R2 | Start + Select | Reset — quit the game; see Where a reset takes you |
| L1 + L2 + R1 + R2 | L3 + R3 | Power off the console |
| L1 + L2 + R1 + R2 | Up | In-game screenshot — see Screenshots |
L3 and R3 are the analog-stick clicks, so the power-off combination needs a DualShock with the analog light on.
The console power button
The power button on the front of the console is hooked too, and does not need a controller:
| Power button | Result |
|---|---|
| Press once | Power off |
| Press twice | Reset — the same as Start + Select |
The second press has to land within about a second — RiptOPL waits ~50 polling frames after the first press to see whether another arrives, then acts on the count. A hardware status held across several frames counts as one press.
Where a reset takes you
With the IGR Path setting (Settings → General & System) left blank, a reset exits to the PS2 browser, the same place the menu's own Exit goes. It does not come back to RiptOPL by itself.
Point IGR Path at an ELF and that ELF is booted on reset instead: another launcher, a homebrew menu, or
RiptOPL itself. To come straight back to RiptOPL, give it RiptOPL's own ELF —
mc0:/APP_RIPTOPL/RIPTOPL.ELF if you imported APP_RIPTOPL.psu to the first memory card.
RiptOPL then starts fresh. It does not restore what you had selected: Remember Last Played Game
(Settings → General & System) is a separate setting, off by default, and it is what re-selects the last
game you ran.
The ELF must live on a memory card (mc0: or mc1:) or on a FAT32 USB drive
(mass:/…). After a reset the console can only reach USB through USBD.IRX and
USBHDFSD.IRX in the memory card's SYS-CONF folder, the files FMCB installs; without them the
reset drops to the PS2 browser instead. If they are missing, RiptOPL offers to copy its own there the first time you
launch a game on the OPL core with a USB IGR Path (Neutrino has no IGR, so its launches never ask). It never replaces
files that are already there. Games started by Auto Loading skip the offer, because nobody is at the menu to
answer it: launch a game on the OPL core from the menu once, or copy the two files yourself, before relying on a USB
IGR Path there.
This limits the return ELF's location, not the game's source. OPL-core PS2 games on internal
exFAT use the same IGR hook as other OPL transports. The reset loader does not restore internal exFAT
for an ata: return path. Test with a blank IGR Path (PS2 browser) or a memory-card ELF to
distinguish a failed return target from a combination that is not detected.
If you use MMCE cards, IGR Bootcard Slot(s) (Settings → Game Sources → MMCE Settings) additionally sends a "switch to bootcard" command to slot 0, slot 1, both, or neither as the reset happens, so the card is already back on its boot image by the time the next thing loads. See MMCE.
When IGR is not available
IGR is not universal. It is worth knowing the three cases where the combinations will do nothing, so you do not spend time hunting a fault that is not there.
Before the game opens a controller
The hook attaches by patching the game's own scePadPortOpen / scePad2CreateSocket
call. Until the game asks for a pad, there is nothing hooked — so IGR does not respond during very early boot
logos on some titles. The console power button is independent of the pad buffer, subject to the
hardware limits above.
When the game is incompatible
A few games handle input in a way the hook disturbs. Per-game compatibility Mode 6 — Disable IGR turns the hook off for that title. If a game misbehaves in a way that started when you launched it through RiptOPL, this is the mode to try — at the cost of losing IGR for that game. See Per-game Settings.
Fewer games should need it now. IGR used to watch the pad from a VBLANK interrupt handler, and merely registering one black-screened some games (Fatal Fury: Battle Archives Volume 2), whatever the handler did. It now samples pad and power inputs directly from a short EE timer alarm about once a frame, and registers nothing on VBLANK (official OPL #1762, adapted here). A separate worker handles shutdown; high-priority game threads cannot starve the input sample. Standard builds retain a detected request in a semaphore until the worker consumes it.
The RetroAchievements loader needs a VBLANK interrupt for its memory snapshots and unlock notice. With IGR enabled it uses the combined RA/IGR handler. Mode 6 instead permits a snapshot-only handler when telemetry is active, without an IGR worker or pad hooks; client-triggered reset is unavailable. Games that reject any VBLANK handler may still be affected.
If initial alarm registration or rearming fails, standard-build IGR stops monitoring controller and power-button inputs until a later pad-open successfully registers an alarm. It does not spin a recovery thread; without another pad-open, IGR remains unavailable for the session.
Under the Neutrino core
PS1 titles do not use RiptOPL's PS2 IGR hook. POPSTARTER supplies its own reset behavior; Ember does not provide IGR. See PS1 Games and the sister POPStarter docs.
In-game screenshots (IGS)
The L1+L2+R1+R2 + Up combination captures the current frame to a bitmap on memory card slot
1, named from the game's ID with a zero-padded sequence number starting at 001 — for example
mc1:/SLUS_012.34_GS(001).bmp. The number increments to a maximum of 255 per game.
Two conditions gate it, and both catch people out:
- GSM must be enabled for the running game. The capture is gated on the game's GSM setting, so with GSM off the combination does nothing at all.
- The build must include IGS. The
MakefiledefaultsEXTRA_FEATURESto0andIGSfollows it, and the main release loader is built with that default — so the loader most people run has no IGS and the Up combination is simply inert.
RIPTOPL-VARIANTS-*.zip, the
variants named -extra1 are built with EXTRA_FEATURES=1, which turns IGS on; they
come in pademu0/pademu1 and optional -ds5 flavours. Building from
source with make IGS=1 works too. See Releases.RIPTOPL-RetroAchievements-*.zip) is deliberately built without EXTRA_FEATURES:
GSM 1080p plus IGS and RA will not both fit in the console's ram84 region. You can have
achievements or in-game screenshots, not both. See RetroAchievements.The in-game menu (beta)
Settings → Game Launching → In-Game Menu (Beta), off by default. With it on, L1 + L2 + R1 + R2 + Start + Select no longer leaves the game at once: it pauses the game under a small panel. NOT TESTED on hardware yet: please report games where pausing misbehaves.
| Item | What it does |
|---|---|
| Resume | Back to the game, exactly where it stopped. Start or the back button also resume. |
| Cheats | Only when the game was started with cheats on. Every cheat of the game's .cht file, ON or OFF; the confirm button switches one, the back button returns. Changes apply when you resume. |
| Achievements | RetroAchievements editions only. How many of the game's achievements you have unlocked and how many are left. The confirm button opens Left To Hunt: the locked ones one at a time, with points and how to earn each; Up and Down page through them. |
| Exit Game | What the combination always did: leave for the IGR Path (or the PS2 browser). Press confirm twice. |
| Power Off | Turns the console off. Press confirm twice. |
Up and Down move; the confirm and back buttons are the ones the loader's own menus use. The console's power button still works while the menu is open: once powers off, twice exits.
Cheats, live
The game's .cht file is read when the game starts (Cheats on in the game's settings, as before);
every cheat comes along, ticked or not, and the menu turns them on and off while you play, without a restart.
- OFF stops a cheat writing; it does not undo it. A value it wrote (health, money) stays until the game changes it, and a cheat that patches the game's code (widescreen, "always run") stays patched until the game reloads that code.
- The master code (the
9…hook line) is always in, ticked or not: the cheat engine can only plant its hook when the game starts. - The ticked cheats must fit the engine's 250 codes. A cheat that would not fit stays OFF and the page says FULL: TURN ONE OFF FIRST. The page lists up to 64 cheats (512 codes in all).
- The cheat engine has not run in this game yet means the master code's hook never matched: no cheat is being applied. Check the master code for your version of the game.
- Not applied yet means the engine was applying codes when you paused; resume and open the menu again.
Achievements, Left To Hunt
RetroAchievements editions, xeRAbora mode. The menu cannot ask the PC while the game is paused, so it shows the
list as the loader last saw it: open the game's achievements in the loader (View achievements in the game's menu)
and the set is also saved as RA/<game ID>.ach beside the game's watch list (not on a read-only device).
The next launch of that game takes it into the menu. Unlocks earned since are not in it. Caduceus mode, HDLoader (APA)
games and PS1 games have no list. Up to 8 KB of descriptions travel with the game; a bigger set shows the counts without
Left To Hunt. See RetroAchievements.
Where it works
- Games on the OPL core only (USB, MX4SIO, iLink, exFAT and APA HDD, SMB, MMCE, UDPBD/UDPFS). Neutrino has no IGR at all, and PS1 games use POPStarter's or Ember's own.
- The menu draws into the picture the game is showing, found through the same GS write breakpoint GSM uses. PCSX2 cannot show it (no data breakpoints), so there the combination leaves the game as before; so does a game whose picture the menu cannot see or draw.
- The game goes quiet while the menu is open and its sound goes on where it stopped when you resume: a small IOP module,
igrmbox.irx, turns the SPU2's volume down and holds every voice. A game that streams PCM straight to the sound cores keeps that stream running, silently. - Resume gives back the exact picture: the pixels under the panel are kept in IOP memory and drawn back. A game that leaves the IOP too little free memory (up to 315 KB for a 640-wide picture) keeps the panel until it draws over it.
- With In-Game Menu off,
igrmbox.irxis not packed or loaded, so a game sees exactly the modules and memory it always did. - In the RetroAchievements editions the menu is a small program of its own,
igrovl.elf, copied into the top 16 KB of the module area (0xCC000 to 0xD0000) only for a launch with the menu on. A game whose modules are moved elsewhere, or run past 0xCC000, gets the plain combination there. - Not in the IGS (
EXTRA_FEATURES=1) and freeze-report (INGAMEDIAG=1) builds: those keep the plain combination and have no In-Game Menu row.
The menu is RIPPS2's, by akilluminati47, itself built on the Neutrino in-game menu of danielnuld's ps2-launcher (ORBIT, AFL-3.0); the silent pause and the exact picture (RIPPS2 build 108) and Achievements with Left To Hunt (build 94) are RIPPS2's too. The Cheats page is new here; RIPPS2's Screenshot page is not ported yet. Open-PS2-Loader #1155, #1168, #1171.
Troubleshooting
Nothing happens when I press the combination. Check, in order: the game has actually started (past the early boot logos); the Loader Core is OPL rather than Neutrino; Mode 6 is not set for this game; and — for the power-off combination specifically — the controller is in analog mode, since L3 and R3 are the stick clicks. The screenshot combination uses Up, so it needs no analog mode.
Try the console power button as a cross-check: if that resets and the pad combination does not, the sampler is active; check the pad hook and controller behavior.
IGR stopped answering in a game that worked on an older build. Report the title, exact version/flavour and SHA. Issue #984 records internal-exFAT failures including Beta-4032. Current main includes #990's repair for a reproduced lost notification. Passing that regression does not prove every console report resolved. The power button is an additional cross-check independent of the pad buffer, subject to the hardware limits above.
Reset takes me somewhere unexpected. Check IGR Path in Settings → General & System. A stale path left over from an earlier setup will boot that ELF instead of exiting to the PS2 browser. A USB path that lands in the PS2 browser anyway is missing its memory-card drivers — see Where a reset takes you.
The game resets on its own during play. A game that uses all four shoulders plus Start or Select in normal play can trigger IGR by accident. Set Mode 6 — Disable IGR for that title.
Where this lives in the source
| File | Role |
|---|---|
ee_core/src/padhook.c | Pad pattern matching, one-frame EE alarm sampler and shutdown worker; combined RA/IGR or snapshot-only VBLANK handler in RA builds |
ee_core/include/padhook.h | The combo constants (IGR_COMBO_R1_L1_R2_L2, IGR_COMBO_START_SELECT, IGR_COMBO_R3_L3, IGR_COMBO_UP) |
ee_core/src/cd_igr_rpc.c | IOP-side reset RPC |
ee_core/src/igs_api.c | Screenshot capture and BMP writing |
include/iosupport.h | COMPAT_MODE_6 — the Disable IGR flag |