NHDDL

PS2 NHDDL v1.2.2

@pcm720
What game settings should I try if I'm getting freezing in some games? With GrimDoomer OPL, games that give me issues like hanging on the boot or freezing shortly after starting gameplay, I find that changing the DMA Mode from UDMA4 to MDMA2 usually works. But I don't see these settings in NHDDL. I'm using the latest build of NHDDL(v1.01) and beta build of Neutrino from Dec 6, 2024. I have a SATA SSD configured as exFAT.

For example, with .hack Infection, it would hang at a black screen on boot using Grim Doomers OPL with the default DMA Mode set to UDMA4. When I change to MDMA2 it works fine. In NHDDL, with the default settings, I can make it to where I need to name my character, and then it will hang on a black screen afterward. I've tried all options using NHDDL and I'll still freeze at the same point. Some combination of settings will cause it to hang on boot. Do you have an equivalent DMA setting to MDMA2 on NHDDL?
 
Last edited:
As NHDDL is just a launcher for Neutrino, it has no effect over game compatibility other than flags supported by neutrino.elf.
As a consequence, NHDDL can't really force DMA mode since all HDD modules are reinitialized by Neutrino and it doesn't export anything like that.

I think you should create an issue in Neutrino repository.
However, as far as I know, current versions of PS2SDK ATA modules don't even enable MDMA modes, so I'm not sure this can be fixed.
This seems like a hardware issue and not a software one, especially if this happens in games that work fine for other people, even more so considering BDM uses the same underlying ATA module used by OPL for APA/HDLoader.
 
@pcm720 can you make a version that will work in NTSC even on PS2 PAL? Maybe it will help to fix this issue, because wLE and OPL also blink for me when set to PAL mode. By the way, if it matters, I'm using SCART RGB.
 
@pcm720 can you make a version that will work in NTSC even on PS2 PAL? Maybe it will help to fix this issue, because wLE and OPL also blink for me when set to PAL mode. By the way, if it matters, I'm using SCART RGB.

RGB signal (or YPbPr, for that matter) is still interlaced.
I guess I can replace 480p flag with video mode, but it will break compatibility with older config files (if anyone even cares about this).

@1052, I've added support for forcing video mode in v1.1.0 (already available on GitHub, waiting for approval here)
 
Last edited:
The problem is not about interlacing afaik.
In OPL PAL mode the text flickers but NTSC mode is static.
And 480p is unsupported for CRT TV
 
The problem is not about interlacing afaik.
In OPL PAL mode the text flickers but NTSC mode is static.

It's the interlacing.
On my RetroGEM-modded PS2, PAL mode looks identical to NTSC mode and flickers in exactly the same way.

It looks that way because PAL signal has more lines and less fields per second than NTSC and your CRT is probably doing a better job displaying 240 lines every 60th of a second than displaying 256 lines every 50th of a second.

And 480p is unsupported for CRT TV

That's not true because some CRT TVs do support 480p (e.g. broadcast/professional monitors, later hi-scan Trinitrons and other EDTVs).
 
Last edited:
Hello ;v i have 2 newbie questions.

1- I am almost sure but just to kill the doubt...neutrino dont suport cheats so you cant add any on nhddl right?

2- Is it possible to add a way of setting the VMC inside the app? since its already benefits of opl manager wich is capable of creating vmc, nhddl could list and set via in app config or even read the opl manager cfg file and pass to neutrino.
 
1- I am almost sure but just to kill the doubt...neutrino dont suport cheats so you cant add any on nhddl right?

2- Is it possible to add a way of setting the VMC inside the app? since its already benefits of opl manager wich is capable of creating vmc, nhddl could list and set via in app config or even read the opl manager cfg file and pass to neutrino.

1. Yes. There's nothing that can be done about that until Neutrino supports cheats.

2. Of course it's possible.
However, I don't use VMCs and have no idea how they're set up by OPL. What I know for sure is that it will require a lot of changes to UI and more code to handle VMCs separately from generic Neutrino arguments, which is not something I have time for.
Furthermore, I'd like to keep NHDDL as small and simple as possible, so ideally this should be handled by PC-side software.
For now VMCs are already supported by adding mc0/mc1 arguments to NHDDL's title-specific configuration file.
 
XEB NLP and OPLNEUTRINO support cheats via Neutrino.

You are free to use those instead.
NHDDL will only support what Neutrino can do natively.

XEB plugin uses CheatDevice and writes its configuration dynamically for every chosen game before running Neutrino.
Someone on PS2 Scene Discord successfully used CheatDevice with NHDDL by running it before NHDDL.
 
pcm720 updated NHDDL with a new update entry:

NHDDL v1.1.2a

This is a re-release of 1.1.2 that fixes NHDDL crashing when only non-PS2 ISO images present on a storage device.

Changelog:
  • Drop support for switching ISO pages with the d-pad left and right keys to avoid issues with guitar controllers
  • Fix issues with ISO scanning leading to NHDDL crashing or not detecting valid PS2 ISOs.
Thanks to @jolek for testing!

Read the rest of this update entry...
 
view
Look, great work with NHDDL! It was one of my biggest motivations for trying to create my own Front-End for the PS2. I'm using AthenaEnv to develop the interface, but I'm having difficulties running PS2 games through Neutrino. Could you help me with this or give some guidance?

I am attempting to run PS2 game ISOs on my console using Neutrino as the backend for emulation. However, after integrating the script in the AthenaEnv environment, the process does not work as expected. The game does not start, and sometimes errors appear in the log or unexpected behavior occurs.
Error Reported in the Log:
When pressing the X button to start an ISO, the following errors appear in the log:
Copiar código
[ xxxx.xxxx ] cdvdLoadElf(): Unknown device in ELF path 'rom0:OSDSYS'
[ xxxx.xxxx ] Failed to read ELF being loaded: rom0:OSDSYS
Current Configuration:
Neutrino ELF:
Located at mass:/APPS/neutrino.elf.
ISOs:
Stored in mass:/DVD/ on the USB.
Command Used in the Script:
I am using the following arguments to execute Neutrino:
javascript
Copiar código
neutrino.elf -bsd=usb -dvd=mass:/DVD/<ISO>
Current Script: Here is the snippet responsible for starting Neutrino:
javascript
Copiar código
function executarNeutrino(jogoSelecionado) {
const neutrinoPath = basePath + "APPS/neutrino.elf"; // Path to Neutrino ELF
const isoPath = mass:/DVD/${jogoSelecionado}; // Path to the selected ISO on USB
try {
if (std.exists(neutrinoPath)) {
console.log(Neutrino found: ${neutrinoPath});
console.log(Selected ISO: ${isoPath});
const arguments = [
-bsd=usb,
-dvd=${isoPath}
];
System.loadELF(neutrinoPath, arguments);
console.log("Neutrino started successfully.");
} else {
console.error("Neutrino ELF not found.");
}
} catch (e) {
console.error("Error executing Neutrino:", e);
}
}
Expected Behavior:
When pressing the X button in the PS2 games tab:
Neutrino should start.
The selected ISO should load and run correctly.
Current Behavior:
Nothing happens or the log displays the error mentioned above.
Some ISOs seem to be ignored or do not load.
Possible Causes Identified:
Path to Neutrino or ISO:
There might be issues with the paths used in the script.
Arguments Passed:
Perhaps the arguments -bsd=usb or -dvd=mass:/DVD/<ISO> are incorrect or incomplete.
ISO Format:
I'm not sure if Neutrino can properly read the ISOs.
USB Limitations:
There might be an issue with the USB read timing or compatibility.
Questions and Request for Help:
Has anyone successfully configured Neutrino to run ISOs on a PS2 via USB?
Are the arguments I'm using correct?
Is there any additional configuration needed for the Neutrino modules?
Do I need any additional .toml configuration files?
Any Help Would Be Greatly Appreciated!
If anyone has experience with Neutrino or knows how to resolve this issue, please share your solution. I'm aiming to set up a fully functional system to emulate ISOs via USB on the PS2 with maximum compatibility.
 
I am attempting to run PS2 game ISOs on my console using Neutrino as the backend for emulation. However, after integrating the script in the AthenaEnv environment, the process does not work as expected

You'd be better off asking AthenaEnv developers, I have no idea how it handles argv and argc.
Neutrino requires each argument to be passed as a separate C string, with argc containing the actual number of arguments.
Loading from USB needs at least -bsd=usb and -dvd=mass0:/<path to ISO on the USB drive>, so argv must be
["-bsd=usb", "-dvd=mass0:/<path to ISO on the USB drive>"] and argc must equal two for it to work properly.
 
Friend, send your Discord!
I'm working on a cool project, and it would be great to get some opinions from someone like you.
 
Friend, send your Discord!
I'm working on a cool project, and it would be great to get some opinions from someone like you.

I've seen your posts on PS2 Scene Discord, you can always get opinions and ask dev questions there. It also has channels dedicated to Neutrino and JS development, so you would get way more help there.
Just don't post your code without any context in some off-topic channel nobody reads and ask questions in the actual message, not the attached txt file as no one would actually read one unless they have a reason to do so.
 
Last edited:

Similar threads

Back
Top