How are you launching the different instances? via the hbc?
If you are using a forwarder channel you would need 2 separate ones, one specially crafted to use the alternate directory
If I don't mistaken, that would affect only the forwarder to check if the user want to use SD or USB and which IOS to use before launching the loader.
I think once in the loader, it would not use it anymore, the loader re-check the path and mount the config by itself.
I'm trying to get two seperate instances of USB Loader GX running
humm, there are ways to do it, but it's even more annoying than switching a setting.
You actually have to insert/eject the SD card if you are using the forwarder.
it loads the config file from that path.
It actually loads from different paths, so there are some tricks to get two instances. (more would be too complicated)
the loader and the forwarder look at different places for the settings, so you have to play with that.
for example the forwarder looks at :
sd:/config/ This was the VERY old USBLoaderGX v1.0 folder, and it's still in the sources for compatibility reason.
Then at two different locations on SD. If there's no config found, it mounts USB and parsed all 3 path on each mounted partition from 1 to 8
if it finds a config file, it uses that path to load the meta.xml to loads the launch arguments from it.
so 9 times this :
x:/config/GXGlobal.cfg
x:/apps/usbloader_gx/GXGlobal.cfg
x:/apps/usbloadergx/GXGlobal.cfg
if you have an SD inserted, it'll find the config on it and use it.
if your SD is not inserted, it'll go to USB and use the first setting found, etc.
So you can have two different settings : one on SD, one on USB. SD has priority if inserted.
I already looked into the GXGlobal.cfg, but there is no config path entry. Maybe I need to set it manually, but how could I do that?
There is actually a loader's path setting in GXGlobal, it's called : update_path
Default update path is : x:/apps/usbloader_gx/
And you are right, I think you need to edit the config manually.
If you have different folders for the loader on the same device, you should be sure to change the "update path" to point to the correct folder. For example, this is used for auto-update and prevent replacing a different version (for example main loader, maintained mods, etc.). It could have been useful in case of different projects, with different devs. But, it never really happened, there weren't any different maintained mods. only the main app, and dead mods.
Now there is Blackb0x mod which is maintained, but the "main" project isn't anymore, so it's also losing its usefulness. Blackb0x version will supersede the official version and become the official branch soon.
You could try to edit that variable and see if it works like intended, but I think it's broken for proper multiple instances.
Unfortunately, the config path is still hardcoded, and doesn't use update_path variable.
Developers should have been using it to access all resources dynamically, but I think we didn't always took care of it.
I checked, and the loader is looking for the config at two different (hardcoded) places :
x:/apps/usbloader_gx/GXGlobal.cfg
x:/config/GXGlobal.cfg
span over SD, then USB1 up to USB8, so you can also use the insert/eject SD trick from HBC.
If the setting manager sources are updated to look first on the "current path where boot.dol is launched from" and use it to look for the config, or to generate it if no other are found, then multiple instance would work.
I think it's a small update to make it compatible.
it's CSettings.cpp > bool CSettings::FindConfig()