diff --git a/source/fs/fscopy.c b/source/fs/fscopy.c index 7857387..d5372d8 100644 --- a/source/fs/fscopy.c +++ b/source/fs/fscopy.c @@ -168,14 +168,16 @@ ErrCode_t FolderDelete(const char *path){ ret = FolderDelete(temp); } else { - gfx_puts_limit(fs[i].name, (YLEFT - x) / 16 - 10); - BoxRestOfScreen(); + // gfx_puts_limit(fs[i].name, (YLEFT - x) / 16 - 10); + // BoxRestOfScreen(); res = f_unlink(temp); if (res){ ret = newErrCode(res); } - gfx_con_setpos(x, y); + // gfx_con_setpos(x, y); + } + gfx_printf("Deleted: %s \n", temp); free(temp); } } diff --git a/source/gfx/gfxutils.c b/source/gfx/gfxutils.c index 413ce63..bb0e19a 100644 --- a/source/gfx/gfxutils.c +++ b/source/gfx/gfxutils.c @@ -13,7 +13,7 @@ void gfx_printTopInfo() { bq24193_get_property(BQ24193_ChargeStatus, ¤t_charge_status); SETCOLOR(COLOR_DEFAULT, COLOR_WHITE); gfx_con_setpos(0, 0); - gfx_printf("Tegraexplorer %d.%d.%d | Battery: %d%% %c\n", LP_VER_MJ, LP_VER_MN, LP_VER_BF, battery >> 8, ((current_charge_status) ? 129 : 32)); + gfx_printf("CPR %d.%d.%d | Battery: %d%% %c\n", LP_VER_MJ, LP_VER_MN, LP_VER_BF, battery >> 8, ((current_charge_status) ? 129 : 32)); RESETCOLOR; } diff --git a/source/main.c b/source/main.c index 78c8507..8f9b6e7 100644 --- a/source/main.c +++ b/source/main.c @@ -291,25 +291,25 @@ void ipl_main() gfx_clearscreen(); - int res = -1; + // int res = -1; - if (btn_read() & BTN_VOL_DOWN || DumpKeys()) - res = GetKeysFromFile("sd:/switch/prod.keys"); + // if (btn_read() & BTN_VOL_DOWN || DumpKeys()) + // res = GetKeysFromFile("sd:/switch/prod.keys"); - TConf.keysDumped = (res > 0) ? 0 : 1; + // TConf.keysDumped = (res > 0) ? 0 : 1; - if (res > 0) - DrawError(newErrCode(TE_ERR_KEYDUMP_FAIL)); + // if (res > 0) + // DrawError(newErrCode(TE_ERR_KEYDUMP_FAIL)); - if (TConf.keysDumped) - SetKeySlots(); + // if (TConf.keysDumped) + // SetKeySlots(); - if (res == 0) - hidWait(); + // if (res == 0) + // hidWait(); - if (FileExists("sd:/startup.te")) - RunScript("sd:/", newFSEntry("startup.te")); + // if (FileExists("sd:/startup.te")) + // RunScript("sd:/", newFSEntry("startup.te")); EnterMainMenu(); diff --git a/source/tegraexplorer/mainmenu.c b/source/tegraexplorer/mainmenu.c index feffed2..b54bb6c 100644 --- a/source/tegraexplorer/mainmenu.c +++ b/source/tegraexplorer/mainmenu.c @@ -18,44 +18,59 @@ #include "../utils/utils.h" #include "../config.h" +#include "../fs/readers/folderReader.h" +#include "../fs/fstypes.h" +#include "../fs/fscopy.h" + extern hekate_config h_cfg; enum { MainExplore = 0, - MainBrowseSd, - MainMountSd, - MainBrowseEmmc, - MainBrowseEmummc, - MainTools, - MainPartitionSd, - MainDumpFw, - MainViewKeys, + DeleteBootFlags, + DeleteThemes, + FixClingWrap, + FixAll, + MainOther, + // MainBrowseSd, + // MainMountSd, + // MainBrowseEmmc, + // MainBrowseEmummc, + // MainTools, + // MainPartitionSd, + // MainDumpFw, + // MainViewKeys, MainViewCredits, MainExit, MainPowerOff, MainRebootRCM, - MainRebootNormal, + // MainRebootNormal, MainRebootHekate, - MainRebootAMS + // MainRebootAMS, }; MenuEntry_t mainMenuEntries[] = { - [MainExplore] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "-- Explore --"}, - [MainBrowseSd] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Browse SD"}, - [MainMountSd] = {.optionUnion = COLORTORGB(COLOR_YELLOW)}, // To mount/unmount the SD - [MainBrowseEmmc] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Browse EMMC"}, - [MainBrowseEmummc] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Browse EMUMMC"}, - [MainTools] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Tools --"}, - [MainPartitionSd] = {.optionUnion = COLORTORGB(COLOR_ORANGE), .name = "Partition the sd"}, - [MainDumpFw] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Dump Firmware"}, - [MainViewKeys] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "View dumped keys"}, + [MainExplore] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "-- Tools --"}, + [DeleteBootFlags] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Delete boot2.flags"}, + [DeleteThemes] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Delete installed themes"}, + [FixClingWrap] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Fix ClingWrap"}, + [FixAll] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Try everything"}, + + // [MainBrowseSd] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Browse SD"}, + // [MainMountSd] = {.optionUnion = COLORTORGB(COLOR_YELLOW)}, // To mount/unmount the SD + // [MainBrowseEmmc] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Browse EMMC"}, + // [MainBrowseEmummc] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Browse EMUMMC"}, + // [MainTools] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Tools --"}, + // [MainPartitionSd] = {.optionUnion = COLORTORGB(COLOR_ORANGE), .name = "Partition the sd"}, + // [MainDumpFw] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Dump Firmware"}, + // [MainViewKeys] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "View dumped keys"}, + [MainOther] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Other --"}, [MainViewCredits] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "Credits"}, [MainExit] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Exit --"}, [MainPowerOff] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Power off"}, [MainRebootRCM] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to RCM"}, - [MainRebootNormal] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot normally"}, + // [MainRebootNormal] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot normally"}, [MainRebootHekate] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to bootloader/update.bin"}, - [MainRebootAMS] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to atmosphere/reboot_payload.bin"} + // [MainRebootAMS] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to atmosphere/reboot_payload.bin"} }; void HandleSD(){ @@ -104,10 +119,7 @@ void ViewKeys(){ void ViewCredits(){ gfx_clearscreen(); - gfx_printf("\nTegraexplorer v%d.%d.%d\nBy SuchMemeManySkill\n\nBased on Lockpick_RCM & Hekate, from shchmue & CTCaer\n\n\n", LP_VER_MJ, LP_VER_MN, LP_VER_BF); - - if (hidRead()->r) - gfx_printf("%k\"I'm not even sure if it works\" - meme", COLOR_ORANGE); + gfx_printf("\nCommon Problem Resolver v%d.%d.%d\nBy Team Neptune\n\nBased on TegraExplorer by SuchMemeManySkill,\nLockpick_RCM & Hekate, from shchmue & CTCaer\n\n\n", LP_VER_MJ, LP_VER_MN, LP_VER_BF); hidWait(); } @@ -131,20 +143,119 @@ void MountOrUnmountSD(){ hidWait(); } + +void DeleteFileSimple(char *thing){ + //char *thing = CombinePaths(path, entry.name); + int res = f_unlink(thing); + if (res) + DrawError(newErrCode(res)); + free(thing); +} + +void deleteBootFlags(){ + gfx_clearscreen(); + char *storedPath = CpyStr("sd:/atmosphere/contents"); + int readRes = 0; + Vector_t fileVec = ReadFolder(storedPath, &readRes); + if (readRes){ + clearFileVector(&fileVec); + DrawError(newErrCode(readRes)); + } else { + vecDefArray(FSEntry_t*, fsEntries, fileVec); + for (int i = 0; i < fileVec.count; i++){ + + char *suf = "/flags/boot2.flag"; + char *flagPath = CombinePaths(storedPath, fsEntries[i].name); + flagPath = CombinePaths(flagPath, suf); + + if (FileExists(flagPath)) { + gfx_printf("Deleting: %s\n", flagPath); + DeleteFileSimple(flagPath); + } + free(flagPath); + } + } + gfx_printf("\n\n Done, press a key to proceed."); + hidWait(); +} + +void deleteTheme(char* basePath, char* folderId){ + char *path = CombinePaths(basePath, folderId); + if (FileExists(path)) { + gfx_printf("-- Theme found: %s\n", path); + FolderDelete(path); + } + free(path); +} + +void deleteInstalledThemes(){ + gfx_clearscreen(); + deleteTheme("sd:/atmosphere/contents", "0100000000001000"); + deleteTheme("sd:/atmosphere/contents", "0100000000001007"); + deleteTheme("sd:/atmosphere/contents", "0100000000001013"); + + gfx_printf("\n\n Done, press a key to proceed."); + hidWait(); +} + +void fixClingWrap(){ + gfx_clearscreen(); + char *bpath = CpyStr("sd:/_b0otloader"); + char *bopath = CpyStr("sd:/bootloader"); + char *kpath = CpyStr("sd:/atmosphere/_k1ps"); + char *kopath = CpyStr("sd:/atmosphere/kips"); + + if (FileExists(bpath)) { + if (FileExists(bopath)) { + FolderDelete(bopath); + } + int res = f_rename(bpath, bopath); + if (res){ + DrawError(newErrCode(res)); + } + gfx_printf("-- Fixed Bootloader\n"); + } + + if (FileExists(kpath)) { + if (FileExists(kopath)) { + FolderDelete(kopath); + } + int res = f_rename(bpath, kopath); + if (res){ + DrawError(newErrCode(res)); + } + gfx_printf("-- Fixed kips\n"); + } + + gfx_printf("\n\n Done, press a key to proceed."); + hidWait(); +} + +void fixAll(){ + gfx_clearscreen(); + deleteBootFlags(); + deleteInstalledThemes(); + fixClingWrap(); +} + menuPaths mainMenuPaths[] = { - [MainBrowseSd] = HandleSD, - [MainMountSd] = MountOrUnmountSD, - [MainBrowseEmmc] = HandleEMMC, - [MainBrowseEmummc] = HandleEMUMMC, - [MainPartitionSd] = FormatSD, - [MainDumpFw] = DumpSysFw, - [MainViewKeys] = ViewKeys, - [MainRebootAMS] = RebootToAMS, + [DeleteBootFlags] = deleteBootFlags, + [DeleteThemes] = deleteInstalledThemes, + [FixClingWrap] = fixClingWrap, + [FixAll] = fixAll, + // [MainBrowseSd] = HandleSD, + // [MainMountSd] = MountOrUnmountSD, + // [MainBrowseEmmc] = HandleEMMC, + // [MainBrowseEmummc] = HandleEMUMMC, + // [MainPartitionSd] = FormatSD, + // [MainDumpFw] = DumpSysFw, + // [MainViewKeys] = ViewKeys, + // [MainRebootAMS] = RebootToAMS, [MainRebootHekate] = RebootToHekate, [MainRebootRCM] = reboot_rcm, [MainPowerOff] = power_off, [MainViewCredits] = ViewCredits, - [MainRebootNormal] = reboot_normal, + // [MainRebootNormal] = reboot_normal }; void EnterMainMenu(){ @@ -153,18 +264,18 @@ void EnterMainMenu(){ if (sd_get_card_removed()) sd_unmount(); - // -- Explore -- - mainMenuEntries[MainBrowseSd].hide = !sd_mounted; - mainMenuEntries[MainMountSd].name = (sd_mounted) ? "Unmount SD" : "Mount SD"; - mainMenuEntries[MainBrowseEmummc].hide = (!emu_cfg.enabled || !sd_mounted); + // // -- Explore -- + // mainMenuEntries[MainBrowseSd].hide = !sd_mounted; + // mainMenuEntries[MainMountSd].name = (sd_mounted) ? "Unmount SD" : "Mount SD"; + // mainMenuEntries[MainBrowseEmummc].hide = (!emu_cfg.enabled || !sd_mounted); - // -- Tools -- - mainMenuEntries[MainPartitionSd].hide = (!is_sd_inited || sd_get_card_removed()); - mainMenuEntries[MainDumpFw].hide = (!TConf.keysDumped || !sd_mounted); - mainMenuEntries[MainViewKeys].hide = !TConf.keysDumped; + // // -- Tools -- + // mainMenuEntries[MainPartitionSd].hide = (!is_sd_inited || sd_get_card_removed()); + // mainMenuEntries[MainDumpFw].hide = (!TConf.keysDumped || !sd_mounted); + // mainMenuEntries[MainViewKeys].hide = !TConf.keysDumped; - // -- Exit -- - mainMenuEntries[MainRebootAMS].hide = (!sd_mounted || !FileExists("sd:/atmosphere/reboot_payload.bin")); + // // -- Exit -- + // mainMenuEntries[MainRebootAMS].hide = (!sd_mounted || !FileExists("sd:/atmosphere/reboot_payload.bin")); mainMenuEntries[MainRebootHekate].hide = (!sd_mounted || !FileExists("sd:/bootloader/update.bin")); mainMenuEntries[MainRebootRCM].hide = h_cfg.t210b01;