MMCE (SD2PSX / MemCard PRO2)
MMCE โ Memory Card Mass Storage Emulation โ lets OPL load PS2 games from an SD card inserted
into a device (SD2PSX or MemCard PRO2) sitting in the PS2's memory-card slot. The protocol was created by
bbsan2k; OPL's MMCE driver builds directly on that work. The device mounts as mmce0: or
mmce1: and uses the same folder layout as USB.
massN:
namespace alongside USB. If your adapter does not expose the MMCE protocol, see the
USB / MX4SIO / iLink page instead.
Quick start
Prepare the SD card
Format the SD card as FAT32 or exFAT with an MBR partition table. Create the standard OPL folder
tree at the card root: DVD/, CD/, ART/, CFG/, VMC/,
THM/, CHT/, APPS/. Copy PS2 game ISOs into DVD/ (DVD-format
titles) or CD/ (CD-format titles). Defragment game files โ ideally copy to PC, reformat, copy back.
Up to 64 fragments per file are tolerated since OPL v1.2.0 beta rev1893, but contiguous files are strongly
preferred for reliability.
Seat the device and boot
Insert the SD2PSX or MemCard PRO2 (with the SD card loaded) into a memory-card slot. Boot the PS2 and launch RiptOPL. OPL will detect the MMCE device automatically when MMCE Start Mode is set to Auto.
Enable MMCE in Game Sources
Open Game Sources from the RiptOPL Settings Index. Find the MMCE Start Mode option and set it to Auto (detects and mounts on boot) or Manual (shows the MMCE tab but only mounts when you navigate to it). Save settings. The MMCE Games tab appears in the game list once the device is detected.
Launch a game
Navigate to the MMCE Games tab, select a title, and press the confirm button. Cover art, per-game settings, VMC, and cheats all work identically to USB.
Folder layout
MMCE uses the same folder structure as USB and other folder-based devices. OPL creates any missing folders automatically on first launch.
| 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 |
LNG/ | Language packs |
The device prefix is mmce0:/ (slot 0) or mmce1:/ (slot 1). In
conf_apps.cfg, reference ELFs on the MMCE card as mmce:APPS/MYAPP.ELF.
Where the MMCE settings live
MMCE Start Mode is in Settings → Game Sources, alongside the other device start modes. Everything else is on the MMCE Settings screen, opened from the MMCE Settings row just below it: MMCE Slot, IGR Bootcard Slot(s), Send GameID on Launch, Wait cycles after /ACK low, Use timeout alarms and MMCE Prefix Path.
MMCE Start Mode
Controls when OPL loads the MMCE driver and shows the MMCE Games tab.
| Value | Behaviour |
|---|---|
| Off | MMCE driver not loaded; no MMCE tab. Default. |
| Manual | Tab is shown; driver loads when you navigate to the MMCE tab for the first time. |
| Auto | Driver loads at boot and the tab is shown immediately if a device is detected. |
Every device in Game Sources ships Off: a fresh install boots to the start menu with no tabs, and you enable exactly what your rig has. A saved config overrides the shipped default on load.
MMCE Slot
Selects which memory-card slot the MMCE device occupies.
| Value | Meaning |
|---|---|
| 0 | Memory-card slot 1 (port 2 internally); fixed. |
| 1 | Memory-card slot 2 (port 3 internally); fixed. |
| Auto | OPL probes both slots and uses the first one that responds. Default. |
MMCE Prefix Path
(On the MMCE Settings screen, opened from Game Sources.) An optional sub-path appended after the device root before OPL looks for game folders.
Useful when your SD card serves multiple purposes and you want to keep OPL files in a subdirectory โ for example, setting the prefix to
OPL causes OPL to look for games in mmce0:/OPL/DVD/ instead of
mmce0:/DVD/. Leave blank (the default) to use the root of the SD card.
IGR Bootcard Slot(s)
MMCE devices support In-Game Reset (IGR) โ they can send a "switch to bootcard" command to the device on reset, allowing you to return to your boot exploit (e.g. FMCB) rather than the PS2 BIOS when you press the reset button inside a game.
The IGR Bootcard Slot(s) setting controls which slot receives the IGR command when the console resets.
| Value | Behaviour |
|---|---|
| NONE | No IGR command sent on reset (MMCE IGR disabled). |
| 0 | Send the switch-to-bootcard command to slot 0 (memory-card slot 1) on reset. |
| 1 | Send the switch-to-bootcard command to slot 1 (memory-card slot 2) on reset. |
| BOTH | Send the command to both slots on reset. Default (3 internally). |
mmceigr.irx) is loaded alongside the MMCE driver on reset whenever IGR Bootcard
Slot(s) is set to anything other than NONE. If MMCE Start Mode is Off but you still want IGR, set the
Slot(s) value โ OPL will load the MMCE driver at launch specifically to support it.
Advanced MMCE Settings
These settings tune the low-level timing and locking behaviour of the MMCE driver. RiptOPL ships opinionated known-good defaults โ Wait Cycles = 5 and Use Timeout Alarms = ON โ which run cleanly on the vast majority of SD2PSX and MemCard PRO2 hardware. The aggressive 0-cycles + alarms-OFF pairing is the perf extreme the in-app hints warn about (a slow late-slim SD2PSX can lose the very first SIO2 handshake and freeze at the first read), so the fork even has a one-time migration that lifts an existing 0/0 config back to 5/ON. Adjust these only if you are experiencing instability or timeouts.
Wait Cycles after /ACK low
Extra wait cycles inserted after the MMCE /ACK line goes low, giving slower SD cards or cards with marginal signal quality more time to settle before the driver continues. Values: 0 through 5 (default 5). Lower values may improve performance but can cause instabilities; increase if you see read errors or hangs.
Use Timeout Alarms
When ON (the default), the driver uses hardware alarm interrupts to implement MMCE operation timeouts. When OFF, timeouts are handled without alarms โ which may marginally improve performance, but removes the driver's only SIO2 timeout, so a genuine MMCE timeout can result in a hard freeze rather than a graceful error. Leave this ON (the shipped known-good default) so an occasional card hang converts into a recoverable timeout error rather than a freeze.
PS1 games on MMCE
MMCE supports PS1 games exactly like USB. Place *.VCD files and POPSTARTER.ELF
in the POPS/ folder on the SD card. PS2/PS1 Game Display controls whether MMCE shows
separate PS2 / PS1 views, a combined list, or one locked type; L3 is available only in Both (L3)
and Mixed. See PS1 Games (VCD) for the full setup walkthrough and cover-art
fallback chain.
MMCE is also a supported BDMA source for the exFAT POPSTARTER equip (BDMA Mode โ MMCE (exFAT)), meaning POPSTARTER can read BDMA module files from the MMCE card when you use an exFAT-formatted SD.
Neutrino on MMCE
Per-game Neutrino is fully supported for games stored on MMCE. Copy the
complete bundled neutrino/ folder to the MMCE game device, not just
neutrino.elf. With a blank MMCE Prefix Path, use
mmce0:/neutrino/ or mmce1:/neutrino/. If you use a prefix such as
OPL, the resolver also probes that game prefix first โ for example
mmce0:/OPL/neutrino/ โ before the bare mmceN: root.
mcN: view,
the switch would replace the filesystem holding neutrino.elf, config/ and
modules/ before the handoff finishes. RiptOPL detects this collision and protects the
launch by skipping that GameID switch (and showing a warning), so the per-game card image is
not applied for that launch. The MMCE mass-storage path mmceN: is not affected by the
card switch; keeping Neutrino there allows both Neutrino and per-game GameID switching to work.
The current Neutrino Device picker has three choices: Auto,
Memory Card, and Game's Device. Auto is normally sufficient: it checks a
custom path, then the active game's prefix and bare device root, then the APA HDD data home, and
finally mc0:/mc1:. Game's Device is stricter: it searches only
the active MMCE game device, with no custom-path or memory-card fallback, so a miss reports
"not found" instead of silently using another copy.
ul.*) and ZSO compressed images are both supported on MMCE, subject
to the same rules as USB. ZSO is only compatible with OPL's built-in core โ Neutrino cannot launch ZSO files.
See ZSO Format for details.
Notes & tips
- MMCE and the built-in memory-card emulation on the same device share the memory-card slot. If your SD2PSX or MemCard PRO2 is also acting as a virtual memory card, OPL can still use it as a game source โ the drivers co-exist.
- Game files should be defragmented. The easiest method: copy all files to PC, reformat the SD card, copy all files back. Up to 64 fragments per file are supported, but performance degrades with fragmentation.
- If games larger than 4 GB must fit on a FAT32-formatted card, use the USBExtreme split format (tools: OPLUtil, USBUtil).
- Cover art, per-game settings, VMC, and cheats work identically to USB โ OPL looks in the same relative folders under the MMCE root (or the Prefix Path subdirectory if set).
- The config file (
settings_riptopl.cfg) can be stored on the MMCE card. OPL probes MMCE before BDM devices during config discovery, so an MMCE-resident config is found reliably. - MMCE is not MX4SIO. If your adapter uses the MX4SIO driver (rather than the bbsan2k MMCE protocol),
it mounts as
massN:via BDM โ enable it with the USB/MX4SIO toggle in Game Sources, not the MMCE Start Mode. See USB / MX4SIO / iLink.
What is the MMCE protocol and how does it differ from MX4SIO?
MMCE (Memory Card Mass Storage Emulation) is a protocol created by bbsan2k for SD-card adapters that
plug into the PS2's memory-card slot. The device presents itself as a mass-storage device to a dedicated IOP
driver (mmcedrv.irx) using a custom command set that OPL speaks natively. The SD2PSX and MemCard
PRO2 both implement this protocol.
MX4SIO is a different, older SD-in-memory-card adapter (four-bit SPI) that is driven by a BDM block
device module and mounts into the massN: namespace shared with USB and iLink. The two protocols are
entirely distinct โ each requires its own driver, and the device you own determines which one to enable in OPL.
Why does OPL probe MMCE before BDM during config load?
The config-discovery order in RiptOPL checks both memory cards first (mc0/mc1), then the device OPL booted from (only if it booted from BDM or an APA HDD), then MMCE, then BDM (USB, MX4SIO, iLink), then exFAT (BDM) HDD, then APA HDD. MMCE is tried before BDM because in practice users who boot from an MMCE card want their config found there, and MMCE devices tend to respond quickly. If no config is found on any device, OPL falls back to defaults and creates a new config on the first save.