This repository is the C++/ps2build transition of RiptOPL. These guides include the production project's full documentation; feature and hardware parity are still being validated. The release targets are Korium, RetroAchievements and IncebtIon, all on ps2build. Check the migration ledger before treating an imported production feature as verified here.
Install & First Boot
The RiptOPL menu and OPL core are in RIPTOPL.ELF. Neutrino and PS1 launching also need their companion folders. Extract the installable package, choose a loader, and copy the files needed by your source/core.
What is RIPTOPL.ELF?
RiptOPL is a downstream fork of Open PS2 Loader compiled to a single PS2 ELF binary. The standard build includes GSM video-mode handling (including the hardware-confirmed forced-progressive 1080p mode), DS3/DS4 pad emulation (PADEMU), Virtual Memory Cards (VMC), PS2RD cheats, and parental controls in one file. There are no per-feature variant builds to choose between for those; the one ELF does it all. Some build flags are left off by default. In-game screenshots (IGS) and right-to-left (RTL) language support are not compiled into the standard loader folders in the unified package — the Makefile ships EXTRA_FEATURES ?= 0 and both flags follow it. To get IGS or RTL, use a ready-made -extra1 loader from RIPTOPL-VARIANTS-*.zip or build with make EXTRA_FEATURES=1. DualSense / DualShock 5 (USB) support ships as a ready-made RIPTOPL-<version>-<SDK>-ds5.ELF for each available SDK flavour inside RIPTOPL-VARIANTS-*.zip. The standard loaders already include 1080p; its picker is gated behind a triple confirmation, and holding Triangle + Cross during console boot forces 480p for the menu only, on displays/connections that accept it. You only need make DUALSENSE=1 if you build your own DualSense loader — check the Releases page for current assets.
settings_riptopl.cfg (with migration from
conf_riptopl.cfg). That filename is separate from stock OPL's master config, but
conf_network.cfg, app lists, per-game configuration and support files can still be shared.
Favorites import from uOPL/wOPL is one-way: the next write saves RiptOPL's own OFAV
format to favourites.bin, which those loaders cannot read back. Keep an original copy if
you use them too. The settings home follows boot-directory discovery or Custom Settings Path;
do not assume it is always mc0:/OPL/.Release channels
Choose current development or a preserved development snapshot. Neither is a universal compatibility guarantee; check the release notes for the exact build and available files.
| Channel | Tag | When to use |
|---|---|---|
| Rolling (Latest) | rolling |
Latest code from the publishing branch (rebuild/main), rebuilt on every push and published as GitHub's full, non-pre-release Latest release. Best for eager testers; it may be unstable. |
| Current Fan Favorite Build | current-fan-favorite | Preserved development snapshot selected after positive feedback; compatibility is setup-dependent. |
See Releases for the full asset listing and pull instructions. The short version: download the RIPTOPL-<version>.zip installable package, unzip it, and either install its ready app (APPS/APP_RIPTOPL/, or APP_RIPTOPL.psu on a memory card) or start with the pinned APPS/APP_RIPTOPL-PS2DEVPINNED/RIPTOPL.ELF when that best-effort flavour is present.
RIPTOPL.ELF
(the -OFFICIALROLLING flavour) whose filename and link never change. Download it and
overwrite the RIPTOPL.ELF you already have — POPS/, EMBER/,
neutrino/ and your settings stay where they are. Use the full package instead if you
want a pinned flavour, if companion folders are missing, or if the release notes announce updated companion cores or modules. Replacing only the loader does not update an existing Neutrino or Ember installation. Back up your configuration and save cards before updating; do not overwrite them with unrelated package defaults.What is inside the installable zip?
The RIPTOPL-<version>.zip package contains:
APPS/APP_RIPTOPL/— the ready-to-install app:RIPTOPL.ELFwith its icons,title.cfgand music. It is the-OFFICIALROLLINGbuild when that flavour built; otherwise the first available of-PS2DEVPINNED,-OFFICIALPINNEDand-PS2DEVROLLING, and the app's metadata records which. Copy the folder into a device'sAPPS/.APP_RIPTOPL.psu— the same app as one memory-card save, for a PS2 save manager to import. It holds only the app folder's own files.ART/— the app's matching artwork (RIPTOPL.ELF_*.png) for the device'sART/folder.APPS/APP_RIPTOPL-PS2DEVPINNED/RIPTOPL.ELF— #1 recommended primary, built with a digest-pinned ps2dev SDK.APPS/APP_RIPTOPL-OFFICIALPINNED/RIPTOPL.ELF— #2 recommended official pinned control.APPS/APP_RIPTOPL-PS2DEVROLLING/RIPTOPL.ELF— #3 movingps2dev:latestcanary and the required-to-compile flavour.APPS/APP_RIPTOPL-OFFICIALROLLING/RIPTOPL.ELF— #4 moving officialps2homebrew:maincanary. Each of these four labelled folders is a complete alternate app folder, with the same set of icon and metadata files as the ready app.POPS/— the single canonical release folder for POPSTARTER support. It containsPOPSTARTER.ELF, the SMB externals,PATCH_5.BIN, and every loose BDMAusbd.irx.*/usbhdfsd.irx.*pair, including.ilinkand Okeanos’s.udpfspair, plus optionalIPCONFIG.DAT/UDPFSCONFIG.DATexamples and upstream notices. See POPS UDPFS setup. No BDMA pair is embedded inRIPTOPL.ELF, and there is no duplicate release-rootPOPSTARTER/folder. OnlyPOPS.ELF— Sony's PS1 emulator — is not distributed here.EMBER/— the bundled external Ember PS1 core, unmodified and ready for the user-supplied BIOS and games.neutrino/— the bundled Neutrino external core, shipped extracted as a drag-and-drop folder (neutrino.elf+config/+modules/) used by per-game Neutrino launching and network boot (UDPBD/UDPFS) (pre-populated with the UDPFS config). Copy the whole folder to a resolver location. Ordinary non-MMCE setups may usemc0:/neutrino/ormc1:/neutrino/; for MMCE games using GameID card switching, use the MMCE game device instead (mmceN:/neutrino/, or under its Prefix Path). No separate download is needed.- Five
.urlshortcuts — PS2-Servers, udpfs-server, OrbitPS2 Manager, OPL PS1 AIO Converter GUI, and PS2RD CHT Manager. These are links to the maintained external tools; the tools themselves are not embedded in the RiptOPL package.
The final GitHub asset set contains archives by purpose (including the separate experimental RA package): the unified package, exact source snapshot, variants, and the language/debug packs when those optional jobs produce them. Besides the archives, the release publishes up to two stable-name update loaders, RIPTOPL.ELF and RIPTOPL-RA.ELF, each only when its -OFFICIALROLLING build succeeded, and the ready apps as standalone saves: APP_RIPTOPL.psu, plus APP_RIPTOPL-RA.psu whenever the RA package is published. Other bare loader ELFs and build/checksum manifests are not separate public assets; the labelled standard loaders are inside the unified package, and DualSense loaders are inside RIPTOPL-VARIANTS-*.zip.
Getting RIPTOPL.ELF onto your PS2
RiptOPL requires a way to boot unsigned ELFs on the PS2. The two most common are FreeMcBoot (FMCB) on a memory card and FreeHDBoot (FHDB) on an internal HDD; FreeDVDBoot is a separate disc-based entry point. Any method that can launch an ELF works.
1. Download the package
Go to the Releases page and grab the rolling development build or preserved current-fan-favorite snapshot. Download the unified RIPTOPL-<version>.zip installable package (the archive without LANGS, VARIANTS, DEBUG, RetroAchievements, or src in its name) and unzip it locally.
2. Copy RIPTOPL.ELF to your boot location
Use the ELF from APPS/APP_RIPTOPL-PS2DEVPINNED/RIPTOPL.ELF inside the zip when present; otherwise use the next available labelled flavour in the documented order. If you would rather install the ready app, copy the whole APPS/APP_RIPTOPL/ folder into a device's APPS/ (or import APP_RIPTOPL.psu onto a memory card) and point your launcher at the RIPTOPL.ELF inside it; that app is the -OFFICIALROLLING build when available. Where the ELF goes depends on your boot method:
- FMCB — copy
RIPTOPL.ELFto a folder on a device that your launcher can access, such as a USB drive or memory card, then add a FMCB menu entry pointing to it. A common convention ismass:/APPS/RIPTOPL/RIPTOPL.ELFormc0:/RIPTOPL/RIPTOPL.ELF. - FHDB — copy into an HDD partition the same way FHDB expects its launch targets.
- Other launchers — place the ELF wherever that launcher is configured to find it; RiptOPL has no path requirements of its own.
The ELF filename itself does not matter to RiptOPL, only to your launcher's menu entry.
3. (Optional) Place the Neutrino folder
Copy the bundled neutrino/ folder (drag-and-drop: neutrino.elf + config/ + modules/, pre-populated with the UDPFS config) to a location RiptOPL can keep available through the launch handoff. For ordinary non-MMCE setups, mc0:/neutrino/ or mc1:/neutrino/ is supported. For MMCE games with GameID card switching, put the folder on the MMCE game device: mmce0:/neutrino/ / mmce1:/neutrino/, or under your configured MMCE Prefix Path. The automatic lookup probes the active game's prefix and device root before the memory cards. If Neutrino resolves from mcN: on the MMCE slot, RiptOPL deliberately skips that slot's GameID switch so the loader is not displaced, which means the per-game card switch is not applied for that launch. To use a copy anywhere else, set Settings → Game Launching → Neutrino Defaults → Neutrino Path to its full path. See Neutrino Core.
4. Prepare your storage device
OPL expects a specific folder layout on whichever device(s) you plan to load games from. You do not need to create these by hand — RiptOPL auto-creates them once you enable that device — but it helps to know what they are:
DVD/ ← DVD5 and DVD9 ISO images CD/ ← CD-based game images (blue-bottom discs) ART/ ← cover art images CFG/ ← per-game settings files VMC/ ← Virtual Memory Card images THM/ ← themes LNG/ ← language / translation files (see Languages) CHT/ ← PS2RD cheat files APPS/ ← homebrew ELF files (see Apps)
For the APA/PFS internal HDD, a usable configured data partition takes priority, followed by existing +OPL (root), then __common/OPL/. No partition is created; see HDD setup. For exFAT HDD (BDMAssault) and all other folder-based devices (USB, MMCE, MX4SIO, iLink, SMB), the folders live at the root of the device.
DVD/, ART/, etc. manually — just enable the device, save settings, and the directories will appear.
Optional: Unicode/Japanese game titles
For Japanese UTF-8 game titles with English menus, a compatible RiptOPL build can load font_CJK.ttf from the same directory as settings_riptopl.cfg. Restart to enable. The font is user-supplied; read the installation guide for naming, builds and memory limits.
First boot walkthrough
Launch RIPTOPL.ELF
Boot through FMCB, FHDB, or your chosen launcher. On a fresh install you land on the start menu — no game-list tabs exist yet, because every device ships off. Enable a device and its tab appears, rendered by the Coverflow theme (RiptOPL's built-in cover-art carousel) once you have games in the right folders.
Enable your device
Navigate to Settings → Game Sources. Enable the storage device(s) you want to use. Nothing is on by default: turn USB on and set the BDM tab's start mode to Manual or Auto, then save. Games in DVD/ and CD/ appear after the first scan. For SMB, HDD, MMCE, MX4SIO, iLink, or network boot, enable the corresponding toggle and fill in any required details (IP address for SMB/network boot, etc.).
Save settings
Go to Settings → Save Changes (or the equivalent save action in the settings screen). This writes settings_riptopl.cfg to the config path and auto-creates the device folders. From this point on, RiptOPL remembers your preferences across boots.
Launch a game
Back on the main list, your games appear under the device tabs. Highlight a title and press Cross (or Circle for Japanese-layout controllers — the confirm button follows standard OPL behavior and is configurable). The game boots via OPL's built-in core by default. To use Neutrino instead, open Game Settings → Loader Core → Neutrino for that title. See Per-game Settings.
Fresh-start defaults
See the verified defaults guide for this C++ branch. Existing saved settings override these initial values.
Unlike upstream OPL — which ships with most features off and expects you to enable them — RiptOPL boots with a set of opinionated defaults that are on from the very first launch, before you have saved any settings. You can change any of them under Settings at any time.
| Setting | Default | Where to change |
|---|---|---|
| Widescreen (16:9) | ON | Interface |
| Cover Art | ON | Interface → Artwork Settings |
| Notifications (popups) | ON | Interface |
| PS2 Logo | ON | Game Launching |
| Sound effects (SFX) | ON (volume 90) | Audio Settings |
| Boot sound | ON (volume 90) | Audio Settings |
| BGM (background music) | ON (volume 90) | Audio Settings |
| USB, iLink, MX4SIO, Internal HDD (exFAT) | OFF | Game Sources |
| Every start mode (HDD, MMCE, BDM devices, network, Apps, Favorites) | Off | Game Sources |
| Video mode | Auto (0) | Interface (menu only) |
| Theme | <OPL> (built-in) | Interface |
| Write Operations (rename, delete, VMC creation) | ON | General & System |
| Show GameID Barcode (Pixel FX) | Off | Interface |
| Network Connectivity | Off | Game Sources |
Config file: settings_riptopl.cfg
RiptOPL's master settings use settings_riptopl.cfg (with migration from
conf_riptopl.cfg). That filename is separate from stock OPL's master config, but
conf_network.cfg, app lists, per-game configuration and support files can still be shared.
Favorites import from uOPL/wOPL is one-way: the next write saves RiptOPL's own OFAV
format to favourites.bin, which those loaders cannot read back. Keep an original copy if
you use them too. The settings home follows boot-directory discovery or Custom Settings Path;
do not assume it is always mc0:/OPL/.
If you previously used an older RiptOPL build that saved as conf_riptopl.cfg, the new build automatically migrates your settings the next time it saves — you do not need to rename anything manually.
Coming from official OPL
If the place RiptOPL reads its settings from has no RiptOPL settings but does have official OPL's
conf_opl.cfg, RiptOPL starts from that file. Swapping RIPTOPL.ELF in for
OPNPS2LD.ELF (in a PSBBN, OSDMenu or HDD-OSD launcher, or a plain memory card or USB install)
therefore keeps the devices and options you already set. RiptOPL only reads that file and never writes it:
the first save writes settings_riptopl.cfg to RiptOPL's own settings home.
Auto Loading (a game started straight from PSBBN, OSDMenu or another launcher) reads the same settings home as the menu, so global game settings apply the same way, and it starts the game on the core you chose: the game's own Loader Core, or the Default Loader Core when the game is set to Default, Neutrino included. If such a launch cannot go ahead, because the ISO is missing or the device cannot be used, RiptOPL opens its menu instead of stopping on a black screen.
The config file is discovered and written in this priority order (first found wins on read; saves always go back to the same path it was read from):
- The folder
RIPTOPL.ELFwas launched from (its working directory) — this is the config home - Only when the boot path cannot be determined does OPL fall back, in a fixed sequence, starting with the
config.pathredirect pointer file in the current working directory (the Krah bootstrap — it stores the directory of the last saved config and is rewritten on every save) - then
mc0:/mc1:explicitly, then the boot device (mass:orhdd:), then MMCE, then BDM devices, then the BDM/internal HDD (hdd0:__common/OPL/)
Everything else — cover art (ART/), themes (THM/), VMC images (VMC/), per-game config files (CFG/), and favourites.bin — lives in the shared OPL/ folder structure and is read and written by any OPL-family build that understands those formats. RiptOPL will import an existing favourites.bin from wOPL or uOPL on first launch.
Cover art at a glance
All artwork lives in one place: the ART/ folder on the device the item is on. There is
no second location and no fallback folder — if a cover is not appearing, the filename is what to check, not
the path.
Only the key — the part before the suffix — changes with the kind of item:
| Item | Key | Example |
|---|---|---|
| PS2 game | The game ID | ART/SLUS_012.34_COV.png |
| PS1 game (VCD, POPSTARTER) | The VCD's name | ART/Spyro 2 (Ripto's Rage)_COV.png |
| PS1 game (Ember) | The PS1 disc ID | See PS1 Games |
| App | The ELF filename | ART/MYAPP_COV.png |
The suffix says which image it is — _COV is the cover, _SCR and
_SCR2 are screenshots, _BG a background, _ICO an icon. Which of them a
given theme actually draws is up to that theme; see Theme Engine for authoring, and
Coverflow for what the optional carousel theme uses.
ART/art.tar alongside the loose files. See the Settings Reference.