Right now libogc limits IOS_ReloadIOS() to values above 4 and less than 255. Is this an arbitrary limit or does IOS not accept values > 255 for system titles for some reason?
TMDs store a full title ID for the IOS version they request--it seems like we should be able to load IOS from just about any Title ID we want.
Looking at ios.c, it looks like __IOS_LaunchNewIOS() (which does the version check) simply gets a ticket for the title, and then does ES_LaunchTitle like one would for launching any other title. Unless ES_LaunchTitle (or ES_GetTicketViews) fails for 1-x titles where x > 255, it seems like we should be able to load whatever we want.
Also, if there is such a limit, I propose an alternative solution for using custom IOS:
1. Patch a version of IOS such that there is no TitleID limit on ES_LaunchTitle
2. Install said IOS as IOS255
3. When a custom IOS is needed, load IOS255, then load your patched IOS from elsewhere (should make some sort of standard, or start using ASCII titles).
While not entirely necessary, this would help us avoid version conflicts with official and unofficial IOS. ASCII-based IOS titles would be really nice for identification and organization. Heck, we could create our own title directory.
/title/HAXX/LDVD/
/title/HAXX/cIOS/
etc. etc.
While it's not really a big impending terror we need to find a solution for, this would be a nice change we could make to try to keep our stuff separate from Nintendo's official items.
Edit: I guess this doesn't completely count as "Reverse Engineering," but it has to do with how the IOS system works, and may have to do with some IOS hacking... so....
Edited 1 time(s). Last edit at 08/11/2008 12:22AM by tona.