check/reload IOS

This commit is contained in:
dborth 2010-08-11 04:10:23 +00:00
parent 89cb25a2b6
commit d9726f2ce2

View file

@ -45,14 +45,61 @@ void Terminate()
if (ShutdownRequested) ShutdownWii();
else if (ResetRequested) RestartHomebrewChannel();
}
#endif
static bool FindIOS(u32 ios)
{
s32 ret;
u32 n;
u64 *titles = NULL;
u32 num_titles=0;
ret = ES_GetNumTitles(&num_titles);
if (ret < 0)
return false;
if(num_titles < 1)
return false;
titles = (u64 *)memalign(32, num_titles * sizeof(u64) + 32);
if (!titles)
return false;
ret = ES_GetTitles(titles, num_titles);
if (ret < 0)
{
free(titles);
return false;
}
for(n=0; n < num_titles; n++)
{
if((titles[n] & 0xFFFFFFFF)==ios)
{
free(titles);
return true;
}
}
free(titles);
return false;
}
#endif
/* Do initialisation which has to be done first for the console to work */
/* Entry point */
int main(int argc, char *argv[])
{
#ifdef HW_RVL
u32 version = IOS_GetVersion();
if(version != 58)
{
if(FindIOS(58))
IOS_ReloadIOS(58);
else if((version < 61 || version >= 200) && FindIOS(61))
IOS_ReloadIOS(61);
}
// Wii Power/Reset buttons
WPAD_Init();
WPAD_SetPowerButtonCallback((WPADShutdownCallback)ShutdownCB);