pcm720 / nhddl

A PS2 exFAT BDM Launcher for Neutrino
Academic Free License v3.0
24 stars 2 forks source link
ps2

NHDDL — a PS2 exFAT BDM launcher for Neutrino

NHDDL is a memory card-based launcher that scans FAT/exFAT-formatted BDM devices for ISO files, lists them and boots selected ISO via Neutrino.

It displays visual Game ID to trigger per-game settings on the Pixel FX line of products and writes to memory card history file before launching the title, triggering per-title memory cards on SD2PSX and MemCard PRO 2.

Note that this not an attempt at making a Neutrino-based Open PS2 Loader replacement.
It will not boot ISOs from anything other than BDM devices.
GSM, PADEMU, IGR and other stuff is out-of-scope of this launcher.

Usage

Updating nhddl.elf is as simple as replacing nhddl.elf with the latest version.

Supported BDM devices

NHDDL reuses Neutrino modules for BDM support and requires them to be present in Neutrino modules directory. These files should already be present in Neutrino release ZIP by default.

By default, NHDDL initializes ATA modules and looks for ISOs on internal FAT/exFAT-formatted HDD, devices other than ATA require additional configuration.
See this section for details on nhddl.yml.

ATA

This is the default device mode.
Make sure that Neutrino modules directory contains the following IRX files:

MX4SIO

The following files are required for MX4SIO:

mode: mx4sio must be present in nhddl.yaml.

USB

The following files are required for USB:

mode: usb must be present in nhddl.yaml.

UDPBD

The following files are required for UDPBD:

mode: udpbd must be present in nhddl.yaml.

UDPBD module requires PS2 IP address to work.
NHDDL attempts to retrieve PS2 IP address from the following sources:

udpbd_ip flag takes priority over IPCONFIG.DAT.

Storing ISO

ISOs can be stored almost anywhere on the storage device.
Only directories that start with ., $ and the following directories are ignored:

Displaying cover art

NHDDL uses the same file naming convention and file format used by OPL.
Just put 140x200 PNG files named <title ID>_COV.png (e.g. SLUS_200.02_COV.png) into the ART directory on the root of your HDD.
If unsure where to get your cover art from, check out the latest version of OPL Manager.

Configuration files

NHDDL uses YAML-like files to load and store its configuration options.

Launcher configuration file

Launcher configuration is read from the nhddl.yaml file, which must be located in the same directory as nhddl.elf.
This file is completely optional and must be used only to enable 480p in NHDDL UI or switch NHDDL mode to something other than ata.
By default, 480p is disabled and the ATA device is used to look for ISO files.

To disable a flag, you can just comment it out with #.

See this file for an example of a valid nhddl.yaml file.

Configuration files on storage device

NHDDL stores and looks for ISO-related config files in nhddl directory in the root of your BDM drive.

lastTitle.txt

This file stores the full path of the last launched title and is used to automatically navigate to it each time NHDDL starts up.
This file is created automatically.

cache.bin

Contains title ID cache for all ISOs located during the previous launch, making building ISO list way faster.
This file is also created automatically.

Argument files

These files store arbitrary arguments that are passed to Neutrino on title launch.
Arguments stored in those files are passed to neutrino.elf as-is.

For a list of valid arguments, see Neutrino README.

Example of a valid argument file:

# All flags are passed to neutrino as-is for future-proofing, comments are ignored
gc: 2
mc0: mass:/memcard0.bin # all file paths must always start with mass:
$mc1: mass:/memcard1.bin # this argument is disabled
# Arguments that don't have a value
# Empty values are treated as a simple flag
dbc:
logo:

To be able to parse those arguments and allow you to dynamically enable or disable them in UI,
NHDDL uses a dollar sign ($) to mark arguments as enabled or disabled by default.
Only enabled arguments get passed to Neutrino.

NHDDL supports two kinds of argument files:

global.yaml

Arguments stored in nhddl/global.yaml are applied to every ISO by default.

ISO-specific files

Arguments stored in nhddl/<ISO name>.yaml are applied to every ISO that starts with <ISO name>.

NHDDL can create this file automatically when title compatibility modes are modified and saved in UI.

Example of directory sturcture on BDM device

ART/ # cover art, optional
  |
  - SLUS_200.02_COV.png
nhddl/
  |
   - lastTitle.txt # created automatically
   - cache.bin # created automatically
   - global.yaml # optional argument file, applies to all ISOs
   - Silent Hill 2.yaml # optional argument file, applies only to ISOs that start with "Silent Hill 2"
CD/
  |
   — Ridge Racer V.iso
DVD/
  |
   - Silent Hill 2.iso
   - TimeSplitters.iso

Common use cases

Switching NHDDL to USB mode

To switch NHDDL to USB mode, you'll need to create nhddl.yaml with the following contents:

mode: usb

Copy this file to Neutrino directory next to nhddl.elf.

Switching NHDDL to MX4SIO mode

To switch NHDDL to MX4SIO mode, you'll need to create nhddl.yaml with the following contents:

mode: mx4sio

Copy this file to Neutrino directory next to nhddl.elf.

Switching NHDDL to UDPBD mode

To switch NHDDL to UDPBD mode, you'll need to create nhddl.yaml with the following contents:

mode: udpbd
udpbd_ip: <PS2 IP address>

If you've previously set up the network via uLaunchELF and your memory card has SYS-CONF/IPCONFIG.DAT file, you don't have to add udpbd_ip.

Copy this file to the Neutrino directory next to nhddl.elf.

UI screenshots

Title list
Title options