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.
Fork Feature Gaps
Features, fixes and companion workflows that other PS2 loaders, forks and utilities offer beyond RiptOPL and the PS2-Servers ecosystem. Each entry was checked against RiptOPL's own code rather than taken from another project's changelog, and links to where that project implements it.
rebuild/main@9ef8d643.
This pass rechecks changed OPHTML, LUNA, xeRAbora/OPL-RA and PS2-Launcher sources, verifies the surveyed repositories' current revisions,
and reconciles already implemented RiptOPL features. Existing historical rows retain their original evidence unless explicitly updated.
See revision and validation scope and retired IDs.
Stable IDs are never reassigned. Tools and developer APIs are distinguished from game-loading features; source, emulator and console evidence are separate.
Sources surveyed
| Code | Source | What it is | Gaps |
|---|---|---|---|
CA | Caduceus (PC) | Windows game-library manager, bundled OPLServer SMB host and xeRAbora-based achievement companion; compared against PS2-Servers below | 7 |
CO | Caduceus OPL | XMB-style OPL console client paired with Caduceus, including a console achievement browser; related to already-listed OR4 | 7 |
W | wOPL | The continuation of KrahJohlito's uOPL | 4 |
O | OPLattice | Grid themes, the SHELF interface and theme tooling | 15 |
OH | OPHTML | HTML/CSS declarative UI compiler, zero-allocation C99 runtime and standalone Neutrino console launcher | 12 |
U | Upstream OPL | Upstream changes and historical proposals not implemented in RiptOPL | 3 |
B | BoliviaOS | A multifunction PS2 environment built on OPL | 7 |
P | PS2-Launcher | An OPL-based launcher with a console-style interface | 7 |
OR | ORBIT | A Neutrino-based PS2 launcher with console-side saves, achievements and a companion game catalog | 3 |
T | Project Titan Magenta Edition | A PS2 operating-system/system-platform project with integrated game engines | 10 |
E | OPL-Evolution | An experimental OPL fork with a unified dashboard | 1 |
H | xeRAbora | RetroAchievements for real PS2 hardware | 0 |
R | RETROLauncher | A Lua launcher for retro emulators and PS2 games | 1 |
M | Modulo R1 | A Neutrino-based loader in beta | 1 |
N | NHDDL | A deliberately small Neutrino front-end and launcher | 2 |
LU | LUNA | An NHDDL/Neutrino-derived visual loader with a coordinated frontend/runtime, by darkladark | 9 |
L | Extended APA | An OPL build for internal HDDs larger than 2 TiB | 1 |
X | E2OPL | A historical OPL fork adding EXT2 USB storage | 1 |
MP | Modular PADEMU | A historical modular controller-emulation branch | 2 |
K | uOPL (historical) | KrahJohlito-era uOPL before the later wOPL line | 1 |
RR | RRVE / exaconn OPL | The former RRVE repository, now carrying wheel and negCon experiments | 1 |
S | Stable OPL | A stability-focused OPL fork with storage-driver changes | 1 |
Twelve more projects were checked and had nothing RiptOPL lacks — see Checked, nothing missing.
At a glance
All 96 source-attributed entries in one list. CO3 overlaps the existing OR4 feature rather than representing an additional unique capability. Click a column heading to sort.
| ID | Feature | Area | Source | Type |
|---|---|---|---|---|
CA1 | Curated SQLite desktop catalogue | PC library | Caduceus (PC) | Tool |
CA2 | ISO import, installed status and transfer queue | PC library | Caduceus (PC) | Tool |
CA3 | Cover conversion, migration and repair | PC artwork | Caduceus (PC) | Tool |
CA4 | PC RetroAchievements account/live progress dashboard | PC RetroAchievements | Caduceus (PC) | Tool |
CA5 | Live game detection and Discord presence | PC companion | Caduceus (PC) | Tool |
CA6 | Importable catalogue and safe SQLite backups | PC reliability | Caduceus (PC) | Tool |
CA7 | Guided first-run PS2 connection setup | PC onboarding | Caduceus (PC) | Tool |
CO1 | Interpolated XMB category and game-list rail | Console UI | Caduceus OPL | Optional |
CO2 | Game-details card with automatic RA checks | Console RetroAchievements | Caduceus OPL | Feature |
CO3 | Browse RA account achievements on the console | Console RetroAchievements | Caduceus OPL | Feature overlaps OR4 |
CO4 | Text-and-points in-game unlock card | Console RetroAchievements | Caduceus OPL | Experimental |
CO5 | RA session-ready launch gating | Console launching | Caduceus OPL | Feature |
CO6 | SMB ECHO and conditional reconnect on Refresh | Console network | Caduceus OPL | Fix |
CO7 | Async initialize manual devices upon category focus | Console device handling | Caduceus OPL | Optional |
W1 | Themes loaded from a .tar archive | Theme engine | wOPL | Feature |
W2 | wsX widescreen X position | Theme engine | wOPL | Feature |
W3 | PADEMU, GSM and cheat status icons | Theme engine | wOPL | Feature |
W6 | Info page without list navigation | Library & menu | wOPL | Optional |
O1 | Grid game list | Theme engine | OPLattice | Feature |
O2 | GameImage offset for non-selected games | Theme engine | OPLattice | Feature |
O3 | Recently played list | Library & menu | OPLattice | Feature |
O4 | Sort modes | Library & menu | OPLattice | Feature |
O5 | MenuTabs device tab strip | Theme engine | OPLattice | Feature |
O6 | GameCountText prefix and suffix | Theme engine | OPLattice | Feature |
O7 | x_scaled widescreen alignment | Theme engine | OPLattice | Feature |
O8 | VRAM texture budget clamp | Theme engine | OPLattice | Fix |
O9 | Play stats | Library & menu | OPLattice | Feature |
O10 | SHELF sidebar interface | Library & menu | OPLattice | Feature |
O11 | App subtitles | Library & menu | OPLattice | Feature |
O12 | Art conversion and VRAM checker | PC tools | OPLattice | Tool |
O13 | In-game screenshot importer | PC tools | OPLattice | Tool |
O14 | Browser theme previewer | PC tools | OPLattice | Tool |
O15 | Device staging and card sync scripts | PC tools | OPLattice | Tool |
OH1 | Declarative HTML/CSS flexbox compilation to zero-allocation C99 GS command list | Theme engine | OPHTML | Feature |
OH2 | Pre-resolved pairwise HarfBuzz font kerning on EE | Theme engine | OPHTML | Feature |
OH3 | Instant 1-byte palette theme switching without VRAM re-upload | Theme engine | OPHTML | Feature |
OH4 | Runtime 2D coordinate offsets for motion and expanding layouts | Theme engine | OPHTML | Feature |
OH5 | Runtime focus-subtree visibility masking with auto-bypassing navigation | Theme engine | OPHTML | Feature |
OH6 | Automated CRT overscan safe area and multi-layer alpha contrast linter | PC tools | OPHTML | Tool |
OH7 | Interactive web browser theme simulator and testbed | PC tools | OPHTML | Tool |
OH8 | Static VRAM budgeting and layout compiler | PC tools | OPHTML | Tool |
OH9 | Headless Play! emulator CI testbed with input scripting and frame diffs | PC tools | OPHTML | Tool |
OH10 | Fuzzed .uib loader with EE bus-alignment and malformed blob hardening | Theme engine | OPHTML | Fix |
OH11 | Hard compiler safety limits for untrusted themes | Theme engine | OPHTML | Fix |
U1 | Per-game parental lock | Cheats, launching & network | Upstream OPL | Feature |
U6 | Launch announcement for Discord rich presence | Cheats, launching & network | Upstream OPL | Feature |
U9 | Bluetooth controller input lag | Controllers & input | Upstream OPL | Investigate |
B1 | File explorer | Beyond game loading | BoliviaOS | Feature |
B2 | Music player | Beyond game loading | BoliviaOS | Feature |
B3 | Image and font viewers | Beyond game loading | BoliviaOS | Feature |
B4 | Text editor, code editor and terminal | Beyond game loading | BoliviaOS | Feature |
B5 | Memory card format and repair | Beyond game loading | BoliviaOS | Feature |
B6 | USB keyboard | Controllers & input | BoliviaOS | Feature |
B7 | PDF viewer | Beyond game loading | BoliviaOS | Feature |
P1 | Xbox One and Series controllers over USB | Controllers & input | PS2-Launcher | Feature |
P2 | Download covers from the PS2 | Library & menu | PS2-Launcher | Feature |
P3 | One games list across every device | Library & menu | PS2-Launcher | Feature |
P4 | Hold SELECT to leave a game | Controllers & input | PS2-Launcher | Feature |
P5 | Launch transition animation | Library & menu | PS2-Launcher | Feature |
P6 | More USB controllers: Steam Controller, Shanwan PS3 clones, ANT Esports GP300 | Controllers & input | PS2-Launcher | Feature |
P7 | Connected controller count on screen | Controllers & input | PS2-Launcher | Feature |
OR3 | RetroAchievements telemetry with Neutrino games | RetroAchievements | ORBIT | Feature |
OR4 | Browse achievement titles and progress on the console | RetroAchievements | ORBIT | Feature |
OR5 | Companion catalog for UDPFS games | Cheats, launching & network | ORBIT | Optional |
T1 | Graphics patches kept apart from cheats | Cheats, launching & network | Project Titan Magenta Edition | Feature |
T2 | Installable TPKG apps, in-process runtime and SDK | Beyond game loading | Project Titan Magenta Edition | Feature |
T3 | Smart IGR overlay with Resume / Return | Game compatibility | Project Titan Magenta Edition | Feature Hardware pending |
T4 | Named user profiles with per-profile VMC | Beyond game loading | Project Titan Magenta Edition | Feature |
T5 | Notification center and background-progress UI | Library & menu | Project Titan Magenta Edition | Feature |
T6 | Integrated lightweight web browser | Beyond game loading | Project Titan Magenta Edition | Feature |
T7 | Transactional .pup system updater | Beyond game loading | Project Titan Magenta Edition | Feature |
T8 | Installable animated scene themes with audio | Theme engine | Project Titan Magenta Edition | Feature |
T9 | Xbox Bluetooth/BLE plus USB keyboard and mouse input | Controllers & input | Project Titan Magenta Edition | Feature Hardware pending |
T10 | Repository-backed package download pipeline | Beyond game loading | Project Titan Magenta Edition | Feature Target pending |
E1 | Controller, memory card, storage and network status | Library & menu | OPL-Evolution | Feature |
R1 | Retro emulator ROM libraries | Beyond game loading | RETROLauncher | Feature |
M1 | Choose between several network servers | Cheats, launching & network | Modulo R1 | Optional |
N1 | Generic forward-boot CLI | Launcher integration | NHDDL | Optional |
N2 | Reuse SYS-CONF/IPCONFIG.DAT for UDPFS IP | Cheats, launching & network | NHDDL | Optional |
LU2 | Orbit depth-sorted ring library view | Library & menu | LUNA | Feature |
LU4 | Animated rotating ICO disc-label artwork | Library & menu | LUNA | Feature |
LU5 | Per-drive Favorites that travel with the game HDD | Library & menu | LUNA | Optional |
LU6 | Staged temp-file writes for key persistent library state | Reliability / persistence | LUNA | Fix |
LU7 | Neutrino physical power-button DEV9-safe shutdown | Game compatibility | LUNA | Fix |
LU8 | Neutrino in-game return / IGR | Game compatibility | LUNA | Feature WIP |
L1 | APA HDDs over 2 TiB | Internal HDD | Extended APA | Not planned |
X1 | EXT2 USB filesystem support | USB / game sources | E2OPL | Feature |
MP1 | Xbox 360 controllers over USB | Controllers & input | Modular PADEMU | Feature Historical |
MP2 | Generic USB HID gamepads | Controllers & input | Modular PADEMU | Feature Historical |
K1 | Write debug logs to a BDM device | Developer / diagnostics | uOPL (historical) | Feature Debug build |
RR1 | USB Driving Force wheel with negCon presentation | Controllers & input | RRVE / exaconn OPL | Feature Experimental |
S1 | ATA DRDY waiting for slow-starting SMR / SSD drives | Internal HDD | Stable OPL | Fix |
OH12 | Reusable console-launcher core archive | Launcher integration | OPHTML | Feature |
LU9 | Projected 3D game-case grid | Library & menu | LUNA | Feature |
LU10 | Animated ambient-orb Scroll library view | Library & menu | LUNA | Experimental |
LU11 | Neutrino VMC backing on APA/PFS | Game compatibility | LUNA | Feature |
wOPL
ps2homebrew/wOPL — much of RiptOPL's Coverflow, Favorites and Neutrino work started here. These are the parts RiptOPL does not have yet.
| ID | Feature | What it does | Source |
|---|---|---|---|
W1 | Themes loaded from a .tar archive | Several themes packed into THM/thm.tar, with fonts and images read straight from the archive. | PR #370 PR #378 |
W2 | wsX widescreen X position | A separate X coordinate per element for 16:9, so one theme file serves both 4:3 and widescreen. | src/themes.c |
W3 | PADEMU, GSM and cheat status icons | On/off images showing each game's pad emulation, GSM and cheat settings, with built-in default images. | src/textures.c src/themes.c |
W6 | Info page without list navigation Optional | Up, down and page buttons no longer move through the list from a game's info page. A design choice rather than a missing capability. | PR #308 |
OPLattice
coffeedevsolutions/OPLattice — nine patches to OPL's theme engine and menus, a sidebar interface, themes and PC tooling.
| ID | Feature | What it does | Source |
|---|---|---|---|
O1 | Grid game list | A tile layout for the game list (columns, cell_width, gap, frame) with two-axis navigation. | patch 01 |
O2 | GameImage offset for non-selected games | An image element can draw the game a set number of places down the page, which makes hero and filmstrip layouts possible. | patch 01 |
O3 | Recently played list | The last 8 games launched, newest first, shown with RecentImage and RecentText elements. RiptOPL remembers only the last one. | patch 02 |
O4 | Sort modes | A to Z, Z to A, most recent first, or as scanned. OPLattice cycles them with R3, which RiptOPL uses for Favorites. | patch 02 |
O5 | MenuTabs device tab strip | Every device drawn at once with the active one highlighted, plus per-device label overrides. | patch 03 |
O6 | GameCountText prefix and suffix | Themes set their own wording around the game count. | patch 03 |
O7 | x_scaled widescreen alignment | Elements keep their position relative to a centred layout when widescreen is on. | patch 03 |
O8 | VRAM texture budget clamp Fix | Caps texture size to the video memory left after the framebuffers, so an oversized theme image is rejected instead of risking a hang in hi-res modes. | patch 07 |
O9 | Play stats | A launch count and playtime for each game. | patch 08 |
O10 | SHELF sidebar interface | An opt-in sidebar with Home, Library, Apps and Settings pages. It opens with L3, which RiptOPL uses to switch between PS2 and PS1 views. | patch 09 |
O11 | App subtitles | An optional subtitle key in an app's title.cfg. | patch 09 |
O12 | Art conversion and VRAM checker Tool | Converts art to indexed PNG8 and reports how much memory each theme's art cache will use. | palettize-art.py check-art.py |
O13 | In-game screenshot importer Tool | Turns in-game screenshot BMPs from the memory card into the _SCR.png images the info page shows. | import-igs.py |
O14 | Browser theme previewer Tool | A single HTML file that renders a theme's layout before it goes on a console. | opl-theme-previewer.html |
O15 | Device staging and card sync scripts Tool | Scripts that copy a build onto a USB device or HDD and sync a memory card. | tools/ |
OPHTML
coffeedevsolutions/OPHTML by coffeedevsolutions (Blake Coffee) — an HTML/CSS declarative UI compiler and zero-allocation C99 GS runtime (OPHTML / ps2ui), by the creator of OPLattice. While the repository also contains a standalone game launcher (console/ophtml.elf) booting ISOs via Neutrino and an SD2PSX memory-card loader (channel6), those launcher features overlap capabilities already native to RiptOPL (see callout below). Audited against main@03a5d56 (post-v0.10.0 source, format v7). The latest published release remains v0.10.0; the reusable console core, settings resolver and memory-card state changes are source additions planned for 0.11.0.
| ID | Feature | What it does | Source |
|---|---|---|---|
OH1 | Declarative HTML/CSS flexbox compilation to zero-allocation C99 GS command list | Compiles modern CSS flexbox layouts (direction, wrap, alignment, justification, gap, percentage sizing, border radius) and dynamic UTF-8 text slots with multibyte truncation guards on the PC into a static .uib binary command list. The C99 runtime executes inside a pre-computed static arena (~7–8 KiB for an entire 6-screen app) and never calls malloc, measures text, or lays out elements on the PS2. | @ophtml/layout runtime/ps2ui.c |
OH2 | Pre-resolved pairwise HarfBuzz font kerning on EE | Measures kerning pairs at compile time via HarfBuzz and pre-resolves pairwise advance adjustments to exact pixel values per font size into compact tables. The C99 pen evaluates pairwise kerning in real-time on the EE with zero floating-point division or font-scaling overhead. | ps2ui_bake/fontgen.py ps2ui.c kerning |
OH3 | Instant 1-byte palette theme switching without VRAM re-upload | Multiple themes (such as light and dark modes) share the same geometry, textures, and fonts in a single blob, differing only by a row in the tint table. Calling ps2ui_theme_set() updates a context pointer instantly with 0 bytes of VRAM transfer, requiring no asset reloading or GS re-initialization. | ps2ui.h ps2ui.c |
OH4 | Runtime 2D coordinate offsets for motion and expanding layouts | ps2ui_offset_set(ctx, dx, dy) offsets all primitive and texture coordinates at render time, allowing smooth programmatic translations, sliding sidebars (such as expanding navigation rails), carousels, and parallax scrolling layers on static baked geometry without re-baking. | ps2ui.c offset BACKLOG F27 |
OH5 | Runtime focus-subtree visibility masking with auto-bypassing navigation | A 256-bit bitmask in ps2ui_visible_set() suppresses rendering of entire focusable subtrees (including backgrounds and borders) for empty or inactive elements. Crucially, ps2ui_move() automatically routes gamepad focus past hidden nodes rather than trapping navigation on invisible elements. | ps2ui.c visibility BACKLOG F21 |
OH6 | Automated CRT overscan safe area and multi-layer alpha contrast linter Tool | Build-time static analysis tool enforcing NTSC/PAL CRT action-safe and title-safe margins. Evaluates text contrast across translucent alpha scrims by compositing against worst-case black and white background scenes underneath, and validates seated-distance legibility (11px/14px thresholds based on visual arcminutes). | layout/src/lint.js findings.md (F-046) |
OH7 | Interactive web browser theme simulator and testbed Tool | ps2ui serve launches a local HTTP server that replays baked GS draw commands server-side and serves an interactive web preview with keyboard/controller D-pad navigation, theme switching, multi-screen navigation, and live slot text editing without requiring a PS2 console or emulator. | ps2ui_bake/serve.py serve_page.html |
OH8 | Static VRAM budgeting and layout compiler Tool | Models GS VRAM allocation at compile time, tracking 8 KiB page boundaries and 256 B block alignment groups for framebuffers, Z-buffers, CLUT palettes, and texture pages. Prevents console crashes and hangs by refusing over-budget themes at bake time with an itemized memory breakdown. | ps2ui_bake/vram.py check-vram-model.py |
OH9 | Headless Play! emulator CI testbed with input scripting and frame diffs Tool | Continuous integration harness that builds the console ELF, boots it headlessly in the Play! emulator under xvfb, injects scripted gamepad inputs (Down, R1, L1), captures GS framebuffers, and asserts pixel-level image diffs against Python reference renders. | .github/workflows/hw.yml play_input.py |
OH10 | Fuzzed .uib loader with EE bus-alignment and malformed blob hardening Fix | Runtime loader hardened with LibFuzzer and ASan/UBSan against corrupted or malicious blobs. Enforces strict 4-byte struct alignment and 16-byte glyph/kern table alignment (PS2UI_ERR_ALIGN) to protect against unaligned EE memory access bus errors when reading untrusted themes from storage. | fuzz_load.c ps2ui.c alignment |
OH11 | Hard compiler safety limits for untrusted themes Fix | Compile-time safety ceilings that reject untrusted or maliciously crafted themes exceeding safe hardware parameters: canvas max 2048px (hardware scanout ceiling), max 10,000 DOM elements, max 64 nesting levels, and max 32 megapixel source images. | caps.py limits.js |
OH12 | Reusable console-launcher core archive | Exports libophtml-console.a and an umbrella header for third-party launchers to reuse scanning, storage initialization, Neutrino argument construction, settings resolution and launch handoff while supplying their own main, UI and IOP module table. RiptOPL has internal equivalents but does not publish this kind of independently linkable launcher SDK. This is a developer integration gap, not additional game compatibility. | Public core header Out-of-tree consumer |
console/ophtml.elf) and sample environments (opl-env, channel6), its core game-loading and management capabilities directly overlap existing RiptOPL infrastructure and are not counted as gaps:
- Neutrino No-IOP-Reset launch handoff: OPHTML launches Neutrino using
-qb,-bsd=, and-dvd=throughLoadELFFromFileWithPartitionNoReset. RiptOPL already has full native No-IOP-Reset handoff (src/elfldr_noreset.c), copying the child loader into BIOS-unused memory at0x84000and passing target paths and arguments toExecPS2so Neutrino can read its config and ISO without resetting OPL's live storage mounts. - In-memory ISO9660 volume &
SYSTEM.CNFtitle ID extraction: OPHTML traverses sector 16 PVD records and parsesSYSTEM.CNFin memory. RiptOPL already performs sector 16 PVD root-directory traversal in memory to extractBOOT2game IDs and creation timestamps (src/retrogem.candsrc/ps2cnf.c). - Dynamic cover art streaming & VRAM texture caching: OPHTML's streaming texture slots overlap RiptOPL's dedicated async texture worker (
src/texcache.c), which provides lookahead caching, multi-epoch invalidation, chunked staging, memory clamps, and SIO2 controller-bus read throttling. - Virtualized list windowing & selection binding: OPHTML's
ps2ui_listwindowing and selection clamping are standard OPL core features in RiptOPL's item and GUI management. - Multi-device & SD2PSX/MMCE support: USB, internal HDD, MX4SIO, and MMCE channel support are already implemented in RiptOPL's storage drivers and RetroGEM/SD2PSX integration.
ophtml.elf launcher has booted and proven its D-pad navigation and list virtualisation inside the Play! emulator in CI (via automated pad input injection and frame diffing). However, because Play! does not emulate USB, HDD or memory card controllers, physical-console bench cases C1–C8 remain formally [open] pending physical-console reports. Conversely, its underlying ps2ui GS rasterization runtime has undergone extensive physical PS2 hardware validation across multiple test sessions (documented in docs/bench-phase1.md and docs/bench-phase2.md).
The new OPL compatibility resolver maps only verified modes 2, 3 and 5; GSM and VMC CFG mapping remain unfinished. Last-played restoration overlaps RiptOPL. The launch breadcrumb records an attempted handoff but is not a proven hang detector or retry UI; it is not counted as one.
Upstream OPL pull requests
ps2homebrew/Open-PS2-Loader — RiptOPL derives from upstream OPL. A gap can be merged upstream or remain a proposal; its upstream state is not its RiptOPL implementation state.
| ID | Feature | What it does | Source |
|---|---|---|---|
U1 | Per-game parental lock | A Parental Lock toggle in a game's settings; starting that game asks for the parental lock password. Upstream #1779 merged on 2026-10-05; RiptOPL has a settings/write parental gate but not this per-game launch lock. | PR #1779 |
U6 | Launch announcement for Discord rich presence | When a game starts, a small UDP broadcast carries its title ID so a PC listener can set Discord rich presence. | PR #1736 |
U9 | Bluetooth controller input lag Investigate | Shortens PADEMU Bluetooth polling delays to remove input lag. As submitted it also turns off rumble and the menu's pad delay, so it is a lead rather than a finished fix. Upstream #1675 closed without merge on 2026-10-05; retain it as a historical investigation, not an active upstream PR. | PR #1675 |
BoliviaOS
boliviaos.site — an OPL-based environment that adds file management, media and system tools around game loading. Its source is not published, so these entries come from the features its site lists.
| ID | Feature | What it does | Source |
|---|---|---|---|
B1 | File explorer | Browse and move files across memory cards, USB, HDD and host from inside the loader, with transfers checked against the source. | boliviaos.site |
B2 | Music player | Plays MP3 and OGG files with ID3 tags and a spectrum visualizer. | boliviaos.site |
B3 | Image and font viewers | Views JPG and PNG images with zoom and transparency inspection, and TrueType fonts with Unicode coverage. | boliviaos.site |
B4 | Text editor, code editor and terminal | Edits .txt and .cfg files, with a JavaScript editor and a command terminal. | boliviaos.site |
B5 | Memory card format and repair | Low-level memory card formatting and repair through Memory Card Annihilator. | boliviaos.site Memory Card Annihilator |
B6 | USB keyboard | USB HID keyboard input. | boliviaos.site |
B7 | PDF viewer | Reads PDF documents. The site lists it as still in development. | boliviaos.site |
PS2-Launcher
Irfanlesnar/PS2-Launcher — an OPL-based launcher with a
console-style interface. Checked against its published v4.0 source, not only its README.
v5.0.0 (2026-10-06) is checked from its
release notes and README: the repository's v5.0.0 commit changed only README.md and CREDITS.md,
so v5.0's code is not published.
| ID | Feature | What it does | Source |
|---|---|---|---|
P1 | Xbox One and Series controllers over USB | Wired Xbox controllers through a new IOP driver. RiptOPL supports DualShock 3, DualShock 4 and DualSense. v5.0 adds Xbox 360 pads, the gap tracked as MP1. | modules/xboxusb |
P2 | Download covers from the PS2 | Fetches missing covers, or refreshes all of them, over the network from the console. | src/opl.c PS2-Launcher-Manager |
P3 | One games list across every device | A single Games list combining every connected source, part of its console-style interface. v5.0 adds sorting that list by device. | src/opl.c |
P4 | Hold SELECT to leave a game | Holding SELECT for 7–10 seconds in a game returns to the launcher, an alternative to the multi-button in-game reset combo. | ee_core/src/padhook.c |
P5 | Launch transition animation | An animated transition as a game starts. OPL-Evolution adapted it too. | src/opl.c |
P6 | More USB controllers: Steam Controller, Shanwan PS3 clones, ANT Esports GP300 | v5.0 lists the Steam Controller (2026), Shanwan PS3 clone pads and the ANT Esports GP300 Pro V2 wireless controller. RiptOPL's USB driver accepts only Sony's DualShock 3, DualShock 4 and DualSense IDs and has no clone-specific handling. | v5.0.0 release notes |
P7 | Connected controller count on screen | The v5.0 interface shows how many controllers are connected. RiptOPL only says when no controller is detected. | v5.0.0 release notes |
ORBIT
danielnuld/ps2-launcher by
danielnuld — a standalone PS2 launcher built around Neutrino.
Audited against d015baf7
and RiptOPL rebuild/main@dc6206f6.
Re-checked on 2026-10-06 against v1.0.2:
v1.0.1 and v1.0.2 are fixes (a 1024-game limit, cover loading, DNS with DHCP, and MemCard PRO 2 game IDs on every
launch, which RiptOPL already sends), so they add no entries. OR1 and OR2 have since shipped in RiptOPL (see Notes).
These are capability differences, not claims that every game or storage device has passed on a console.
| ID | Feature | What it does | Source |
|---|---|---|---|
OR3 | RetroAchievements telemetry with Neutrino games | ORBIT passes a watch list to its Neutrino fork and loads an in-game agent that streams watched memory to xeRAbora. RiptOPL's RA flavour loads telemetry through its own OPL core and explicitly excludes Neutrino and UDPFS launches. ORBIT reports one real-console UDPFS/Neutrino session with snapshots; that does not establish broad game compatibility. | launcher.c Neutrino agent console report |
OR4 | Browse achievement titles and progress on the console | The selected game's panel lists individual achievement titles, descriptions, points and earned state. RiptOPL's RA support check shows the title and aggregate counts returned by the PC client, but has no per-achievement browser. ORBIT's phase-16b report records host/PCSX2 checks for this panel and leaves the console check open. | launcher.c achievements.c phase-16b evidence |
OR5 | Companion catalog for UDPFS games Optional | An HTTP companion service lists titles, paths, IDs and precomputed RA hashes for games whose ISO data is served through UDPFS, without mounting UDPFS in the menu. RiptOPL already lists UDPFS files through its filesystem driver and has a separate games.csv catalog for HTTP streaming; this row tracks ORBIT's distinct UDPFS catalog workflow, not a missing ability to list or launch UDPFS games. | launcher.c orbit_catalog.py console report |
Project Titan Magenta Edition
sobecapaklebs-dev/project-titan-magenta-edition
— a PS2 operating-system/system-platform project with its own shell, services, application runtime and integrated
Titan Neutrino / Titan UL game engines. Re-audited against main@2a69c259
with VERSION 0.3.93-rc17.
| ID | Feature | What it does | Source |
|---|---|---|---|
T1 | Graphics patches kept apart from cheats | Graphics patches such as widescreen live in ENH/<id>.enh, separate from gameplay cheats in CHT/. Per-game selections persist independently and graphics patches can carry @auto / @experimental metadata. RiptOPL currently feeds these through its normal cheat path instead of a separate enhancement class. | TITAN_GAME_PATCHES.md |
T2 | Installable TPKG apps, in-process runtime and SDK | TPKG v2 can install native R5900 application modules that execute inside Titan's application runtime and consume shared UI, input, notification, storage and media services. A public App/Game SDK lets software target Titan itself rather than only launching a separate ELF. | README TPKG format SDK |
T3 | Smart IGR overlay with Resume / Return Hardware pending | For titles with a safe compatibility profile, Titan can suspend the running title, show a small in-game overlay, then resume the same threads without ResetEE/GS/IOP or return through the engine cleanup path. Unknown titles fail closed to return-only/legacy behavior. RiptOPL's IGR returns out of the game; it has no equivalent resumable in-game overlay. | TITAN_SMART_IGR.md |
T4 | Named user profiles with per-profile VMC | Up to four named users can be created, selected and renamed, each carrying its own avatar and VMC path. RiptOPL has per-game VMC configuration but no system-wide user/profile layer that selects an exclusive VMC by user. | titan_user_profile.h titan_profile_storage.c |
T5 | Notification center and background-progress UI | A system Notifications page and top status/ticker surface alerts plus background activity and download progress, including transfer bytes, percentage and speed. RiptOPL has transient dialogs/status text but no comparable system notification/activity service. | titan_notifications.h titan_shell_catalog.c |
T6 | Integrated lightweight web browser | An installed system app stays inside the running shell and provides URL entry, lightweight HTML text/link parsing, scrolling and back/forward history. HTTP uses PS2IP directly; HTTPS is translated through Titan's configurable Stream Bridge. RiptOPL has network game protocols but no interactive web browser. | Internet / Titan Browser |
T7 | Transactional .pup system updater | Settings can discover forward-only TPUP update packages, verify table/payload CRCs, stage files privately and roll back already-published files if a multi-file update fails. RiptOPL updates are distributed as release artifacts rather than installed by an in-console transactional updater. | SYSTEM_UPDATE_PUP.md |
T8 | Installable animated scene themes with audio | .tthm packages can provide full HOME/TOP scene frames, reversible transition keyframes, bounded idle loops, background music, navigation/interface sounds and icon styling. RiptOPL's theme engine does not have Titan's packaged state/keyframe scene-animation model. | THEME_AUTHORING.md |
T9 | Xbox Bluetooth/BLE plus USB keyboard and mouse input Hardware pending | Titan's Unified Input has source paths for Bluetooth-capable Xbox One and Xbox Series pads over Bluetooth/BLE, plus USB keyboard and mouse input. Wired Xbox USB is already counted as P1; this row counts Titan's additional Bluetooth/HID input classes. Titan explicitly labels these host-contract PASS but physical-PS2 validation pending. | Modern Controller Matrix |
T10 | Repository-backed package download pipeline Target pending | Titan can accept a static repository catalog, resolve package/dependency metadata, queue HTTP/HTTPS package downloads, verify size and SHA-256 plus TPKG structure, then atomically publish the package for installation. Its documentation calls this a Store foundation rather than a finished storefront and says real target downloads remain pending. | Store architecture Download Service |
Several other Titan capabilities are real but do not get extra T-series IDs because the same RiptOPL gap is already represented elsewhere on this page: direct cover/background fetching overlaps P2, its native wLaunchELF work overlaps B1, Project NES overlaps R1, its launch transition overlaps P5, and wired Xbox USB overlaps P1. Titan's Neutrino/UL launching, VMC support and ordinary PS2RD cheats also have RiptOPL equivalents and are not gaps by themselves.
OPL-Evolution
officialjuicedesigns/OPL-Evolution — an experimental OPL fork with a unified PS2 and PS1 dashboard.
| ID | Feature | What it does | Source |
|---|---|---|---|
E1 | Controller, memory card, storage and network status | A status strip showing each controller port, both memory card slots, the storage source and the network state. | src/evo_ui.c |
xeRAbora
RiptOPL's RA build now follows upstream xeRAbora alpha.15. PR #881 implemented the larger watch sets and cadence (retired H2) and alignment-safe bounded reads (retired H3). H1 pointer chains were already present. These selected comparisons have no remaining H-series gap; RA with Neutrino remains the separate OR3 capability. Successful host tests and target builds do not establish console interoperability. See RetroAchievements for the paired client and validation scope.
RETROLauncher
Spaghetticode-Boon-Tobias/RETROLauncher — a launcher written in Lua for the Enceladus environment, covering retro emulators alongside PS2 and PS1 games.
| ID | Feature | What it does | Source |
|---|---|---|---|
R1 | Retro emulator ROM libraries | Libraries of retro ROMs launched through emulators such as RetroArch, SNESticle and TempGBA. | README |
Modulo R1
AdityaKumar7209/Modulo-R1-Beta-Preview---PS2 — a Neutrino-based loader in beta. Only its PC server source is published.
| ID | Feature | What it does | Source |
|---|---|---|---|
M1 | Choose between several network servers Optional | Lists every UDPFS server found on the network and lets you pick one. RiptOPL already finds a server automatically — see Network Boot. | README |
NHDDL
pcm720/nhddl — a deliberately small Neutrino front-end whose README explicitly keeps OPL-only features such as PADEMU, IGR and cheats out of scope unless Neutrino itself provides them. Audited against the released v1.2.2 code and documentation. The core features most likely to look unique at first glance are already present in RiptOPL: PixelFX/RetroGEM visual Game ID signalling, per-title SD2PSX/MemCard PRO2 card switching, cover art, persistent title caching, remembered last-played selection, global and per-game Neutrino arguments, VMC handoff and the principal Neutrino storage backends. The two remaining differences below are launcher/network conveniences rather than missing game-source support.
| ID | Feature | What it does | Source |
|---|---|---|---|
N1 | Generic forward-boot CLI Optional | Launching NHDDL with -mode=<type> and -dvd=<path> bypasses its UI and hands the target straight to Neutrino; -noinit can reuse an environment whose modules are already loaded. RiptOPL has positional HDD/BDM autolaunch entry points, but not an equivalent documented generic backend/path command line. | Forward Boot Mode |
N2 | Reuse SYS-CONF/IPCONFIG.DAT for UDPFS IP Optional | When no explicit udpfs_ip is supplied, NHDDL can obtain the PS2 network address from the wLaunchELF/uLaunchELF-style SYS-CONF/IPCONFIG.DAT. RiptOPL's UDPFS path currently uses its own Network settings and the active Neutrino TOML instead of inheriting that shared file. | UDPFS documentation IPCONFIG.DAT fix |
LUNA
LUNA by darkladark is a visual NHDDL/Neutrino-derived loader.
Current comparison: 475f7b25,
pinning frontend e9554ce6 and runtime 02cbf4f2. These are separate repositories; implementation links below point to their exact gitlink revisions.
The current views are List, Collections, 3D, Orbit and experimental Scroll. Constellation (LU1) and the old flat Grid (LU3) are historical, not current capabilities.
| ID | Feature | What it does | Source |
|---|---|---|---|
LU2 | Orbit depth-sorted ring library view | Renders the selected game at the front of a tilted ring while the other cached covers move around it with perspective narrowing, size/brightness/opacity depth falloff and explicit rear-to-front sorting. RiptOPL's Coverflow is a linear carousel and has no equivalent orbital presentation. | view_orbit.c |
LU4 | Animated rotating ICO disc-label artwork | Classic view pairs the normal OPL _COV.png with _ICO.png disc art and rotates the disc texture continuously on a textured quad. RiptOPL already understands ICO as disc artwork and can toggle it at runtime, so the gap is specifically the animated disc presentation, not disc-art support itself. | view_classic.c paired-art fidelity note |
LU5 | Per-drive Favorites that travel with the game HDD Optional | LUNA resolves Favorites against the selected title's metadata device and stores them under that drive's /LUNA/favorites.txt; swapping game HDDs therefore swaps the Favorites set with the library. RiptOPL deliberately keeps one cross-device favourites.bin beside its shared master configuration, so this is a different persistence model rather than missing Favorites functionality. | favorites.c RiptOPL favsupport.c |
LU6 | Staged temp-file writes for key persistent library state Fix | LUNA writes a complete temporary file before replacing favorites.txt, lastTitle.bin and the ISO title-ID cache.bin; readers can recover completed temporary last-title/cache records after interrupted replacement. RiptOPL has substantial config-write verification/restore logic, but its centralized Favorites store still opens favourites.bin with O_TRUNC and writes the replacement in place. | Favorites staging last-title staging cache staging |
LU7 | Neutrino physical power-button DEV9-safe shutdown Fix | LUNA modifies Neutrino's IOP CD/DVD service so the native front-panel power event is handled by a priority-1 listener: it stops/synchronizes active emulated optical work, invokes DEV9's shutdown export when present, then issues the normal sceCdPowerOff. RiptOPL's OPL core already has its own orderly IGR/power-off path, but its Neutrino core does not include this coordinated DEV9 shutdown behavior. | LUNA cdvdfsv.c RiptOPL Neutrino baseline |
LU8 | Neutrino in-game return / IGR | LUNA extends the Neutrino runtime itself with a held L1+L2+R1+R2+START+SELECT IGR path. After 45 VBlank frames (roughly one second) it calls LUNA's shutdown RPC to quiesce optical/DEV9 activity, then uses the configured eec.ExitPath as the return ELF path, resets IOP and EE/GS state, and uses ExecPS2() to return directly to the memory-card ELF. RiptOPL has OPL-side IGR, but games launched through its current Neutrino core do not have Neutrino IGR, so this is a distinct missing runtime capability. The current README reports a physical FAT-PS2 test and requires installation on a memory card; this remains narrower than validation across all console and storage combinations. | pad hook / combo EE IGR RPC client IOP shutdown RPC RiptOPL IGR scope |
LU9 | Projected 3D game-case grid | A 6×4 projected game-case view with focus zoom and turn, sleeve shimmer, a selected-cover preview, scrolling titles and staggered entrance/exit transitions. The current frontend replaces the earlier flat Grid; it is not the same feature as O1 or the historical LU3. RiptOPL has Coverflow and list/theme views but no equivalent projected case-grid renderer. | Case-grid renderer 6x4 geometry |
LU10 | Animated ambient-orb Scroll library view | An explicitly experimental library presentation pairing scrolling title/logo artwork with animated ambient orbs. RiptOPL has animated backgrounds and title lists, but no corresponding selectable orb/scroll library view. The comparison concerns the complete browsing presentation, not generic animation support. | Scroll renderer Scroll navigation |
LU11 | Neutrino VMC backing on APA/PFS | Maps raw VMC files from an APA/PFS metadata partition into direct ATA extents for the Neutrino runtime. Requires normal boot, 8 KiB PFS zones, no indirect inode segments, and a shared 64-fragment budget for game plus both cards. The loader validates image geometry and mapping before launch. RiptOPL currently drops Neutrino VMC arguments for APA games because its bundled runtime lacks this PFS backing path. LUNA still requests a physical-console save/reboot/reload test; source implementation does not establish broad game compatibility. | PFS extent mapping Loader restrictions RiptOPL APA VMC restriction |
Extended APA
L10N37/Open-PS2-Loader-Extended-APA — an OPL build for internal HDDs formatted with PS2 HDD Manager's banked APA layout.
| ID | Feature | What it does | Source |
|---|---|---|---|
L1 | APA HDDs over 2 TiB Not planned | Splits a large internal HDD into APA “banks” and lists and launches games from every bank. RiptOPL stays on the standard APA layout — see Internal HDD. | EXTENDED_APA.md |
E2OPL
E2OPL — a historical OPL branch whose defining change was read-only EXT2 support for USB storage. Its published README requires the EXT2 partition to be first, uses 4096-byte blocks and supports ISO files rather than USBExtreme splitting.
| ID | Feature | What it does | Source |
|---|---|---|---|
X1 | EXT2 USB filesystem support | Loads PS2 ISO images from a read-only EXT2 USB partition, avoiding FAT32's 4 GiB file limit and fragmentation requirement. RiptOPL supports FAT/exFAT-style BDM filesystems but has no EXT2 filesystem driver, so this remains a distinct storage-format capability even though exFAT solves most of the same practical problem today. | SourceForge project source README |
Open PS2 Loader Modular PADEMU
belek666/Open-PS2-Loader modularPademu
— a 2020 experimental branch that split PADEMU into controller-specific modules. DS3/DS4 overlap modern OPL,
and its Xbox One USB path overlaps P1; the two controller classes below still have no
equivalent module in RiptOPL.
| ID | Feature | What it does | Source |
|---|---|---|---|
MP1 | Xbox 360 controllers over USB Historical | A dedicated wired-Xbox-360 module recognizes Microsoft and several third-party VID/PID pairs, translates reports to DualShock 2 input and drives LEDs/rumble. RiptOPL has no xbox360usb PADEMU module. | xbox360usb.c |
MP2 | Generic USB HID gamepads Historical | A generic HID module parses a USB gamepad's HID report descriptor and maps buttons, hats and axes into the emulated DS2 report instead of requiring a controller-specific driver. This is separate from Titan's keyboard/mouse support and BoliviaOS's USB keyboard support. | hidusb.c |
66b93542
from 2020. Its Xbox One USB module is not counted separately because modern Xbox One / Series USB support is already P1.
uOPL (historical)
slimpuggamer/uOPL uOPL-1 — the
historical uOPL line mirrored by NathanNeurotic/uOPL. Most of the
features that once distinguished it are now directly present in RiptOPL: Favorites, Coverflow, per-game Neutrino,
Mode 7, legacy mass: app paths, the extra theme keys, one-button Disable All in the cheat selector and
cancellation of pending artwork work during launch.
| ID | Feature | What it does | Source |
|---|---|---|---|
K1 | Write debug logs to a BDM device Debug build | Debug builds can switch LOG() from the normal debug transport to a block-device file and append messages to mass0:opllog.txt. RiptOPL still has UDP/PPC/DECI2-style debug output, but no equivalent BD Debug Log setting or file-backed BDM logger. | include/ioman.h src/ioman.c |
RRVE / exaconn OPL wheel work
exaconn/Open-PS2-Loader — the repository previously
listed here as the wOPL Ridge Racer V Edition. Its current 2026 source has moved beyond that label and contains
Logitech wheel work on master, plus a companion
Driving-Force-2-negCon-Edition
branch. The entry below describes the code that actually exists now rather than inferring features from the old RRVE name.
| ID | Feature | What it does | Source |
|---|---|---|---|
RR1 | USB Driving Force wheel with negCon presentation Experimental | The DS34 USB path recognizes Logitech wheel devices, parses wheel/pedal reports and applies a spring/auto-centering command. The companion branch presents that wheel through the PS1 negCon protocol (0x23) instead of only emulating a normal DS2, which is useful to titles designed around negCon-style analog steering. RiptOPL's DS34 USB driver has no Logitech dfreport / negCon path. | Logitech definitions auto-centering negCon branch |
Stable Open PS2 Loader (sOPL)
mystyq/Stable-Open-PS2-Loader — a stability-focused fork. Its artwork TAR caching, large-list work, BDM HDD support, game-size fixes, MMCE work and other older changes either exist in RiptOPL or have since been superseded there. One lower-level ATA behavior remains materially different.
| ID | Feature | What it does | Source |
|---|---|---|---|
S1 | ATA DRDY waiting for slow-starting SMR / SSD drives Fix | sOPL's in-game ATAD path adds an ata_wait_until_ready() loop that waits for BUSY to clear and DRDY to assert at driver start and around ATA commands. It was introduced specifically for newer SMR/SSD drives that can take longer to become ready. RiptOPL has its own post-ATAD settling and HDD-detection safeguards, but its current cdvdman/atad.c does not implement this in-driver DRDY wait strategy. | commit 3495d55b current atad.c |
ART/art.tar, CFG/cfg.tar and CHT/cht.tar.
The published release tag points to an older commit, while current master visibly carries the
ART reader/cache path. This survey does not turn an unlocated release-note claim into a separate gap. More importantly,
RiptOPL rebuild/main now has a unified TAR engine for all three archive kinds, including
art_cache.bin, cfg_cache.bin and cht_cache.bin, so none of those archive features
is a current RiptOPL gap regardless.
Caduceus & Caduceus OPL versus PS2-Servers & RiptOPL
Verified Caduceus gaps: CA1–CA7 and CO1–CO7
14 source-specific entries, not 14 unrelated feature concepts. These include seven missing PC companion capabilities and seven console UI, integration or behavior differences. CO3 overlaps existing OR4; CO1 and CO7 are optional design choices; CO4 is experimental and not equivalent to a validated physical-console feature.
| ID | Feature | Evidence and actual gap | Source |
|---|---|---|---|
CA1 | Curated SQLite desktop catalogue PC companion | Game search, editable metadata and cover-backed catalogue; PS2-Servers manages roots/protocols rather than a persistent indexed game collection. | Implementation code |
CA2 | ISO import, installed status and transfer queue PC companion | Local ISO ingestion, installed-library status and tracked transfers are managed from a single PC interface; PS2-Servers exposes directory roots. | Implementation code |
CA3 | Cover conversion, migration and repair PC companion | Host checks valid covers and safely converts/resizes legacy JPEG to PNG; RiptOPL supports PNG display but PS2-Servers does not offer this manager. | Implementation code |
CA4 | PC RetroAchievements account/live progress dashboard PC companion | Integrated account, compatibility, unlock-event and xeRAbora controls beyond the standalone client RiptOPL currently uses. | Implementation code |
CA5 | Live game detection and Discord presence PC companion | Windows monitor samples open game-file handles and reconciles them with RA activity for game-aware presence and cover; more than existing U6 launch announcement. | Implementation code |
CA6 | Importable catalogue and safe SQLite backups PC companion | Snapshot with SQLite VACUUM INTO, temporary file and atomic rename; catalogue import/backup is not a raw game/cover/VMC backup. | Implementation code |
CA7 | Guided first-run PS2 connection setup PC companion | Step-by-step interactive console/server/network/ISO wizard inside the desktop app; PS2-Servers has documentation but not an equivalent first-run workflow. | Implementation code |
CO1 | Interpolated XMB category and game-list rail Optional | Fixed XMB category navigation with eased horizontal/vertical list motion, category glyphs and cover previews; alternative to RiptOPL themes, not missing basic menu navigation. | Implementation code |
CO2 | Game-details card with automatic RA checks | Opening the game card starts async hash/catalogue lookup and presents image support plus live session status; RiptOPL offers manual support checks but not this integrated screen. | Implementation code |
CO3 | Browse RA account achievements on the console | Paginates account games, achievement icons, points, descriptions, dates and earned/locked/hardcore filters; the same high-level gap is already tracked under OR4. | Implementation code |
CO4 | Text-and-points in-game unlock card Experimental | Extends the RA event to include title and points and draws a 192x40 in-game card. The opt-in --achievements build is experimental; RiptOPL already has a simpler hardware-tested gold pulse. | Implementation code |
CO5 | RA session-ready launch gating | Checks the paired account/PC readiness before loading a watch list; stale or offline sessions launch normally without RA. RiptOPL has general link failure handling, not this account-coupled UX. | Implementation code |
CO6 | SMB ECHO and conditional reconnect on Refresh Fix | On normal Refresh, tests whether SMB is healthy and reconnects only when failed. RiptOPL retries known error states but does not ECHO the apparently healthy connection on ordinary refresh. | Implementation code |
CO7 | Async initialize manual devices upon category focus Optional | On entering a disabled device category, queues source initialization in the I/O worker rather than requiring a second confirm; possible UX gain with IOP/performance trade-offs. | Implementation code |
Audited code: The actual OPL snapshot was compared against RiptOPL code, and the Caduceus desktop modules against PS2-Servers. RiptOPL already has normal RA hashing, watch lists, SMB reconnect, PNG artwork support and an in-game unlock indicator; none is newly counted as missing. CO4 is richer presentation, not a missing RA notification system. CO6 is a more proactive check, not missing basic SMB recovery. Caduceus OPL's custom account protocol needs a companion endpoint and cannot be obtained just by swapping SMB servers.
Rian6/Caduceus is the Windows-side application (Electron/React/TypeScript/SQLite) that manages a game catalogue and launches the separately sourced OPLServer SMB server. Rian6/Caduceus OPL is its cooperating console-side OPL derivative. That is a tightly paired host + console loader, not one interchangeable executable. Their source repositories are distinct; the OPL source is also tracked as an opl-snapshot submodule.
Our comparable pairing is PS2-Servers (host-side network service) and RiptOPL (PS2 launcher). PS2-Servers deliberately serves multiple kinds of PS2 clients; Caduceus invests more heavily in a companion library and account experience. The table identifies host-side product gaps as well as console-side differences, without treating them as interchangeable RiptOPL feature gaps.
caduceus/main@311f4eab,
caduceus-opl/main@cc1713a8 (console gitlink opl-snapshot@2a98a9d7),
PS2-Servers/main@c1eb1e5a, and
RiptOPL/rebuild/main@7452341a.
Seven CA-series and seven CO-series source-attributed gaps are now listed, including optional and experimental distinctions. Console achievement browsing overlaps OR4, PC game-aware Discord presence goes beyond U6, and RiptOPL already has an in-game RA unlock overlay. Source/release evidence is not universal physical-PS2 validation.| Capability | Caduceus + Caduceus OPL | PS2-Servers + RiptOPL | Gap / interpretation for us |
|---|---|---|---|
| Game-serving protocols | Bundles OPLServer for SMB game shares. Caduceus documents a default PS2 share, TCP 1024. | PS2-Servers Desktop/Core support SMBv1, SMB2/3, UDPFS, UDPBD and experimental HTTP; Edge covers SMBv1, UDPFS and UDPBD. | Advantage: ours. The server's protocol support does not automatically make a console loader support the same protocol. PS2-Servers modes. |
| Desktop game library and ISO management | SQLite catalogue, cover images and details, local ISO import, installed-game list, download-link transfer tracking and JSON/SQLite catalogue import/backup. Host documentation. | PS2-Servers selects serving roots, checks access, configures protocols and logs traffic; no comparable curated SQLite game catalogue is documented. | Host companion gap. Optional catalogue + import/cover manager could sit above existing server backends. A Caduceus catalogue backup explicitly does not contain ISOs, covers, VMC saves or settings. |
| Current-game activity and Discord | Displays the detected running title and cover on PC; Discord Rich Presence can include title, cover and latest unlocked achievement. Presence integration. | PS2-Servers exposes service status, logs and diagnostics, not a documented game-aware desktop activity/presence layer. RiptOPL's separate Discord launch-announcement proposal is already U6. | Host companion opportunity for optional session reporting. Console and server activity are not the same proof of a successfully launched game; do not count U6 again. |
| PC RetroAchievements experience | Integrates a modified xeRAbora alpha.12, account progress browser, live events, sound and protected Windows token storage. | RiptOPL already supports xeRAbora telemetry and in-game unlocks, with alpha.15-aligned integration; PS2-Servers does not document an integrated RA account UI or controller. | Host companion gap. Consider an optional RA manager/UI; retain current RA protocol and client compatibility rather than replacing them with an older pinned adapter. |
| Achievements browsed on the PS2 | Caduceus OPL adds an account games/achievements category, points, icons, earned/locked/hardcore filters and pagination. It requests data over UDP 18198 using a capability stored on the private SMB share at ART/CADUCEUS.KEY. Wire protocol. | RiptOPL has support checks, list badges and in-game telemetry/overlay, but no equivalent integrated RA account-progress browser is documented. ORBIT already supplies gap OR4. | Real console UI opportunity, already counted. A Caduceus OPL-only UDP service is not automatically available to RiptOPL; an explicit compatible host service and console client are needed. |
| In-game achievement pop-up | Displays an experimental notice with achievement name/points. The linked implementation still notes ongoing physical-console validation. Console status. | RiptOPL's unlock overlay already displayed an achievement on physical hardware in its recorded MMCE/USB tests; other routes remain unverified. | Overlap, not a new gap. Different visuals or message handling do not establish better launch compatibility. |
| UI and onboarding | Windows installer, first-run setup guide, XMB-style console UI, details card and art conversion into ART/<Game ID>_COV.png. | PS2-Servers has cross-platform Desktop/Core/Edge and protocol-oriented setup tools. RiptOPL already has its own themes, artwork naming, launcher UI and device support. | Design/integration opportunity, not a missing loading feature. Reuse compatible interaction ideas, not hard-coded Caduceus artwork paths: RiptOPL also has filename-based VCD, ELF and Ember-folder identities. XMB/art reference. |
| Portability and diagnostics | Caduceus PC app is Windows-focused. Its paired OPL client and host must cooperate for integrated covers/achievements. | PS2-Servers Desktop works on Windows, Linux and macOS; Core runs headlessly; Go Edge targets NAS, routers and embedded Linux, with diagnostic and auto-negotiation options. | Advantage: ours. Keep protocol engines, headless portability, per-peer UDPFS handling and safety checks decoupled from any optional catalogue/RA frontend. Editions. |
Compatibility and implementation boundaries
Do not assume the two ecosystems can be swapped by changing the server address. Caduceus OPL expects the paired PS2 SMB share (normally port 1024), plus custom RA catalogue/session and account APIs on UDP 18197/18198. PS2-Servers Desktop normally advertises SMBv1 share games on port 1025 (Core/Edge default to 1111). Share name, port, root layout, credentials, services and console configuration must match. Two services cannot both bind the same host address, protocol and port. Caduceus' custom achievement browser needs a compatible server component; serving the same ISO files via PS2-Servers does not supply it.
Both ecosystems inherit the upstream warning that RA telemetry during SMB game streaming can disrupt loads; neither pairing demonstrates a fix for that issue. Keep host tokens and the Caduceus read-capability key private; UDP catalogue traffic is not encrypted. Caduceus PC sources currently have no top-level declared GitHub repository licence, so obtain clear reuse permission or review licensing before copying original application/bridge code. The inherited OPL/xeRAbora components have their own licences and notices.
Integration priorities for our pairing
- Optional PC library module: add metadata/catalogue, cover preparation, installed-game inventory and non-destructive backup as a frontend/sidecar to PS2-Servers; keep existing service implementations unchanged. Account for RiptOPL's disc-ID PS2 art and filename/folder-based VCD, ELF and Ember art identities.
- Read-only game-session reporting: surface the running title and its image/cover to an optional desktop view; only add Discord presence if the session identity is dependable. Avoid injecting traffic or polling into the hot UDPFS/SMB transfer paths.
- Optional RA account viewer: build on the compatible xeRAbora client already used by RiptOPL, with secrets held on the host, bounded requests and a separately tested console-side browser. Do not introduce a competing telemetry client or incompatible protocol by default; treat OR4 as the single existing console gap.
- Integration tests first: verify share/port selection, art naming, concurrent listeners, offline fallback, IOP resets, real-PS2 UI memory limits and performance before treating the pairing as interchangeable. Preserve existing servers and saved libraries during any migration.
Checked, nothing missing
Surveyed with the rest. Everything these offer is already in RiptOPL or does not apply to it.
| Project | Why nothing is listed |
|---|---|
| ps2homebrew/Open-PS2-Loader | RiptOPL is built on its master branch. Selected upstream changes and proposals are listed above under Upstream OPL pull requests. |
| ps2-mmce/Open-PS2-Loader | MMCE support, switching MMCEs to the boot card during in-game reset, and VMC groups are all in RiptOPL; the rest are upstream fixes. |
| Docmine17/Open-PS2-Loader-HTTP | RiptOPL's HTTP protocol comes from this project. Its only later change is an example games.csv. |
| NathanNeurotic/xerabora | The current RA loader uses upstream xeRAbora alpha.15. Pointer chains, larger watch sets and alignment-safe direct reads are implemented; the older client fork is historical. |
| SvenGDK/Open-PS2-Loader | An OPL v1.0.0 build for PSX DESR consoles. Everything it lists is in upstream OPL 1.2, which RiptOPL is based on. |
| rodrigo1593-dev/oplfork | Two experiments with PADEMU module loading. The same author's Bluetooth change is U9. |
| PS2-Widescreen/OPL-Widescreen-Cheats | A widescreen cheat collection that works with RiptOPL's cheat engine as it is. |
| ps2homebrew/Open-PS2-Loader-lang | RiptOPL builds its UI languages from this repository, including Galician and Serbian. |
| ps2homebrew/HDLGameInstaller | A separate app that installs games into APA partitions. RiptOPL does not write APA partitions. |
| Open PS2 Loader Daily Build (OPL DB / OPL TA) | Its historical ELM/PS1 page is superseded by RiptOPL's dedicated PS1 Games view and current POPSTARTER/Ember paths. Its theme sound effects, startup audio and related theme assets are also already present or extended in RiptOPL's current sound/theme engine. |
| grimdoomer/Open-PS2-Loader | The exFAT/GPT internal-HDD path that made this fork distinctive is already part of RiptOPL's internal HDD support. Its later 64-bit BDM LBA / VMC-range safety work is also present in RiptOPL's current bdmsupport.c. |
| X2P (Xbox-to-PlayStation) | X2P intentionally removes OPL features and presents a themed, USB-focused subset; it is not an Xbox emulator. Its sound/theme stack (SFX, startup audio and streamed OGG BGM) is already present and more extensively integrated in RiptOPL, so the audit found no net-added capability. |
What changed in this refresh
- Caduceus pair: the Windows-side library/RA companion and its paired OPL fork are now compared with PS2-Servers + RiptOPL. 14 CA/CO source-attributed entries were added after code inspection; CO3 overlaps OR4 and CO4 is richer experimental notification rendering, not an absent RiptOPL unlock overlay.
- OPHTML: source is ahead of the v0.10.0 release. The reusable console-core archive is new OH12; per-game compatibility settings and last-played restoration overlap existing RiptOPL features. Planned cover decoding, search, Favorites and IGR are not counted as delivered features.
- LUNA: the actual frontend/runtime gitlinks replace the old September snapshot. LU9/LU10/LU11 cover the new case-grid, experimental Scroll view and restricted APA/PFS Neutrino VMC implementation. Retired views are no longer counted; the current README's FAT-PS2 IGR report replaces the stale WIP description.
- xeRAbora: H2/H3 were reconciled after the alpha.15 port in PR #881. The PC client is maintained upstream. Original-disc RA and pointer chains already existed; RA with Neutrino remains OR3.
- PS2-Launcher: the existing v5.0.0 comparison still applies at
46bad5a4. Its later commit documents a controller rather than adding another implementation; the seven existing gaps remain. - ORBIT and Titan: the current ORBIT master is the already compared v1.0.2 merge; Titan remains at the previously audited
2a69c259. No new gaps are asserted for unchanged snapshots. - Upstream OPL: #1779 is now merged upstream but remains U1 here; #1736 remains open; #1675 closed without merge and is explicitly historical. A closed proposal is not a shipped fix.
- wOPL: W4 and W5 are already implemented in RiptOPL. W1/W2/W3/W6 remain, preserving their original evidence and design-choice labels.
Revision and validation scope
Live repository revisions checked on 2026-10-08 UTC. A revision check establishes what source is current, not that every branch, release or hardware path was retested. The selected comparisons above were checked in source; unchanged historical variants retain their pinned branch evidence. NHDDL uses its maintained main branch rather than the repository default legacy.
Surveyed repository revisions
| Repository | Branch | Revision | Scope this pass |
|---|---|---|---|
| AdityaKumar7209/Modulo-R1-Beta-Preview---PS2 | main | 13bdb68c | Revision checked; existing detailed evidence retained |
| Docmine17/Open-PS2-Loader-HTTP | master | 6ee5bef2 | Revision checked; existing detailed evidence retained |
| Irfanlesnar/PS2-Launcher | main | 46bad5a4 | Selected implementation differences checked |
| Jay-Jay-OPL/OPL-Daily-Builds | master | aa531a85 | Revision checked; existing detailed evidence retained |
| L10N37/Open-PS2-Loader-Extended-APA | main | 5cb80589 | Revision checked; existing detailed evidence retained |
| NathanNeurotic/Open-PS2-Loader | rebuild/main | 9ef8d643 | Revision checked; existing detailed evidence retained |
| NathanNeurotic/neutrino | master | a7b67364 | Revision checked; existing detailed evidence retained |
| NathanNeurotic/uOPL | wOPL-base | 4ae74148 | Revision checked; existing detailed evidence retained |
| NathanNeurotic/xerabora | main | ebd18ed6 | Revision checked; existing detailed evidence retained |
| PS2-Widescreen/OPL-Widescreen-Cheats | main | f5b67cd6 | Revision checked; existing detailed evidence retained |
| Spaghetticode-Boon-Tobias/RETROLauncher | main | e6f95081 | Revision checked; existing detailed evidence retained |
| SvenGDK/Open-PS2-Loader | main | b7e64981 | Revision checked; existing detailed evidence retained |
| belek666/Open-PS2-Loader | master | 41f7cf0b | Revision checked; existing detailed evidence retained |
| coffeedevsolutions/OPHTML | main | 03a5d56f | Selected implementation differences checked |
| coffeedevsolutions/OPLattice | main | 32f3fd7b | Revision checked; existing detailed evidence retained |
| danielnuld/ps2-launcher | master | 28a23666 | Revision checked; existing detailed evidence retained |
| dnunezx/LUNA | main | 475f7b25 | Selected implementation differences checked |
| exaconn/Open-PS2-Loader | master | 73a4921d | Revision checked; existing detailed evidence retained |
| ffgriever-pl/Memory-Card-Annihilator | master | 769d581d | Revision checked; existing detailed evidence retained |
| grimdoomer/Open-PS2-Loader | master | 24340b5e | Revision checked; existing detailed evidence retained |
| hacan359/Open-PS2-Loader | ra | f4d559a3 | Selected implementation differences checked |
| hacan359/xerabora | main | d36ee3a5 | Selected implementation differences checked |
| koraxial/Xbox-2-PlayStation-Emulator-AlFa | master | 160c3e18 | Revision checked; existing detailed evidence retained |
| mystyq/Stable-Open-PS2-Loader | master | 770d5323 | Revision checked; existing detailed evidence retained |
| officialjuicedesigns/OPL-Evolution | evo-development | 47119b71 | Revision checked; existing detailed evidence retained |
| pcm720/nhddl | main | 821b6c9b | Selected implementation differences checked |
| ps2-mmce/Open-PS2-Loader | master | e2090114 | Revision checked; existing detailed evidence retained |
| ps2homebrew/HDLGameInstaller | main | ec37c81f | Revision checked; existing detailed evidence retained |
| ps2homebrew/Open-PS2-Loader | master | 4cc74baa | Selected implementation differences checked |
| ps2homebrew/Open-PS2-Loader-lang | main | b23b743d | Revision checked; existing detailed evidence retained |
| ps2homebrew/wOPL | wOPL-base | 4ae74148 | Selected implementation differences checked |
| rodrigo1593-dev/oplfork | main | 0dbb0d35 | Revision checked; existing detailed evidence retained |
| slimpuggamer/uOPL | uOPL-1 | 0daf81fe | Revision checked; existing detailed evidence retained |
| sobecapaklebs-dev/project-titan-magenta-edition | main | 2a69c259 | Revision checked; existing detailed evidence retained |
Notes
2026-10-08 retired IDs: W4 (live disc-art toggle), W5 (pad tick-wrap fix) and H1 (pointer chains) are already implemented in RiptOPL, in src/themes.c, src/pad.c and ee_core/src/ra.c respectively. LU1 and LU3 describe removed LUNA views from the earlier snapshot; their IDs remain reserved. OR1/OR2 remain retired, with PS1 save-icon coverage now extended to VCD and Ember by PR #876.
- OPHTML parity checked on 2026-09-27: OPHTML / ps2ui by coffeedevsolutions (Blake Coffee), audited against
main@60810bd(version 0.10.0,.uibformat v7). While publicly titled as a web-technology UI toolkit, the source contains an embedded OPL-compatible game launcher (ophtml.elf) and environment. Overlapping launcher features (Neutrino no-reset launch insrc/elfldr_noreset.c, ISO9660 SYSTEM.CNF extraction insrc/retrogem.c, texture streaming insrc/texcache.c, and list windowing) were excluded as existing RiptOPL parity, leaving 11 genuine code-level gaps: declarative flexbox compilation to zero-allocation C99 GS runtime, pre-resolved pairwise HarfBuzz kerning on the EE, instant 1-byte palette theme switching, runtime 2D coordinate offsets, focus subtree visibility masking with automatic D-pad bypass, automated CRT overscan & multi-layer alpha contrast linter, browser-based theme simulation, static VRAM budgeting, Play! emulator CI testing, EE bus-alignment fuzzer hardening, and compiler safety ceilings. - LUNA parity checked on 2026-09-22: LUNA by darkladark, audited against
main@23112ecand RiptOPLrebuild/main@abf14079. Eight source-backed gaps survived overlap checking. LU8 tracks LUNA's Neutrino in-game return because the implementation is present and RiptOPL's Neutrino core lacks IGR; it remains marked WIP because LUNA's current README has not promoted the feature to stable status. - Previously awaiting variants fully audited on 2026-09-22: E2OPL's historical SourceForge source; OPL Daily Build
aa531a85; Modular PADEMU66b93542; Grimdoomer's large-capacity branchd1f51be4plus its later BDM LBA fix branch; historical uOPL0daf81fe; X2P160c3e18; exaconn master73a4921dand negCon branchf9717f76; and Stable OPL770d5323. Six new gaps survived code comparison; three projects moved to the no-gap table. - Project Titan Magenta Edition parity checked on 2026-09-22: audited against upstream
main@2a69c259/VERSION0.3.93-rc17 and RiptOPLrebuild/main@abf14079. Titan's controller, Smart IGR and Store/Download documentation explicitly retains physical-target validation caveats; those rows describe source capability, not a hardware-compatibility guarantee. - NHDDL parity checked on 2026-09-20: RiptOPL already has the visual Game ID signal used by PixelFX/RetroGEM hardware, MMCE GameID switching for SD2PSX/MemCard PRO2 on cross-device launches, remembered last-played selection with optional autostart, persistent ISO metadata caching, and global/per-game Neutrino arguments. Those are therefore not N-series gaps.
- Already in RiptOPL, so not listed: the fix from wOPL PR #435 (remember the last played game when it is
the first list entry), PS2RD cheat images (
.img), cover art fromART/art.tar(Interface settings), per-game configs fromCFG/cfg.tar, cheats fromCHT/cht.tar, persistent TAR index sidecars for all three archive kinds, the<name>_show_runtheme key, RetroAchievements for physical discs, per-game OSD language, virtual memory card creation, and the older USB driver that upstream PR #1752 proposes pinning. - Shipped since the survey: Ratchet & Clank 3 over SMB (was U5, from upstream PR #1761), Pro Evolution Soccer 2 defaulting to Accurate Reads (was U7, see Compatibility Modes) and Galician and Serbian UI languages (was U8, see Languages), all in PR #658; remembered per-game cheat selections (was U2, from upstream PR #1748, in PR #846, see Cheat modes); Create VMC on First Launch (was OR2, in PR #842, see Game Launching); out-of-bounds reads checked against the real media size (was U3, from upstream PR #1763, in PR #840); in-game reset without the VBLANK interrupt (was U4, from upstream PR #1762, in PR #841, see In-Game Reset); and animated 3D save icons (was OR1, in PR #843, see Artwork Settings). IDs are not reused.
- wOPL's config format: wOPL moved to libconfig. RiptOPL reads and writes both formats, so files the two
loaders share, such as an app's
title.cfg, keep working in both. - Device names: RiptOPL accepts
usb0:andata0:style names for its boot path and ties each launch to its device by driver name, but reads files throughmassN:. wOPL uses the typed names throughout. That is a different approach rather than a missing feature, so it is not counted. - TAR archive status: the older survey note about
CFG/cfg.taris obsolete. RiptOPLrebuild/mainnow has one indexed/persistently cached TAR engine forART/art.tar,CFG/cfg.tarandCHT/cht.tar. Consequently, sOPL's TAR work is not a current gap, and an archive claim is counted only when its implementation can be located in the audited source.