The single experimental RetroAchievements release offers both inceBtion and Korium themes. Choose one complete theme kit. Both use the same RiptOPL source revision and the pinned ORBIT Neutrino RA runtime v1.0.2, which replaces upstream Neutrino in the RA kits. Standard Rolling and Korium downloads contain standard builds only. Installing the other RA theme replaces the same APP_RIPTOPL-RA app. See the RA setup guide and compatibility limits.
Releases
Choose Rolling for current development or Current Fan Favorite Build for a preserved development snapshot. The publishing branch is rebuild/main; neither choice guarantees compatibility with every setup.
RIPTOPL-<version>-<SDK>-ds5.ELF for each available SDK flavour inside
RIPTOPL-VARIANTS-*.zip.
make DUALSENSE=1 is only needed if you compile your own. Forced-progressive
1080p GSM support is hardware-confirmed and built into every standard loader. Selecting it is
guarded by a three-step in-GUI confirmation, and holding Triangle + Cross during console boot
forces 480p for the OPL menu only; the display and connection must accept it. On an interlaced-only TV,
Triangle + Circle forces the interlaced Auto mode instead.Release channels
| Channel | Tag | When to use | Stability |
|---|---|---|---|
| Rolling (Latest) | rolling |
Latest features, actively tested builds, eager testers | Development builds — may be unstable |
| Korium standard | rolling-korium | Standard kit with the Korium theme; replaces the same APP_RIPTOPL app | Development build |
| RetroAchievements | rolling-ra | Experimental inceBtion and Korium kits using APP_RIPTOPL-RA | Pre-release; limited hardware evidence |
| Current Fan Favorite Build | current-fan-favorite | A fixed development snapshot for comparison | Selected after positive feedback; compatibility varies |
Release notes on the rolling channel show the source commit, build version, build timestamp, and
the CI run that produced it. The rolling channel is a full (non-pre-release) development release and
intentionally owns GitHub's Latest marker. Release candidates use an -rc* suffix and stay
as pre-releases; a bare v* tag produces a full curated release without displacing rolling.
What the rolling release contains
Successful publishing runs on rebuild/main replace the rolling assets. Archives are organized by purpose: the normal installable package, RA development package, exact source, VARIANTS, and optional language/debug packs. Read the release notes for omitted optional flavours. Current standard kits require a usable Neutrino bundle. Every ZIP name ends with the build version, so the revision number is always the last part of the name. Korium uses the same asset shape with Korium in front of the version (RIPTOPL-Korium-<version>.zip, RIPTOPL-VARIANTS-Korium-<version>.zip); preserved snapshots can retain older names.
| Asset | What it is |
|---|---|
RIPTOPL-<version>.zip |
The installable package. A ready-to-install app, APPS/APP_RIPTOPL/
(RIPTOPL.ELF with its icons, title.cfg and music: the
-OFFICIALROLLING build when available, otherwise the first available of the pinned and
ps2dev builds), the same app as one memory-card save, APP_RIPTOPL.psu, and its artwork
in ART/. Beside it, APPS/ normally holds four explicitly labelled SDK loader
folders (a best-effort flavour can be absent when its build fails, and the release notes identify it):
APP_RIPTOPL-PS2DEVPINNED/ (#1, recommended pinned ps2dev),
APP_RIPTOPL-OFFICIALPINNED/ (#2, recommended official pin),
APP_RIPTOPL-PS2DEVROLLING/ (#3, moving ps2dev canary), and
APP_RIPTOPL-OFFICIALROLLING/ (#4, moving official canary). The package also has
one canonical POPS/ folder for POPSTARTER support (every BDMA pair stays loose there,
including usbd.irx.ilink + usbhdfsd.irx.ilink; none is embedded),
the bundled EMBER/ and neutrino/ folders, five companion-tool shortcuts,
LICENSE-LIBSMB2.txt, the licence of the libsmb2 code every loader embeds, and
CREDITS, which says the loaders use libsmb2 under that licence.
Install the ready app, or start with APPS/APP_RIPTOPL-PS2DEVPINNED/RIPTOPL.ELF for a
pinned build when that best-effort flavour is present.
The presence of the loose iLink pair documents package contents, not a hardware pass: revision
2692's POPSTARTER iLink launch still returned to wLaunchELF in every flavour. |
RIPTOPL.ELF |
The loader on its own, for updating an install you already have. Download it and
overwrite your existing RIPTOPL.ELF — no archive to unpack, nothing else to copy.
Its name never changes, so
the
download link is permanent. It is the -OFFICIALROLLING flavour, and there is only
one of these on purpose: four would put the "which do I pick?" question back in front of the
people this asset exists for. Not a first install — the bare loader does not bring
POPS/, EMBER/, neutrino/ or the language files, so PS1 and
Neutrino launches still need the package above. For a reproducible build to quote in a bug report,
take a pinned folder from the package instead. Best-effort, like the flavour it is copied from: if
that build fails the release ships without it. |
RIPTOPL-RA-inceBtion.ELF, RIPTOPL-RA-Korium.ELF | Theme-specific RetroAchievements updates: inceBtion ELF or Korium ELF. Rename the selected download to RIPTOPL-RA.ELF when replacing APPS/APP_RIPTOPL-RA/RIPTOPL-RA.ELF. Full kits install the runtime. |
APP_RIPTOPL.psu; RA theme saves | Standard app-only save from Rolling. The RA release has APP_RIPTOPL-RA-inceBtion.psu and APP_RIPTOPL-RA-Korium.psu. Both RA saves import into APP_RIPTOPL-RA; copy shared folders from the matching full kit separately. |
RIPTOPL-src-<version>.zip |
Source snapshot of the exact built commit — you can rebuild this precise revision later. |
RIPTOPL-LANGS-*.zip |
Extra UI language files (.lng files and non-Latin fonts not embedded in the ELF). Copy into your OPL folder alongside the ELF. |
RIPTOPL-RetroAchievements-inceBtion-<version>.zipRIPTOPL-RetroAchievements-Korium-<version>.zip | Both full theme kits in one RA release. Each includes the ready official-toolchain app, ps2dev comparison apps, artwork, PSU, POPS, Ember, pinned ORBIT Neutrino and companion links. Experimental: review the setup and limits. |
RIPTOPL-VARIANTS-*.zip |
The full EXTRA_FEATURES × PADEMU × DUALSENSE matrix for the
two ps2dev flavours, plus one ready-made DualSense (DUALSENSE=1) loader for each
available official flavour. |
RIPTOPL-DEBUG-*.zip |
Debug builds for the two ps2dev flavours (iopcore, ingame,
eesio, iopcore_ppctty, ingame_ppctty, and
DTL_T10000). For diagnostics only. |
RIPTOPL-BUGREPORT-*.zip |
The field-diagnostics build (OPLDIAG=1) before compression, with a README on what to
send. Best-effort: a release ships without it when that build fails. See
Bug-report build. |
LICENSE-LIBSMB2.txt |
The GNU LGPL-2.1 licence of libsmb2, by Ronnie Sahlberg, which every loader embeds for SMB2
browsing (see SMB). Each release publishes it beside its standalone loader ELFs.
Every install kit, RA kits included, and the VARIANTS and DEBUG zips carry the same file, with
CREDITS, which says the loaders use libsmb2 under that licence; the bug-report zip carries
CREDITS and the same text under licenses/libsmb2/. |
Finding the exact build
The release notes header shows the build version and source commit before download. The ZIP filename omits the source hash and SDK suffix because it contains several SDK builds. For example, v1.2.0-Beta-4224 is the short form of v1.2.0-Beta-4224-308bc6a-OFFICIALROLLING. The full running identifier is visible on both the Settings index and About.
The Beta number is calculated from the full Git commit count plus two. The source hash can precede the release checkout when newer commits touch only excluded paths; the final suffix identifies the SDK. Korium and RA add their edition labels. Current Fan Favorite Build is a preserved older snapshot with its own revision.
The standard Beta 4224 kit's PS2DEVPINNED comparison loader incorrectly reports Beta-3 because its build job used a one-commit checkout. PR #1044 fixes history fetching for subsequent builds. A new package is required to replace that executable; renaming an old ZIP does not change it.
RIPTOPL.ELF, their app-only PSU and install archives. The dedicated RA release retains one ELF update and PSU per theme, both full kits, its source snapshot, provenance and checksums. DualSense comparison loaders remain in the standard VARIANTS archive.Download a PR or Actions test build
A test artifact is a ZIP attached to a successful GitHub Actions run, rather than an asset on the Releases page. Open the supplied run link, check that its source commit matches the fix you are testing, then choose the requested artifact under Artifacts. GitHub normally requires you to sign in to download it. Expired artifacts need a new build.
For an official rolling toolchain test, choose OPL-OFFICIALROLLING. OPL-OFFICIALPINNED is the separate pinned official toolchain; OPL-PS2DEVROLLING uses the moving ps2dev toolchain. The word rolling in the artifact name identifies the toolchain, not proof that the commit has been published in the rolling release.
Extract the ZIP and read BUILD-MANIFEST.txt for the source commit, flavour and build configuration. Launch the supplied ELF requested in the test instructions. These artifacts contain loader builds, their manifest, LICENSE-LIBSMB2.txt, the licence of the libsmb2 code every loader embeds, and CREDITS, which says so; keep a complete installed package for companion cores, modules and artwork. Report the exact commit and flavour alongside the console, device, filesystem, core and changed settings.
Japanese/Unicode game-name fallback is available in compatible builds using a user-supplied font_CJK.ttf beside settings_riptopl.cfg. See Unicode font setup for the PR #917 build artifact and activation steps.
Four toolchain flavours, ordered for testing
Every release attempts four labelled flavours of the same RiptOPL source, in this recommended order:
APP_RIPTOPL-PS2DEVPINNED/— digest-pinned ps2dev; recommended primary control.APP_RIPTOPL-OFFICIALPINNED/— digest-pinned official ps2homebrew toolchain.APP_RIPTOPL-PS2DEVROLLING/— movingps2dev:latestcanary.APP_RIPTOPL-OFFICIALROLLING/— moving officialps2homebrew:maincanary.
The PS2DEVROLLING canary must compile — if it fails, the publish fails loudly rather
than shipping without its required build. The other three flavours are best-effort: if one
fails, the release still updates without that folder and the notes identify the omission.
Bundled Neutrino core
The installable package ships the latest published official
ps2max32/neutrino build as an
already-extracted neutrino/ folder at the package root (holding
neutrino.elf plus the config/ and modules/ folders) — no
zip-in-zip, so you just drag-and-drop it. RiptOPL adds only one file —
config/bsd-udpfsbd.toml — so UDPFS works out of the box without a manual copy step.
Everything else is the official Neutrino build, unchanged.
neutrino/ folder, including
neutrino.elf, config/ and modules/. For ordinary non-MMCE
setups, mc0:/neutrino/ or mc1:/neutrino/ is supported. For MMCE games
with GameID card switching, place it on the MMCE game device instead — normally
mmceN:/neutrino/, or under the configured MMCE Prefix Path. An mcN:-hosted
Neutrino would conflict with that slot's card switch, so RiptOPL protects the handoff by skipping
the switch; an mmceN: copy is unaffected. Auto probes the active game device
before memory-card fallbacks. See Neutrino Core for the full setup guide.How to pull the rolling release
Versioned archive filenames change when the build revision changes. Pull by the
rolling tag rather than a fixed filename so you always get what is currently
published:
# Everything in the current rolling release gh release download rolling --repo NathanNeurotic/Open-PS2-Loader --clobber
Or download directly from the release page:
github.com/NathanNeurotic/Open-PS2-Loader/releases/tag/rolling
How the pipeline works
One workflow file — .github/workflows/rolling-release.yml — is the single place
release packaging lives. The pushed ref picks the publish target:
- Push to
rebuild/mainormaster→ updates therollingfull development release, explicitly clears its pre-release flag, and keeps it marked as GitHub Latest. - Push of a
v*tag → cuts a curated per-version release for that tag, using the same normalized package format and best-effort rules. An-rc*tag stays a pre-release; a barev*tag makes a full release. Neither displaces rolling from the Latest marker. - Manual
workflow_dispatch→ re-runs as rolling.
A concurrency group cancels in-flight rolling runs when a newer push arrives, so the
release always reflects the freshest commit. A publishing-branch push and a simultaneous
v* tag release run in separate concurrency groups and do not cancel each other.
Why are there four toolchain flavours in the same release?
The moving ps2dev and official toolchain tags can advance independently and occasionally introduce
regressions. Each lineage therefore has a digest-pinned control beside its moving canary. Start with
APPS/APP_RIPTOPL-PS2DEVPINNED/RIPTOPL.ELF; if hardware behavior differs, test the other
labelled folders and report the exact in-app flavour suffix so application and SDK regressions can be
separated.
When should I use the VARIANTS or DEBUG zips?
VARIANTS contain the full EXTRA_FEATURES × PADEMU ×
DUALSENSE matrix for the moving and pinned ps2dev flavours. The normalizer also adds a
ready-made DualSense loader for each available official flavour; it does not build the complete
official-toolchain matrix. DEBUG builds are produced for the two ps2dev flavours only. Those
configurations (iopcore, ingame, eesio, iopcore_ppctty, ingame_ppctty,
DTL_T10000) emit diagnostic output over a UART/TTY; they are only useful if you
have the hardware or emulator setup to capture it. Do not use debug builds for normal gaming —
they are significantly slower.
After downloading
Extract the package zip
Unzip RIPTOPL-<version>.zip. The contents are ready to
copy to your memory card or USB drive root:
APPS/
APP_RIPTOPL/
RIPTOPL.ELF ← ready-to-install app (-OFFICIALROLLING when available)
APP_RIPTOPL-PS2DEVPINNED/
RIPTOPL.ELF ← #1 recommended pinned control
APP_RIPTOPL-OFFICIALPINNED/
RIPTOPL.ELF ← #2 official pinned control
APP_RIPTOPL-PS2DEVROLLING/
RIPTOPL.ELF ← #3 moving ps2dev canary
APP_RIPTOPL-OFFICIALROLLING/
RIPTOPL.ELF ← #4 moving official canary
ART/ ← the app's artwork (RIPTOPL.ELF_*.png)
APP_RIPTOPL.psu ← APPS/APP_RIPTOPL/ as one memory-card save
POPS/ ← POPSTARTER.ELF and every loose BDMA variant (including .ilink)
EMBER/ ← official Ember core; add your own BIOS and games
neutrino/ ← official Neutrino core (already extracted, drag-and-drop)
PS2-Servers.url ← link to the UDPFS / SMBv1 / UDPBD all-in-one PC launcher
(plus four more companion-tool shortcuts)
Install the ELF via your launch method
Copy APPS/APP_RIPTOPL-PS2DEVPINNED/RIPTOPL.ELF to wherever your launch method (FMCB,
FHDB, or equivalent) expects it. If that best-effort folder is absent in a run, use the next available
flavour in the order above. Or install the ready app instead: copy APPS/APP_RIPTOPL/ into
the device's APPS/, or import APP_RIPTOPL.psu onto a memory card with a PS2
save manager. The labelled folders can sit side by side; the APP_ prefix is the OPL
convention for homebrew apps stored on your device.
Set up Neutrino (optional)
The neutrino/ folder is already extracted — copy the whole folder
(neutrino.elf plus config/ and modules/) to a resolver location.
For ordinary non-MMCE setups, mc0:/neutrino/ or mc1:/neutrino/ is supported.
For MMCE games using GameID card switching, use the active MMCE device instead
(mmceN:/neutrino/, or under its Prefix Path). Required only if you want per-game
Neutrino launching or the Neutrino path of UDPBD/UDPFS network boot (those games can also run on the OPL core). See Neutrino Core.
Copy the language pack (optional)
If you want a non-default UI language, extract RIPTOPL-LANGS-*.zip and copy its
.lng files and any non-Latin font files into your OPL/LNG/ folder.
The pack covers 33 languages. RiptOPL's own strings are machine-translated in 31 of them; Galician and
Serbian show those strings in English for now. Scripts the built-in font lacks need the font file from
the pack too.
For a complete first-run walkthrough (folder layout, enabling devices, launching your first game), see Getting Started.
Archive availability
MEGA uploads require successful publishing and configured credentials. Superseded or failed runs may have no archive. Installable packages, source and metadata are archived when upload succeeds; VARIANTS and DEBUG are excluded. Neutrino download/extraction is best-effort, so check release notes before relying on a bundled core.
The rolling archive
Because the rolling release is rebuilt on every push, a build you were happy with is replaced quickly. Successful runs are preserved on MEGA under run-specific folders, so an older build can still be retrieved:
RiptOPL/Rolling/<version>/run_<number>/
Each folder holds the installable packages plus source and build metadata. VARIANTS and DEBUG bundles are excluded, and — as above — an upload only exists when that run published successfully and the credentials were configured, so superseded or failed runs may have no archive at all.
Browse the MEGA rolling archive →
Building from source
You do not need to build RiptOPL to use it — the releases above are ready to run. This is for people who want to change the code or produce a build with non-default options.
Build inside one of the toolchain images from the CI matrix. Both pinned and rolling SDK images work, and
the latest SDK is not required. For a reproducible baseline use the PS2DEVPINNED image
digest from that matrix. From the repository root, with Docker available:
docker run --rm -v "${PWD}:/src" -w /src ps2dev/ps2dev@sha256:8fba50ecc2229acd7f8da63d34302f12939b7d4fa6848dda1e6a0ce083321a11 make -j4
Repository scripts live in tools/ and are run from the repository root. Existing Makefile
targets keep their names and output locations.
See the Makefile for the option flags, including DUALSENSE=1 (a
DualSense loader) and EXTRA_FEATURES=1 (which turns on
in-game screenshots and right-to-left language support).
Companion Ecosystem & Tools
See the shared companion catalogue for server launchers, library tools and runtime credits.