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

This commit is contained in:
dborth 2010-12-18 16:05:06 +00:00
parent 016fb88d9c
commit dc5bff23d8
3 changed files with 30 additions and 5 deletions

View File

@ -4311,8 +4311,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

@ -175,12 +175,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;
@ -296,6 +303,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

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