diff --git a/source/fceugx.cpp b/source/fceugx.cpp index c848137..b37508f 100644 --- a/source/fceugx.cpp +++ b/source/fceugx.cpp @@ -188,12 +188,19 @@ static void ipl_set_config(unsigned char c) * IOS Check ***************************************************************************/ #ifdef HW_RVL -bool SaneIOS() +bool SupportedIOS(u32 ios) +{ + if(ios == 58 || ios == 61) + return true; + + return false; +} + +bool SaneIOS(u32 ios) { bool res = false; u32 num_titles=0; u32 tmd_size; - u32 ios = IOS_GetVersion(); if(ios > 200) return false; @@ -309,7 +316,17 @@ void USBGeckoOutput() int main(int argc, char *argv[]) { - USBGeckoOutput(); // uncomment to enable USB gecko output + u32 ios = IOS_GetVersion(); + + if(!SupportedIOS(ios)) + { + s32 preferred = IOS_GetPreferredVersion(); + + if(SupportedIOS(preferred)) + IOS_ReloadIOS(preferred); + } + + //USBGeckoOutput(); // uncomment to enable USB gecko output __exception_setreload(8); #ifdef HW_DOL diff --git a/source/fceugx.h b/source/fceugx.h index 4ed4a56..33aed0c 100644 --- a/source/fceugx.h +++ b/source/fceugx.h @@ -111,7 +111,8 @@ struct SGCSettings{ void ExitApp(); void ShutdownWii(); -bool SaneIOS(); +bool SupportedIOS(u32 ios); +bool SaneIOS(u32 ios); extern struct SGCSettings GCSettings; extern int ScreenshotRequested; extern int ConfigRequested; diff --git a/source/menu.cpp b/source/menu.cpp index 90fe83e..5c9a5e9 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -3890,8 +3890,15 @@ MainMenu (int menu) #ifdef HW_RVL static bool checkIOS = true; - if(checkIOS && !SaneIOS()) - ErrorPrompt("The current IOS has been altered (fake-signed). Functionality and/or stability may be adversely affected."); + if(checkIOS) + { + u32 ios = IOS_GetVersion(); + + if(!SupportedIOS(ios)) + ErrorPrompt("The current IOS is unsupported. Functionality and/or stability may be adversely affected."); + else if(!SaneIOS(ios)) + ErrorPrompt("The current IOS has been altered (fake-signed). Functionality and/or stability may be adversely affected."); + } checkIOS = false; #endif