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.
Internal HDD (APA & exFAT)
RiptOPL supports two completely different ways to use the PS2's internal ATA/IDE hard drive: the traditional
APA/PFS partition scheme (HDLoader format, used by HDL-Dump and virtually all legacy tools), and the modern
exFAT filesystem routed through the Block Device Manager (BDMAssault). Both formats are supported and both can be enabled at the same time — one shared
ata_bd stack serves APA and BDM, and neither toggle greys the other. Arbitration happens per
drive at mount time rather than in the dialog: APA is kept off a plain MBR/GPT/exFAT disk (the recognized APA+MBR hybrid is handled separately), and BDM only
publishes a massN: slot where a FAT/exFAT partition exists. Only 48-bit LBA drives are supported; check the drive and adapter specifications before use.
APA / PFS (HDLoader format)
The APA partition scheme and PFS filesystem are the native PS2 HDD formats, understood by every classic HDD tool. OPL reads games in the HDLoader format — each game occupies one or more APA partitions written by HDL-Dump (or the older HDL server). This path is mature, well-tested, and requires no configuration beyond enabling HDD mode.
Capacity
APA/PFS supports up to 2 TB via 48-bit LBA. Drives larger than 2 TB are not addressable in this format — use exFAT with a GPT partition table instead (see below).
The OPL data partition
RiptOPL only mounts existing PFS partitions. It does not create, resize or format an APA partition (see Disk safety). The selection order is:
- A usable
hdd_partitionselection in__common/OPL/conf_hdd.cfg. - An existing
+OPLpartition. - Existing
__common/OPL/.
If none is available, the data home stays unavailable instead of creating a partition. To select
an existing partition explicitly, place this in OPL/conf_hdd.cfg on the mounted
__common partition:
hdd_partition=__common
+OPL keeps support folders at its root. The __common fallback keeps them
inside OPL/. A configuration entry names a partition to mount; it does not create one.
Folder layout
Unlike folder-based devices (USB, MMCE, SMB…), APA/PFS stores games as HDLoader partitions — there are no
CD/ or DVD/ folders. All other OPL support files live inside the OPL data partition:
| Location | Purpose |
|---|---|
hdd0:GAMENAME (APA partition) | One HDLoader game partition per title |
pfs0:CFG/ | Per-game config files |
pfs0:ART/ | Cover art |
pfs0:VMC/ | Virtual memory card images |
pfs0:THM/ | Themes |
pfs0:CHT/ | Cheat files |
pfs0:APPS/ | Homebrew ELFs |
pfs0:LNG/ | Language packs |
The pfs0: prefix above refers to the mounted OPL data partition — in practice that is
hdd0:+OPL (or whatever partition name you configured in conf_hdd.cfg). If you point
hdd_partition at a partition whose name does not start with + (for example
__common), OPL inserts an extra OPL/ tier and the paths become
pfs0:OPL/CFG/, pfs0:OPL/ART/, and so on.
Installing games (HDL-Dump / NBD)
OPL does not install games itself — you install them from a PC using HDL-Dump over the network (via OPL's built-in NBD server). The typical workflow:
Start the NBD server on the PS2
In RiptOPL, open the menu and select Start NBD server. The screen updates to "NBD Server running…" once it is ready. OPL must have a configured IP address (static or DHCP).
Connect from your PC
On Linux: sudo nbd-client 192.168.x.x /dev/nbd1 (load the nbd kernel module first with
sudo modprobe nbd). On Windows, use the NBD client of your choice. The drive appears as a raw block
device to the OS. See the NBD Server page for full client instructions.
Inject the game with HDL-Dump
With the NBD connection active, run:
hdl_dump inject_dvd ps2/nbd "Game Title" ./GAME.ISO
HDL-Dump writes the game directly into a new APA partition on the PS2's HDD. Disconnect the NBD client when done.
Enable HDD mode in RiptOPL
In Game Sources, set HDD (APA) Start Mode to Manual or Auto. On the next boot the game list appears as the HDD Games tab.
Can I use the old HDL server instead of NBD?
No — RiptOPL (like all recent OPL builds) uses the NBD server protocol. The older HDL server is gone. HDL-Dump still works perfectly; only the transport has changed from HDL's proprietary protocol to the open NBD standard. See the NBD Server page for details.
Can I use pfs-shell or a hex editor?
Yes. Because NBD exposes the raw APA disk to your PC, any tool that worked with the drive when it was physically
connected will work over NBD — including pfs-shell, partition managers, and hex editors. Be careful:
direct APA partition editing can corrupt the drive if done incorrectly.
PS1 games on APA/PFS
POPSTARTER *.VCD files on an APA/PFS HDD live in dedicated __.POPS
partitions (named __.POPS, __.POPS0 … __.POPS9). Each partition
holds its VCD files at the partition root.
Ember uses a separate exact namespace: __.EMBER or
__.EMBER0 … __.EMBER9. Each is self-contained and holds
EMBER/ember.elf, EMBER/bios.bin, and EMBER/games/. RiptOPL scans
these partitions even when the drive has no POPSTARTER partitions, mounts them on pfs1:
for listing, then remounts the selected one read/write on pfs0: and hands that live mount
to Ember. See PS1 Games for the display-mode and launch workflow.
exFAT via Block Device Manager (BDMA)
RiptOPL can also treat the internal HDD as a plain exFAT mass-storage device, mounted through the same
Block Device Manager (BDMAssault / "BDMA") used for exFAT USB drives. Once enabled, the HDD appears in OPL
as an "HDD Games" games list with the HDD icon — it occupies one slot in the shared massN:
namespace alongside any USB/MX4SIO devices.
Why exFAT?
- No special install tools needed — copy ISOs directly from any PC (Windows, macOS, Linux) to the
DVD/orCD/folder, just like a USB drive. - MBR up to 2 TB; GPT can address larger disks — if your drive is larger than 2 TB, GPT breaks the APA ceiling.
- PS1 VCDs on the same drive — put
*.VCDfiles in thePOPS/folder and they list under L3 PS1 view exactly like a USB drive (with the BDMA equip for POPSTARTER — see below).
Formatting and partition table
Format the drive exFAT from your PC before use. Key rules:
- Partition table: MBR (up to 2 TB) or GPT (larger drives). On GPT, a partition is found even when an earlier slot in the partition table is empty, for example after deleting the first partition on a PC.
- Filesystem: exFAT
- Allocation unit size: Default — do not choose a custom cluster size
Fragmentation warning
The block-device loader has a bounded fragment table. Sequential copies with enough free space reduce fragmentation, but neither a batch copy nor a single-file copy proves the resulting extent layout. Native OPL shares 64 entries across image parts; Neutrino shares its budget across the ISO and VMCs. Native OPL VMC backing must be contiguous. Back up your files before repair; do not reformat an otherwise readable disk solely because its games are absent from the list.
Enabling BDM HDD in RiptOPL
Enable Internal HDD (exFAT)
In Settings → Game Sources, turn Internal HDD (exFAT) on and set BDM Devices Start Mode to Manual or Auto. On the next boot (or scan) the exFAT HDD mounts into
the massN: namespace and an HDD Games tab appears in the game list.
Copy your games
On your PC, place PS2 ISO/ZSO files in the DVD/ (for DVD-format discs) or CD/ (for
CD-format discs) folder at the drive root — the same layout as USB. Artwork, themes, configs and VMCs go in their
usual folders (ART/, THM/, CFG/, VMC/, etc.).
Launch a game
Select the HDD Games tab in RiptOPL and pick a title. The drive mounts as massN: at
runtime — the same path as USB — so all per-game settings, cover art lookups and VMC assignments work identically
to a USB drive.
Folder layout
The exFAT HDD uses the same folder structure as USB/MMCE/MX4SIO:
| Folder | Contents |
|---|---|
DVD/ | PS2 DVD-format game ISOs / ZSOs |
CD/ | PS2 CD-format game ISOs / ZSOs |
POPS/ | PS1 *.VCD files + POPSTARTER.ELF |
ART/ | Cover art images |
CFG/ | Per-game config files |
VMC/ | Virtual memory card images |
THM/ | Themes |
CHT/ | Cheat files |
APPS/ | Homebrew ELFs |
The device prefix at runtime is massN:/ (where N is the BDM slot index assigned at boot).
In conf_apps.cfg, use mass: as the device prefix (the same as USB).
APA-Jail / APA + exFAT hybrid disks
APA-Jail lets APA/PFS system storage coexist with an MBR exFAT game area. Games stored as files appear through the exFAT BDM list. For an APA launch, RiptOPL normally uses exFAT for settings, with existing settings and explicit redirects deciding the final home. See the complete APA-Jail guide below for migration, exceptions, supported layouts and safety.
PS1 games on exFAT (BDMA equip)
Put your *.VCD files in the drive's POPS/ folder alongside
POPSTARTER.ELF. Use PS2/PS1 Game Display to show the PS1 library separately,
combined with PS2 rows, or pinned by itself.
POPSTARTER's stock driver only reads FAT32, so booting a PS1 game from the exFAT HDD needs the
HDD (exFAT) BDMA driver modules equipped. RiptOPL does this automatically by default: the
VCD BDMA Apply on Launch toggle (in Settings → PS Emulation Settings) ships On, and each time you launch
a VCD it auto-equips that title's matching exFAT driver pair — copying the correct BDMAssault modules onto
mc?:/POPSTARTER/ for you — right before boot. You do not need to touch anything.
ata driver and
reads its POPS/usbd.irx.ata + POPS/usbhdfsd.irx.ata).
See PS1 Games (VCD) — exFAT BDMA equip for the complete walkthrough, including the BDMA Source setting.
Disk safety and code 402
RiptOPL is a game loader, not a partition manager. On an APA disk it writes only inside PFS partitions (settings, covers, VMCs) and never edits the APA partition table. That changes a few things you may know from older OPL builds:
- No Delete on the HDD, and no Rename for PS2 games. Both edited APA partition headers, so the menu no longer offers them. Manage the HDLoader library from a PC with HDL-Dump over NBD.
- A one-game
PP.*PS1 install can't be renamed, because it is its own APA partition; RiptOPL says so and changes nothing. Loose VCDs in__.POPS*and Ember titles still rename: that is a file write inside their partition. - No formatting, and no creating, deleting or renaming partitions. The driver refuses all of them, and raw sector writes too.
- 4Kn drives are refused. A drive whose logical sectors are not 512 bytes gets no disk I/O at all: formatted exFAT it shows code 500, formatted APA it is not detected. Ordinary Advanced Format 512e drives, which is nearly every modern disk, are unaffected.
- GPT/APA hybrid disks are left alone. A disk with a GPT header is treated as GPT and never gets the APA driver, so its APA side does not list.
- FAT/exFAT never writes the first 128 MB of an APA disk, including on APA + exFAT hybrids.
Stop writing to the disk
Don't format, "initialize", or run repair tools that write. Every write is a risk until you have a copy.
Connect it to a PC and image it
Use a SATA/IDE adapter. If you have the space, image the whole disk first, for example with
dd or Win32 Disk Imager's Read. At minimum the recovery tool saves the first 4 MB for you.
Diagnose (read-only)
Get apa_recover.py from
pc/apa-recovery
(Python 3.8 or newer, no extra packages) and run it as root:
python3 apa_recover.py /dev/sdX
On Windows, from an Administrator prompt: python apa_recover.py \\.\PhysicalDrive2. Find the
number in Disk Management; the APA disk shows as unallocated. The report says what is wrong and lists the
partitions it can find.
Repair, if it says Repairable
python3 apa_recover.py /dev/sdX --repair
It backs up the first 4 MB, rewrites only the table's root (LBA 0–7), then re-reads the result and checks it with the same rules the PS2 driver applies. It refuses GPT hybrids, a chain broken in the middle, and anything else it cannot verify.
docs/APA-SAFETY.md lists every protection and what none of them can cover: other software (wLaunchELF, HDD-OSD, PC tools) uses its own driver, and a failing drive fails regardless. None of these protections has been through a hardware power-cut test yet.
APA/PFS vs. exFAT at a glance
| Feature | APA / PFS | exFAT (BDMA) |
|---|---|---|
| Max capacity | 2 TB (48-bit LBA) | 2 TB (MBR); larger GPT disks depend on driver and hardware support |
| Install method | HDL-Dump via NBD server | Copy files from PC (no tools) |
| PS2 game format | HDLoader partitions | ISO / ZSO in DVD/ or CD/ |
| OPL data location | Standard folders at the OPL partition root (pfs0:) | Standard folders at drive root |
| PS1 support | __.POPS* (POPSTARTER) and __.EMBER* (Ember) APA partitions | POPS/ + BDMA equip, and/or EMBER/ |
| Fragmentation risk | None (partition-based) | Yes — add files one at a time |
| Tool ecosystem | HDL-Dump, pfs-shell, uLaunchELF | Any PC file manager |
| Enable in RiptOPL | Game Sources → HDD (APA) Start Mode | Game Sources → Internal HDD (exFAT) |
Notes & limitations
- APA/PFS HDD mode and the exFAT BDM HDD now coexist in RiptOPL — both rows stay enabled in Game Sources and a single boot can serve both. The driver arbitrates per drive at mount time: APA is refused on a non-Sony (MBR/GPT/exFAT) disk as a corruption guard.
- The exFAT HDD mounts as
massN:— it shares that namespace with USB/MX4SIO devices. If you have both a USB drive and the exFAT HDD connected, they each occupy a separatemassNslot. - Network boot (UDPBD / UDPFS) is mutually exclusive with SMB, but is independent of the local HDD — you can use HDD and network boot at the same time.
- On PS3 Backward Compatible units, HDD mode requires CFW with Cobra. See PS3 BC.
- ZSO compressed images are supported on exFAT HDD exactly as on USB. See ZSO Format.
exFAT storage: setup, benefits and limits
RiptOPL can read games stored as files on an exFAT volume, including an internal ATA HDD. MBR and GPT are supported partition-table choices for the internal exFAT HDD. The filesystem, partition table and game layout are separate decisions: GPT does not make a missing DVD folder appear, and enabling APA does not select the exFAT game list.
Choose the layout
| Layout | Where PS2 games live | Source to enable |
|---|---|---|
| Internal HDD, exFAT with MBR | CD/ and DVD/ files |
BDM and Internal HDD (exFAT) |
| Internal HDD, exFAT with GPT | CD/ and DVD/ files |
BDM and Internal HDD (exFAT) |
| Internal HDD, APA/HDLoader | Installed game partitions | HDD (APA) |
MBR with 512-byte logical sectors has the conventional approximately 2 TiB addressing limit. GPT permits partition addresses beyond that limit; this is not a guarantee that every disk capacity, adapter or partition layout has been tested. Neither choice changes the speed of the ATA connection. A supported hybrid APA/exFAT layout can expose both sources, but constructing one is an advanced partitioning task, not a requirement for ordinary exFAT use.
GPT/exFAT is enabled through BDM; it is not blocked by the APA safety check. RiptOPL registers both MBR and GPT partition drivers. Selecting the separate HDD (APA) source does not make a GPT/exFAT volume an APA disk. This follows the distinction in grimdoomer's large-capacity HDD implementation: GPT/exFAT uses the block-device path, while the APA/PFS stack is skipped for non-APA media.
Use a disk exposing 512-byte logical sectors. A 512e disk has 4 KiB physical sectors but presents 512-byte logical sectors and is acceptable. A 4Kn disk presents 4096-byte logical sectors and is unsupported. Back up existing files before formatting or changing the partition table; conversion is not a troubleshooting step for an empty game list.
Set up an internal exFAT HDD
- Create an MBR or GPT partition table and an exFAT volume on your PC. Use the formatter's Default allocation-unit size.
- Create
DVDandCDat the volume root. Put DVD game images inDVD/and CD game images inCD/. For example,DVD/SLUS_203.12.Game Name.isofollows the established OPL naming format. Keep the complete image rather than splitting it for FAT32's file-size limit. - In Settings → Game Sources, enable BDM Devices Start Mode and Internal HDD (exFAT). The separate HDD (APA) Start Mode controls APA game partitions; it is not required to enumerate a plain exFAT disk.
- Leave BDM Prefix Path empty when
CD/andDVD/are at the root. A prefix ofOPLinstead searchesOPL/CD/andOPL/DVD/. The prefix applies to BDM sources, so check its effect on other attached devices too. - Open the HDD (exFAT) BDM game list. The default startup page only chooses which list opens first; it does not move games between the APA and BDM lists. Save settings when the setup is correct.
The internal exFAT HDD mounts into the shared massN: namespace. mass0: does not always mean USB: numbers depend on mount order. For a Neutrino custom path, the typed ata:/neutrino/neutrino.elf alias identifies internal ATA storage more reliably than a fixed slot number.
Benefits and limitations
- PC file management: copy images and artwork as ordinary files rather than installing each PS2 game into an HDLoader partition. exFAT supports individual files larger than FAT32's 4 GiB limit.
- Large-disk partitioning: GPT removes MBR's conventional addressing limit. exFAT alone does not remove that limit from an MBR disk.
- Game compatibility still depends on the core: native OPL supports ISO, ZSO and UL layouts; Neutrino uses ISO. Changing the filesystem does not resolve every game's compatibility settings. See Neutrino.
- Fragmentation still matters: native OPL shares a bounded 64-entry fragment table across image parts. Neutrino's BDM mapping budget includes the ISO and VMCs together. Copy files sequentially with adequate free space; a fresh copy can help, but deleting and recopying is not guaranteed to make a file contiguous.
- VMCs have additional write constraints: native OPL's FAT32/exFAT VMC backing must be contiguous. Neutrino supports multiple extents within its shared budget. Back up cards containing saves before attempting repairs. See VMC creation and recovery.
- Booting and loading games are different: support for an exFAT game disk does not make that disk a FreeHDBoot/APA boot installation. Launch RiptOPL using an available boot method, then use its BDM list.
- PS1 uses a separate runtime: place VCDs in
POPS/and use the matching BDMA exFAT setup for POPSTARTER. PS2 exFAT support alone does not install that runtime. See VCD setup.
APA-Jail: APA/PFS and exFAT on the same disk
APA-Jail is a hybrid layout, not another filesystem or an option you enable in RiptOPL. It lets APA/PFS storage for PSBBN/system data coexist with an exFAT area for game files and homebrew. The PSBBN Definitive Project uses APA-Jail, developed by Berion. Use that project's installation tools and instructions to create or maintain its layout; ordinary PC repartitioning can destroy the APA side.
RiptOPL recognizes the supported APA+MBR hybrid by a valid, checksummed APA header plus an MBR FAT/exFAT partition entry beyond the APA reserved area. An MBR signature alone does not make a plain APA disk an APA-Jail disk.
| Disk layout | BDM FAT/exFAT access | APA/PFS access |
|---|---|---|
| Plain MBR/exFAT | Supported | Not an APA disk |
| Plain GPT/exFAT | Supported | Not an APA disk |
| Recognized APA+MBR/exFAT (APA-Jail) | Supported | Supported for a valid APA layout |
| Mixed GPT+APA metadata | GPT FAT/exFAT volumes still use BDM | Not implemented by the currently embedded APA driver |
The last row is an APA-driver limitation, not a ban on GPT. The current APA build uses the traditional APA journal/error-sector layout; a GPT-aware APA build needs a different layout. Its APA stack is skipped on GPT media, leaving BDM's GPT driver enabled. Do not remove that separation merely to force the APA page to open a GPT disk.
Games and settings on APA-Jail
Games stored as files on the exFAT side belong in its DVD/, CD/ and POPS/ folders and appear through BDM → Internal HDD (exFAT). The HDD (APA) list is for HDLoader game partitions; it does not list those exFAT files. RiptOPL may itself be launched from the APA side without moving the game files there.
For an APA launch on a recognized hybrid, RiptOPL normally adopts the mounted exFAT volume as its settings home:
- Existing RiptOPL settings on exFAT are preferred first.
- Otherwise, a Custom Settings Path saved in the APA data home keeps that explicit routing in force.
- Without that redirect, older RiptOPL settings in
+OPLor__common/OPL/are read as carry-over settings. The next save writes to the exFAT home; this is not a destructive move or deletion of the old settings. - On a first run, an official-OPL seed, or APA carry-over, the exFAT home enables the ATA BDM transport and starts a disabled BDM list on Auto. Once RiptOPL has saved its own settings there, your saved BDM start-mode choice is respected.
This depends on the exFAT volume mounting successfully. If it is not available during discovery, RiptOPL can use an accessible APA data home instead. Check the reported settings path and the actual volume before deleting configurations or assuming a save failed. RiptOPL's master file is settings_riptopl.cfg; official OPL's conf_opl.cfg is a separate file. Network, artwork, per-game files and other shared data still need their correct paths.
Safety and troubleshooting
RiptOPL is not an APA-Jail partition manager. Its APA driver refuses partition-table modifications, and the ATA BDM write fence protects the first 128 MiB of an APA disk. Those guards do not validate every possible hybrid layout or make an overlapping partition safe. Back up valuable data, use the layout's own maintenance tools, and do not convert an installed APA-Jail disk to GPT or reformat it to fix an empty list.
For missing games, check the exFAT BDM list, its transport/start settings and prefix first. For missing settings, check which home was selected and whether an APA Custom Settings Path is present. Code 402 is not an instruction to format. See APA safety and recovery.
HDD detected, but games missing
Check the game list and path before changing the disk:
- Verify you are viewing the BDM HDD (exFAT) source, rather than the APA HDD source. Both use an HDD icon.
- Check BDM start mode, the internal-HDD transport toggle, and BDM Prefix Path. An old configuration can point at a subfolder even when your files are at the root.
- Check the actual
DVD/andCD/contents, image names/extensions, and the selected PS2/PS1 view. A VCD inPOPS/belongs in the PS1 view. - Refresh the source after applying settings. If the disk does not mount at all, check its partition/filesystem and sector size separately from game enumeration.
- Record the exact build suffix, core, settings and unchanged disk layout when comparing builds. Back up your settings before trying a clean configuration; deleting all settings loses useful evidence and is not a required installation step.
The fixes in PR #894 address a stale live BDM prefix after settings changes and an ATA readiness probe after the existing startup settle. Host tests demonstrate those defects and their fixes; they do not establish that either was the cause of every reported empty list, or replace a same-console test.