OPL based GUI/frontend for Neutrino

PS2 OPL based gui/frontend for neutrino 4.1

crt0

Forum Noob
Current version:
OPLNEUTV41.ELF
OPLNEUTRINO-GUI_V0-2044.ELF obsolete

This is "gui/frontend" for neutrino based on my patch for OPL-UDPBD 2044

Intro
Despite the fact that both OPL and neutrino have common roots, compatibility sometimes differs. Some titles that have bugs with OPL, may work bugless in neutrino.
The main concept of neutrino - to be very small like a particle, after which it is named. So, basically it is console (here, in means of no gui) program with one task to do. No bells/whistles included. True unix way! You need to provide it with all arguments manually (as end user by using ps2link/radshell for example), or use shortcuts, or alter defaults in system.toml config. And here is why i created this patched OPL - OPLNEUTRINO GUI: it will use common features of OPL GUI, but run everything with neutrino core.

Features supported:
  • Supported backends: BDM (usb, mx4sio, iLink, udpbd), HDD (hdl)
  • Compatibility modes
  • Cheats, GSM (will not work if both enabled at same time, because patched and relocated opl's ps2rd/gsm cores share same memory region)
  • VMC (only for BDM, see notes)
  • config names patched out to udpb_*.cfg, so there will be no config conflicts if you use different OPL versions

How to use:
This OPLNEUTRINO-GUI tested to work with current neutrino-1.2.0.
  1. Download neutrino_v1.2.0.7z from github
  2. Unpack neutrino_v1.2.0.7z and if you dont use udpbd skip to step 4
  3. this step only for udpbd: edit config file ./config/bsd-udpbd.toml to change ip to 192.168.0.10, as this ip also hardcoded in OPLNEUTRINO. I.e. for udpbd you will need to use 192.168.0.255 subnet.
  4. copy everything unpacked from neutrino_v1.2.0.7z to mc0:/NEUTRINO/
  5. Launch OPLNEUTRINO-GUI_V0-2044.ELF

Notes:
  • VMC for HDD games. Here is citation from neutrino readme
    README.md said:
    Note that the HDLoader backing store is currently read-ony, and limited to only emulating the DVD.
    So, as neutrino dont support writing to HDD, so, currenlty no much sense to pass vmc arg from OPL, when using HDD backend, as vmc file stored on HDD.
  • udpbd: OPLNEUTRINO have hardcoded 192.168.0.10 for ps2, so, subnet 192.168.0.255. Use for server udpbd-vexfat (Read-only), or udpbd-server (Read/Write). But if you will use udpbd-server, dont use windows to format/partition your disk (linux is ok), or current udpbd clients (opl-udpbd-2044, oplneutrino-2044, neutrino-1.2.0) will not mount it.
  • IGR not supported, but you may use pseudo IGR (cheat-IGR) per game - details
 

Attachments

Last edited:
embedded usb/mx4sio modules:
OPLNEUTRINO-GUI_V1embmod-2044.ELF

without usb/mx4sio embedded modules, you need to provide them at SYS-CONF:
OPLNEUTRINO-GUI_V1-2044.ELF

New version
(if requirement to place neutrino at mc0:/NEUTRINO is ok for you, you may stay with v0 version, as there is no more new features, except different searchpaths for neutrino)

Whats new:
- Now it is looking for neutrino at:
mc0:/NEUTRINO/
mc1:/NEUTRINO/
usb:/NEUTRINO/ (*) see Notes
mx4sio:/NEUTRINO (*) see Notes

Notes:
Use OPLNEUTRINO-GUI_V1embmod-2044.ELF

or use OPLNEUTRINO-GUI_V1-2044.ELF and:
for allowing OPLNEUTRINO-GUI to launch neutrino from usb/mx4sio (exfat supported) you need to place those iop modules at mc[0|1]:/SYS-CONF/
bdm.irx
bdmfs_fatfs.irx
mx4sio_bd.irx
usbd.irx
usbmass_bd.irx

Every module from this list available in neutrino-1.2.0.7z release, check ./modules dir. Just rename modules with "_mini" in name to match the provided in list, when placing them to SYS-CONF

If there will be demand/feedback/request, i will embed/(reuse embedded with OPL) those modules in OPLNEUTRINO-GUI, right now its not worth it.

does it really need to be @ MC0:?
 
Last edited:
Before I dig super far into getting this running (I'm on SMB and need to set up my little OpenWRT to use UDPDB which seems like a colossal pain), it looks like it might not support disc booting?

My goal is to use the updated OPL GSM version but for booting discs, and Neutrino was a suggestion from someone on discord.
 
This is great! It is the best tool/GUI for loading games via udpbd now because of Neutrino's excellent compatibility. I tried Shadow Hearts 2 with a regular OPL udpbd build, and it randomly freezes. But with this tool, it runs smoothly without any freezing issues. The only problem I've encountered is the inability to display covers and switch themes. Everything else is fantastic. However, it would be even better if you could release the source code publicly, as it would enable customization.
 
Thanks to jks and forthek, i can confirm crash/freeze with covers and themes enabled.

So, here is fixed and updated version 4.1

Features:
  • cover art / themes bug fixed
  • relocated patch injection to fully safe memory area
  • some updates to loader code
  • searchpath for neutrino.elf is mc0:/NEUTRINO or mc1:/NEUTRINO (no usb/mx4sio in this version)
jks, thank you, i really glad that you found it useful!
 
Last edited:
I have been finding this very useful for my PS2 slim. UDPBD has been running well!

However, is there any way to do in-game reset (IGR)? The OPL IGR button combination doesn't seem to do anything. Does Neutrino lack the IGR feature?
 
Glad, that it is useful for you!

Yes, neutrino lacks the IGR feature (same, as it lacks a cheats/gsm) at least for now, but it is very actively developing project, so, maybe Rick will add it, or another cool feature, in future versions. So, stay tuned!

Technically, it is possible to implement this feature same way i did with cheats and gsm, but it will use same strategy model - "only one bonus feature at time", so it will be or IGR, or cheats, or gsm, but you cant enable them all together at same time.
Also, IGR in OPL is a separate compatibility mode, for purpose. It may affect compatibility. So, developers decided to make it that way, to allow users to disable it in specific cases.
Overall, all of it will require some efforts to separate it from opl eecore and make it compatible with default unmodified neutrino eecore to make friendship between them when they meet at same time in same place.
According to all of this, i think that cheats (of course, only for widescreen, winners dont use cheats :)) and gsm is more important features, so i dont have any plans on adding IGR feature.

Above is detailed answer to show that techincally one way is possible.
But, here is another way, i think about it just now, as i wrote above about cheats :) If you play in some limited game list. I mean, you have few favorite games you play at ps2, and need IGR only for those games. You may just find so called "joker" cheat codes for them, that will read gamepad buttons value, and when this value will equal to your chosen pattern for "IGR" it will enable "few" lines cheat codes that will clear ps2 state, remove all hooks set up by neutrino and ps2rd core and reset it, or call some patchcode with proper cleanup/loader/reset code you prepatched to your games. Basically, you can do anything (you will be limited only by ps2rd codes array size and your fantasy :)
 
Last edited:
Here is cheat-igrs, tested to work with OPLNEUTV41 + neutrino 1.2.0 with udpbd backend
Just place them to OPL "CHT" dir, and enable cheats in OPLNEUT game setting to use it.

To exit from game,
press :but r1: + :but l1: + :but r2: + :but l2: + :but start: + :but select: (i.e. same combo as in OPL)

"Universal cheat-igr" Need to manually edit it for specific game, may and possible, will not work with every game.
How to use it with your game of choice.
1. Replace 9MMMMMMM nnnnnnnn with 9-type mastercode for your game
2. Replace
JJJJJJJ in
dJJJJJJJ with "joker" address for your game and, optional part: in 0100f0f6 replace f0f6 with your button combo for IGR
3. Replace MMMMMMM in 2MMMMMMM with same MMMMMMM value from your mastercode.
4. Save it with proper *.cht name in OPL CHT directory and enable cheats for game in OPLNEUT.

Code:
Mastercode
9MMMMMMM nnnnnnnn

200c0000 3c050008
200c0004 8ca504b0
200c0008 3404003c
200c000c 0c030009
200c0010 24030074
200c0014 0c030007
200c0018 00000000
200c001c 00842026
200c0020 24030004
200c0024 0000000c
200c0028 03e00008
dJJJJJJJ 0100f0f6
2MMMMMMM 08030000

"Serious Sam - Next Encounter /ID SLUS_209.07"
Code:
"Serious Sam - Next Encounter /ID SLUS_209.07"
Mastercode
9031f178 0c0c7c06

//IGR
200c0000 3c050008
200c0004 8ca504b0
200c0008 0c0c73c8
200c000c 3404003c
200c0010 080c73ed
d061dc42 0400f0f6
2031cfb4 0c0c71f0
2031cfb8 00000000
2031cfbc 00842026
2031f178 08030000

"Shadow Hearts 2 [Directors Cut] [PlayStation 2 The Best] /ID SLPS_732.14"
Code:
"Shadow Hearts 2 [Directors Cut] [PlayStation 2 The Best] /ID SLPS_732.14"
Mastercode
9020cdf8 0c083326

//IGR
200c0000 3c050008
200c0004 8ca504b0
200c0008 0c082ad8
200c000c 3404003c
200c0010 080828fe
d074b7c2 0200f0f6
2020a3f8 0c082900
2020cdf8 08030000
 

Attachments

Last edited:
Thanks I've got this working great with OPLNEUT.

One question though, are there any plans to support loading the neutrino elf, modules, and config from hdd0?
 
Is it possible to add a way to select Neutrino config files (.toml files) to load when loading a game off of this GUI?

This works great for loading Ratchet and Clank: Up Your Arsenal. To play online, a patch is needed which is included as a .toml file bundled with Neutrino. Loading this patch would require modifying the system.toml file which would affect all other games and could cause crashes or other unknown behavior.
 
Using the OPLNEUTV41.ELF + NEUTRINO (from mc1) + UDPBD-SERVER under Openwrt X64 (compiled using musl so no stdlibc)
Formated the disk using mkfs.exfat -c 32K /dev/sdx1
I have no problems loading the isos, but I can't create VMC, is there something I'm missing in the configuration?
 
Check, that the user/id, that is running udpbd-server process, have write access (or belong to group, that have write access to) to /dev/sdx1

Also, to check that the access rights is the case: choose any game from games, that you have on this disk, and delete (dont forget to backup, if this specific config important for you) its config from the disk's CFG/%GAME_ID%.cfg and run it again, just to check, that you can change config for this game in OPL browser and save it. If config will not appear/saved on disk after it, means that you have possible access rights issue.

Also, if you use dev build of neutrino, try for test, to use stable 1.2.0 version

Basically, only two main issues, why VMC may not created:
1) udpbd-server cant write at this block device (access rights or some udpbd-server specific platform build issues that make it silently fail at writing attempts)
2) VMC not enabled in config for that specific game
2a) You tried to enable it in game config settings, in OPL browser, but config didnt saved because of "1)". To check, just reenter game config settings, after you did "save" and returned to OPL browser. If it resets to defualts - it is for sure "1)"
2b) The config is from old setup (pre udpbd session) and show in OPL game settings that VMC is enabled, but because of "1)" it fails.
 
Last edited:
Hi,
I ran the process as root (I checked the permissions and they were OK).
I can save the configurations, but I can't create a VMC, sometimes it fails at 3%, sometimes at 7%, sometimes it's immediate.
I tried another version of OPL with UDPDB and it was the same behavior.
Anyway, I had other problems, I tried all this with Silent Hill 4 (USA), the game sometimes loads infinitely when changing scenes, when you enable Mode 1 it happens less frequently, but it still happens.

Edit: tried the latest stable neutrino and some recent development build.
 
Hi!

I can save the configurations, but I can't create a VMC, sometimes it fails at 3%, sometimes at 7%, sometimes it's immediate.
I tried another version of OPL with UDPDB and it was the same behavior.

May you try, just for a test, to run original (vanilla) udpbd-server on any windows machine with same disk and check if it will have same behaviour for you? And yes, what you described - its not normal behaviour for UDPBD. VMC is fully compatible with UDPBD. Btw, the VMC file is created by original OPL code itself (even in case of oplneutrino, at this stage patch is not enabled and OPL code is in original state), so at this stage, neutrino code isnt launched at all. So, your specific bug is not caused by neutrino or oplneutrino patch - thats for sure. My bet, that the main suspect - is this specific build of udpbd-server and/or the server instance/block device itself.

Anyway, I had other problems, I tried all this with Silent Hill 4 (USA), the game sometimes loads infinitely when changing scenes, when you enable Mode 1 it happens less frequently, but it still happens.

Thats because udpbd itself is still in active development, and there are few games, that have such undefined behaviour when using this backend. So this is sort of "normal" for udpbd. Neutrino is in active development and receiving new improvements and features, so things will improve for sure!
 
Last edited:
Confirmed:
The udpbd-server compiled under Openwrt (using musl) does not work.
I compiled the same code under ubuntu and the vmc worked.
 
I have a question: I can't get it to show the list of games. I use a 4tb drive, I was using Grimdoomer's OPL, but since that hasn't been updated in 10 months, I wanted to try this alternative.
Is this frontend also limited by disk size (2TB or less)? Can larger HDDs be supported?

Or am I actually doing something wrong and it's not the fault of the gui/frontend?
 
Or am I actually doing something wrong and it's not the fault of the gui/frontend?

As both OPL and neutrino have big lists of features, to get answer to your question you may consult to attached Venn diagram. That chart will help you get basic understanding of what features supported by oplneutrino. (hint: feature in question must be supported by original OPNPS2LD-v1.2.0-Beta-2044, that is using as a base for oplneutrino, and providing browser and management functionality, and, also, must be supported by neutrino* that is used as emulation core replacement).

oplneut.jpg

* as an bonus exclusion, oplneutrino is supporting GSM and Cheats features, that are not supported by neutrino standalone as default (without external helper tools) or any other current gui/frontends for neutrino
 
Last edited:
I understand. Thanks for the explanation. Neutrino supports large HDDs, according to what they answered on their github. Hopefully opl too, someday.
 

Similar threads

Back
Top