It makes sense there would be issues if you loaded the same module twice. If the loading code doesn't check that the module isn't already loaded you could end up with two identical functions at different addresses.
I made some experiments with uLE, trying to load CNF from HDD at this stage, but ran into some odd problems. This often happens when trying to load drivers before a necessary IOP reset (specified in the loaded uLE CNF), as the PS2SDK drivers are mostly allergic to being loaded twice by the same EE application... :(
I think the point I was attempting to make was missed here. The source for myPS2 didn't test for hdd0: in argv. Therefore it didn't know it was booting off hard drive.
I disagree. It should still be possible to recognize all possible boot methods, as long as they all use argv for the launch path. For the case of a DMS4pro chip (which I have), the Dev2 boot method is testable as:
"booted_Dev2 = !strcmp(argv, "hdd0:__boot/boot.elf");"
NB: I may have missed a slash separator there, as I can't check the debug info right now.