diff --git a/Makefile b/Makefile index 24fbf5b..4b9fd6e 100644 --- a/Makefile +++ b/Makefile @@ -10,12 +10,12 @@ include $(DEVKITARM)/base_rules IPL_LOAD_ADDR := 0x40003000 LPVERSION_MAJOR := 0 -LPVERSION_MINOR := 1 -LPVERSION_BUGFX := 0 +LPVERSION_MINOR := 0 +LPVERSION_BUGFX := 1 ################################################################################ -TARGET := CommonProblemResolver +TARGET := CPR BUILDDIR := build OUTPUTDIR := output SOURCEDIR = source diff --git a/source/tegraexplorer/mainmenu.c b/source/tegraexplorer/mainmenu.c index b54bb6c..7251166 100644 --- a/source/tegraexplorer/mainmenu.c +++ b/source/tegraexplorer/mainmenu.c @@ -18,59 +18,37 @@ #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, - DeleteBootFlags, - DeleteThemes, - FixClingWrap, - FixAll, - MainOther, - // MainBrowseSd, - // MainMountSd, - // MainBrowseEmmc, - // MainBrowseEmummc, - // MainTools, - // MainPartitionSd, - // MainDumpFw, - // MainViewKeys, + 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 = "-- 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 --"}, + [MainExplore] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "-- Main --"}, + [MainBrowseSd] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Fix common Issues"}, [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(){ @@ -81,7 +59,7 @@ void HandleSD(){ hidWait(); } else - FileExplorer("sd:/"); + FileExplorer("sd:/atmosphere/contents"); } void HandleEMMC(){ @@ -119,7 +97,10 @@ void ViewKeys(){ void ViewCredits(){ gfx_clearscreen(); - 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); + 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); hidWait(); } @@ -143,119 +124,20 @@ 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[] = { - [DeleteBootFlags] = deleteBootFlags, - [DeleteThemes] = deleteInstalledThemes, - [FixClingWrap] = fixClingWrap, - [FixAll] = fixAll, - // [MainBrowseSd] = HandleSD, - // [MainMountSd] = MountOrUnmountSD, - // [MainBrowseEmmc] = HandleEMMC, - // [MainBrowseEmummc] = HandleEMUMMC, - // [MainPartitionSd] = FormatSD, - // [MainDumpFw] = DumpSysFw, - // [MainViewKeys] = ViewKeys, - // [MainRebootAMS] = RebootToAMS, + [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(){ @@ -264,18 +146,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;