Trend now is to move to IOS58 and HW_AHBPROT flag, i've started to use IOS58 and latest SVN source of libogc.
I'm developing launcher (UniiLoader if somebody remember it). Before it was pure USB loader. I've droped cIOS and software USB loading capability. I have WODE and can load both Wii and GC games from this hardware USB modchip without messing with cIOS. So, i was glad to throw away cIOS support code from my loader and stop fighting with system stability and game compatibility. Together with SNEEK it can manage big amount of channels and so on... Now i'm trying to integrate IOS58 and AHBPROT. And new issues started to appear...
UniiLoader supports USB keyboard. And looks like either libogc or IOS58 has problem here. After reloading IOS58, you can initialize keyboard and it will work fine, any subsequent (de)initialization of keyboard won't work. Until you reload IOS. And it happens ONLY with IOS58. If i use for example IOS36 - reinitalizations of keyboard are working fine.
You may ask: why it i can't simple reload IOS58 to fix problem?
If i will realod IOS i will loose AHBPROT flag.
So, every homebrew appliaction launched from my loader supporting keyboard and don't reload IOS, won't able to use keyboard.
HBC doesn't use keyboard, and thus it's free from this issue.
May be other developers here had such issue and even may be know how to fix it?
I guess, something wrong in KEYBOARD_Deinit function (or one of functions it uses).
I'm testing on real NAND (not SNEEK) and all used IOSes aren't patched or modified any way.
Crazy idea: is there ultimate method to cleanup whole IOS usage besides IOS_RealoadIOS? I'm tracking all handles i'm using and carefully close all of them, but looks like something remains not closed - probably because of libogc. Before AHBPROT flag usage *ERA*, all aplications just reloaded IOS and nobody see/care if something remained not clean/closed. With ARBPROT applications loose IOS reloading ability if they want to use this flag...
I'm developing launcher (UniiLoader if somebody remember it). Before it was pure USB loader. I've droped cIOS and software USB loading capability. I have WODE and can load both Wii and GC games from this hardware USB modchip without messing with cIOS. So, i was glad to throw away cIOS support code from my loader and stop fighting with system stability and game compatibility. Together with SNEEK it can manage big amount of channels and so on... Now i'm trying to integrate IOS58 and AHBPROT. And new issues started to appear...
UniiLoader supports USB keyboard. And looks like either libogc or IOS58 has problem here. After reloading IOS58, you can initialize keyboard and it will work fine, any subsequent (de)initialization of keyboard won't work. Until you reload IOS. And it happens ONLY with IOS58. If i use for example IOS36 - reinitalizations of keyboard are working fine.
You may ask: why it i can't simple reload IOS58 to fix problem?
If i will realod IOS i will loose AHBPROT flag.
So, every homebrew appliaction launched from my loader supporting keyboard and don't reload IOS, won't able to use keyboard.
HBC doesn't use keyboard, and thus it's free from this issue.
May be other developers here had such issue and even may be know how to fix it?
I guess, something wrong in KEYBOARD_Deinit function (or one of functions it uses).
I'm testing on real NAND (not SNEEK) and all used IOSes aren't patched or modified any way.
Crazy idea: is there ultimate method to cleanup whole IOS usage besides IOS_RealoadIOS? I'm tracking all handles i'm using and carefully close all of them, but looks like something remains not closed - probably because of libogc. Before AHBPROT flag usage *ERA*, all aplications just reloaded IOS and nobody see/care if something remained not clean/closed. With ARBPROT applications loose IOS reloading ability if they want to use this flag...