mirror of
https://github.com/modmii/YAWM-ModMii-Edition.git
synced 2024-11-13 03:45:11 +01:00
Add Konami code to skip certain wad safety checks, so region changing is possible
This commit is contained in:
parent
ac7ce067d6
commit
5a4bbc9800
@ -322,6 +322,12 @@ void Menu_FatDevice(void)
|
||||
//Fat_Unmount(fdev);
|
||||
//if (((fdevList[selected].mount[0] == 's') && (ndev->name[0] == 'S')))
|
||||
//selected++;
|
||||
static const u16 konamiCode[] = {
|
||||
WPAD_BUTTON_UP, WPAD_BUTTON_UP, WPAD_BUTTON_DOWN, WPAD_BUTTON_DOWN, WPAD_BUTTON_LEFT,
|
||||
WPAD_BUTTON_RIGHT, WPAD_BUTTON_LEFT, WPAD_BUTTON_RIGHT, WPAD_BUTTON_B, WPAD_BUTTON_A
|
||||
};
|
||||
|
||||
int codePosition = 0;
|
||||
|
||||
/* Select source device */
|
||||
if (gConfig.fatDeviceIndex < 0)
|
||||
@ -342,6 +348,13 @@ void Menu_FatDevice(void)
|
||||
|
||||
u32 buttons = WaitButtons();
|
||||
|
||||
if (buttons & (WPAD_BUTTON_UP | WPAD_BUTTON_DOWN | WPAD_BUTTON_RIGHT | WPAD_BUTTON_LEFT | WPAD_BUTTON_A | WPAD_BUTTON_B)) {
|
||||
if (buttons & konamiCode[codePosition])
|
||||
++codePosition;
|
||||
else
|
||||
codePosition = 0;
|
||||
}
|
||||
|
||||
/* LEFT/RIGHT buttons */
|
||||
if (buttons & WPAD_BUTTON_LEFT) {
|
||||
if ((--selected) <= -1)
|
||||
@ -367,8 +380,15 @@ void Menu_FatDevice(void)
|
||||
Restart();
|
||||
|
||||
/* A button */
|
||||
if (buttons & WPAD_BUTTON_A)
|
||||
if (buttons & WPAD_BUTTON_A) {
|
||||
if (codePosition == sizeof(konamiCode) / sizeof(konamiCode[0])) {
|
||||
extern bool skipRegionSafetyCheck;
|
||||
skipRegionSafetyCheck = true;
|
||||
printf("[+] Disabled SM region checks\n");
|
||||
sleep(2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
12
source/wad.c
12
source/wad.c
@ -257,6 +257,11 @@ void __Wad_FixTicket(signed_blob *p_tik)
|
||||
Title_FakesignTik(p_tik);
|
||||
}
|
||||
|
||||
// Some of the safety checks can block region changing
|
||||
// Entering the Konami code turns this true, so it will
|
||||
// skip the problematic checks for region changing.
|
||||
bool skipRegionSafetyCheck = false;
|
||||
|
||||
s32 Wad_Install(FILE *fp)
|
||||
{
|
||||
wadHeader *header = NULL;
|
||||
@ -287,7 +292,7 @@ s32 Wad_Install(FILE *fp)
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* WAD certificates */
|
||||
/* WAD certificates */
|
||||
ret = __Wad_ReadAlloc(fp, (void *)&p_certs, offset, header->certs_len);
|
||||
if (ret >= 0)
|
||||
offset += round_up(header->certs_len, 64);
|
||||
@ -379,6 +384,8 @@ s32 Wad_Install(FILE *fp)
|
||||
|
||||
if (tid == TITLE_ID(1, 2))
|
||||
{
|
||||
if (skipRegionSafetyCheck) goto skipChecks;
|
||||
|
||||
if(get_sm_region_basic() == 0)
|
||||
{
|
||||
printf("\n Can't get the SM region\n Please check the site for updates\n");
|
||||
@ -400,12 +407,13 @@ s32 Wad_Install(FILE *fp)
|
||||
ret = -999;
|
||||
goto err;
|
||||
}
|
||||
if( get_sm_region_basic() != regionlist[i].region)
|
||||
if(get_sm_region_basic() != regionlist[i].region)
|
||||
{
|
||||
printf("\n I won't install the wrong regions SM\n");
|
||||
ret = -999;
|
||||
goto err;
|
||||
}
|
||||
skipChecks:
|
||||
if(tmd_data->title_version < 416)
|
||||
{
|
||||
if(boot2version == 4)
|
||||
|
Loading…
Reference in New Issue
Block a user