diff --git a/retail/arm9/include/dsiwaresSetForBootloader.h b/retail/arm9/include/dsiwaresSetForBootloader.h index 1b0b1b83e..7629f8e76 100644 --- a/retail/arm9/include/dsiwaresSetForBootloader.h +++ b/retail/arm9/include/dsiwaresSetForBootloader.h @@ -114,7 +114,7 @@ static const char dsiWareForBootloader1[][4] = { "KC5", // Castle Conqueror: Heroes "KXC", // Castle Conqueror: Heroes 2 "KQN", // Castle Conqueror: Revolution - "KVX", // Cat Frenzy (bootloaderi-exclusive) + "KVX", // Cat Frenzy "KCV", // Cave Story "KCT", // Chess Challenge! "KBG", // Chotto DS Bun ga Kuzenshuu: Sekai no Bungaku 20 diff --git a/retail/bootloader/source/arm7/dsi2ds_patches.c b/retail/bootloader/source/arm7/dsi2ds_patches.c index acbf65def..b04503aee 100644 --- a/retail/bootloader/source/arm7/dsi2ds_patches.c +++ b/retail/bootloader/source/arm7/dsi2ds_patches.c @@ -6623,14 +6623,15 @@ void patchDSiModeToDSMode(cardengineArm9* ce9, const tNDSHeader* ndsHeader) { // Cat Frenzy (USA) // Cat Frenzy (Europe) - // May require 8MB of RAM - /* else if (strcmp(romTid, "KVXE") == 0 || strcmp(romTid, "KVXP") == 0) { + // Requires 8MB of RAM + else if ((strcmp(romTid, "KVXE") == 0 || strcmp(romTid, "KVXP") == 0) && extendedMemory) { + useSharedFont = twlFontFound; *(u32*)0x020050EC = 0xE1A00000; // nop *(u32*)0x020176F4 = 0xE1A00000; // nop tonccpy((u32*)0x02018278, dsiSaveGetResultCode, 0xC); *(u32*)0x0201AED4 = 0xE1A00000; // nop patchInitDSiWare(0x02021B28, heapEnd); - *(u32*)0x02021EB4 = *(u32*)0x02004FE8; + // *(u32*)0x02021EB4 = *(u32*)0x02004FE8; patchUserSettingsReadDSiWare(0x0202301C); *(u32*)0x02027F58 = 0xE1A00000; // nop *(u32*)0x02027F60 = 0xE1A00000; // nop @@ -6646,7 +6647,19 @@ void patchDSiModeToDSMode(cardengineArm9* ce9, const tNDSHeader* ndsHeader) { setBL(0x020295AC, (u32)dsiSaveRead); // dsiSaveReadAsync setBL(0x020295DC, (u32)dsiSaveClose); *(u32*)0x020296D0 = 0xE1A00000; // nop - } */ + if (!useSharedFont) { + if (romTid[3] == 'E') { + *(u32*)0x020544D4 = 0xE1A00000; // nop (Disable NFTR loading from TWLNAND) + } else { + *(u32*)0x0205456C = 0xE1A00000; // nop (Disable NFTR loading from TWLNAND) + } + } + /* if (romTid[3] == 'E') { + *(u32*)0x02054894 = 0xE3A0470A; // mov r4, #0x280000 + } else { + *(u32*)0x0205492C = 0xE3A0470A; // mov r4, #0x280000 + } */ + } // Cave Story (USA) else if (strcmp(romTid, "KCVE") == 0) { diff --git a/retail/bootloaderi/source/arm7/patch_common.c b/retail/bootloaderi/source/arm7/patch_common.c index 8f5fb054d..263ef827c 100644 --- a/retail/bootloaderi/source/arm7/patch_common.c +++ b/retail/bootloaderi/source/arm7/patch_common.c @@ -4115,35 +4115,49 @@ void dsiWarePatch(cardengineArm9* ce9, const tNDSHeader* ndsHeader) { // Cat Frenzy (USA) // Cat Frenzy (Europe) - else if ((strcmp(romTid, "KVXE") == 0 || strcmp(romTid, "KVXP") == 0) && saveOnFlashcard) { - tonccpy((u32*)0x02018278, dsiSaveGetResultCode, 0xC); - setBL(0x020293A0, (u32)dsiSaveGetInfo); - setBL(0x020293D4, (u32)dsiSaveCreate); - setBL(0x020293FC, (u32)dsiSaveOpen); - setBL(0x02029424, (u32)dsiSaveSetLength); - setBL(0x0202943C, (u32)dsiSaveWrite); - setBL(0x02029444, (u32)dsiSaveClose); - setBL(0x020294A8, (u32)dsiSaveOpen); - setBL(0x020294D0, (u32)dsiSaveSetLength); - setBL(0x02029554, (u32)dsiSaveWrite); // dsiSaveWriteAsync - setBL(0x020295AC, (u32)dsiSaveRead); // dsiSaveReadAsync - setBL(0x020295DC, (u32)dsiSaveClose); + else if (strcmp(romTid, "KVXE") == 0 || strcmp(romTid, "KVXP") == 0) { + if (saveOnFlashcard) { + tonccpy((u32*)0x02018278, dsiSaveGetResultCode, 0xC); + setBL(0x020293A0, (u32)dsiSaveGetInfo); + setBL(0x020293D4, (u32)dsiSaveCreate); + setBL(0x020293FC, (u32)dsiSaveOpen); + setBL(0x02029424, (u32)dsiSaveSetLength); + setBL(0x0202943C, (u32)dsiSaveWrite); + setBL(0x02029444, (u32)dsiSaveClose); + setBL(0x020294A8, (u32)dsiSaveOpen); + setBL(0x020294D0, (u32)dsiSaveSetLength); + setBL(0x02029554, (u32)dsiSaveWrite); // dsiSaveWriteAsync + setBL(0x020295AC, (u32)dsiSaveRead); // dsiSaveReadAsync + setBL(0x020295DC, (u32)dsiSaveClose); + } + if (!twlFontFound) { + if (romTid[3] == 'E') { + *(u32*)0x020544D4 = 0xE1A00000; // nop (Disable NFTR loading from TWLNAND) + } else { + *(u32*)0x0205456C = 0xE1A00000; // nop (Disable NFTR loading from TWLNAND) + } + } } // Mew Mew Chamber (Japan) - else if (strcmp(romTid, "KVXJ") == 0 && saveOnFlashcard) { - tonccpy((u32*)0x02018254, dsiSaveGetResultCode, 0xC); - setBL(0x0202929C, (u32)dsiSaveGetInfo); - setBL(0x020292D0, (u32)dsiSaveCreate); - setBL(0x020292F8, (u32)dsiSaveOpen); - setBL(0x02029320, (u32)dsiSaveSetLength); - setBL(0x02029338, (u32)dsiSaveWrite); - setBL(0x02029340, (u32)dsiSaveClose); - setBL(0x020293A4, (u32)dsiSaveOpen); - setBL(0x020293CC, (u32)dsiSaveSetLength); - setBL(0x02029450, (u32)dsiSaveWrite); // dsiSaveWriteAsync - setBL(0x020294A8, (u32)dsiSaveRead); // dsiSaveReadAsync - setBL(0x020294D8, (u32)dsiSaveClose); + else if (strcmp(romTid, "KVXJ") == 0) { + if (saveOnFlashcard) { + tonccpy((u32*)0x02018254, dsiSaveGetResultCode, 0xC); + setBL(0x0202929C, (u32)dsiSaveGetInfo); + setBL(0x020292D0, (u32)dsiSaveCreate); + setBL(0x020292F8, (u32)dsiSaveOpen); + setBL(0x02029320, (u32)dsiSaveSetLength); + setBL(0x02029338, (u32)dsiSaveWrite); + setBL(0x02029340, (u32)dsiSaveClose); + setBL(0x020293A4, (u32)dsiSaveOpen); + setBL(0x020293CC, (u32)dsiSaveSetLength); + setBL(0x02029450, (u32)dsiSaveWrite); // dsiSaveWriteAsync + setBL(0x020294A8, (u32)dsiSaveRead); // dsiSaveReadAsync + setBL(0x020294D8, (u32)dsiSaveClose); + } + if (!twlFontFound) { + *(u32*)0x02051F08 = 0xE1A00000; // nop (Disable NFTR loading from TWLNAND) + } } // Cave Story (USA)