WiiPower said:Anyways, i think these 2 ways are complicated to write while my latest suggestion should be easier to write. And IF it would work, it would return the advantage of being able to patch the 2nd .dol in any way you want. You could do that from the cIOS too, but it would be complicated too.
Do we have an idea why hermes's ios reload blocking doesn't work for most games with this kind of problem?waninkoko said:Only proper way to fix that is blocking IOS reloading completely, and that "can" be done using both ways (builtin or no builtin modules).
arasium said:A lot of developper won't be able to load their modules themselves (i've seen a lot of coders just doing copy/paste. They aren't good enough in coding to use external modules).
So the better way is to include plugins in the modules, but also allow the user to put his plugin (perhaps with a vector table or something like that).
I voted for the included plugins (we already have the hermes cios for external ones).
Well, then these developers just have to wait until somebody wrote the code that loads the modules to copy that. I don't see any problems for these developers on both options.
Do we have an idea why hermes's ios reload blocking doesn't work for most games with this kind of problem?oggzee said:QUOTE(waninkoko @ Feb 10 2010, 11:35 PM) Only proper way to fix that is blocking IOS reloading completely, and that "can" be done using both ways (builtin or no builtin modules).
I don't know what exactly his reload block does, i guess it just ignores the call. But maybe the proper thing to do is to close all ios file descriptors, since the game will re-open them after reload but since some of them are already open it might be the reason why it fails somehow? Or is the problem somewhere else?
WiiPower said:Well, correct if i'm wrong, but the IOS Reload happens because it's the way nintendo loads .dols on the ppc. The IOS is booted, looks at its state and then the IOS loads the .dol. I have absolutely no idea what Hermes IOS Reload block does, so any details would be helpful.
Ok, now that the dip plugin is opensource, we can see what it does:
ios_mload_4.0/odip_plugin/source/es_ioctlv.c:
CODEÂÂÂÂif(dat->ioctlv.ioctl==8) { // reboot
ÂÂÂÂÂÂÂÂÂÂÂÂos_sync_before_read( (void *) dat->ioctlv.argv[0].data, dat->ioctlv.argv[0].len);
ÂÂÂÂÂÂÂÂios=*(((volatile u32 *)dat->ioctlv.argv[0].data)+1);
ÂÂÂÂÂÂÂÂversion=1;
ÂÂÂÂÂÂÂÂos_sync_before_read((void *) 0x3140,8);
ÂÂÂÂÂÂÂÂ*((volatile u32 *) 0x3140)= ((ios)
So return 0 seems fine...WiiPower said:So it catches ioctl 8 on the ES module. Well, i would like to know if the return value 0 is correct and if it's always a call for an IOS to be loaded and not something else.
If we check libogc sources:
CODEs32 IOS_ReloadIOS(int version)
=> ÂÂÂÂres = __IOS_LaunchNewIOS(version);
ÂÂÂÂ=> res = ES_LaunchTitle(titleID, &views[0]);
ÂÂÂÂÂÂÂÂ => res = IOS_IoctlvReboot(__es_fd,IOCTL_ES_LAUNCH,2,0,vectors);
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (#define IOCTL_ES_LAUNCHÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ0x08)
ÂÂÂÂif(res < 0) {
#ifdef DEBUG_IOS
ÂÂÂÂÂÂÂÂprintf(" LaunchTitle failed: %d\n",res);
#endif
ÂÂÂÂÂÂÂÂreturn res;
ÂÂÂÂ}
I wouldn't hope for a clear outcomewaninkoko said:Geez, I see there's not a clear winner option... I expected to get some conclusions today to continue developing rev18 but looks like today is gonna be a nice day to play with my console (not the wii, i mean the 360).
Juptj_cool said:I wouldn't hope for a clear outcomewaninkoko said:Geez, I see there's not a clear winner option... I expected to get some conclusions today to continue developing rev18 but looks like today is gonna be a nice day to play with my console (not the wii, i mean the 360).
Most people here don't know the difference between the 2 and just vote something...
roku93 said:Is there really any advantage of having them built-in? Expect maybe having to have SD on your wii to load them from..? The way I see it external modules are far superior.. :S
Advantage is simplicity in using the cios for developers. And backward support for existing application that use it.roku93 said:Is there really any advantage of having them built-in? Expect maybe having to have SD on your wii to load them from..? The way I see it external modules are far superior.. :S