add IOS whitelist, reload if found. display warning if not.

This commit is contained in:
dborth 2010-12-18 16:04:50 +00:00
parent 0df185faa6
commit 2213e5510e
3 changed files with 35 additions and 8 deletions

View File

@ -3850,8 +3850,15 @@ MainMenu (int menu)
#ifdef HW_RVL
static bool checkIOS = true;
if(checkIOS && !SaneIOS())
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

View File

@ -212,11 +212,20 @@ void setFrameTimerMethod()
***************************************************************************/
#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;
@ -328,6 +337,16 @@ void USBGeckoOutput()
int
main(int argc, char *argv[])
{
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);

View File

@ -112,7 +112,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;