mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-18 09:19:17 +01:00
little optimization
This commit is contained in:
parent
37c23c7676
commit
f8c1692809
@ -2,8 +2,8 @@
|
|||||||
<app version="1">
|
<app version="1">
|
||||||
<name> USB Loader GX</name>
|
<name> USB Loader GX</name>
|
||||||
<coder>USB Loader GX Team</coder>
|
<coder>USB Loader GX Team</coder>
|
||||||
<version>1.0 r966</version>
|
<version>1.0 r967</version>
|
||||||
<release_date>201009241157</release_date>
|
<release_date>201009241313</release_date>
|
||||||
<short_description>Loads games from USB-devices</short_description>
|
<short_description>Loads games from USB-devices</short_description>
|
||||||
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
|
||||||
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
|
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.
|
||||||
|
File diff suppressed because one or more lines are too long
2
gui.pnps
2
gui.pnps
@ -1 +1 @@
|
|||||||
<pd><ViewState><e p="gui\source\mload" x="false"></e><e p="gui\source\settings" x="false"></e><e p="gui\source\images" x="false"></e><e p="gui\source\libfat" x="false"></e><e p="gui\source\prompts" x="false"></e><e p="gui\source\banner" x="false"></e><e p="gui\source\cheats" x="false"></e><e p="gui\source\libntfs" x="false"></e><e p="gui\source\network" x="true"></e><e p="gui\source\fonts" x="false"></e><e p="gui\source\menu" x="false"></e><e p="gui\source\ramdisk" x="false"></e><e p="gui\source\sounds" x="false"></e><e p="gui\source\wad" x="false"></e><e p="gui" x="true"></e><e p="gui\source\homebrewboot" x="false"></e><e p="gui\source\language" x="false"></e><e p="gui\source" x="true"></e><e p="gui\source\libwbfs" x="false"></e><e p="gui\source\libwiigui" x="false"></e><e p="gui\source\patches" x="false"></e><e p="gui\source\themes" x="false"></e><e p="gui\source\memory" x="false"></e><e p="gui\source\unzip" x="false"></e><e p="gui\source\usbloader" x="false"></e><e p="gui\source\xml" x="false"></e></ViewState></pd>
|
<pd><ViewState><e p="gui\source\mload" x="false"></e><e p="gui\source\settings" x="false"></e><e p="gui\source\utils" x="false"></e><e p="gui\source\images" x="false"></e><e p="gui\source\libfat" x="false"></e><e p="gui\source\prompts" x="false"></e><e p="gui\source\banner" x="false"></e><e p="gui\source\cheats" x="false"></e><e p="gui\source\libntfs" x="false"></e><e p="gui\source\network" x="true"></e><e p="gui\source\fonts" x="false"></e><e p="gui\source\menu" x="false"></e><e p="gui\source\ramdisk" x="false"></e><e p="gui\source\sounds" x="false"></e><e p="gui\source\system" x="false"></e><e p="gui\source\wad" x="false"></e><e p="gui" x="true"></e><e p="gui\source\homebrewboot" x="false"></e><e p="gui\source\language" x="false"></e><e p="gui\source" x="true"></e><e p="gui\source\libwbfs" x="false"></e><e p="gui\source\libwiigui" x="false"></e><e p="gui\source\patches" x="false"></e><e p="gui\source\themes" x="false"></e><e p="gui\source\memory" x="false"></e><e p="gui\source\usbloader" x="false"></e><e p="gui\source\xml" x="false"></e></ViewState></pd>
|
@ -6,30 +6,32 @@ extern "C"
|
|||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int fat_sd_mount;
|
#include <gccore.h>
|
||||||
extern sec_t fat_sd_sec;
|
|
||||||
extern int fat_usb_mount;
|
|
||||||
extern sec_t fat_usb_sec;
|
|
||||||
extern int fat_wbfs_mount;
|
|
||||||
extern sec_t fat_wbfs_sec;
|
|
||||||
|
|
||||||
int USBDevice_Init();
|
extern int fat_sd_mount;
|
||||||
void USBDevice_deInit();
|
extern sec_t fat_sd_sec;
|
||||||
int WBFSDevice_Init(u32 sector);
|
extern int fat_usb_mount;
|
||||||
void WBFSDevice_deInit();
|
extern sec_t fat_usb_sec;
|
||||||
int isInserted(const char *path);
|
extern int fat_wbfs_mount;
|
||||||
int SDCard_Init();
|
extern sec_t fat_wbfs_sec;
|
||||||
void SDCard_deInit();
|
|
||||||
|
|
||||||
s32 MountNTFS(u32 sector);
|
int USBDevice_Init();
|
||||||
s32 UnmountNTFS(void);
|
void USBDevice_deInit();
|
||||||
|
int WBFSDevice_Init(u32 sector);
|
||||||
|
void WBFSDevice_deInit();
|
||||||
|
int isInserted(const char *path);
|
||||||
|
int SDCard_Init();
|
||||||
|
void SDCard_deInit();
|
||||||
|
|
||||||
extern int fat_usb_mount;
|
s32 MountNTFS(u32 sector);
|
||||||
extern sec_t fat_usb_sec;
|
s32 UnmountNTFS(void);
|
||||||
extern int fat_wbfs_mount;
|
|
||||||
extern sec_t fat_wbfs_sec;
|
extern int fat_usb_mount;
|
||||||
extern int fs_ntfs_mount;
|
extern sec_t fat_usb_sec;
|
||||||
extern sec_t fs_ntfs_sec;
|
extern int fat_wbfs_mount;
|
||||||
|
extern sec_t fat_wbfs_sec;
|
||||||
|
extern int fs_ntfs_mount;
|
||||||
|
extern sec_t fs_ntfs_sec;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ static char* determineStubTIDLocation()
|
|||||||
|
|
||||||
s32 Set_Stub(u64 reqID)
|
s32 Set_Stub(u64 reqID)
|
||||||
{
|
{
|
||||||
if (titles.IndexOf(reqID) < 0) return WII_EINSTALL;
|
if (NandTitles.IndexOf(reqID) < 0) return WII_EINSTALL;
|
||||||
|
|
||||||
char *stub = determineStubTIDLocation();
|
char *stub = determineStubTIDLocation();
|
||||||
if (!stub) return -68;
|
if (!stub) return -68;
|
||||||
|
@ -58,7 +58,6 @@ extern bool geckoinit;
|
|||||||
extern char headlessID[8];
|
extern char headlessID[8];
|
||||||
char bootDevice[10];
|
char bootDevice[10];
|
||||||
|
|
||||||
NandTitle titles;
|
|
||||||
PartList partitions;
|
PartList partitions;
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
@ -70,7 +69,7 @@ int main(int argc, char *argv[])
|
|||||||
__exception_setreload(20);
|
__exception_setreload(20);
|
||||||
|
|
||||||
printf("\tStarting up\n");
|
printf("\tStarting up\n");
|
||||||
titles.Get();
|
NandTitles.Get();
|
||||||
|
|
||||||
bool bootDevice_found = false;
|
bool bootDevice_found = false;
|
||||||
if (argc >= 1)
|
if (argc >= 1)
|
||||||
@ -109,8 +108,7 @@ int main(int argc, char *argv[])
|
|||||||
printf("done\n");
|
printf("done\n");
|
||||||
|
|
||||||
// Let's load the cIOS now
|
// Let's load the cIOS now
|
||||||
IosLoader loader(titles);
|
if (IosLoader::LoadAppCios() < 0)
|
||||||
if (loader.LoadAppCios() < 0)
|
|
||||||
{
|
{
|
||||||
printf("\n\tWARNING!\n");
|
printf("\n\tWARNING!\n");
|
||||||
printf("\tUSB Loader GX needs unstubbed cIOS 222 v4 or 249 v9+\n\n");
|
printf("\tUSB Loader GX needs unstubbed cIOS 222 v4 or 249 v9+\n\n");
|
||||||
|
@ -612,8 +612,8 @@ int MainMenu(int menu)
|
|||||||
u32 channel = 0;
|
u32 channel = 0;
|
||||||
if (returnToLoaderGV)
|
if (returnToLoaderGV)
|
||||||
{
|
{
|
||||||
int idx = titles.FindU32(Settings.returnTo);
|
int idx = NandTitles.FindU32(Settings.returnTo);
|
||||||
if (idx >= 0) channel = TITLE_LOWER( titles.At( idx ) );
|
if (idx >= 0) channel = TITLE_LOWER( NandTitles.At( idx ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//This is temporary
|
//This is temporary
|
||||||
|
@ -59,19 +59,19 @@ bool TitleSelector(char output[])
|
|||||||
ISFS_Initialize();//initialize for "titles.Exists()"
|
ISFS_Initialize();//initialize for "titles.Exists()"
|
||||||
|
|
||||||
// Get count of titles of the good titles
|
// Get count of titles of the good titles
|
||||||
num_titles = titles.SetType(0x10001);
|
num_titles = NandTitles.SetType(0x10001);
|
||||||
u32 n = num_titles;
|
u32 n = num_titles;
|
||||||
//gprintf("num_titles: %u\n", num_titles );
|
//gprintf("num_titles: %u\n", num_titles );
|
||||||
for (u32 i = 0; i < n; i++)
|
for (u32 i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
u64 tid = titles.Next();
|
u64 tid = NandTitles.Next();
|
||||||
if (!tid)
|
if (!tid)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//remove ones not actually installed on the nand
|
//remove ones not actually installed on the nand
|
||||||
if (!titles.Exists(tid))
|
if (!NandTitles.Exists(tid))
|
||||||
{
|
{
|
||||||
num_titles--;
|
num_titles--;
|
||||||
}
|
}
|
||||||
@ -89,29 +89,29 @@ bool TitleSelector(char output[])
|
|||||||
//write the titles on the option browser
|
//write the titles on the option browser
|
||||||
|
|
||||||
s32 i = 0;
|
s32 i = 0;
|
||||||
titles.SetType(0x10001);
|
NandTitles.SetType(0x10001);
|
||||||
while (i < num_titles)
|
while (i < num_titles)
|
||||||
{
|
{
|
||||||
u64 tid = titles.Next();
|
u64 tid = NandTitles.Next();
|
||||||
if (!tid)
|
if (!tid)
|
||||||
{
|
{
|
||||||
gprintf("shit happened\n");
|
gprintf("shit happened\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!titles.Exists(tid))
|
if (!NandTitles.Exists(tid))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
char id[5];
|
char id[5];
|
||||||
titles.AsciiTID(tid, (char*) &id);
|
NandTitles.AsciiTID(tid, (char*) &id);
|
||||||
|
|
||||||
const char* name = titles.NameOf(tid);
|
const char* name = NandTitles.NameOf(tid);
|
||||||
//gprintf("%016llx: %s: %s\n%p\t%p\n", tid, id, name, &id, name );
|
//gprintf("%016llx: %s: %s\n%p\t%p\n", tid, id, name, &id, name );
|
||||||
|
|
||||||
options4.SetName(i, "%s", id);
|
options4.SetName(i, "%s", id);
|
||||||
options4.SetValue(i, "%s", name ? titles.NameOf(tid) : tr( "Unknown" ));
|
options4.SetValue(i, "%s", name ? NandTitles.NameOf(tid) : tr( "Unknown" ));
|
||||||
titleList[i] = tid;
|
titleList[i] = tid;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@ -238,29 +238,29 @@ int TitleBrowser()
|
|||||||
ISFS_Initialize();//initialize for "titles.Exists()"
|
ISFS_Initialize();//initialize for "titles.Exists()"
|
||||||
|
|
||||||
// Get count of titles of the good titles
|
// Get count of titles of the good titles
|
||||||
num_titles = titles.SetType(0x10001);
|
num_titles = NandTitles.SetType(0x10001);
|
||||||
u32 n = num_titles;
|
u32 n = num_titles;
|
||||||
for (u32 i = 0; i < n; i++)
|
for (u32 i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
u64 tid = titles.Next();
|
u64 tid = NandTitles.Next();
|
||||||
if (!tid)
|
if (!tid)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//remove ones not actually installed on the nand
|
//remove ones not actually installed on the nand
|
||||||
if (!titles.Exists(tid))
|
if (!NandTitles.Exists(tid))
|
||||||
{
|
{
|
||||||
num_titles--;
|
num_titles--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get count of system titles
|
// Get count of system titles
|
||||||
num_sys_titles = titles.SetType(0x10002);
|
num_sys_titles = NandTitles.SetType(0x10002);
|
||||||
n = num_sys_titles;
|
n = num_sys_titles;
|
||||||
for (u32 i = 0; i < n; i++)
|
for (u32 i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
u64 tid = titles.Next();
|
u64 tid = NandTitles.Next();
|
||||||
if (!tid)
|
if (!tid)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
@ -273,7 +273,7 @@ int TitleBrowser()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//these aren't installed on the nand
|
//these aren't installed on the nand
|
||||||
if (!titles.Exists(tid))
|
if (!NandTitles.Exists(tid))
|
||||||
{
|
{
|
||||||
num_sys_titles--;
|
num_sys_titles--;
|
||||||
}
|
}
|
||||||
@ -290,55 +290,55 @@ int TitleBrowser()
|
|||||||
//write the titles on the option browser
|
//write the titles on the option browser
|
||||||
|
|
||||||
u32 i = 0;
|
u32 i = 0;
|
||||||
titles.SetType(0x10001);
|
NandTitles.SetType(0x10001);
|
||||||
//first add the good stuff
|
//first add the good stuff
|
||||||
while (i < num_titles)
|
while (i < num_titles)
|
||||||
{
|
{
|
||||||
u64 tid = titles.Next();
|
u64 tid = NandTitles.Next();
|
||||||
if (!tid)
|
if (!tid)
|
||||||
{
|
{
|
||||||
gprintf("shit happened3\n");
|
gprintf("shit happened3\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
gprintf("[ %u ] tid: %016llx\t%s\n", i, tid, titles.NameOf(tid));
|
gprintf("[ %u ] tid: %016llx\t%s\n", i, tid, NandTitles.NameOf(tid));
|
||||||
|
|
||||||
if (!titles.Exists(tid))
|
if (!NandTitles.Exists(tid))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
char id[5];
|
char id[5];
|
||||||
titles.AsciiTID(tid, (char*) &id);
|
NandTitles.AsciiTID(tid, (char*) &id);
|
||||||
|
|
||||||
const char* name = titles.NameOf(tid);
|
const char* name = NandTitles.NameOf(tid);
|
||||||
|
|
||||||
options3.SetName(i, "%s", id);
|
options3.SetName(i, "%s", id);
|
||||||
options3.SetValue(i, "%s", name ? titles.NameOf(tid) : tr( "Unknown" ));
|
options3.SetValue(i, "%s", name ? NandTitles.NameOf(tid) : tr( "Unknown" ));
|
||||||
titleList[i] = tid;
|
titleList[i] = tid;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
titles.SetType(0x10002);
|
NandTitles.SetType(0x10002);
|
||||||
while (i < num_sys_titles + num_titles)
|
while (i < num_sys_titles + num_titles)
|
||||||
{
|
{
|
||||||
u64 tid = titles.Next();
|
u64 tid = NandTitles.Next();
|
||||||
if (!tid)
|
if (!tid)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (TITLE_LOWER( tid ) == 0x48414741 || TITLE_LOWER( tid ) == 0x48414141 || TITLE_LOWER( tid ) == 0x48414641) continue;
|
if (TITLE_LOWER( tid ) == 0x48414741 || TITLE_LOWER( tid ) == 0x48414141 || TITLE_LOWER( tid ) == 0x48414641) continue;
|
||||||
|
|
||||||
if (!titles.Exists(tid))
|
if (!NandTitles.Exists(tid))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
char id[5];
|
char id[5];
|
||||||
titles.AsciiTID(tid, (char*) &id);
|
NandTitles.AsciiTID(tid, (char*) &id);
|
||||||
const char* name = titles.NameOf(tid);
|
const char* name = NandTitles.NameOf(tid);
|
||||||
|
|
||||||
options3.SetName(i, "%s", id);
|
options3.SetName(i, "%s", id);
|
||||||
options3.SetValue(i, "%s", name ? titles.NameOf(tid) : tr( "Unknown" ));
|
options3.SetValue(i, "%s", name ? NandTitles.NameOf(tid) : tr( "Unknown" ));
|
||||||
titleList[i] = tid;
|
titleList[i] = tid;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@ -470,9 +470,9 @@ int TitleBrowser()
|
|||||||
//set the title's name, number, ID to text
|
//set the title's name, number, ID to text
|
||||||
char text[0x100];
|
char text[0x100];
|
||||||
char id[5];
|
char id[5];
|
||||||
titles.AsciiTID(titleList[ret], (char*) &id);
|
NandTitles.AsciiTID(titleList[ret], (char*) &id);
|
||||||
|
|
||||||
snprintf(text, sizeof(text), "%s : %s", id, titles.NameOf(titleList[ret]));
|
snprintf(text, sizeof(text), "%s : %s", id, NandTitles.NameOf(titleList[ret]));
|
||||||
|
|
||||||
//prompt to boot selected title
|
//prompt to boot selected title
|
||||||
if (WindowPrompt(tr( "Boot?" ), text, tr( "OK" ), tr( "Cancel" )))
|
if (WindowPrompt(tr( "Boot?" ), text, tr( "OK" ), tr( "Cancel" )))
|
||||||
|
@ -1045,8 +1045,8 @@ int MenuSettings()
|
|||||||
Settings.cios = 222;
|
Settings.cios = 222;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((Settings.cios == 222 && titles.VersionOf(0x1000000deULL) != 4)
|
if ((Settings.cios == 222 && NandTitles.VersionOf(0x1000000deULL) != 4)
|
||||||
|| (Settings.cios == 2 && titles.VersionOf(0x1000000dfULL) != 4))
|
|| (Settings.cios == 2 && NandTitles.VersionOf(0x1000000dfULL) != 4))
|
||||||
{
|
{
|
||||||
WindowPrompt(
|
WindowPrompt(
|
||||||
tr( "Hermes CIOS" ),
|
tr( "Hermes CIOS" ),
|
||||||
@ -1135,10 +1135,10 @@ int MenuSettings()
|
|||||||
snprintf(Settings.returnTo, sizeof(Settings.returnTo), "%s", tidChar);
|
snprintf(Settings.returnTo, sizeof(Settings.returnTo), "%s", tidChar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int haveTitle = titles.FindU32(Settings.returnTo);
|
int haveTitle = NandTitles.FindU32(Settings.returnTo);
|
||||||
if (haveTitle >= 0)
|
if (haveTitle >= 0)
|
||||||
{
|
{
|
||||||
name = (char*) titles.NameFromIndex(haveTitle);
|
name = (char*) NandTitles.NameFromIndex(haveTitle);
|
||||||
if (!strlen(name)) name = NULL;
|
if (!strlen(name)) name = NULL;
|
||||||
}
|
}
|
||||||
options2.SetValue(Idx, "%s", name ? name : tr( opts_off_on[ 0 ] ));
|
options2.SetValue(Idx, "%s", name ? name : tr( opts_off_on[ 0 ] ));
|
||||||
@ -2719,12 +2719,12 @@ int GameSettings(struct discHdr * header)
|
|||||||
if (ret == Idx && ++returnToLoaderGV >= settings_off_on_max) returnToLoaderGV = 0;
|
if (ret == Idx && ++returnToLoaderGV >= settings_off_on_max) returnToLoaderGV = 0;
|
||||||
|
|
||||||
char text[IMET_MAX_NAME_LEN];
|
char text[IMET_MAX_NAME_LEN];
|
||||||
int channel = titles.FindU32(Settings.returnTo);//is the channel set in the global settings actually installed?
|
int channel = NandTitles.FindU32(Settings.returnTo);//is the channel set in the global settings actually installed?
|
||||||
|
|
||||||
if (!returnToLoaderGV || channel < 0)//channel is not installed or the uer wants to not use it
|
if (!returnToLoaderGV || channel < 0)//channel is not installed or the uer wants to not use it
|
||||||
sprintf(text, "%s", tr( opts_off_on[ 0 ] ));
|
sprintf(text, "%s", tr( opts_off_on[ 0 ] ));
|
||||||
|
|
||||||
else snprintf(text, sizeof(text), "%s", titles.NameFromIndex(channel));
|
else snprintf(text, sizeof(text), "%s", NandTitles.NameFromIndex(channel));
|
||||||
|
|
||||||
options2.SetValue(Idx, "%s", text);
|
options2.SetValue(Idx, "%s", text);
|
||||||
}
|
}
|
||||||
|
@ -6,26 +6,11 @@
|
|||||||
#include "../wad/nandtitle.h"
|
#include "../wad/nandtitle.h"
|
||||||
#include "../mload/mload_modules.h"
|
#include "../mload/mload_modules.h"
|
||||||
#include "../settings/CSettings.h"
|
#include "../settings/CSettings.h"
|
||||||
|
#include "wad/nandtitle.h"
|
||||||
/******************************************************************************
|
|
||||||
* Construction/Destruction:
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
/* Initializes a new instance of the IosLoader class. */
|
|
||||||
IosLoader::IosLoader(NandTitle titles)
|
|
||||||
{
|
|
||||||
nandTitles = titles;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finalizes an instance of the IosLoader class. */
|
|
||||||
IosLoader::~IosLoader()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Public Methods:
|
* Public Methods:
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Loads CIOS (If possible the one from the settings file).
|
* Loads CIOS (If possible the one from the settings file).
|
||||||
* @return 0 if a cios has been successfully loaded. Else a value below 0 is returned.
|
* @return 0 if a cios has been successfully loaded. Else a value below 0 is returned.
|
||||||
@ -83,25 +68,25 @@ s32 IosLoader::ReloadIosSafe(s32 ios)
|
|||||||
{
|
{
|
||||||
case 222:
|
case 222:
|
||||||
{
|
{
|
||||||
s32 ios222rev = nandTitles.VersionOf(0x1000000deULL);
|
s32 ios222rev = NandTitles.VersionOf(0x1000000deULL);
|
||||||
if (ios222rev == 4 || ios222rev == 5 || ios222rev == 65535) break;
|
if (ios222rev == 4 || ios222rev == 5 || ios222rev == 65535) break;
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
case 223:
|
case 223:
|
||||||
{
|
{
|
||||||
s32 ios223rev = nandTitles.VersionOf(0x1000000dfULL);
|
s32 ios223rev = NandTitles.VersionOf(0x1000000dfULL);
|
||||||
if (ios223rev == 4 || ios223rev == 5 || ios223rev == 65535) break;
|
if (ios223rev == 4 || ios223rev == 5 || ios223rev == 65535) break;
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
case 249:
|
case 249:
|
||||||
{
|
{
|
||||||
s32 ios249rev = nandTitles.VersionOf(0x1000000f9ULL);
|
s32 ios249rev = NandTitles.VersionOf(0x1000000f9ULL);
|
||||||
if (ios249rev < 9 || ios249rev == 65280) return -2;
|
if (ios249rev < 9 || ios249rev == 65280) return -2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 250:
|
case 250:
|
||||||
{
|
{
|
||||||
s32 ios250rev = nandTitles.VersionOf(0x1000000faULL);
|
s32 ios250rev = NandTitles.VersionOf(0x1000000faULL);
|
||||||
if (ios250rev < 9 || ios250rev == 65280) return -2;
|
if (ios250rev < 9 || ios250rev == 65280) return -2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,12 @@
|
|||||||
#define _IOSLOADER_H_
|
#define _IOSLOADER_H_
|
||||||
|
|
||||||
#include <gctypes.h>
|
#include <gctypes.h>
|
||||||
#include "../wad/nandtitle.h"
|
|
||||||
|
|
||||||
class IosLoader
|
class IosLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IosLoader(NandTitle titles);
|
static s32 LoadAppCios();
|
||||||
~IosLoader();
|
static s32 ReloadIosSafe(s32 ios);
|
||||||
s32 CheckForCios();
|
|
||||||
s32 LoadAppCios();
|
|
||||||
private:
|
|
||||||
NandTitle nandTitles;
|
|
||||||
s32 ReloadIosSafe(s32 ios);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#include "nandtitle.h"
|
#include "nandtitle.h"
|
||||||
#include "gecko.h"
|
#include "gecko.h"
|
||||||
|
|
||||||
|
NandTitle NandTitles;
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
extern s32 MagicPatches(s32);
|
extern s32 MagicPatches(s32);
|
||||||
|
@ -108,5 +108,6 @@ class NandTitle
|
|||||||
u32 currentType;
|
u32 currentType;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern NandTitle titles;
|
extern NandTitle NandTitles;
|
||||||
|
|
||||||
#endif // NANDTITLE_H
|
#endif // NANDTITLE_H
|
||||||
|
@ -560,7 +560,7 @@ s32 Wad_Uninstall(FILE *fp)
|
|||||||
msg2Txt.SetText(tr( ">> Deleting tickets..." ));
|
msg2Txt.SetText(tr( ">> Deleting tickets..." ));
|
||||||
|
|
||||||
// Get ticket views
|
// Get ticket views
|
||||||
ret = titles.GetTicketViews(tid, &viewData, &viewCnt);
|
ret = NandTitles.GetTicketViews(tid, &viewData, &viewCnt);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
char errTxt[50];
|
char errTxt[50];
|
||||||
|
Loading…
Reference in New Issue
Block a user