Skip to content
NathanNeurotic (Ripto) edited this page Sep 16, 2026 · 4 revisions

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.

ℹ MMCE vs MX4SIO

Both SD2PSX and MemCard PRO2 appear in OPL as MMCE devices (the bbsan2k protocol). MX4SIO is a different SD-in-memory-card-slot adapter that uses a separate OPL driver and mounts into the BDM 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).

ℹ IGR only works when MMCE mode is enabled

The MMCE IGR module (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. When a game's Loader Core is set to Neutrino, OPL hands the launch to neutrino.elf. Neutrino itself can be stored on the MMCE card at mmce0:/neutrino/neutrino.elf (or mmce1:/) — select MMCE in the Neutrino Device picker on Settings → Game Launching. That picker lists device types (Auto, Memory Card, USB, MX4SIO, MMCE, HDD (exFAT), HDD (APA), Game's Device, iLink), not per-slot entries, so there is no separate mmce0/mmce1 choice. Auto also works: it probes the active game device for a co-located neutrino/neutrino.elf before falling back to mc0:/mc1:, so a neutrino.elf on the MMCE card is found automatically when you launch an MMCE game — an explicit device pick is no longer required. Game's Device is the stricter variant: it probes only the active game's own device for a co-located neutrino/neutrino.elf, with no legacy-path and no mc0:/mc1: fallback — a miss toasts "not found" and aborts the launch instead of quietly using a core you did not pick.

ℹ USBExtreme (.ul) and ZSO on MMCE

USBExtreme multi-chunk format (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.


Source: mmce.html @ fc2e13154e51. Read on the documentation website.

Clone this wiki locally