mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-12-25 03:11:58 +01:00
-using force cIOS detection again, should fix problems with some
fucked up cIOS maps -changed the AUTO IOS selection again, if the game doesnt need IOS57 it will just use the currently loaded cIOS instead of a IOS56 based one
This commit is contained in:
parent
ef87b82320
commit
7aac10d1ec
@ -64,6 +64,16 @@ bool D2X(u8 ios, u8 *base)
|
|||||||
iosinfo_t *info = GetInfo(ios);
|
iosinfo_t *info = GetInfo(ios);
|
||||||
if(!info)
|
if(!info)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if(info->magicword != 0x1ee7c105 /* Magic Word */
|
||||||
|
|| info->magicversion != 1 /* Magic Version */
|
||||||
|
|| info->version < 6 /* Version */
|
||||||
|
|| strncasecmp(info->name, "d2x", 3) != 0) /* Name */
|
||||||
|
{
|
||||||
|
MEM2_free(info);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
*base = (u8)info->baseios;
|
*base = (u8)info->baseios;
|
||||||
MEM2_free(info);
|
MEM2_free(info);
|
||||||
return true;
|
return true;
|
||||||
@ -100,16 +110,6 @@ iosinfo_t *GetInfo(u8 ios)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
iosinfo_t *iosinfo = (iosinfo_t *)buffer;
|
iosinfo_t *iosinfo = (iosinfo_t *)buffer;
|
||||||
|
|
||||||
if(iosinfo->magicword != 0x1ee7c105 /* Magic Word */
|
|
||||||
|| iosinfo->magicversion != 1 /* Magic Version */
|
|
||||||
|| iosinfo->version < 6 /* Version */
|
|
||||||
|| strncasecmp(iosinfo->name, "d2x", 3) != 0) /* Name */
|
|
||||||
{
|
|
||||||
MEM2_free(buffer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return iosinfo;
|
return iosinfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +121,7 @@ int get_ios_type(u8 slot)
|
|||||||
case 222:
|
case 222:
|
||||||
case 223:
|
case 223:
|
||||||
case 224:
|
case 224:
|
||||||
|
case 225:
|
||||||
if(IOS_GetRevision() == 1)
|
if(IOS_GetRevision() == 1)
|
||||||
return IOS_TYPE_KWIIRK;
|
return IOS_TYPE_KWIIRK;
|
||||||
else
|
else
|
||||||
|
@ -277,6 +277,7 @@ void CMenu::init(void)
|
|||||||
m_cfg.getInt("NAND", "partition", 0);
|
m_cfg.getInt("NAND", "partition", 0);
|
||||||
m_cfg.getBool("NAND", "disable", true);
|
m_cfg.getBool("NAND", "disable", true);
|
||||||
|
|
||||||
|
_installed_cios.clear();
|
||||||
_load_installed_cioses();
|
_load_installed_cioses();
|
||||||
|
|
||||||
snprintf(m_app_update_drive, sizeof(m_app_update_drive), "%s:/", drive);
|
snprintf(m_app_update_drive, sizeof(m_app_update_drive), "%s:/", drive);
|
||||||
@ -2303,51 +2304,22 @@ void CMenu::_load_installed_cioses()
|
|||||||
gprintf("Loading cIOS map\n");
|
gprintf("Loading cIOS map\n");
|
||||||
_installed_cios[0] = 1;
|
_installed_cios[0] = 1;
|
||||||
|
|
||||||
// Do sjizzle
|
for(u8 slot = 200; slot < 254; slot++)
|
||||||
u32 count;
|
|
||||||
u32 ret = ES_GetNumTitles(&count);
|
|
||||||
if(ret || !count)
|
|
||||||
{
|
{
|
||||||
gprintf("Cannot count...aaaah\n");
|
u8 base = 1;
|
||||||
return;
|
iosinfo_t *info = GetInfo(slot);
|
||||||
}
|
if(D2X(slot, &base))
|
||||||
|
|
||||||
static u64 title_list[256] ATTRIBUTE_ALIGN(32);
|
|
||||||
if(ES_GetTitles(title_list, count) > 0)
|
|
||||||
{
|
|
||||||
gprintf("Cannot get titles...\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(u32 i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
u32 tmd_size;
|
|
||||||
if(ES_GetStoredTMDSize(title_list[i], &tmd_size) > 0)
|
|
||||||
continue;
|
|
||||||
static u8 tmd_buf[MAX_SIGNED_TMD_SIZE] ATTRIBUTE_ALIGN(32);
|
|
||||||
signed_blob *s_tmd = (signed_blob *)tmd_buf;
|
|
||||||
if(ES_GetStoredTMD(title_list[i], s_tmd, tmd_size) > 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const tmd *t = (const tmd *)SIGNATURE_PAYLOAD(s_tmd);
|
|
||||||
|
|
||||||
u32 kind = t->title_id >> 32;
|
|
||||||
|
|
||||||
if(kind == 1)
|
|
||||||
{
|
{
|
||||||
u32 title_l = t->title_id & 0xFFFFFFFF;
|
gprintf("Found d2x base %u in slot %u\n", base, slot);
|
||||||
if(title_l == 0 || title_l == 2 || title_l == 0x100 || title_l == 0x101 || title_l == 0xEC || title_l < 222)
|
_installed_cios[slot] = base;
|
||||||
continue;
|
|
||||||
u8 base = 1;
|
|
||||||
// We have an ios
|
|
||||||
u32 version = t->title_version;
|
|
||||||
if(tmd_buf[4] == 0 && (version < 100 || version == 0xFFFF || D2X(title_l, &base))) // Signature is empty
|
|
||||||
{
|
|
||||||
// Probably an cios
|
|
||||||
gprintf("Found cIOS base %u in slot %u\n", base, title_l);
|
|
||||||
_installed_cios[title_l] = base;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else if(info != NULL && !is_ios_type(IOS_TYPE_NO_CIOS, slot))
|
||||||
|
{
|
||||||
|
gprintf("Found cIOS in slot %u\n", slot);
|
||||||
|
_installed_cios[slot] = 1;
|
||||||
|
}
|
||||||
|
if(info != NULL)
|
||||||
|
MEM2_free(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -941,7 +941,7 @@ int CMenu::_loadIOS(u8 gameIOS, int userIOS, string id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(gameIOS != 57)
|
else if(gameIOS != 57)
|
||||||
gameIOS = 56;
|
gameIOS = mainIOS;
|
||||||
gprintf("Changed requested IOS to %d.\n", gameIOS);
|
gprintf("Changed requested IOS to %d.\n", gameIOS);
|
||||||
|
|
||||||
// remap IOS to CIOS
|
// remap IOS to CIOS
|
||||||
|
Loading…
Reference in New Issue
Block a user