Revert "Move the UNITINFO patch to the developer version"
This reverts commit f9a1f1a79b
.
This commit is contained in:
parent
f9a1f1a79b
commit
efd08ff731
@ -393,7 +393,7 @@ void patchCode(u64 progId, u8 *code, u32 size)
|
|||||||
case 0x0004001000027000LL: // KOR MSET
|
case 0x0004001000027000LL: // KOR MSET
|
||||||
case 0x0004001000028000LL: // TWN MSET
|
case 0x0004001000028000LL: // TWN MSET
|
||||||
{
|
{
|
||||||
if(CONFIG(5))
|
if(CONFIG(6))
|
||||||
{
|
{
|
||||||
static const u16 verPattern[] = u"Ver.";
|
static const u16 verPattern[] = u"Ver.";
|
||||||
const u32 currentNand = BOOTCONFIG(0, 3);
|
const u32 currentNand = BOOTCONFIG(0, 3);
|
||||||
|
@ -24,6 +24,7 @@ void configureCFW(const char *configPath)
|
|||||||
"( ) Force A9LH detection",
|
"( ) Force A9LH detection",
|
||||||
"( ) Use second EmuNAND as default",
|
"( ) Use second EmuNAND as default",
|
||||||
"( ) Enable region/language emulation",
|
"( ) Enable region/language emulation",
|
||||||
|
"( ) Use developer UNITINFO",
|
||||||
"( ) Show current NAND in System Settings",
|
"( ) Show current NAND in System Settings",
|
||||||
"( ) Show GBA boot screen in patched AGB_FIRM",
|
"( ) Show GBA boot screen in patched AGB_FIRM",
|
||||||
"( ) Enable splash screen with no screen-init" };
|
"( ) Enable splash screen with no screen-init" };
|
||||||
|
@ -136,7 +136,7 @@ void main(void)
|
|||||||
configureCFW(configPath);
|
configureCFW(configPath);
|
||||||
|
|
||||||
//If screens are inited or the corresponding option is set, load splash screen
|
//If screens are inited or the corresponding option is set, load splash screen
|
||||||
if(PDN_GPU_CNT != 1 || CONFIG(7)) loadSplash();
|
if(PDN_GPU_CNT != 1 || CONFIG(8)) loadSplash();
|
||||||
|
|
||||||
u32 autoBootSys = CONFIG(0);
|
u32 autoBootSys = CONFIG(0);
|
||||||
|
|
||||||
@ -255,6 +255,13 @@ static inline void patchNativeFirm(u32 nandType, u32 emuHeader, u32 a9lhInstalle
|
|||||||
*(u16 *)sigOffset2 = sigPatch[0];
|
*(u16 *)sigOffset2 = sigPatch[0];
|
||||||
*((u16 *)sigOffset2 + 1) = sigPatch[1];
|
*((u16 *)sigOffset2 + 1) = sigPatch[1];
|
||||||
|
|
||||||
|
if(CONFIG(5))
|
||||||
|
{
|
||||||
|
//Apply UNITINFO patch
|
||||||
|
u8 *unitInfoOffset = getUnitInfoValueSet(arm9Section, section[2].size);
|
||||||
|
*unitInfoOffset = unitInfoPatch;
|
||||||
|
}
|
||||||
|
|
||||||
//Replace the FIRM loader with the injector
|
//Replace the FIRM loader with the injector
|
||||||
injectLoader();
|
injectLoader();
|
||||||
}
|
}
|
||||||
@ -359,7 +366,7 @@ static inline void patchTwlAgbFirm(u32 firmType)
|
|||||||
/* Calculate the amount of patches to apply. Only count the boot screen patch for AGB_FIRM
|
/* Calculate the amount of patches to apply. Only count the boot screen patch for AGB_FIRM
|
||||||
if the matching option was enabled (keep it as last) */
|
if the matching option was enabled (keep it as last) */
|
||||||
u32 numPatches = firmType == 1 ? (sizeof(twlPatches) / sizeof(patchData)) :
|
u32 numPatches = firmType == 1 ? (sizeof(twlPatches) / sizeof(patchData)) :
|
||||||
(sizeof(agbPatches) / sizeof(patchData) - !CONFIG(6));
|
(sizeof(agbPatches) / sizeof(patchData) - !CONFIG(7));
|
||||||
const patchData *patches = firmType == 1 ? twlPatches : agbPatches;
|
const patchData *patches = firmType == 1 ? twlPatches : agbPatches;
|
||||||
|
|
||||||
//Patch
|
//Patch
|
||||||
|
@ -15,6 +15,8 @@ const u16 nandRedir[2] = {0x4C00, 0x47A0},
|
|||||||
sigPatch[2] = {0x2000, 0x4770},
|
sigPatch[2] = {0x2000, 0x4770},
|
||||||
writeBlock[2] = {0x2000, 0x46C0};
|
writeBlock[2] = {0x2000, 0x46C0};
|
||||||
|
|
||||||
|
const u8 unitInfoPatch = 0xE3;
|
||||||
|
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* Functions
|
* Functions
|
||||||
**************************************************/
|
**************************************************/
|
||||||
@ -63,6 +65,14 @@ u16 *getFirmWrite(u8 *pos, u32 size)
|
|||||||
return (u16 *)memsearch(off - 0x100, pattern, 0x100, 4);
|
return (u16 *)memsearch(off - 0x100, pattern, 0x100, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 *getUnitInfoValueSet(u8 *pos, u32 size)
|
||||||
|
{
|
||||||
|
//Look for UNITINFO value being set
|
||||||
|
const u8 pattern[] = {0x01, 0x10, 0xA0, 0x13};
|
||||||
|
|
||||||
|
return memsearch(pos, pattern, size, 4) + 3;
|
||||||
|
}
|
||||||
|
|
||||||
void *getLoader(u8 *pos, u32 size, u32 *loaderSize)
|
void *getLoader(u8 *pos, u32 size, u32 *loaderSize)
|
||||||
{
|
{
|
||||||
u8 *const off = memsearch(pos, "loade", size, 5);
|
u8 *const off = memsearch(pos, "loade", size, 5);
|
||||||
|
@ -13,6 +13,7 @@ const u32 mpuPatch[3];
|
|||||||
const u16 nandRedir[2],
|
const u16 nandRedir[2],
|
||||||
sigPatch[2],
|
sigPatch[2],
|
||||||
writeBlock[2];
|
writeBlock[2];
|
||||||
|
const u8 unitInfoPatch;
|
||||||
|
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* Functions
|
* Functions
|
||||||
@ -22,4 +23,5 @@ void getSigChecks(u8 *pos, u32 size, u32 *off, u32 *off2);
|
|||||||
void *getReboot(u8 *pos, u32 size);
|
void *getReboot(u8 *pos, u32 size);
|
||||||
u32 getfOpen(u8 *proc9Offset, void *rebootOffset);
|
u32 getfOpen(u8 *proc9Offset, void *rebootOffset);
|
||||||
u16 *getFirmWrite(u8 *pos, u32 size);
|
u16 *getFirmWrite(u8 *pos, u32 size);
|
||||||
|
u8 *getUnitInfoValueSet(u8 *pos, u32 size);
|
||||||
void *getLoader(u8 *pos, u32 size, u32 *loaderSize);
|
void *getLoader(u8 *pos, u32 size, u32 *loaderSize);
|
Reference in New Issue
Block a user