Would it be possible to use these patches from Waninkoko's Menupatcher in Preloader? Can they be converted? Particularly the first one... or am I being a fool? (probably)
CODEvoid Sysmenu_PatchIOSReload(u8 *dol, u32 len)
{
ÂÂÂÂconst u8 oldcode[] = { 0x7F, 0x06, 0xC3, 0x78, 0x7F, 0x25, 0xCB, 0x78, 0x38, 0x7E, 0x02, 0xC0, 0x4C, 0xC6, 0x31, 0x82 };
ÂÂÂÂconst u8 newcode[] = { 0x3B, 0x20, 0x00, 0x01, 0x3B, 0x00, 0x00, 0xF9, 0x38, 0x7E, 0x02, 0xC0, 0x4C, 0xC6, 0x31, 0x82 };
ÂÂÂÂ/* Patch IOS reload */
ÂÂÂÂ__Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
}
void Sysmenu_PatchUpdateCheck(u8 *dol, u32 len)
{
ÂÂÂÂconst u8 oldcode[] = { 0x80, 0x65, 0x00, 0x50, 0x80, 0x85, 0x00, 0x54, 0xA0, 0xA5, 0x00, 0x58,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 0x48, 0x21, 0xC5, 0xB9, 0x2C, 0x03, 0x00, 0x00, 0x40, 0x82, 0x00, 0x20 };
ÂÂÂÂconst u8 newcode[] = { 0x80, 0x65, 0x00, 0x50, 0x80, 0x85, 0x00, 0x54, 0xA0, 0xA5, 0x00, 0x58,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 0x48, 0x21, 0xC5, 0xB9, 0x2C, 0x03, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 };
ÂÂÂÂ/* Patch update check */
ÂÂÂÂ__Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
}
s32 __Sysmenu_PatchRegionJap(u8 *dol, u32 len)
{
ÂÂÂÂconst u8 oldcode[] = { 0x2C, 0x1B, 0x00, 0x00 };
ÂÂÂÂconst u8 newcode[] = { 0x60, 0x00, 0x00, 0x00 };
ÂÂÂÂ/* Patch JAP region */
ÂÂÂÂreturn __Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
}
s32 __Sysmenu_PatchRegionUsa(u8 *dol, u32 len)
{
ÂÂÂÂconst u8 oldcode[] = { 0x28, 0x1B, 0x00, 0x01 };
ÂÂÂÂconst u8 newcode[] = { 0x60, 0x00, 0x00, 0x00 };
ÂÂÂÂ/* Patch USA region */
ÂÂÂÂreturn __Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
}
s32 __Sysmenu_PatchRegionPal(u8 *dol, u32 len)
{
ÂÂÂÂconst u8 oldcode[] = { 0x28, 0x1B, 0x00, 0x02 };
ÂÂÂÂconst u8 newcode[] = { 0x60, 0x00, 0x00, 0x00 };
ÂÂÂÂ/* Patch PAL region */
ÂÂÂÂreturn __Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
}
void Sysmenu_PatchRegionFree(u8 *dol, u32 len)
{
ÂÂÂÂconst u8 code[] = { 0x7C, 0x60, 0x07, 0x74, 0x2C, 0x00, 0x00, 0x01, 0x41, 0x82,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ0x00, 0x30, 0x40, 0x80, 0x00, 0x10, 0x2C, 0x00, 0x00, 0x00 };
ÂÂÂÂs32 cnt;
ÂÂÂÂ/* Find code */
ÂÂÂÂfor (cnt = 0; cnt < len; cnt += 4) {
ÂÂÂÂÂÂÂÂu8 *ptr = dol + cnt;
ÂÂÂÂÂÂÂÂ/* Code found */
ÂÂÂÂÂÂÂÂif (!memcmp(code, ptr, sizeof(code))) {
ÂÂÂÂÂÂÂÂÂÂÂÂu32 size = len - cnt;
ÂÂÂÂÂÂÂÂÂÂÂÂs32 ret;
ÂÂÂÂÂÂÂÂÂÂÂÂ/* Patch regions */
ÂÂÂÂÂÂÂÂÂÂÂÂret = __Sysmenu_PatchRegionJap(ptr, size);
ÂÂÂÂÂÂÂÂÂÂÂÂif (ret < 0)
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂret = __Sysmenu_PatchRegionUsa(ptr, size);
ÂÂÂÂÂÂÂÂÂÂÂÂif (ret < 0)
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂret = __Sysmenu_PatchRegionPal(ptr, size);
ÂÂÂÂÂÂÂÂ}
ÂÂÂÂ}
}
void Sysmenu_PatchNocopySaves(u8 *dol, u32 len)
{
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂconst u8 oldcode[] = { 0x54, 0x00, 0x07, 0xFF, 0x41, 0x82, 0x00, 0x1C, 0x80, 0x63, 0x00, 0x68 };
ÂÂÂÂÂÂÂÂconst u8 newcode[] = { 0x7C, 0x00, 0x00, 0x00, 0x41, 0x82, 0x00, 0x1C, 0x80, 0x63, 0x00, 0x68 };
ÂÂÂÂÂÂÂÂ/* Patch "nocopy" savegame check (1) */
ÂÂÂÂÂÂÂÂ__Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
ÂÂÂÂ}
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂconst u8 oldcode[] = { 0x54, 0x00, 0x07, 0xFF, 0x41, 0x82, 0x00, 0x24, 0x38, 0x7E, 0x12, 0xE2 };
ÂÂÂÂÂÂÂÂconst u8 newcode[] = { 0x7C, 0x00, 0x00, 0x00, 0x41, 0x82, 0x00, 0x24, 0x38, 0x7E, 0x12, 0xE2 };
ÂÂÂÂÂÂÂÂ/* Patch "nocopy" savegame check (2) */
ÂÂÂÂÂÂÂÂ__Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
ÂÂÂÂ}
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂconst u8 oldcode[] = { 0x48, 0x00, 0x00, 0x58, 0x38, 0x61, 0x01, 0x00, 0x38, 0x8D, 0x9F, 0x68, 0x48, 0x03, 0xC9, 0x25 };
ÂÂÂÂÂÂÂÂconst u8 newcode[] = { 0x48, 0x00, 0x00, 0x58, 0x38, 0x61, 0x01, 0x00, 0x38, 0x8D, 0x9F, 0x68, 0x38, 0x60, 0x00, 0x01 };
ÂÂÂÂÂÂÂÂ/* Patch "nocopy" savegame check (3) */
ÂÂÂÂÂÂÂÂ__Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
ÂÂÂÂ}
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂconst u8 oldcode[] = { 0x80, 0x01, 0x00, 0x08, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0C, 0x3B, 0xE0, 0x00, 0x01 };
ÂÂÂÂÂÂÂÂconst u8 newcode[] = { 0x80, 0x01, 0x00, 0x08, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x82, 0x00, 0x0C, 0x3B, 0xE0, 0x00, 0x00 };
ÂÂÂÂÂÂÂÂ/* Patch "nocopy" savegame check (4) */
ÂÂÂÂÂÂÂÂ__Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
ÂÂÂÂ}
ÂÂÂÂ{
ÂÂÂÂÂÂÂÂconst u8 oldcode[] = { 0x41, 0x82, 0x00, 0x24, 0x38, 0x7E, 0x12, 0xE2, 0x4C, 0xC6, 0x31, 0x82, 0x48, 0x1B, 0xB4, 0xC9 };
ÂÂÂÂÂÂÂÂconst u8 newcode[] = { 0x80, 0x1D, 0x00, 0x24, 0x54, 0x00, 0x00, 0x3C, 0x90, 0x1D, 0x00, 0x24, 0x48, 0x00, 0x00, 0x18 };
ÂÂÂÂÂÂÂÂ/* Patch "nocopy" savegame check (5) */
ÂÂÂÂÂÂÂÂ__Sysmenu_PatchApply(dol, len, oldcode, newcode, sizeof(oldcode));
ÂÂÂÂ}
}