△◯✕□ RiptOPL DOCS
Downloads GitHub
ps2build C++ migration

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.

Private config, shared data
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/.

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.

ChannelTagWhen 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 Buildcurrent-fan-favoritePreserved 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.

Already have RiptOPL installed?
This page is for a first install. To update one you already have, skip the package: the release carries a loose 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.ELF with its icons, title.cfg and music. It is the -OFFICIALROLLING build when that flavour built; otherwise the first available of -PS2DEVPINNED, -OFFICIALPINNED and -PS2DEVROLLING, and the app's metadata records which. Copy the folder into a device's APPS/.
  • 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's ART/ 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 moving ps2dev:latest canary and the required-to-compile flavour.
  • APPS/APP_RIPTOPL-OFFICIALROLLING/RIPTOPL.ELF — #4 moving official ps2homebrew:main canary. 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 contains POPSTARTER.ELF, the SMB externals, PATCH_5.BIN, and every loose BDMA usbd.irx.* / usbhdfsd.irx.* pair, including .ilink and Okeanos’s .udpfs pair, plus optional IPCONFIG.DAT / UDPFSCONFIG.DAT examples and upstream notices. See POPS UDPFS setup. No BDMA pair is embedded in RIPTOPL.ELF, and there is no duplicate release-root POPSTARTER/ folder. Only POPS.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 use mc0:/neutrino/ or mc1:/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 .url shortcuts — 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.ELF to 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 is mass:/APPS/RIPTOPL/RIPTOPL.ELF or mc0:/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.

Auto-creation on device enable
When you enable a device mode in OPL settings and exit back to the game list, OPL automatically creates any missing folders on that device. Nothing is created on a fresh first boot, because every device ships off. You do not need to pre-create 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.

SettingDefaultWhere to change
Widescreen (16:9)ONInterface
Cover ArtONInterface → Artwork Settings
Notifications (popups)ONInterface
PS2 LogoONGame Launching
Sound effects (SFX)ON (volume 90)Audio Settings
Boot soundON (volume 90)Audio Settings
BGM (background music)ON (volume 90)Audio Settings
USB, iLink, MX4SIO, Internal HDD (exFAT)OFFGame Sources
Every start mode (HDD, MMCE, BDM devices, network, Apps, Favorites)OffGame Sources
Video modeAuto (0)Interface (menu only)
Theme<OPL> (built-in)Interface
Write Operations (rename, delete, VMC creation)ONGeneral & System
Show GameID Barcode (Pixel FX)OffInterface
Network ConnectivityOffGame Sources
Start modes
A fresh install ships with every device Off, so no device tabs appear until you enable one in Game Sources. Once a device is enabled, pick its start mode: Manual keeps the tab visible and only populates the game list when you navigate to that tab and explicitly trigger a scan — no automatic background scanning on boot — while Auto scans that tab when OPL starts.

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):

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:

ItemKeyExample
PS2 gameThe game IDART/SLUS_012.34_COV.png
PS1 game (VCD, POPSTARTER)The VCD's nameART/Spyro 2 (Ripto's Rage)_COV.png
PS1 game (Ember)The PS1 disc IDSee PS1 Games
AppThe ELF filenameART/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.

Many small files can be slow to open
On a slow device a folder of loose images costs one file open per cover. Cover Art .tar Archive (Settings → Interface, off by default) is an opt-in loader that also reads art from a single ART/art.tar alongside the loose files. See the Settings Reference.

Next steps