mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-25 20:56:53 +01:00
* Prevent downloading file if HTTP response code > 400
Nintendont : * Removed 32k/cluster limitation. * Fixed video mode setting "Auto". * Fixed loading cheats from the second device.
This commit is contained in:
parent
18edba07a0
commit
6d9f213091
@ -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>3.0 r1219</version>
|
<version>3.0 r1221</version>
|
||||||
<release_date>20140425130603</release_date>
|
<release_date>20140429130640</release_date>
|
||||||
<!-- // remove this line to enable arguments
|
<!-- // remove this line to enable arguments
|
||||||
<arguments>
|
<arguments>
|
||||||
<arg>--ios=250</arg>
|
<arg>--ios=250</arg>
|
||||||
|
@ -62,9 +62,10 @@ enum ninvideomode
|
|||||||
NIN_VID_FORCE_PAL60 = (1<<1),
|
NIN_VID_FORCE_PAL60 = (1<<1),
|
||||||
NIN_VID_FORCE_NTSC = (1<<2),
|
NIN_VID_FORCE_NTSC = (1<<2),
|
||||||
NIN_VID_FORCE_MPAL = (1<<3),
|
NIN_VID_FORCE_MPAL = (1<<3),
|
||||||
NIN_VID_PROG = (1<<4),
|
|
||||||
|
|
||||||
NIN_VID_FORCE_MASK = NIN_VID_FORCE_PAL50|NIN_VID_FORCE_PAL60|NIN_VID_FORCE_NTSC|NIN_VID_FORCE_MPAL,
|
NIN_VID_FORCE_MASK = NIN_VID_FORCE_PAL50|NIN_VID_FORCE_PAL60|NIN_VID_FORCE_NTSC|NIN_VID_FORCE_MPAL,
|
||||||
|
|
||||||
|
NIN_VID_PROG = (1<<4),
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ninlanguage
|
enum ninlanguage
|
||||||
|
@ -106,6 +106,7 @@ static int RunAppbooter()
|
|||||||
s32 ret = IosLoader::ReloadIosSafe(58);
|
s32 ret = IosLoader::ReloadIosSafe(58);
|
||||||
if(ret < 0 && Settings.EntryIOS != IOS_GetVersion())
|
if(ret < 0 && Settings.EntryIOS != IOS_GetVersion())
|
||||||
IosLoader::ReloadIosKeepingRights(Settings.EntryIOS);
|
IosLoader::ReloadIosKeepingRights(Settings.EntryIOS);
|
||||||
|
gprintf("Reloaded to IOS%d\n", IOS_GetVersion());
|
||||||
|
|
||||||
struct __argv args;
|
struct __argv args;
|
||||||
SetupARGV(&args);
|
SetupARGV(&args);
|
||||||
@ -140,6 +141,8 @@ static int RunAppbooter()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gprintf("Exiting USBLoaderGX...\n\n");
|
||||||
|
|
||||||
SYS_ResetSystem(SYS_SHUTDOWN, 0, 0);
|
SYS_ResetSystem(SYS_SHUTDOWN, 0, 0);
|
||||||
_CPU_ISR_Disable( cpu_isr );
|
_CPU_ISR_Disable( cpu_isr );
|
||||||
__exception_closeall();
|
__exception_closeall();
|
||||||
|
@ -200,9 +200,6 @@ struct block downloadfile(const char *url)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//check if a cookie is set for this host and load it.
|
|
||||||
//strcpy(cookie, "Cookie: __cfduid=d8e517c1a10af75d01699adaa9c3d9ffd1398187687536\r\n");
|
|
||||||
|
|
||||||
//Form a nice request header to send to the webserver
|
//Form a nice request header to send to the webserver
|
||||||
char* headerformat = "GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s\r\n%sUser-Agent: USBLoaderGX r%s\r\n\r\n";
|
char* headerformat = "GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s\r\n%sUser-Agent: USBLoaderGX r%s\r\n\r\n";
|
||||||
char header[strlen(headerformat) + strlen(path) + strlen(domain)*2 + 100];
|
char header[strlen(headerformat) + strlen(path) + strlen(domain)*2 + 100];
|
||||||
@ -268,8 +265,8 @@ struct block downloadfile(const char *url)
|
|||||||
if (code >=400) // Not found
|
if (code >=400) // Not found
|
||||||
{
|
{
|
||||||
//gprintf("HTTP ERROR: %s\n", htstat);
|
//gprintf("HTTP ERROR: %s\n", htstat);
|
||||||
//free(response.data);
|
free(response.data);
|
||||||
//return emptyblock;
|
return emptyblock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1008,13 +1008,6 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
WindowPrompt(tr("Error:"), fmt(tr("To run GameCube games with %s you need to set your 'Main GameCube Path' on a primary partition."),LoaderName), tr("OK"));
|
WindowPrompt(tr("Error:"), fmt(tr("To run GameCube games with %s you need to set your 'Main GameCube Path' on a primary partition."),LoaderName), tr("OK"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check cluster size
|
|
||||||
if(usbHandle->GetPartitionClusterSize(usbHandle->GetLBAStart(portPart)) > 32768)
|
|
||||||
{
|
|
||||||
WindowPrompt(tr("Error:"), fmt(tr("To run GameCube games with %s you need to use a partition with 32k bytes/cluster or less."),LoaderName), tr("OK"));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1253,7 +1246,7 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
snprintf(nin_config->CheatPath, sizeof(nin_config->CheatPath), "NINTemp.gct");
|
snprintf(nin_config->CheatPath, sizeof(nin_config->CheatPath), "/NINTemp.gct");
|
||||||
}
|
}
|
||||||
|
|
||||||
nin_config->Config |= NIN_CFG_CHEATS | NIN_CFG_CHEAT_PATH;
|
nin_config->Config |= NIN_CFG_CHEATS | NIN_CFG_CHEAT_PATH;
|
||||||
@ -1269,7 +1262,10 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
if(ninWidescreenChoice)
|
if(ninWidescreenChoice)
|
||||||
nin_config->Config |= NIN_CFG_FORCE_WIDE;
|
nin_config->Config |= NIN_CFG_FORCE_WIDE;
|
||||||
if(ninProgressivePatch)
|
if(ninProgressivePatch)
|
||||||
|
{
|
||||||
nin_config->Config |= NIN_CFG_FORCE_PROG;
|
nin_config->Config |= NIN_CFG_FORCE_PROG;
|
||||||
|
nin_config->VideoMode |= NIN_VID_PROG;
|
||||||
|
}
|
||||||
if(ninAutobootChoice)
|
if(ninAutobootChoice)
|
||||||
nin_config->Config |= NIN_CFG_AUTO_BOOT;
|
nin_config->Config |= NIN_CFG_AUTO_BOOT;
|
||||||
if(ninUSBHIDChoice)
|
if(ninUSBHIDChoice)
|
||||||
@ -1280,15 +1276,16 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
nin_config->Config |= NIN_CFG_USB; // r40+
|
nin_config->Config |= NIN_CFG_USB; // r40+
|
||||||
|
|
||||||
|
|
||||||
gprintf("NIN: config 0x%08x\n", nin_config->Config);
|
|
||||||
|
|
||||||
|
|
||||||
// Max Pads - Make a proper setting later
|
// Max Pads - Make a proper setting later
|
||||||
nin_config->MaxPads = 4; // NIN_CFG_VERSION 2 r42
|
nin_config->MaxPads = 4; // NIN_CFG_VERSION 2 r42
|
||||||
|
|
||||||
// GameID for MCEmu
|
// GameID for MCEmu
|
||||||
memcpy(&nin_config->GameID, gameHdr->id, 4); // NIN_CFG_VERSION 2 r83
|
memcpy(&nin_config->GameID, gameHdr->id, 4); // NIN_CFG_VERSION 2 r83
|
||||||
|
|
||||||
|
// GameID for Video mode DiscDefault
|
||||||
|
memcpy((u8 *)Disc_ID, gameHdr->id, 6);
|
||||||
|
DCFlushRange((u8 *)Disc_ID, 6);
|
||||||
|
|
||||||
// Setup Video Mode
|
// Setup Video Mode
|
||||||
if(ninVideoChoice == DML_VIDEO_NONE) // No video mode
|
if(ninVideoChoice == DML_VIDEO_NONE) // No video mode
|
||||||
{
|
{
|
||||||
@ -1298,8 +1295,8 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
{
|
{
|
||||||
if(ninVideoChoice == DML_VIDEO_AUTO) // Auto select video mode
|
if(ninVideoChoice == DML_VIDEO_AUTO) // Auto select video mode
|
||||||
{
|
{
|
||||||
nin_config->VideoMode = NIN_VID_AUTO;
|
Disc_SelectVMode(VIDEO_MODE_DISCDEFAULT, false, NULL, &nin_config->VideoMode);
|
||||||
Disc_SelectVMode(VIDEO_MODE_DISCDEFAULT, false, NULL, NULL);
|
nin_config->VideoMode |= NIN_VID_AUTO;
|
||||||
}
|
}
|
||||||
else // Force user choice
|
else // Force user choice
|
||||||
{
|
{
|
||||||
@ -1307,15 +1304,16 @@ int GameBooter::BootNintendont(struct discHdr *gameHdr)
|
|||||||
if(!(nin_config->VideoMode & NIN_VID_AUTO))
|
if(!(nin_config->VideoMode & NIN_VID_AUTO))
|
||||||
nin_config->VideoMode |= NIN_VID_FORCE;
|
nin_config->VideoMode |= NIN_VID_FORCE;
|
||||||
|
|
||||||
if(nin_config->VideoMode & NIN_CFG_FORCE_PROG)
|
if(nin_config->VideoMode & NIN_VID_PROG)
|
||||||
{
|
|
||||||
nin_config->VideoMode &= ~NIN_CFG_FORCE_PROG; // clear Force_PROG bit in VideoMode
|
|
||||||
nin_config->Config |= NIN_CFG_FORCE_PROG; // Set Force_PROG bit in Config
|
nin_config->Config |= NIN_CFG_FORCE_PROG; // Set Force_PROG bit in Config
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Disc_SetVMode();
|
Disc_SetVMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gprintf("NIN: config 0x%08x\n", nin_config->Config);
|
||||||
|
|
||||||
|
gprintf("NIN: Video mode 0x%08x\n", nin_config->VideoMode);
|
||||||
|
|
||||||
// Set game language setting
|
// Set game language setting
|
||||||
if(languageChoice >= GC_ENGLISH && languageChoice <= GC_DUTCH)
|
if(languageChoice >= GC_ENGLISH && languageChoice <= GC_DUTCH)
|
||||||
{
|
{
|
||||||
|
@ -90,18 +90,20 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode, u32
|
|||||||
rmode_reg = PAL60 ? VI_EURGB60 : VI_PAL;
|
rmode_reg = PAL60 ? VI_EURGB60 : VI_PAL;
|
||||||
rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf);
|
rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf);
|
||||||
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50);
|
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50);
|
||||||
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_CFG_FORCE_PROG : (PAL60 ? NIN_VID_FORCE_PAL60 : NIN_VID_FORCE_PAL50);
|
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_VID_FORCE_PAL60 | NIN_VID_PROG : (PAL60 ? NIN_VID_FORCE_PAL60 : NIN_VID_FORCE_PAL50);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONF_VIDEO_MPAL:
|
case CONF_VIDEO_MPAL:
|
||||||
rmode_reg = VI_MPAL;
|
rmode_reg = VI_MPAL;
|
||||||
|
rmode = progressive ? &TVEurgb60Hz480Prog : &TVMpal480IntDf;
|
||||||
|
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_VID_FORCE_MPAL | NIN_VID_PROG : NIN_VID_FORCE_MPAL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONF_VIDEO_NTSC:
|
case CONF_VIDEO_NTSC:
|
||||||
rmode_reg = VI_NTSC;
|
rmode_reg = VI_NTSC;
|
||||||
rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
||||||
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_NTSC;
|
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_NTSC;
|
||||||
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_CFG_FORCE_PROG : NIN_VID_FORCE_NTSC;
|
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_VID_FORCE_NTSC | NIN_VID_PROG : NIN_VID_FORCE_NTSC;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +123,7 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode, u32
|
|||||||
rmode_reg = PAL60 ? VI_EURGB60 : VI_PAL;
|
rmode_reg = PAL60 ? VI_EURGB60 : VI_PAL;
|
||||||
rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf);
|
rmode = progressive ? &TVEurgb60Hz480Prog : (PAL60 ? &TVEurgb60Hz480IntDf : &TVPal528IntDf);
|
||||||
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50);
|
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : (PAL60 ? DML_VID_FORCE_PAL60 : DML_VID_FORCE_PAL50);
|
||||||
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_CFG_FORCE_PROG : (PAL60 ? NIN_VID_FORCE_PAL60 : NIN_VID_FORCE_PAL50);
|
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_VID_FORCE_PAL60 | NIN_VID_PROG : (PAL60 ? NIN_VID_FORCE_PAL60 : NIN_VID_FORCE_PAL50);
|
||||||
break;
|
break;
|
||||||
// NTSC
|
// NTSC
|
||||||
case 'E':
|
case 'E':
|
||||||
@ -129,7 +131,7 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode, u32
|
|||||||
rmode_reg = VI_NTSC;
|
rmode_reg = VI_NTSC;
|
||||||
rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
rmode = progressive ? &TVNtsc480Prog : &TVNtsc480IntDf;
|
||||||
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_NTSC;
|
if(dml_VideoMode) *dml_VideoMode = progressive ? DML_VID_FORCE_PROG : DML_VID_FORCE_NTSC;
|
||||||
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_CFG_FORCE_PROG : NIN_VID_FORCE_NTSC;
|
if(nin_VideoMode) *nin_VideoMode = progressive ? NIN_VID_FORCE_NTSC | NIN_VID_PROG : NIN_VID_FORCE_NTSC;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if(dml_VideoMode) *dml_VideoMode = DML_VID_DML_AUTO;
|
if(dml_VideoMode) *dml_VideoMode = DML_VID_DML_AUTO;
|
||||||
@ -159,13 +161,13 @@ void Disc_SelectVMode(u8 videoselected, bool devolution, u32 *dml_VideoMode, u32
|
|||||||
rmode = &TVEurgb60Hz480Prog;
|
rmode = &TVEurgb60Hz480Prog;
|
||||||
rmode_reg = VI_EURGB60;
|
rmode_reg = VI_EURGB60;
|
||||||
if(dml_VideoMode) *dml_VideoMode = DML_VID_FORCE_PROG | DML_VID_PROG_PATCH;
|
if(dml_VideoMode) *dml_VideoMode = DML_VID_FORCE_PROG | DML_VID_PROG_PATCH;
|
||||||
if(nin_VideoMode) *nin_VideoMode = NIN_CFG_FORCE_PROG | NIN_VID_FORCE_PAL60;
|
if(nin_VideoMode) *nin_VideoMode = NIN_VID_FORCE_PAL60 | NIN_VID_PROG;
|
||||||
break;
|
break;
|
||||||
case VIDEO_MODE_NTSC480P:
|
case VIDEO_MODE_NTSC480P:
|
||||||
rmode = &TVNtsc480Prog;
|
rmode = &TVNtsc480Prog;
|
||||||
rmode_reg = VI_NTSC;
|
rmode_reg = VI_NTSC;
|
||||||
if(dml_VideoMode) *dml_VideoMode = DML_VID_FORCE_PROG | DML_VID_PROG_PATCH;
|
if(dml_VideoMode) *dml_VideoMode = DML_VID_FORCE_PROG | DML_VID_PROG_PATCH;
|
||||||
if(nin_VideoMode) *nin_VideoMode = NIN_CFG_FORCE_PROG | NIN_VID_FORCE_NTSC;
|
if(nin_VideoMode) *nin_VideoMode = NIN_VID_FORCE_NTSC | NIN_VID_PROG;
|
||||||
break;
|
break;
|
||||||
case VIDEO_MODE_SYSDEFAULT: // AUTO PATCH TO SYSTEM
|
case VIDEO_MODE_SYSDEFAULT: // AUTO PATCH TO SYSTEM
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user