Skip to content

Commit e03ef95

Browse files
Add files via upload
1 parent 11d5ea5 commit e03ef95

82 files changed

Lines changed: 946 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
356 KB
Binary file not shown.
Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
# NHDDL — a PS2 launcher for Neutrino
2+
3+
<p align="center">
4+
<img src="img/logo/logo.png">
5+
</p>
6+
7+
NHDDL is a Neutrino launcher that scans MMCE, APA or _FAT/exFAT-formatted_ BDM devices for ISO files,
8+
lists them and boots selected ISO via Neutrino.
9+
10+
It displays visual Game ID to trigger per-title settings on the Pixel FX line of products and triggers per-title memory cards on SD2PSX and MemCard PRO2.
11+
12+
Note that this not an attempt at making a Neutrino-based Open PS2 Loader replacement.
13+
Since NHDDL only launches Neutrino, PADEMU, IGR, IGS, cheats and other features supported by OPL are _out-of-scope_ unless they are implemented in Neutrino.
14+
15+
## Usage
16+
17+
### Title list controls
18+
19+
- Press **Up** on the d-pad to select the **previous title** in the list
20+
- Press **Down** on the d-pad to select the **next title** in the list
21+
- Press **L1** to switch to the **previous page** or go to the **start of the list**
22+
- Press **R1** to switch to the **next page** or go to the **end of the list**
23+
24+
### Important notes
25+
26+
NHDDL requires a full [Neutrino](https://github.com/rickgaiser/neutrino) installation to be present at one of the following paths:
27+
- `<NHDDL launch directory>/neutrino.elf` (__might be case-sensitive__ depending on device)
28+
- `massX:/neutrino/neutrino.elf` (BDM devices, if any of BDM modes are enabled)
29+
- `hdd0:/<OPL partition>/neutrino/neutrino.elf` (APA device, if HDL mode is enabled)
30+
`OPL partition` is read from `hdd0:__common/OPL/conf_hdd.cfg`, with `+OPL` or `__common/OPL` used as a fallback
31+
- `mmceX:/neutrino/neutrino.elf` (MMCE devices, will work even if MMCE mode is _not_ enabled unless MX4SIO mode is set)
32+
- `mcX:/APPS/neutrino/neutrino.elf` (memory cards, __case-sensitive__)
33+
- `mcX:/NEUTRINO/NEUTRINO.ELF` (SAS-compliant path on memory cards, __case-sensitive__)
34+
- `mcX:/NEUTRINO/neutrino.elf` (SAS-compliant path on memory cards, __case-sensitive__)
35+
36+
By default, NHDDL tries to initialize all supported devices. You can override this behavior and reduce initialization times by setting specific mode in launcher configuration file.
37+
See [this](#launcher-configuration-file) section for details on `nhddl.yaml`.
38+
39+
Note that if your ELF loader resets IOP (e.g. `PS2BBL` and recent versions of `wLE_ISR`), NHDDL will try loading `nhddl.yaml` from memory cards and MMCE devices first to avoid
40+
loading modules for all devices.
41+
If `nhddl.yaml` is not present on any of the memory cards or MMCE devices, NHDDL will initialize all modules first and then will attempt to search for `nhddl.yaml` again.
42+
43+
**Do not plug in any BDM storage devices while running NHDDL!**
44+
Doing so might crash NHDDL and/or possibly corrupt the files on your target device due to how BDM drivers work.
45+
46+
#### Manual installation
47+
48+
To use NHDDL:
49+
- Get the [latest `nhddl.elf`](https://github.com/pcm720/nhddl/releases)
50+
- Copy `nhddl.elf` to your memory card or storage device wherever you want.
51+
- _Additional step if you need only some of the available modes or MX4SIO support_:
52+
Modify `nhddl.yaml` [accordingly](#launcher-configuration-file) and copy it next to `nhddl.elf`
53+
- Get the [latest Neutrino release](https://github.com/rickgaiser/neutrino/releases/tag/latest)
54+
- Copy Neutrino folder to the root of your PS2 memory card or your storage device.
55+
56+
#### Save Application System PSU
57+
58+
You can also get NHDDL as an easy-to-use PSU package [here](https://pcm720.github.io/nhddl-psu/).
59+
To install it:
60+
- Copy generated `nhddl.psu` to your USB drive
61+
- Open wLaunchELF on your PS2
62+
- Choose your USB device and copy `nhddl.psu`
63+
- Go back and open your memory card (`mc0` or `mc1`)
64+
- Open file menu and select `psuPaste`
65+
- Get the [latest Neutrino release](https://github.com/rickgaiser/neutrino/releases/tag/latest)
66+
- Copy Neutrino folder to the root of your PS2 memory card or your storage device.
67+
68+
This will install NHDDL to your memory card along with the PS2 Browser icon.
69+
70+
Updating `nhddl.elf` is as simple as replacing `nhddl.elf` with the latest version.
71+
72+
### Supported modes
73+
74+
#### ATA
75+
76+
To skip all other devices, `mode: ata` must be present in `nhddl.yaml`.
77+
78+
#### MX4SIO
79+
80+
MX4SIO support requires explicit configuration due to conflicts with memory cards and MMCE devices.
81+
`mode: mx4sio` must be present in `nhddl.yaml` on __the memory card__ for MX4SIO to work.
82+
83+
Note that __MMCE devices will not be available__ when this mode is enabled.
84+
85+
#### USB
86+
87+
Using more than one USB mass storage device at the same time is not recommended.
88+
To skip all other devices, `mode: usb` must be present in `nhddl.yaml`.
89+
90+
#### UDPBD
91+
92+
To skip all other devices, `mode: udpbd` must be present in `nhddl.yaml`.
93+
94+
UDPBD module requires PS2 IP address to work.
95+
NHDDL attempts to retrieve PS2 IP address from the following sources:
96+
- `udpbd_ip` flag in `nhddl.yaml`
97+
- `SYS-CONF/IPCONFIG.DAT` on the memory card (usually created by w/uLaunchELF)
98+
99+
`udpbd_ip` flag takes priority over `IPCONFIG.DAT`.
100+
101+
Make sure to set the IP address in Neutrino config files (as of Neutrino 1.6.0, `config/bsd-udpbd.toml`).
102+
Consult Neutrino documentation for more details.
103+
104+
#### iLink
105+
106+
To skip all other devices, `mode: ilink` must be present in `nhddl.yaml`.
107+
108+
#### MMCE (SD2PSX, MemCard PRO2)
109+
110+
To skip all other devices, `mode: mmce` must be present in `nhddl.yaml`.
111+
112+
#### HDL (APA-formatted HDD with HD Loader partitions)
113+
114+
Note that HDL backend **does not support** VMCs and virtual HDDs.
115+
Cover art and title options will be loaded from one of the following APA partitions:
116+
- `+OPL`
117+
- `OPL`
118+
- `__common`
119+
120+
To skip all other devices, `mode: hdl` must be present in `nhddl.yaml`.
121+
122+
### Storing ISO (MMCE, BDM backends)
123+
124+
ISOs can be stored almost anywhere on the storage device, but no more than 5 directories deep.
125+
For example, ISOs stored in `DVD/A/B/C/D` will be scanned and added to the list, but ISOs stored in `DVD/A/B/C/D/E` will be ignored.
126+
127+
Furthermore, directories that start with `.`, `$` and the following directories are ignored to speed up the scanning process:
128+
- `nhddl`
129+
- `APPS`
130+
- `ART`
131+
- `CFG`
132+
- `CHT`
133+
- `LNG`
134+
- `THM`
135+
- `VMC`
136+
- `XEBPLUS`
137+
- `MemoryCards`
138+
139+
### Displaying cover art
140+
141+
NHDDL uses the same file naming convention and file format used by OPL.
142+
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 device.
143+
If unsure where to get your cover art from, check out the latest version of [OPL Manager](https://oplmanager.com).
144+
145+
## Configuration files
146+
147+
NHDDL uses YAML-_like_ files to load and store its configuration options.
148+
149+
### Launcher configuration file
150+
151+
Launcher configuration is read from the `nhddl.yaml` file.
152+
153+
Configuration file is loaded from one of the following paths:
154+
- `<NHDDL launch directory>/nhddl.yaml` (__might be case-sensitive__ depending on device)
155+
- `massX:/nhddl/nhddl.yaml` (BDM devices, if any of BDM modes are enabled)
156+
- `hdd0:/<OPL partition>/neutrino/neutrino.elf` (APA device, if HDL mode is enabled)
157+
`OPL partition` is read from `hdd0:__common/OPL/conf_hdd.cfg`, with `+OPL` or `__common/OPL` used as a fallback
158+
- `mmceX:/nhddl/nhddl.yaml` (MMCE devices, will work even if MMCE mode is _not_ enabled unless MX4SIO mode is set)
159+
- `mcX:/APP_NHDDL/nhddl.yaml` (memory cards, __case-sensitive__)
160+
161+
This file is _completely optional_ and must be used only to force video mode in NHDDL UI or set NHDDL device mode.
162+
By default, default video mode is used and all BDM devices are used to look for ISO files.
163+
164+
To disable a flag, you can just comment it out with `#`.
165+
166+
See [this file](examples/nhddl.yaml) for an example of a valid `nhddl.yaml` file.
167+
168+
### Additional configuration files on storage device
169+
170+
NHDDL stores and looks for ISO-related config files in `nhddl` directory in the root of your BDM drive.
171+
172+
#### `lastTitle.bin`
173+
174+
This file stores the full path of the last launched title and is used to automatically navigate to it each time NHDDL starts up.
175+
This file is created automatically.
176+
177+
#### `cache.bin`
178+
179+
Contains title ID cache for all ISOs located during the previous launch, making building ISO list way faster.
180+
This file is also created automatically.
181+
182+
#### Argument files
183+
184+
These files store arbitrary arguments that are passed to Neutrino on title launch.
185+
Arguments stored in those files __are passed to `neutrino.elf` as-is__.
186+
187+
_For a list of valid arguments, see Neutrino README._
188+
189+
Example of a valid argument file:
190+
```yaml
191+
# All flags are passed to neutrino as-is for future-proofing, comments are ignored
192+
gc: 2
193+
mc0: /memcard0.bin # all file paths must be relative to device root
194+
$mc1: /VMC/memcard1.bin # this argument is disabled
195+
# Arguments that don't have a value
196+
# Empty values are treated as a simple flag
197+
dbc:
198+
logo:
199+
```
200+
201+
To be able to parse those arguments and allow you to dynamically enable or disable them in UI,
202+
NHDDL uses a dollar sign (`$`) to mark arguments as enabled or disabled by default.
203+
Only enabled arguments get passed to Neutrino.
204+
205+
NHDDL supports two kinds of argument files:
206+
207+
#### global.yaml
208+
209+
Arguments stored in `nhddl/global.yaml` are applied to every ISO by default.
210+
211+
#### ISO-specific files
212+
213+
Arguments stored in `nhddl/<ISO name>.yaml` are applied to every ISO that starts with `<ISO name>`.
214+
215+
NHDDL can create this file automatically when title compatibility modes are modified and saved in UI.
216+
217+
#### Example of directory sturcture on BDM device
218+
219+
```
220+
ART/ # cover art, optional
221+
|
222+
- SLUS_200.02_COV.png
223+
nhddl/
224+
|
225+
- lastTitle.txt # created automatically
226+
- cache.bin # created automatically
227+
- global.yaml # optional argument file, applies to all ISOs
228+
- nhddl.yaml # NHDDL options, applied after initialization is complete
229+
- Silent Hill 2.yaml # optional argument file, applies only to ISOs that start with "Silent Hill 2"
230+
CD/
231+
|
232+
— Ridge Racer V.iso
233+
DVD/
234+
|
235+
- Silent Hill 2.iso
236+
- TimeSplitters.iso
237+
```
238+
239+
## UI screenshots
240+
241+
<details>
242+
<summary>Title list</summary>
243+
<img src="img/titles.png">
244+
</details>
245+
<details>
246+
<summary>Title options</summary>
247+
<img src="img/options1.png">
248+
<img src="img/options2.png">
249+
</details>
250+
251+
252+
EXAMPLE YAML:
253+
#video: ntsc # supported video modes: ntsc, pal, 480p
254+
mode: ata # supported modes: bdm, ata, mx4sio, udpbd, usb, ilink, mmce, hdl. If not present or commented out, all devices will be used to search for ISO files
255+
mode: mmce # multiple modes are supported via multiple mode strings
256+
#udpbd_ip: 192.168.1.6 # PS2 IP address for UDPBD mode (commented out)
47.2 KB
Binary file not shown.
47.2 KB
Binary file not shown.
964 Bytes
Binary file not shown.
47.2 KB
Binary file not shown.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
title=[APP] NHDDL
2+
boot=NHDDL.ELF
3+
Title=NHDDL
4+
CfgVersion=8
5+
$ConfigSource=1
6+
Version=v1.0
7+
Package=1.0
8+
Release=
9+
Developer=pcm720
10+
Genre=Homebrew
11+
Description=A Neutrino launcher
12+
PlayersText=2
13+
ParentalText=E
14+
ScanText=480i
15+
AspectText=4:3
16+
Vmode=vmode/ntsc
17+
VmodeText=NTSC
18+
RatingText=3
19+
Parental=esrb/everyone
20+
Notes=SAS Compliant
21+
Players=players/1
22+
Aspect=aspect/s
23+
Scan=scan/480i
24+
Device=device/all
25+
DeviceText=ALL
26+
Rating=rating/3
27+
Source=github.com/pcm720/nhddl
1.28 MB
Binary file not shown.
28.8 KB
Binary file not shown.
26.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)