-
Notifications
You must be signed in to change notification settings - Fork 2
Neutrino
RiptOPL can hand any individual game to an external Neutrino ELF instead of OPL's built-in EE core. The choice is made per game, leaving other titles on the default OPL core untouched. This is useful for titles that boot more reliably under Neutrino, or when you want fine-grained control over Neutrino's own launch flags.
Neutrino is created by rickgaiser — a
"Small, Fast and Modular PS2 Device Emulator". The
release package bundles the official latest build as a ready-to-use neutrino/ folder
under its AFL-3.0 licence; see Credits for the full
attribution. Report launching problems to us and genuine Neutrino bugs upstream.
ℹ These features are specific to RiptOPL
The Loader Core selector, the Neutrino Device picker, the structured Launch Args sub-screen, and the per-game Neutrino Video picker are all additions in this fork. They do not exist in stock OPL or wOPL.
The release package includes a complete neutrino/ folder: copy the whole folder to a
device OPL searches. A memory card is the zero-config choice, but it is the last place OPL looks,
not the first. The full order is:
| Priority | Where OPL looks |
|---|---|
| 1 | The device type chosen in Neutrino Device (Settings → Game Launching), when it is not Auto |
| 2 | A custom path in the neutrino_path key of settings_riptopl.cfg (see below) |
| 3 | The active game's own device: <games prefix>/neutrino/, then <device root>/neutrino/
|
| 4 | The internal APA HDD's OPL data partition, while the HDD is started (see below) |
| 5 |
mc0: / mc1:: NEUTRINO/neutrino.elf and its lowercase / NEUTRINO.ELF variants |
A miss on the device you picked falls through to the automatic tiers. The exception is Game's Device, which only looks on the game's own device and reports "not found" instead of falling back.
The internal APA HDD is also searched, through the OPL data partition OPL has already mounted — the same partition NHDDL resolves for its own hdd0:/<OPL partition>/neutrino/neutrino.elf rule (read from hdd0:__common/OPL/conf_hdd.cfg, with +OPL or __common/OPL as fallbacks). In practice that means one of these two layouts, with nothing to configure:
| Your OPL data home | Put Neutrino at |
|---|---|
+OPL (preferred when the partition exists) |
hdd0:/+OPL/neutrino/ |
__common |
hdd0:/__common/OPL/neutrino/ |
The APA HDD must be started for this to resolve — nothing is mounted to read otherwise — but the game itself may live anywhere: a USB or MMCE game can boot from an APA-hosted Neutrino, and OPL keeps that partition mounted across the handoff. An install on a partition that is not the OPL data home cannot be reached; move it, or use another device.
If none of those paths exist when you launch a game set to the Neutrino core, OPL shows a warning and falls back to the <OPL> core for that launch only.
You can override the lookup entirely with the neutrino_path key in settings_riptopl.cfg; there is no menu row for it. When it is set and the file exists it takes priority over every candidate above. Leave it out to use the auto-detection. To pick a device type instead, use Neutrino Device on Settings → Game Launching.
The UDPBD / UDPFS feature ships its own bundled Neutrino — a drag-and-drop neutrino/ folder (neutrino.elf plus config/ and modules/) in the release zip, pre-populated with the UDPFS config. Per-game Neutrino use still needs you to supply neutrino.elf at the paths above.
Highlight a game, press Triangle and choose Game Settings.
Change Loader Core to Neutrino. The other option is <OPL> (the built-in core; default for every game).
Save. The selection is written as $CoreLoader in that game's .cfg file.
| Game source | Neutrino? |
|---|---|
| USB / MX4SIO | Yes |
| iLink / IEEE 1394 (FAT PS2 models only) | Supported and wired; the post-2692 build adds quick boot for RiptOPL's inherited-stack handoff and is pending hardware retest |
| Internal ATA (BDM block device) | Yes |
| Internal HDD (APA partition → HDL) | Yes |
| MMCE (SD2PSX / MemCard PRO2) | Yes |
| UDPBD / UDPFS (network block device) | Yes — and required; no OPL core backend exists for these (see Network Boot) |
| SMB / Ethernet | No — falls back to <OPL>
|
USB Extreme split images (.ul) |
No — falls back to <OPL>
|
Compressed ISO (.zso) |
No — falls back to <OPL>
|
⚠ Revision 2692 iLink result
On an SCPH-39001, Neutrino failed from iLink in all four SDK flavours. Revision 2692 emitted the
documented -bsd=ilink token but did not add -qb. RiptOPL's bridge deliberately
preserves the mounted iLink environment, while Neutrino documents -qb as direct entry into
its load environment, so that omission is a source-confirmed handoff mismatch consistent with the
failure. The post-2692 correction below still needs a hardware pass to prove whether it was the
complete cause; this page does not call it a pass yet.
i Upstream rates iLink lowest of every backend
Neutrino's own backend table scores iLink / IEEE1394 device compatibility at 10, against 80 for
USB, 60 for MX4SIO and 100 for MMCE, ATA, UDPBD and UDPFS, and lists it for FAT PS2 models only.
A passing -qb retest is therefore necessary but may not be sufficient — some iLink
enclosures are expected to fail upstream as well.
Unsupported sources fall back to the <OPL> core automatically with an on-screen warning. No manual intervention is needed — OPL detects the format and adjusts.
ℹ PS1 games are a separate path
PlayStation 1 titles always boot through their own core — POPSTARTER.ELF for *.VCD, ember.elf for Ember titles — never OPL's core and never Neutrino. The Loader Core selector is locked and has no effect for PS1 games. See PS1 Games (VCD).
Under Settings → Game Launching → Neutrino Defaults → Default Device you can pin Neutrino to a specific storage device type, or leave it on Auto. This is a device type (not a fixed device-name slot): OPL resolves the chosen type to its live device token(s) at launch — USB / MX4SIO / iLink / HDD (exFAT) resolve to massN:, MMCE resolves to mmceN:, and HDD (APA) resolves inside the OPL data partition already mounted on pfs. It then probes <root>:/neutrino/neutrino.elf (plus case variants) on that device type. When set to Auto, OPL honours a legacy custom Neutrino ELF path first, then probes the active game device for a co-located neutrino.elf, then the APA HDD’s OPL data partition, and only then falls back to the mc0/mc1 candidate list. A separate Game's Device choice narrows the search to the active game's own device and nothing else — no legacy custom path and no memory-card fallback.
Available choices:
-
Auto — a legacy custom path first, then the active game device, then the APA HDD’s OPL data partition, then the
mc0/mc1candidates (default) -
Memory Card —
mc0/mc1 -
USB — USB mass storage (resolves to
massN:) -
MX4SIO — SD-card-over-SIO2 adapter (resolves to
massN:) -
MMCE — SD2PSX / MemCard PRO2 (resolves to
mmceN:) -
HDD (exFAT) — internal BDM/exFAT HDD (resolves to
massN:) -
HDD (APA) — internal APA HDD, resolved through OPL’s own mounted data partition:
hdd0:/+OPL/neutrino/orhdd0:/__common/OPL/neutrino/. Needs the HDD started; a Neutrino install on any other partition is not reachable -
Game's Device — resolves only on the active game's own device (a co-located
neutrino/neutrino.elf); there is no legacy custom path and nomc0/mc1fallback, so a miss shows a "not found" message and aborts the launch -
iLink — IEEE 1394 / SBP-2 storage on FAT PS2 models (resolves to the matching mounted
massN:device)
In all cases the path searched on the chosen device type is <device>:NEUTRINO/neutrino.elf and its capitalisation variants; the leading-slash form <device>:/neutrino/neutrino.elf is also tried. HDD (APA) is the one entry that is not a plain device root — a raw APA partition cannot be opened directly, so OPL searches inside the data partition it already has mounted (see §1).
OPL always builds the mandatory Neutrino arguments automatically from the game and its settings — most of which you never type yourself (-dbc, -logo and -gsm are the three exceptions: forward one yourself and OPL drops its own copy — see the callout at the end of this section, and §5):
| Auto-emitted argument | When emitted |
|---|---|
-bsd=<usb|ilink|mx4sio|ata|mmce|udpbd|udpfsbd|udpfs> |
Always (the storage backend) |
-bsdfs=hdl |
Internal HDD (APA) only |
-dvd=<path> / -dvd=hdl:<partition>
|
Always (the game image or partition) |
-qb |
USB and iLink. RiptOPL's no-reset bridge preserves the mounted BDM environment; quick boot enters Neutrino's load environment without resetting that inherited stack away. An active user-supplied copy is never duplicated. |
-gc=<modes> |
Only when OPL compat modes are set for the game |
-dbc |
Only when Debug Colors is enabled |
-logo |
Only when PS2 Logo is enabled |
-gsm=<mode> |
Only when a Neutrino Video mode resolves — the per-game picker, or the global Settings → Game Launching → Neutrino Video default when the per-game picker is “Default” (see §5) |
-mc0=<path> / -mc1=<path>
|
Only when a per-game VMC is configured for that slot |
On top of the auto-built arguments you can pass extra Neutrino flags in two places. Both sets are appended after the auto-built arguments; global first, then per-game, so a game can extend or override the global defaults.
-
Global (every Neutrino launch): Settings → Game Launching → Neutrino Advanced Arguments — config key
neutrino_argsinsettings_riptopl.cfg. -
Per game (one title only): Triangle → Game Settings → Neutrino Launch Args — config key
$NeutrinoArgsin the game's.cfg.
Arguments are space-separated. Example:
-mt=dvd -gsm=1
ℹ Editing long argument strings
Both the global Neutrino Advanced Arguments and the per-game Neutrino Launch Args open a structured sub-screen (see below) whose individual fields each hold up to 31 visible characters. If you need a longer value in a single field, edit neutrino_args (global, in settings_riptopl.cfg) or $NeutrinoArgs (per game, in the game's .cfg) directly — OPL reads and forwards the full string at launch. The editor preserves every field you do not touch at its full stored length, so opening and closing the dialog never truncates a hand-edited value.
Both the global entry (Settings → Game Launching → Neutrino Advanced Arguments) and the per-game field (Triangle → Game Settings → Neutrino Launch Args) are buttons that open the same companion sub-screen. It breaks the argument string into named fields — Quick Boot (-qb), Debug Colors (-dbc), PS2 Logo (-logo), Working Dir (-cwd), Config (-cfg), Boot ELF (-elf), ATA0 Image (-ata0), ATA0 ID (-ata0id), ATA1 Image (-ata1), plus a free-form Extra field — reassembles them in a valid canonical order with --b kept last, and writes the result back as a single flat string: the global into neutrino_args, the per-game value into $NeutrinoArgs (each game edited independently).
| Field | Argument emitted | Notes |
|---|---|---|
| Quick Boot (-qb) | -qb |
Enter Neutrino's load environment directly; emitted first if enabled and supplied automatically for USB/iLink |
| Debug Colors (-dbc) | -dbc |
Neutrino's debug colour output; forwarding it here suppresses OPL's own auto-emitted copy |
| PS2 Logo (-logo) | -logo |
Show the PS2 logo; forwarding it here suppresses OPL's own auto-emitted copy |
| Working Dir (-cwd) | -cwd=<path> |
Override Neutrino's working directory |
| Config (-cfg) | -cfg=<path> |
Point Neutrino at an alternate config file |
| Boot ELF (-elf) | -elf=<path> |
Launch a different ELF instead of the disc boot ELF |
| ATA0 Image (-ata0) | -ata0=<path> |
Override the primary ATA image path |
| ATA0 ID | -ata0id=<id> |
Override the ATA0 device ID string |
| ATA1 Image (-ata1) | -ata1=<path> |
Override the secondary ATA image path |
| Extra | (verbatim) | Any other flags, including --b and everything after it (passed to the booted ELF); placed last |
The canonical reassembly order is: -qb → -dbc → -logo → -cwd → -cfg → -elf → -ata0 → -ata0id → -ata1 → Extra. The Extra slot also collects any flags the parser does not recognise, preserving them verbatim. --b and everything following it is always kept at the tail (those tokens are arguments forwarded to the booted ELF, not to Neutrino itself).
ℹ Auto-emitted flags are never typed
-bsd, -dvd, -gc, and -mc0/-mc1 are always constructed from the game settings by OPL. Do not enter them in the Extra field or the Launch Args text box — doing so produces a duplicate that Neutrino may reject or misinterpret. Use the dedicated UI controls (compat modes, VMC slots, etc.) to set those values instead.
-dbc, -logo, and -gsm are the exceptions: they have dedicated controls (the Debug Colors and PS2 Logo toggles in the args sub-screen, and the Neutrino Video picker), and if you do forward one of them yourself OPL suppresses its own auto-emitted copy so exactly one reaches Neutrino. A copy disabled with a leading $ does not count as forwarded, so OPL still emits its own in that case.
When a game's Loader Core is set to Neutrino, a Neutrino Video picker appears in Game Settings. This is the Neutrino-side stand-in for the OPL GSM panel (which is an OPL-core-only feature and is greyed under Neutrino). The picker maps to Neutrino's -gsm flag:
| Picker value | Neutrino flag emitted |
|---|---|
| Off (default) | (nothing emitted) |
| 240p | -gsm=fp1 |
| 480p | -gsm=fp2 |
| 1080i x1 | -gsm=1080ix1 |
| 1080i x2 | -gsm=1080ix2 |
| 1080i x3 | -gsm=1080ix3 |
| Default | follows the global Settings → Game Launching → Neutrino Video value (no per-game key saved) |
Global default: the same picker also exists in Settings (with its GSM-comp half). Games whose per-game picker is “Default” follow it — so one global change forces e.g. -gsm=1080ix3 for every Neutrino game. An explicit per-game value — including Off — overrides the global.
i The “1080p impression” trick
On 1080-class displays,
1080i x3 (-gsm=1080ix3) is the community workaround for progressive-looking output —
the same effect previously reached by launching Neutrino from PS2BBLE/OSDmenu with
-gsm=1080ix3. Set it per game, or globally and leave games on “Default”. True 1080p is not
one of Neutrino's -gsm modes — its option remains 1080i. RiptOPL's native
OPL core separately provides a hardware-confirmed forced-progressive 1080p GSM mode in every
standard loader; it is guarded by a three-step confirmation, with Triangle + Cross at console
boot changing only the menu to 480p. A game video override must be changed in game settings; the display/connection must accept 480p for menu recovery.
The picker is the default source for -gsm. If you manually type -gsm=<value> into the Neutrino Launch Args field, that value wins — OPL emits only one -gsm argument, because Neutrino aborts on a duplicate or malformed value.
The compat modes list contains a Neutrino-only entry: Mode 7. This maps to -gc=7 and targets a small class of games that overrun an IOP buffer during loading. It is greyed out when the Loader Core is set to <OPL> (the inverse of Modes 4 and 6, which are greyed under Neutrino). Enable it in Game Settings when the game's core is Neutrino.
The per-game settings screen adapts to the Loader Core chosen for each title, so you only see controls the selected core actually honors.
- Neutrino Launch Args and Neutrino Video picker are active and editable.
- Compat Modes 4 (Skip Videos) and 6 (Disable IGR) are greyed — these are OPL ee-core features with no Neutrino equivalent. OPL never forwards them.
- Mode 7 is available (Neutrino-only; see above).
-
Download Defaults is greyed — it pulls OPL bitmask data that does not map to
-gc. - The Configure GSM, Cheat Settings, Controller Emulation and OSD Settings screens show a "not used with the Neutrino core" message instead of dead controls. Use the Neutrino Video picker for video forcing.
-
VMC and the rest of Game Settings remain fully available — VMC is passed to Neutrino as
-mc0/-mc1arguments on BDM devices (USB/iLink/MX4SIO/exFAT HDD/UDPBD), MMCE and UDPFS. The one exception is APA HDD: Neutrino has no APA/pfs backing store to open the.binfrom, so the game boots without the VMC and OPL shows a warning (the OPL core honors the same card normally). See VMC with the Neutrino core. - UDPBD / UDPFS games have no OPL core backend, so the Loader Core selector is locked to Neutrino for them and cannot be changed.
The screen is unchanged from classic OPL. The Neutrino Launch Args field and Neutrino Video picker are greyed (they are never read on the OPL path). Mode 7 is greyed. Modes 4 and 6 are available as usual.
What does Neutrino actually honor from OPL's per-game settings?
Neutrino honors: the storage backend + image path (-bsd / -dvd, automatic), the compat mode subset that maps to -gc (Modes 1/2/3/5/7), VMC via -mc0/-mc1 (BDM/MMCE/UDPFS — not APA HDD), -logo (PS2 logo), -dbc (debug colors), the Neutrino Video picker (-gsm; per-game with a global default in Settings), and the free-text Neutrino Launch Args field. It does not honor: Cheats (OPL patches EE RAM), OPL GSM (OPL patches the GS registers), IGR (OPL's in-game reset hook), PADEMU (OPL's USB gamepad emulation), or OSD Language — all are OPL-embedded-core features with no Neutrino equivalent.
UDPBD and UDPFS stream games from a PC over the LAN as network block devices. The block protocols (UDPBD and UDPFS-Image) share the BDM block tab — labelled UDPBD Games or UDPFSBD Games depending on which one is active — while UDPFS-Files is a separate filesystem device with its own UDPFS Games tab. Only one can be active per boot anyway (a single NIC), so the two never appear side by side. Either list carries covers and per-game settings. Because there is no OPL cdvdman backend for network block devices, these games always and only launch via Neutrino — OPL forces the Neutrino core automatically, and if neutrino.elf is missing it warns and returns to the menu (there is no <OPL> fallback).
Full setup, server instructions, and the UDPBD vs UDPFS protocol comparison are on the Network Boot page.
-
📡 Network Boot UDPBD & UDPFS setup, server requirements, static IP
-
💿 PS1 Games (VCD) Separate path — always POPSTARTER, never Neutrino
Detailed reference: Neutrino reference.
Source: neutrino.html @ fc2e13154e51. Read on the documentation website.
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
- 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