Add DS cart whitelist patch for home menu (both versions of the func should be supported)
This commit is contained in:
parent
5379c05001
commit
9e47369365
@ -629,29 +629,82 @@ void patchCode(u64 progId, u16 progVer, u8 *code, u32 size, u32 textSize, u32 ro
|
|||||||
{
|
{
|
||||||
loadCFWInfo();
|
loadCFWInfo();
|
||||||
|
|
||||||
if(((progId == 0x0004003000008F02LL || //USA Home Menu
|
if(progId == 0x0004003000008F02LL || //USA Home Menu
|
||||||
progId == 0x0004003000008202LL || //JPN Home Menu
|
progId == 0x0004003000008202LL || //JPN Home Menu
|
||||||
progId == 0x0004003000009802LL) //EUR Home Menu
|
progId == 0x0004003000009802LL || //EUR Home Menu
|
||||||
&& progVer > 4) ||
|
progId == 0x000400300000A902LL || //KOR Home Menu
|
||||||
(progId == 0x000400300000A902LL //KOR Home Menu
|
progId == 0x000400300000A102LL || //CHN Home Menu
|
||||||
&& progVer > 0) ||
|
progId == 0x000400300000B102LL) //TWN Home Menu
|
||||||
progId == 0x000400300000A102LL || //CHN Home Menu
|
|
||||||
progId == 0x000400300000B102LL) //TWN Home Menu
|
|
||||||
{
|
{
|
||||||
static const u8 pattern[] = {
|
bool applyRegionFreePatch = true,
|
||||||
0x0A, 0x0C, 0x00, 0x10
|
applyNewDsWhitelistPatch = false;
|
||||||
},
|
|
||||||
patch[] = {
|
|
||||||
0x01, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1
|
|
||||||
};
|
|
||||||
|
|
||||||
//Patch SMDH region checks
|
switch(progId)
|
||||||
if(!patchMemory(code, textSize,
|
{
|
||||||
pattern,
|
case 0x0004003000008F02LL: //USA Home Menu
|
||||||
sizeof(pattern), -31,
|
case 0x0004003000008202LL: //JPN Home Menu
|
||||||
patch,
|
case 0x0004003000009802LL: //EUR Home Menu
|
||||||
sizeof(patch), 1
|
if(progVer <= 4) applyRegionFreePatch = false;
|
||||||
)) goto error;
|
if(progVer >= 0xB) applyNewDsWhitelistPatch = true;
|
||||||
|
break;
|
||||||
|
case 0x000400300000A902LL: //KOR Home Menu
|
||||||
|
if(!progVer) applyRegionFreePatch = false;
|
||||||
|
if(progVer >= 6) applyNewDsWhitelistPatch = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(applyRegionFreePatch)
|
||||||
|
{
|
||||||
|
static const u8 pattern[] = {
|
||||||
|
0x0A, 0x0C, 0x00, 0x10
|
||||||
|
},
|
||||||
|
patch[] = {
|
||||||
|
0x01, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1
|
||||||
|
};
|
||||||
|
|
||||||
|
//Patch SMDH region checks
|
||||||
|
if(!patchMemory(code, textSize,
|
||||||
|
pattern,
|
||||||
|
sizeof(pattern), -31,
|
||||||
|
patch,
|
||||||
|
sizeof(patch), 1
|
||||||
|
)) goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(applyNewDsWhitelistPatch)
|
||||||
|
{
|
||||||
|
static const u8 pattern[] = {
|
||||||
|
0xE9, 0x12, 0x20, 0xA0
|
||||||
|
},
|
||||||
|
patch[] = {
|
||||||
|
0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1
|
||||||
|
};
|
||||||
|
|
||||||
|
//Patch DS title whitelist check
|
||||||
|
if(!patchMemory(code, textSize,
|
||||||
|
pattern,
|
||||||
|
sizeof(pattern), -3,
|
||||||
|
patch,
|
||||||
|
sizeof(patch), 1
|
||||||
|
)) goto error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static const u8 pattern[] = {
|
||||||
|
0x4D, 0xE2, 0x12, 0x20
|
||||||
|
},
|
||||||
|
patch[] = {
|
||||||
|
0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xFF, 0x2F, 0xE1
|
||||||
|
};
|
||||||
|
|
||||||
|
//Patch DS title whitelist check
|
||||||
|
if(!patchMemory(code, textSize,
|
||||||
|
pattern,
|
||||||
|
sizeof(pattern), -6,
|
||||||
|
patch,
|
||||||
|
sizeof(patch), 1
|
||||||
|
)) goto error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(progId == 0x0004013000003202LL) //FRIENDS
|
else if(progId == 0x0004013000003202LL) //FRIENDS
|
||||||
|
Reference in New Issue
Block a user