Repository navigation
PS1 Reference
RiptOPL lists PlayStation 1 games beside the PS2 library on the same device. One PS1
view can contain two row types: *.VCD images launch through POPSTARTER, while game
folders under EMBER/games/ launch through Ember. The row decides the core; there is
no per-page emulator switch.
This document concentrates on POPSTARTER and its VCD/BDMA handoff. Ember uses the same PS1 page but does not use POPSTARTER, BDMA, or the memory-card driver preparation described below.
Every game device has a PS2 library and a PS1 library:
- PS2: ISO / ZSO / UL / HDL rows, as supported by that device.
-
PS1: POPSTARTER
*.VCDand Ember game-folder rows, merged and sorted together on ordinary local devices, SMB, MMCE, and APA/PFS HDD.
How those libraries appear is controlled by PS2/PS1 Game Display (§2). They can be two L3-switched views, one combined list with filters, or a single locked library. They remain views of the same device page — with the same covers, favorites, and per-game settings — rather than extra device tabs.
RiptOPL’s UDPFS Files page lists Ember titles and uppercase POPS/*.VCD files.
Ember keeps the mounted network transport alive. POPSTARTER reads UDPFS VCDs through Okeanos’s
separate BDM-UDPFS Assault driver and USB support files; see POPS UDPFS setup.
With BDMA Apply on Launch, RiptOPL attempts to equip the .udpfs pair before VCD handoff.
An already usable matching manual pair also works. Without a valid pair, the network VCD launch
is stopped. UDPBD remains outside this POPSTARTER driver's scope.
The PS2/PS1 Game Display picker is on Settings → Interface. It is one global setting for every device page:
| Value | Behavior |
|---|---|
| Both (L3) (default) | each device page has separate PS2 and PS1 views; L3 switches between them and each page retains its own position |
| Mixed | each device page initially combines its PS2 and PS1 rows; L3 cycles Mixed → PS2 → PS1 on that device |
| PS2 | each applicable device page shows PS2 rows only; L3 is completely inert, with no hint, sound, notification, or pause |
| PS1 | each applicable device page shows PS1 rows only; L3 is completely inert, with no hint, sound, notification, or pause |
The setting applies to device game pages, including UDPFS and UDPBD. It does not control APPS or Favorites; those pages have the independent behavior described below. Switching back to an L3-enabled mode restores each device page's retained position. Returning from the Start/settings menu also returns to the device page you paused on when that page is still visible; it no longer arbitrarily selects USB.
The independent APPS Display picker has two values:
- Mixed (default) shows every configured ELF in one list and leaves L3 completely inert.
-
Apps / PS1ELF (L3) gives APPS two L3 views. Entries whose displayed title contains
[PS1](case-insensitive) appear on PS1ELF; all other entries appear on Apps. This is only a list accommodation for users who package PS1 launchers as ELFs. Either side still launches the entry as an ordinary configured ELF.
Press R3 on a PS1 title to favorite it, exactly as you would a PS2 game. The Favorites page always keeps its own independent four-stop L3 ring:
- All in One — PS2, PS1, and ELF favorites together.
- PS2 — PS2 disc favorites only.
- PS1 — POPSTARTER and Ember favorites together.
- ELF — homebrew/app favorites only.
A VCD favorite launches through POPSTARTER straight from the Favorites tab — even when the source device page is currently showing its disc list — and carries its PS1 cover art and disc badge with it.
The favorite handoff is wired on every device with a VCD view — USB, MX4SIO, iLink, the internal exFAT HDD, SMB, MMCE, and the APA-formatted internal HDD. (On the APA HDD the PS1 games are spread across multiple APA partitions, so opening one of its VCD favorites re-scans those partitions to find the game — the first launch may take a moment.)
VCD titles always boot through POPSTARTER.ELF. They never use OPL's built-in core
or Neutrino, so on a VCD game the per-game Loader Core selector is locked to an
inert label — choosing a core there has no effect on a PS1 game.
For ordinary VCD files, POPSTARTER needs the VCD's name; RiptOPL hands it the selected
title and POPSTARTER finds the matching *.VCD. An APA one-game install instead launches
with its literal, case-sensitive PP.<name> / __.<name> partition label so POPSTARTER can
mount that partition and boot its fixed IMAGE0.VCD.
Every local block-device VCD handoff, including iLink, uses POPSTARTER's normal local selector:
mass:/POPS/XX.<name>.ELF. OPL's live mount may be massN:, but POPSTARTER resets the IOP and
re-registers the selected device driver as bare mass: before it resolves that XX. argument.
Current iLink hardware status: the selector and external equip are present, but revision 2692 still returned POPSTARTER to wLaunchELF on an SCPH-39001 in all four SDK flavours. Ember passed on the same iLink disk. Treat iLink POPSTARTER as wired but not hardware-confirmed until a later build passes; the statement above documents the argument contract, not a claimed successful boot.
Where POPSTARTER.ELF is loaded from is controlled by PS Emulation Settings →
POPSTARTER.ELF Path. The old device picker is gone. The path field displays <not set> until
you enter a custom full path. When you upgrade, a device the old picker was set to becomes the matching
path, for example usb:/POPS/POPSTARTER.ELF or mmce:/POPS/POPSTARTER.ELF, and an old Custom path is
kept as it was. HDD (APA) and Game's Device become <not set>, because the Game Device tier below
already covers them.
The launch resolver uses one fixed order:
-
Custom Path — the user-entered full
POPSTARTER.ELFpath, when present and resolvable. -
Game Device — the VCD's own
POPS/POPSTARTER.ELF. -
Memory Card —
mc0:/POPS/POPSTARTER.ELF, thenmc1:/POPS/POPSTARTER.ELF.
A stale or temporarily unavailable custom path does not strand the launch; it falls through to the same Game Device → MC behavior as an empty field.
The custom ELF may live on a different backend from the VCD. RiptOPL keeps both backends available
until the argv-preserving loader has opened POPSTARTER.ELF, so combinations such as an
MMCE-hosted ELF with an APA-HDD game are no longer torn down merely because the game is elsewhere.
Typed BDM aliases are normalized by the mounted driver's real identity (massN: may be USB,
MX4SIO, ATA, iLink, or a network block transport). They search the devices mounted now and load
only the one named driver, briefly, when no device of that family is present; massN: is that exact
slot. NEUTRINO.md has the full rules, which
are shared. APA hdd:/... / hdd0:/... paths resolve only through the already-selected live OPL
data-home partition; RiptOPL does not mount an arbitrary APA partition just because a custom ELF
path names one.
When RiptOPL equips the BDMA drivers, it looks for the variant files first beside the file the
custom path resolved to, so keep them in the same folder as a relocated POPSTARTER.ELF.
For an APA-HDD VCD, the Game Device tier retains the established canonical
hdd0:__common/POPS/POPSTARTER.ELF route. If that is absent, the resolver proceeds to the memory
cards. A custom path still outranks the APA default.
The path editor uses the full 256-byte setting buffer, and its text field scrolls to keep the cursor in view; it is no longer limited to the 31-character inline preview.
This setting moves only the executable POPSTARTER.ELF. It does not relocate POPSTARTER's
memory-card dependency/config folder used by SMB/BDMA preparation; those files retain their existing
mc?:/POPSTARTER/ rules.
The resolver above chooses which copy of POPSTARTER.ELF is loaded. Which build that copy is
comes down to the file itself, and the release package ships five of them in
POPS/POPSTARTER VERSIONS/:
| Build | Use it when |
|---|---|
| MAIN | POPSTARTER without the SMB support the shipped default carries. Only if you know you do not need SMB. |
| DEBUG | The shipped default. SMB-capable, and prints POPSTARTER's own diagnostics on screen. |
| USBDELAY | USB devices that need longer to settle before POPSTARTER reads them. |
| USBDELAY_DEBUG | USBDELAY plus the diagnostics. |
| USBDELAY_LONGER_DEBUG | A longer delay again, with diagnostics. |
Swapping is manual: copy the POPSTARTER.ELF you want over the POPS/POPSTARTER.ELF that the
resolver selects. RiptOPL never chooses a build for you and never rewrites that file.
The shipped
POPS/POPSTARTER.ELFis the DEBUG build, deliberately — it is the build carrying SMB support, so it is the correct default for the package. POPSTARTER diagnostic text during an otherwise healthy VCD launch is therefore expected on every device, and is not evidence of a problem on its own. Do not replace it with MAIN unless you are certain you do not need SMB.
| Device | Location |
|---|---|
| USB / MMCE / MX4SIO / iLink / SMB | a POPS folder at the device root, holding POPSTARTER.ELF + your *.VCD files |
| Internal HDD (APA/PFS) | two layouts, both listed: an exact __.POPS, __.POPS0 … __.POPS9 store partition (many *.VCD on its root, named per file), and/or PP.<name> (visible) / __.<name> (hidden-label) one-game partitions. A one-game candidate is listed only when its root contains the exact file IMAGE0.VCD, which prevents similarly named HDD apps from appearing as games; it is shown as <name>. POPSTARTER.ELF is loaded from the canonical __common/POPS location unless a custom full path is configured. |
The HDD's
XX.*(BDMA/exFAT) andSB.*(SMBv1) launcher partitions point at VCDs that live on an exFAT device or an SMB share — those games appear under the USB/MX4SIO/MMCE or SMB VCD views, not the internal-HDD one.
VCD per-game config and art use the VCD filename without .VCD as their identity. They
otherwise follow the same layout and suffix rules as PS2 games on that device:
POPS/SCUS_123.45.Example.VCDCFG/SCUS_123.45.Example.cfgART/SCUS_123.45.Example_COV.png
When the filename begins with a valid PS1 disc ID, RiptOPL also accepts that ID as a fallback after
the filename lookup misses. For the example above, the fallback names are
CFG/SCUS_123.45.cfg and ART/SCUS_123.45_COV.png. This is a same-folder compatibility fallback;
POPS/ART/ and a suffixless POPS/<name>.png remain POPSLoader-only layouts.
APA PP.<name> and __.<name> one-game installs are the naming exception: every partition contains
the same physical IMAGE0.VCD filename, so config and art use the displayed <name> from the label.
Internal HDD covers and config: VCD entries use the same OPL data prefix as PS2 HDD games. On a
+OPLdata partition that means its rootART/andCFG/folders; when OPL data lives under the legacy__common/OPL/layout, useOPL/ART/andOPL/CFG/.
POPSTARTER reloads its mass-storage driver after resetting the IOP. USB FAT32 can use its built-in
driver; USB exFAT and the MX4SIO, MMCE, ATA and iLink transports need matching external
block-device modules (the BDMAssault / "BDMA" drivers). RiptOPL
equips them for you from the BDMA rows on Settings → PS Emulation Settings — RiptOPL copies the selected
loose pair from a device's POPS/ folder onto your memory card:
RiptOPL prefers an existing mc0:/POPSTARTER or mc1:/POPSTARTER folder. It creates one only
when it has something to put in it: a BDMA driver pair it found, a POPSTARTER launch's install, or a
POPStarter network-settings save. Opening the settings, reading the BDMA mode, or choosing FAT32 (no
external driver) never creates it. A new folder goes on the first present card (slot 1, then
slot 2) and always gets its browser icon first: POPStarter's own icon.sys/list.icn/del.icn
from the POPS/ folder the files come from, or RiptOPL's icon titled POPSTARTER when that folder has
none. It therefore never shows as Corrupted Data. An icon-less folder left by an older build can
simply be deleted from the PS2 browser if you don't use POPStarter. Both replacement modules are
staged before the live pair is changed, so a failed copy leaves the previous pair available.
- VCD BDMA Apply on Launch (default On) — POPSTARTER does its own IOP reset and reloads its block-device driver from the memory card, so the right exFAT variant must already be on the card or the game drops to OSDSYS. When On, RiptOPL equips the variant matching the PS1 game you're launching (read from that game's own device) automatically, right before boot. Turn it Off to manage the driver yourself; that reveals the BDMA Source / BDMA Mode pickers below. Automatic equip proves only that the right files were staged; it does not turn the still-failing revision 2692 iLink POPSTARTER result into a pass.
-
USB launches always ask — the PS2 cannot detect whether a USB stick is fat32 or exFAT
formatted, so every USB .VCD launch first shows a "fat32 or exFAT USB Mode?" dialog
(fat32 is recommended for non-exFAT USB users). Picking fat32 de-equips to POPSTARTER's
built-in USB stack (preserving any complete, unmarked manually-managed module pair); picking
exFAT equips the BDMAssault
usbexfatpair. The pick applies even when Apply-on-Launch is Off, and backing out of the dialog cancels the launch. -
BDMA MODE (manual; shown when Apply-on-Launch is Off) — which driver variant POPSTARTER should use:
USB (FAT32)(none — removes the exFAT modules so POPSTARTER falls back to its built-in FAT32 driver),USB (exFAT),MX4SIO (exFAT),MMCE (exFAT),HDD (exFAT)(the internal ATA HDD via BDMAssault), oriLink. -
BDMA SOURCE — which device holds the module files in its
POPSfolder:USB,MX4SIO,MMCE,Internal HDD, oriLink. OPL identifies each device by its block-device driver (usb/mx4sio/ata/ilink/mmce) and reads from that specific device, so pick the one your module files actually sit on. For the internal exFAT HDD chooseInternal HDD— OPL reads the files from the samemassN:/POPS/folder it lists that drive's PS1 games from (it never mounts anata0:filesystem;ata0:is only an internal block-device identity, not a readable path). It is the same physical volume wLaunchELF shows, so placePOPS/usbd.irx.ata+POPS/usbhdfsd.irx.atathere.
Module file names matter. The two driver files in that
POPS/folder must be named for the BDMA MODE you pick:usbd.irx.<mode>andusbhdfsd.irx.<mode>. ForHDD (exFAT)that isusbd.irx.ata+usbhdfsd.irx.ata; iLink usesusbd.irx.ilink+usbhdfsd.irx.ilink(other modes use.usbexfat,.mx4sio,.mmce). Plainusbd.irx/usbhdfsd.irxwith no suffix are ignored. If the selected pair is absent from every searched devicePOPS/folder, RiptOPL warns and leaves the current memory-card pair unchanged.
When you change either setting, RiptOPL copies the chosen variant's modules from the
SOURCE device's POPS folder onto mc?:/POPSTARTER/ and records the equipped state in a
marker file there (compatible with POPSLoader). Every pair ships as separate files in the release
POPS/ folder; no BDMA module is embedded in RIPTOPL.ELF. On apply, RiptOPL strips only the
mode suffix and writes mc?:/POPSTARTER/usbd.irx + mc?:/POPSTARTER/usbhdfsd.irx. Keep the whole
release POPS/ folder on the relevant device so automatic launch preparation can find its pair.
SMB is network-only, so the BDMA equip does not apply to it.
The internal exFAT HDD (enable BDM HDD in Game Sources) mounts as a normal BDM
block device, so its PS1 games in massN:/POPS/ list and launch through the same device page
according to PS2/PS1 Game Display — there's no separate page. Equip the HDD (exFAT) BDMA mode
so POPSTARTER itself can read them off the exFAT volume.
Okeanos's BDM-UDPFS Assault adds read-only UDPFS fallback to POPSTARTER's USB driver. USB is tried first; when a VCD is absent there, the driver requests the same path from the UDPFS server after POPSTARTER's IOP reset. This is a POPSTARTER driver, separate from Neutrino's PS2 UDPFS loader.
The included POPS/ folder supplies these four files:
| Included file | Installation / purpose |
|---|---|
usbd.irx.udpfs |
Copy to mc?:/POPSTARTER/usbd.irx, removing .udpfs
|
usbhdfsd.irx.udpfs |
Copy to mc?:/POPSTARTER/usbhdfsd.irx, removing .udpfs
|
IPCONFIG.DAT |
USB mass:/POPS/IPCONFIG.DAT: PS2 IP, netmask, optional gateway |
UDPFSCONFIG.DAT |
USB mass:/POPS/UDPFSCONFIG.DAT: UDPFS server IP; empty file enables discovery |
Keep your own POPS_IOX.PAK and other runtime POPS files on USB. The driver pair can be
sourced from POPS/ on any supported device, including APA HDD __common/POPS/.
On the server, place the VCD at the matching path relative to the shared root, for example
POPS/SLUS_011.56.VCD; the driver also accepts POPS0/ through POPS9/. Use uppercase
.VCD. Only VCD reads fall back to the network; other files and writes stay on USB.
The upstream release reports testing with udpfsd and udpfs_server.py.
Edit the supplied examples for your LAN before use: IPCONFIG.DAT contains
192.168.1.10 255.255.255.0 192.168.1.1, and UDPFSCONFIG.DAT contains 192.168.1.11.
Without a valid IP config, the driver uses PS2 192.168.1.10/24; without a valid same-subnet
server address it uses broadcast discovery. The server must be on the PS2's subnet: the
driver does not route through the gateway. These files are read from USB, not from the
memory card and not from RiptOPL's saved network settings.
RiptOPL setup: open POPS Network Settings → POPS UDPFS Network Settings and enter
your PS2 IP, netmask and server IP. Server 0.0.0.0 selects broadcast discovery. Saving writes
both files to every connected USB volume's POPS/ folder, with replacement confirmation
for existing files. This editor is separate from the SMB memory-card configuration.
The UDPFS Files PS1/Mixed view now lists uppercase POPS/*.VCD alongside Ember titles.
Launching a VCD there, or from Favorites, checks the USB config pair on every connected USB
volume and requires matching valid values before proceeding. This explicit check is an interim
requirement because the Alpha IRX reads runtime configs from USB mass:/POPS/; upstream
itself permits missing files and falls back to defaults. Installing support files on another
device does not change that runtime USB requirement.
With VCD BDMA Apply on Launch enabled, RiptOPL equips the .udpfs pair on the memory
card and hands POPSTARTER its usual mass:/POPS/XX.<name>.ELF selector. With automatic
equip disabled, select BDMA Mode → UDPFS and equip the pair manually. The launch
checks the installed pair and refuses to tear down RiptOPL if neither
the recorded pair nor a manually installed matching pair is ready.
No dummy USB VCD is required: the missing VCD triggers network fallback.
USB VCDs take precedence over the server when both contain the same path. UDPBD and UDPFS
IMG remain Ember-only. The new RiptOPL VCD handoff is implemented and host-tested; physical
console validation is still pending, and POPS UDPFS RetroAchievements integration is unavailable.
If any connected USB volume contains RiptOPL's USB-only RA POPS/MODULE_9.IRX,
launch is refused. Back up and remove that module before retrying a clean POPS
UDPFS launch. Unreadable modules also prevent handoff; user-owned modules are
left untouched. This check does not delete files or add POPS RA support.
Credit goes to Okeanos for BDM-UDPFS Assault, israpps for the original BDM Assault,
krHACKen for POPSTARTER, rickgaiser for Neutrino/UDPFS/UDPRDMA, pcm720 for udpfsd,
and the PS2SDK contributors. The upstream release is Alpha. Its license and third-party
notices accompany the drivers in POPS/UDPFS-NOTICES/.
PS1 games on an SMB share need POPSTARTER's own network config (IPCONFIG.DAT +
SMBCONFIG.DAT) on the memory card, plus its SMB modules. Edit those files from
POPSTARTER Network Settings, on Settings → PS Emulation Settings or Settings → Network.
The screen shows what the card's files already contain, can import both from the connected share's
POPS folder, and on OK writes back only the values you changed. The exception is a first setup:
with neither file on the card, saving the SMB values writes IPCONFIG.DAT too, as DHCP unless a
complete static IP is entered. The SMB modules themselves ship in the release's POPS/ folder
(copy them to mc?:/POPSTARTER/); if they're missing, an SMB VCD launch warns rather than
hanging.
Work down this ladder; each step isolates a different stage (from the #154 forensics):
- Does the device page appear at all? If not, it's the device enables, not VCD: USB/MX4SIO/ iLink need their toggles on; the internal exFAT page needs BDM devices + BDM HDD ON. APA/PFS and exFAT/BDM-ATA can both be enabled because they share the ATA stack; leaving the APA page enabled does not suppress the exFAT page.
- Do PS2 ISOs list from the device? If yes, the filesystem/mount layer is proven working and the problem is downstream of listing — skip to the VCD-specific steps below.
- Check PS2/PS1 Game Display. Both (L3) switches between separate libraries and Mixed cycles Mixed/PS2/PS1. L3 is intentionally absent and inert in the locked PS2 and PS1 modes; choose PS1 when you want the PS1 library without an L3 action.
-
VCDs are scanned from
<device-root>:/POPS/*.VCD— the game-folder prefix (usb_prefixetc.) is deliberately not applied, because POPSTARTER itself only reads/POPSat the root. APOPSfolder inside your games subfolder will never be found. -
Name rules: basenames longer than 160 characters and the reserved name
POPSTARTER.VCDare skipped at scan (the debug log says so) — previously they listed but could never launch (a dead ✕ button). Rename the file. -
Fails only after selecting a game? Then listing/scan is fine and the handoff is the
suspect:
POPSTARTER.ELFpresent in/POPS(or__common/POPSon APA)? On a BDMA-backed device, the BDMA equip (§5) is best-effort — a failed equip toasts but the launch still proceeds and may land on OSDSYS. -
iLink returns to wLaunchELF? Inspect the card after the attempt. A successful RiptOPL equip
leaves
mc?:/POPSTARTER/bdma_config.txtcontaining exactlyilink, plususbd.irx(48,500 bytes; SHA-2565EA4818BA1CF5207F6D7CADB4C13B5AFA88C37C260750C21155B079A8C18F369) andusbhdfsd.irx(23,452 bytes; SHA-256145CF1C0AF130EA7AC5CEC6696AA7E60B5C66A2AC46B8DEA94DB17BB3B911BCC). Missing or different files put the defect on RiptOPL's external-equip side; exact files narrow it to POPSTARTER/BDMA runtime reinitialization after the handoff. -
UDPFS shows Ember but no VCDs? Select UDPFS Files, check server
POPS/*.VCDwith uppercase.VCD, and refresh the PS1/Mixed view. For launch failures, check the BDM-UDPFS Assault setup: installed memory-card pair, matching USB configs, runtime support files and same-subnet server. UDPBD and UDPFS IMG remain Ember-only. -
"Missing ember.elf", "Missing bios.bin beside ember.elf" or "Missing POPSTARTER.ELF" on
launch? The message's second line is the exact file RiptOPL looked for, for example
mass0:/EMBER/ember.elformass0:/POPS/POPSTARTER.ELF(on the internal HDD,hdd0:__.EMBER/EMBER/ember.elforhdd0:__common/POPS/POPSTARTER.ELF; with a custom POPSTARTER.ELF Path set, that path). Put the file there and launch again. Ember game folders stay listed whileember.elfis missing, so a missing or misnamed core shows up as this message instead of an empty Ember library. On the internal HDD, "Error, could not run the item." with a partition name (hdd0:__.EMBER) means that partition itself would not mount, so nothing inside it was checked yet.
- VCD support reuses the normal device pipeline, so covers, favorites and the theme all work exactly as they do for disc games.
- POPSTARTER, the patch file and every BDMA module variant are supplied as separate files in the
release
POPS/folder. RiptOPL embeds none of them. - The Loader Core, GSM, Cheats, PADEMU and similar per-game options do not apply to PS1 games (POPSTARTER ignores them).
See also NEUTRINO.md for the separate PS2 external-core loader, and ../ROLLING_RELEASE.md for what the builds contain.
Related guide: PS1 Games.
Source: docs/VCD.md @ 679582deddf5.
POPS UDPFS section update: C++ source @ 4157d5a23eb5 and Pages @ fdda817f7cd4. Other content retains its imported source reference above.
Start here
Storage and networking
- USB, MX4SIO and iLink
- MMCE
- Internal HDD: APA and exFAT
- SMB shares
- Network boot: UDPFS and UDPBD
- HTTP
- NBD server
Games and features
- Neutrino core
- PS1: POPStarter and Ember
- Per-game settings
- Virtual memory cards
- GSM video modes
- In-game reset
- Cheats
- PADEMU
- RetroAchievements
- Apps
Interface and customization
Help and reference
- Troubleshooting
- ZSO format
- Backward-compatible PS3
- Credits and sources
- Features in other forks
- Project overview
Detailed references
- Fresh-start defaults reference
- Complete repository guide
- Rolling release reference
- APA hard disk safety and code 402
- Autolaunch and global settings
- Controls reference
- GSM reference
- HTTP reference
- In-game reset reference
- Folders, parental lock and audio
- Language maintenance
- MX4SIO launch reference
- Neutrino reference
- PADEMU reference
- RetroAchievements reference
- Theme engine: full authoring reference
- PS1/VCD reference
- HTTP server conformance tools
- APA recovery tool