PS1 Games
RiptOPL can list and launch your PlayStation 1 games right alongside your PS2 library,
on the same device. It does this through two cores — POPSTARTER for *.VCD
images and Ember for game folders containing *.cue, *.bin, or
*.exe discs. Ordinary devices merge both into one PS1 list. Neither uses OPL's built-in core or Neutrino, so this is a self-contained path with
its own storage layout and settings.
| Core | Format | Lives in |
|---|---|---|
| POPSTARTER | *.VCD | <device>:/POPS/ |
| Ember | *.cue / *.bin / *.exe | <device>:/EMBER/games/<Game Name>/ |
The two are interleaved and sorted as one library, so a game you keep for both cores simply appears twice. Which core runs a title is a property of that row, decided when you launch it — there is nothing to configure and no third toggle.
PS2 and PS1 libraries on each device
Every supported game page holds a PS2 list and a PS1 list:
- its PS2 games (ISO / ZSO / UL format), and
- its PS1 games — POPSTARTER
*.VCDimages and Ember*.cuetitles together, in one list.
PS2/PS1 Game Display controls whether these are separate L3-switched views, a combined list with filters, or one locked library. They remain views of the same device page — with the same covers, favorites, and per-game settings — rather than separate device tabs.
POPS/*.VCD and POPS/*.cue games alongside Ember titles and launches them through Okeanos's UDPFS Assault TEST pre-release, which serves every POPSTARTER file and VMC save from the server and builds a VCD from a cue sheet on the fly. No USB device is involved. See setup, supplied files and credits. The VCD handoff has not been tested on a real console. UDPBD and UDPFS IMG remain Ember-only.PS2/PS1 Game Display
The 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 starts with PS2 and PS1 rows combined; L3 cycles Mixed → PS2 → PS1 on that page. In the combined list each row's cover is drawn at its own media's size, so PS1 covers stay square beside portrait PS2 covers. |
| PS2 | Applicable device pages show PS2 only; L3 is fully inert, with no hint, sound, notification, or pause. |
| PS1 | Applicable device pages show PS1 only; L3 is fully inert, with no hint, sound, notification, or pause. |
APPS and Favorites do not inherit this setting. Favorites always has its independent
PS2 → PS1 → ELF → All in One ring, opening on PS2. Applications Display either keeps
all ELFs in one inert Mixed list or splits Apps / titles containing [PS1]
(case-insensitive) across L3; either side still launches an ordinary ELF. Switching back to an
L3-enabled device mode restores each device page's retained position.
How PS1 games launch
A PS1 row carries its own core. A *.VCD row boots through
POPSTARTER.ELF; an Ember row boots through ember.elf. Neither ever uses
OPL's built-in core or Neutrino, so on any PS1 game the per-game Loader Core selector is an
inert label and changing it has no effect. The same applies to GSM, Cheats, PADEMU and the other
PS2-specific per-game options — neither PS1 core reads them.
POPSTARTER only needs the VCD's name to do its job. RiptOPL hands it the selected title
and POPSTARTER locates the matching *.VCD file itself. Ember is handed the name of the
game folder and finds its own disc image inside it.
For an iLink VCD, RiptOPL uses the same local block-device handoff as USB and MX4SIO:
mass:/POPS/XX.<game>.ELF. The normal XX. filename rules therefore
apply unchanged.
POPSTARTER.ELF path
RiptOPL looks for POPSTARTER.ELF in a fixed order:
- Settings → PS Emulation Settings → POPSTARTER.ELF Path, when it is set. It is a full
path on any device, for example
mmce0:/POPS/POPSTARTER.ELForusb:/POPS/POPSTARTER.ELF; the device aliases are the ones listed for the Neutrino Path. The editor takes the whole path. - The VCD's own device: its
POPS/POPSTARTER.ELF. For an APA HDD VCD this ishdd0:__common/POPS/POPSTARTER.ELF. mc0:/POPS/POPSTARTER.ELF, thenmc1:/POPS/POPSTARTER.ELF.
A path that is set but unavailable falls through to the next two steps. The path may be on a
different device from the VCD; RiptOPL keeps both mounted until POPSTARTER has loaded. If you
relocate POPSTARTER.ELF, keep the BDMA driver variants in the same folder: RiptOPL
looks for them there first. The old POPSTARTER.ELF Device picker is gone; its device choice
becomes the matching path when you upgrade.
When none of them has it, the launch says Missing POPSTARTER.ELF and names the path it looked at: your POPSTARTER.ELF Path when it is set, otherwise the device's POPS/POPSTARTER.ELF (on the internal HDD, hdd0:__common/POPS/POPSTARTER.ELF).
Ember — the second PS1 core
Ember is created by Gageformer. It is an independent PlayStation 1
emulator written from scratch for the PS2, bundled unmodified under the Ember Public Beta Testing Licence.
That licence ships in the release package as EMBER/LICENSE-BETA.txt and governs the
build it accompanies; please read it. In short: free to use and to bundle non-commercially, no
selling, and no modifying or repackaging the build.
Setting Ember up
The release package contains a ready-made EMBER/ folder. Copy it to the root
of a device, right beside POPS/. Then add your own PS1 BIOS as
EMBER/bios.bin — it must be exactly 512 KB. A BIOS is copyrighted and is never
distributed with RiptOPL or with Ember, so the folder ships with a placeholder file whose name
reminds you. Give each game its own folder:
<device>:/EMBER/
ember.elf
bios.bin <- yours, 512 KB, not included
settings.txt <- optional, see below
games/
Spyro 2 (Ripto's Rage)/
whatever.cue
whatever.bin
The folder name is what you see in the list, and it is also the key for cover art and
per-game settings — so ART/Spyro 2 (Ripto's Rage)_COV.png on that device just works,
exactly as it does for a *.VCD. Files inside can be named anything;
.cue is preferred over .exe over .bin. Ember writes its
per-game memory cards (MC1.vmc, MC2.vmc) into that same game folder, so it
has to be on writable media.
ember.elf is missing or misnamed, so you can see them. Launching one then says what is missing and names the exact path RiptOPL looked at, for example mass0:/EMBER/ember.elf or mass0:/EMBER/bios.bin. On the internal HDD it names the partition, such as hdd0:__.EMBER/EMBER/ember.elf.
Ember settings
Ember reads an optional settings.txt. RiptOPL can write it for you from five rows on
Settings → PS Emulation Settings, and four more per game:
| Row | Values | Written to |
|---|---|---|
| Ember Display Mode | Default / 240p / 480i / 480p | <device>:/EMBER/settings.txt (display). 480p needs component or HDMI — composite shows no picture — so choosing it asks first. |
| Ember Timing | Default / Auto / NTSC / PAL | EMBER/settings.txt (timing). Auto follows the disc region; NTSC forces 60 Hz and PAL 50 Hz. |
| Ember Dithering | Default / On / Off | EMBER/settings.txt (dither) |
| Ember Shading | Default / 15-bit / 24-bit (experimental) | EMBER/settings.txt (shading). 24-bit can cause issues. |
| Ember Controller | Default / Auto / Analog / D2A | EMBER/settings.txt (controller) |
| Triangle → Ember Game Settings (per game) | Ember Timing, Dithering, Shading and Controller, each with the same values as the global row | EMBER/games/<Folder Name>/settings.txt (timing, dither, shading, controller), overriding the global rows for that game. Written as soon as you press OK, before any launch, and applied again at launch. An untouched Default keeps a value already in the file; changing a row back to Default removes that override. Display Mode stays global. Saved in the game's CFG/<Folder Name>.cfg; on a Favourites entry it edits the same setting as on the device page. |
RiptOPL only touches a setting you have changed in RiptOPL. A row left on Default
leaves that key alone in every file, so a settings.txt written by hand keeps working
exactly as written. Changed per-game rows are saved on OK; global rows are applied when you launch
an Ember title on that device, creating the file if needed and updating it in place. Changing a row back to
Default removes the key again (and the file, if that key was all it held), so Ember's own
default — or, for a game, the global row — applies. Every other line in the file is kept.
Timing, Dithering, Shading and Controller can be overridden per game; Display Mode stays global.
24-bit shading can cause issues in some titles. Earlier builds labelled Ember's
480 as "480p"; it has always been 480i, and the 480i / 480p rows now say so.
Device support
Ember titles are supported on USB, MX4SIO, iLink, exFAT-ATA, MMCE, SMB, APA/PFS HDD,
UDPFS and UDPBD. Ordinary device pages merge Ember folders with their POPSTARTER rows.
UDPFS Files also lists uppercase POPS/*.VCD; UDPBD and UDPFS IMG remain Ember-only.
A device with no EMBER/ library simply contributes no
Ember rows, and every ordinary device's POPSTARTER library lists exactly as before.
Where to put your VCD files
| Device | Location |
|---|---|
| USB / MMCE / MX4SIO / iLink / SMB | A POPS/ folder at the device root, containing POPSTARTER.ELF and your *.VCD files. |
| Internal HDD (APA/PFS) | The dedicated APA partitions __.POPS, __.POPS0 … __.POPS9. Each partition holds its *.VCD files at the partition root. |
| Internal HDD (exFAT / BDM) | massN:/POPS/ — the same layout as USB, accessed through the BDM mass-device namespace. Requires the BDMA exFAT equip. |
SXXX_NNN.NN.Title.VCD, RiptOPL
keys cover art and per-game config off that PS1 ID — so covers load from your ART/
folder exactly as they do for PS2 games. Any other *.VCD filename is still listed and
launched; it just won't auto-match art by ID.
Sony's POPS files
POPSTARTER also needs Sony's PS1 emulator in the same POPS folder: POPS_IOX.PAK, plus
either POPS.PAK or POPS.ELF with IOPRP252.IMG. They come from your own
console's software, so RiptOPL cannot make them. Without them the game is a black screen, then the browser.
Before a PS1 launch from USB, MX4SIO, iLink, an exFAT HDD or MMCE, RiptOPL checks for them:
- Another started drive has a full set: RiptOPL offers to copy them over. It looks at the other BDM
drives, both MMCE cards and the internal HDD's
__common/POPS(read only). Only the missing files are copied, nothing already there is overwritten, and a copy that fails part way is removed. - No full set, or you decline: RiptOPL names what is missing and asks whether to launch anyway.
From RIPPS2 builds 85, 89 and 115 by akilluminati47. NOT TESTED on hardware.
POPS UDPFS with BDM-UDPFS Assault
RiptOPL uses Okeanos's UDPFS Assault TEST pre-release (2026-10-28; it replaces
1.0.0) as its only POPSTARTER UDPFS BDMA driver. It serves every mass: request from the UDPFS server, including POPS dependencies
and VMC writes. USB is not required. The older Alpha driver, which tried USB first and only
fetched VCDs from the network, is no longer bundled or selected. The driver starts again after POPSTARTER
resets the IOP, independently of RiptOPL's own UDPFS connection, and is separate from Neutrino's PS2 UDPFS
loader.
BDMA Mode → UDPFS uses POPS/usbd.irx.udpfs (the unmodified 51,029-byte
udp_fs_assault.irx) and POPS/usbhdfsd.irx.udpfs (the 34,508-byte
usbd_bd_assault.irx). They install as mc?:/POPSTARTER/usbd.irx and
usbhdfsd.irx. With VCD BDMA Apply on Launch enabled, a UDPFS game equips this pair
automatically; a matching installed pair is not copied again, and a 1.0.0 or Alpha pair counts as stale and is replaced. With
automatic equip disabled, equip UDPFS manually before launching.
Keep all support files in POPS/ under the server's shared root (udpfs:/POPS/ while
RiptOPL is running). Automatic equip reads this folder only and never substitutes another device's pair. Put
your own POPSTARTER.ELF, POPS_IOX.PAK, VCDs and other POPS dependencies there at their
normal paths. Use uppercase .VCD and exact path casing on Linux servers. RiptOPL does not migrate
existing saves.
BIN/CUE without conversion. A game can also be POPS/<game>.cue (or .CUE)
plus the .bin file(s) it names, in the same folder. RiptOPL lists it like a VCD, and the driver
presents it to POPSTARTER as POPS/<game>.VCD, built on the fly. A real .VCD with the same
name always wins, and the list shows that game once. One .bin per disc or one per track (Redump)
both work. Upstream limits: track 1 must be MODE2/2352, no PREGAP/POSTGAP, every track needs INDEX 01,
.bin sizes must be multiples of 2352, cue sheets up to 16 KiB and 99 tracks, images under 4 GiB.
The driver opens each .bin once at start (about 10 ms per file) and uses about 46 KB more IOP RAM
than 1.0.0. A cue game's disc ID is not read from the image in the list or for the RetroGEM barcode; name
the file SLUS_123.45.Title.cue if you want the ID shown. NOT TESTED on a real console.
Optional file in the server's POPS/ | Memory-card destination | Contents |
|---|---|---|
IPCONFIG.DAT | mc?:/SYS-CONF/IPCONFIG.DAT | PS2 IP, netmask, optional gateway |
UDPFSCONFIG.DAT | mc?:/SYS-CONF/UDPFSCONFIG.DAT | Server IP; absent or empty selects discovery |
Edit the supplied DAT examples for your LAN. Before each launch, each file is checked on its own: an
existing copy on either memory card is kept, and a missing one is copied from the server's POPS/
if supplied. This happens even when the drivers are already equipped. New files go to the card that holds
POPSTARTER, or the first available card. Files over the upstream 120-byte limit are refused rather than
truncated.
The driver reads each file from mc0:/SYS-CONF/, then mc1:/SYS-CONF/. Without
configuration it uses PS2 192.168.1.10/24 and server discovery. The server must be on the PS2's
subnet: the driver does not route through the gateway. USB mass:/POPS/ config files from the Alpha
driver are no longer read.
RiptOPL setup: open POPSTARTER Network Settings (on Settings → PS Emulation
Settings or Settings → Network) and choose POPS UDPFS Network Settings. It edits the
effective memory-card files, shows where they are, and asks before replacing them; server 0.0.0.0
selects discovery. A file on MC0 wins over its MC1 counterpart. Saving checks the original and the
replacement and keeps a backup without relying on memory-card rename; if a restore fails, recover the
leftover .bak files before saving again. The SMB POPSTARTER settings are kept separately.
The server must allow writes (udpfsd without -ro, or
udpfs_server.py without --read-only), because VMC saves now live on the server. Keep
backups: upstream documents that a long network interruption while saving can leave an incomplete file.
The UDPFS Files PS1/Mixed view and Favorites share this launch path. If the required driver pair is
missing or stale, RiptOPL stops before shutting anything down and says so. Ember keeps its own
udpfs: backend; UDPBD and UDPFS IMG are outside this POPSTARTER feature. POPS UDPFS has no
RetroAchievements support, so RiptOPL offers to delete a RetroAchievements module left in the server's
POPS/ by an earlier tracked launch. NOT TESTED on a real console: gameplay and
saves have only passed host checks and target builds.
Credit goes to Okeanos for BDM-UDPFS Assault, israpps for the original BDM Assault,
krHACKen for POPSTARTER, ps2max32 / rickgaiser for UDPFS/UDPRDMA, pcm720 for
udpfsd, Gageformer, and the PS2SDK contributors. Unmodified upstream instructions,
license notices and verified hashes accompany the drivers in POPS/UDPFS-NOTICES/.
exFAT support — the BDMA equip
POPSTARTER's stock driver handles ordinary USB FAT32. USB exFAT and the MX4SIO, MMCE, ATA and
iLink transports need matching external block-device modules (the BDMAssault / "BDMA" drivers). RiptOPL
equips them onto your memory card from Settings → PS Emulation Settings — you supply the module
files, RiptOPL copies the right pair to mc?:/POPSTARTER/. VCD BDMA Apply on Launch
ships On, so by default the matching pair is equipped automatically immediately before each VCD
launch and the manual BDMA Source / BDMA Mode pickers stay hidden; turn it Off to
equip by hand instead.
POPS/ folder RiptOPL can read: with VCD BDMA Apply on Launch On (the
default) that is the game's own device; with it Off, whichever device you select as the
BDMA Source. RiptOPL also pre-checks your boot device's POPS/ folder — and the
folder holding a custom POPSTARTER.ELF, if you set one — ahead of either. The release
POPS/ folder includes what ships with the build; check the
Releases page for details.
For iLink the loose source pair is usbd.irx.ilink +
usbhdfsd.irx.ilink. RiptOPL removes only the .ilink suffix when it
copies them to the card as usbd.irx + usbhdfsd.irx.
mc?:/POPSTARTER/bdma_config.txt with exactly ilink,
usbd.irx at 48,500 bytes (SHA-256
5EA4818BA1CF5207F6D7CADB4C13B5AFA88C37C260750C21155B079A8C18F369), and
usbhdfsd.irx at 23,452 bytes (SHA-256
145CF1C0AF130EA7AC5CEC6696AA7E60B5C66A2AC46B8DEA94DB17BB3B911BCC). Missing or different
files identify RiptOPL's external-equip leg; exact files narrow the remaining failure to the
POPSTARTER/BDMA reinitialization leg.
BDMA Mode
Shown only when VCD BDMA Apply on Launch is Off. Selects which driver variant POPSTARTER should use:
| BDMA Mode value | Effect |
|---|---|
| USB (FAT32) | Removes any previously equipped exFAT modules, so POPSTARTER falls back to its built-in FAT32 driver. Use this for standard FAT32 USB drives. |
| USB (exFAT) | Equips the USB exFAT BDMAssault modules. |
| MX4SIO (exFAT) | Equips the MX4SIO exFAT BDMAssault modules. |
| MMCE (exFAT) | Equips the MMCE exFAT BDMAssault modules. |
| HDD (exFAT) | Equips the internal ATA HDD BDMAssault modules. Requires Internal HDD (exFAT) enabled in Game Sources. |
| iLink | Equips the iLink / IEEE 1394 BDMAssault modules from the .ilink pair. |
BDMA Source
Shown only when VCD BDMA Apply on Launch is Off — with it On the source is
the game's own device family instead. Selects which device RiptOPL reads the module files from (the
device whose POPS/ folder holds the variant you want to equip): USB,
MX4SIO, MMCE, iLink, or
Internal HDD. RiptOPL identifies the 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 an internally attached exFAT
HDD choose Internal HDD — RiptOPL reads it from its mounted massN: root (the exFAT
volume mounted through the BDM mass-device namespace, never a typed ata0: filesystem), so its
POPS/usbd.irx.ata + POPS/usbhdfsd.irx.ata are found.
SMB is network-only, so the BDMA equip does not apply to it.
The equip step
Place module files
Copy the appropriate BDMA variant's module files into the POPS/ folder of the
device you will select as the Source (USB, MX4SIO, MMCE, iLink, or the internal HDD).
Turn VCD BDMA Apply on Launch off
In Settings → PS Emulation Settings, set VCD BDMA Apply on Launch to Off. The BDMA Source and BDMA Mode pickers are hidden while it is On (the default).
Set BDMA Source
In Settings → PS Emulation Settings, set BDMA Source to the device that holds the module files.
Set BDMA Mode
Set BDMA Mode to the variant matching your target drive type (e.g. USB (exFAT) for an exFAT USB stick, HDD (exFAT) for the internal ATA drive, or iLink for IEEE 1394 storage).
Save settings
Save. RiptOPL copies the modules from Source's POPS/ onto
mc?:/POPSTARTER/ and records the equipped variant in a marker file there
(bdma_config.txt) so the settings UI reflects what's actually installed.
POPSTARTER will use the new modules on next launch.
PS1 over SMB
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 files on the memory card already
contain, can import both from the connected share's POPS folder, and writes back only what you
change. On 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. See POPSTARTER Network Settings.
The SMB modules themselves ship in the release's POPS/ folder — copy them to
mc?:/POPSTARTER/. If they are missing, an SMB VCD launch warns you rather than
hanging silently.
Internal HDD — APA partitions and exFAT
The internal HDD supports PS1 games through two paths that coexist:
- APA/PFS partitions — the traditional POPS APA volumes (
__.POPS,__.POPS0…__.POPS9). RiptOPL scans all of them and lists their*.VCDfiles in the HDD device's PS1 view. No BDMA equip is needed here because POPSTARTER reads PFS natively. - exFAT HDD (BDM) — enable Internal HDD (exFAT) in Game Sources. The exFAT volume
mounts as a normal BDM block device (one of the
massN:slots) and itsPOPS/folder appears in the same PS1 view as USB. Equip the HDD (exFAT) BDMA mode so POPSTARTER can read back off the exFAT volume at launch time.
For the full HDD setup guide, including the APA/exFAT layout and how to enable BDM HDD, see Internal HDD (APA & exFAT).
Notes & limitations
Ember list empty on internal exFAT or another BDM drive? Older builds let a loose file such as
EMBER/games/readme.txt or .DS_Store abort the Ember scan on FAT32 and exFAT.
Current builds skip loose files (#999,
checked in CI against real FAT32 and exFAT images). If you are on an older build, move loose files out of
EMBER/games/; this does not require reformatting the disk or changing the PS2 BDM Prefix.
- Ember does not provide IGR. POPSTARTER supplies its own reset behavior; neither uses RiptOPL's PS2 IGR hook.
- The PS1 view reuses the normal device pipeline, so covers, favorites, and the theme all work exactly as they do for disc games.
- POPSTARTER, every loose BDMA pair (including
.ilink), and the POPS patch file ship as separate files in the releasePOPS/folder — RiptOPL does not embed any of them. - The per-game Loader Core, GSM, Cheats, PADEMU, and OSD options do not apply to PS1 games; POPSTARTER ignores them and the UI reflects this. Triangle on a PS1 title offers Global PS Emulation Settings instead, which opens the global PS emulation settings page, plus Rename. An Ember title also offers Ember Game Settings (its Ember Timing, Dithering, Shading and Controller; see Ember).
- SMB PS1 requires POPSTARTER's own network modules on the memory card in addition to the network config files.
POPSTARTER internals — sister site
The following topics are fully documented on the POPStarter docs site and are not re-documented here:
PS1 save icons
Artwork Settings → 3D Save Icons also displays PS1 save artwork, using the card's 2D icon. POPSTARTER cards are SLOT0.VMC/SLOT1.VMC in the VCD's accompanying save folder; Ember cards are MC1.vmc/MC2.vmc inside the listed game folder. Launch the game and create a save first. These emulator cards are separate from the PS2 VMC/<name>.bin assignments.