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

This repository is the C++/ps2build transition of RiptOPL. These guides include the production project's full documentation; feature and hardware parity are still being validated. The release targets are Korium, RetroAchievements and IncebtIon, all on ps2build. Check the migration ledger before treating an imported production feature as verified here.

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.

Which format should I use?
APA/PFS is the classic choice: maximum compatibility with every existing tool (HDL-Dump, uLaunchELF, ps2-packer, etc.) and the format your existing HDLoader library already lives on. exFAT is the modern choice: copy ISOs from any PC with no special software, GPT for drives larger than 2 TB, and PS1 VCD support on the same drive — but contiguous files leave the most fragment-budget headroom (see the fragmentation warning below). Most users with an existing HDD library should stay on APA/PFS. New builds or large (>2 TB) drives are where exFAT shines.

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:

  1. A usable hdd_partition selection in __common/OPL/conf_hdd.cfg.
  2. An existing +OPL partition.
  3. 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:

LocationPurpose
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?

Formatting and partition table

Format the drive exFAT from your PC before use. Key rules:

Why "Default" allocation unit size?
Use the formatter's Default as the setup recommendation. A custom cluster size alone does not prove a volume is incompatible; record the actual sector and cluster sizes when diagnosing a mount failure. Changing cluster size requires backing up and reformatting the volume.

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:

FolderContents
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.

Manual equip (only after turning auto-equip Off)
The manual BDMA Source / BDMA Mode pickers are hidden while VCD BDMA Apply on Launch is On. If you turn that toggle Off to manage the equip yourself, they appear on the same Settings → PS Emulation Settings page — set BDMA Mode to HDD (exFAT) and BDMA Source to Internal HDD (the source identifies your drive by its 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:

Code 402, or "Formatted: NO" — do not format the disk
Code 402 means the HDD answered, but its APA partition table can't be read. The same damage shows as "Connected: YES / Formatted: NO" in wLaunchELF. Every partition header and every game is almost certainly still on the disk; only the start of the partition chain is gone. Formatting is what would destroy them. (Code 401 now means the drive really did not answer.)

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

FeatureAPA / PFSexFAT (BDMA)
Max capacity2 TB (48-bit LBA)2 TB (MBR); larger GPT disks depend on driver and hardware support
Install methodHDL-Dump via NBD serverCopy files from PC (no tools)
PS2 game formatHDLoader partitionsISO / ZSO in DVD/ or CD/
OPL data locationStandard folders at the OPL partition root (pfs0:)Standard folders at drive root
PS1 support__.POPS* (POPSTARTER) and __.EMBER* (Ember) APA partitionsPOPS/ + BDMA equip, and/or EMBER/
Fragmentation riskNone (partition-based)Yes — add files one at a time
Tool ecosystemHDL-Dump, pfs-shell, uLaunchELFAny PC file manager
Enable in RiptOPLGame Sources → HDD (APA) Start ModeGame Sources → Internal HDD (exFAT)

Notes & limitations

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

  1. Create an MBR or GPT partition table and an exFAT volume on your PC. Use the formatter's Default allocation-unit size.
  2. Create DVD and CD at the volume root. Put DVD game images in DVD/ and CD game images in CD/. For example, DVD/SLUS_203.12.Game Name.iso follows the established OPL naming format. Keep the complete image rather than splitting it for FAT32's file-size limit.
  3. 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.
  4. Leave BDM Prefix Path empty when CD/ and DVD/ are at the root. A prefix of OPL instead searches OPL/CD/ and OPL/DVD/. The prefix applies to BDM sources, so check its effect on other attached devices too.
  5. 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

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:

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:

  1. Verify you are viewing the BDM HDD (exFAT) source, rather than the APA HDD source. Both use an HDD icon.
  2. 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.
  3. Check the actual DVD/ and CD/ contents, image names/extensions, and the selected PS2/PS1 view. A VCD in POPS/ belongs in the PS1 view.
  4. 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.
  5. 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.