Changed sourcecode for CPR

This commit is contained in:
Calvin Fuchs
2021-06-18 03:11:23 +02:00
parent dc74e50356
commit b87e574f29
4 changed files with 173 additions and 60 deletions

View File

@@ -168,14 +168,16 @@ ErrCode_t FolderDelete(const char *path){
ret = FolderDelete(temp); ret = FolderDelete(temp);
} }
else { else {
gfx_puts_limit(fs[i].name, (YLEFT - x) / 16 - 10); // gfx_puts_limit(fs[i].name, (YLEFT - x) / 16 - 10);
BoxRestOfScreen(); // BoxRestOfScreen();
res = f_unlink(temp); res = f_unlink(temp);
if (res){ if (res){
ret = newErrCode(res); ret = newErrCode(res);
} }
gfx_con_setpos(x, y); // gfx_con_setpos(x, y);
} }
gfx_printf("Deleted: %s \n", temp);
free(temp); free(temp);
} }
} }

View File

@@ -13,7 +13,7 @@ void gfx_printTopInfo() {
bq24193_get_property(BQ24193_ChargeStatus, &current_charge_status); bq24193_get_property(BQ24193_ChargeStatus, &current_charge_status);
SETCOLOR(COLOR_DEFAULT, COLOR_WHITE); SETCOLOR(COLOR_DEFAULT, COLOR_WHITE);
gfx_con_setpos(0, 0); 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; RESETCOLOR;
} }

View File

@@ -291,25 +291,25 @@ void ipl_main()
gfx_clearscreen(); gfx_clearscreen();
int res = -1; // int res = -1;
if (btn_read() & BTN_VOL_DOWN || DumpKeys()) // if (btn_read() & BTN_VOL_DOWN || DumpKeys())
res = GetKeysFromFile("sd:/switch/prod.keys"); // res = GetKeysFromFile("sd:/switch/prod.keys");
TConf.keysDumped = (res > 0) ? 0 : 1; // TConf.keysDumped = (res > 0) ? 0 : 1;
if (res > 0) // if (res > 0)
DrawError(newErrCode(TE_ERR_KEYDUMP_FAIL)); // DrawError(newErrCode(TE_ERR_KEYDUMP_FAIL));
if (TConf.keysDumped) // if (TConf.keysDumped)
SetKeySlots(); // SetKeySlots();
if (res == 0) // if (res == 0)
hidWait(); // hidWait();
if (FileExists("sd:/startup.te")) // if (FileExists("sd:/startup.te"))
RunScript("sd:/", newFSEntry("startup.te")); // RunScript("sd:/", newFSEntry("startup.te"));
EnterMainMenu(); EnterMainMenu();

View File

@@ -18,44 +18,59 @@
#include "../utils/utils.h" #include "../utils/utils.h"
#include "../config.h" #include "../config.h"
#include "../fs/readers/folderReader.h"
#include "../fs/fstypes.h"
#include "../fs/fscopy.h"
extern hekate_config h_cfg; extern hekate_config h_cfg;
enum { enum {
MainExplore = 0, MainExplore = 0,
MainBrowseSd, DeleteBootFlags,
MainMountSd, DeleteThemes,
MainBrowseEmmc, FixClingWrap,
MainBrowseEmummc, FixAll,
MainTools, MainOther,
MainPartitionSd, // MainBrowseSd,
MainDumpFw, // MainMountSd,
MainViewKeys, // MainBrowseEmmc,
// MainBrowseEmummc,
// MainTools,
// MainPartitionSd,
// MainDumpFw,
// MainViewKeys,
MainViewCredits, MainViewCredits,
MainExit, MainExit,
MainPowerOff, MainPowerOff,
MainRebootRCM, MainRebootRCM,
MainRebootNormal, // MainRebootNormal,
MainRebootHekate, MainRebootHekate,
MainRebootAMS // MainRebootAMS,
}; };
MenuEntry_t mainMenuEntries[] = { MenuEntry_t mainMenuEntries[] = {
[MainExplore] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "-- Explore --"}, [MainExplore] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "-- Tools --"},
[MainBrowseSd] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Browse SD"}, [DeleteBootFlags] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Delete boot2.flags"},
[MainMountSd] = {.optionUnion = COLORTORGB(COLOR_YELLOW)}, // To mount/unmount the SD [DeleteThemes] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Delete installed themes"},
[MainBrowseEmmc] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Browse EMMC"}, [FixClingWrap] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Fix ClingWrap"},
[MainBrowseEmummc] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Browse EMUMMC"}, [FixAll] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Try everything"},
[MainTools] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Tools --"},
[MainPartitionSd] = {.optionUnion = COLORTORGB(COLOR_ORANGE), .name = "Partition the sd"}, // [MainBrowseSd] = {.optionUnion = COLORTORGB(COLOR_GREEN), .name = "Browse SD"},
[MainDumpFw] = {.optionUnion = COLORTORGB(COLOR_BLUE), .name = "Dump Firmware"}, // [MainMountSd] = {.optionUnion = COLORTORGB(COLOR_YELLOW)}, // To mount/unmount the SD
[MainViewKeys] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "View dumped keys"}, // [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"}, [MainViewCredits] = {.optionUnion = COLORTORGB(COLOR_YELLOW), .name = "Credits"},
[MainExit] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Exit --"}, [MainExit] = {.optionUnion = COLORTORGB(COLOR_WHITE) | SKIPBIT, .name = "\n-- Exit --"},
[MainPowerOff] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Power off"}, [MainPowerOff] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Power off"},
[MainRebootRCM] = {.optionUnion = COLORTORGB(COLOR_VIOLET), .name = "Reboot to RCM"}, [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"}, [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(){ void HandleSD(){
@@ -104,10 +119,7 @@ void ViewKeys(){
void ViewCredits(){ void ViewCredits(){
gfx_clearscreen(); 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); 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);
if (hidRead()->r)
gfx_printf("%k\"I'm not even sure if it works\" - meme", COLOR_ORANGE);
hidWait(); hidWait();
} }
@@ -131,20 +143,119 @@ void MountOrUnmountSD(){
hidWait(); 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[] = { menuPaths mainMenuPaths[] = {
[MainBrowseSd] = HandleSD, [DeleteBootFlags] = deleteBootFlags,
[MainMountSd] = MountOrUnmountSD, [DeleteThemes] = deleteInstalledThemes,
[MainBrowseEmmc] = HandleEMMC, [FixClingWrap] = fixClingWrap,
[MainBrowseEmummc] = HandleEMUMMC, [FixAll] = fixAll,
[MainPartitionSd] = FormatSD, // [MainBrowseSd] = HandleSD,
[MainDumpFw] = DumpSysFw, // [MainMountSd] = MountOrUnmountSD,
[MainViewKeys] = ViewKeys, // [MainBrowseEmmc] = HandleEMMC,
[MainRebootAMS] = RebootToAMS, // [MainBrowseEmummc] = HandleEMUMMC,
// [MainPartitionSd] = FormatSD,
// [MainDumpFw] = DumpSysFw,
// [MainViewKeys] = ViewKeys,
// [MainRebootAMS] = RebootToAMS,
[MainRebootHekate] = RebootToHekate, [MainRebootHekate] = RebootToHekate,
[MainRebootRCM] = reboot_rcm, [MainRebootRCM] = reboot_rcm,
[MainPowerOff] = power_off, [MainPowerOff] = power_off,
[MainViewCredits] = ViewCredits, [MainViewCredits] = ViewCredits,
[MainRebootNormal] = reboot_normal, // [MainRebootNormal] = reboot_normal
}; };
void EnterMainMenu(){ void EnterMainMenu(){
@@ -153,18 +264,18 @@ void EnterMainMenu(){
if (sd_get_card_removed()) if (sd_get_card_removed())
sd_unmount(); sd_unmount();
// -- Explore -- // // -- Explore --
mainMenuEntries[MainBrowseSd].hide = !sd_mounted; // mainMenuEntries[MainBrowseSd].hide = !sd_mounted;
mainMenuEntries[MainMountSd].name = (sd_mounted) ? "Unmount SD" : "Mount SD"; // mainMenuEntries[MainMountSd].name = (sd_mounted) ? "Unmount SD" : "Mount SD";
mainMenuEntries[MainBrowseEmummc].hide = (!emu_cfg.enabled || !sd_mounted); // mainMenuEntries[MainBrowseEmummc].hide = (!emu_cfg.enabled || !sd_mounted);
// -- Tools -- // // -- Tools --
mainMenuEntries[MainPartitionSd].hide = (!is_sd_inited || sd_get_card_removed()); // mainMenuEntries[MainPartitionSd].hide = (!is_sd_inited || sd_get_card_removed());
mainMenuEntries[MainDumpFw].hide = (!TConf.keysDumped || !sd_mounted); // mainMenuEntries[MainDumpFw].hide = (!TConf.keysDumped || !sd_mounted);
mainMenuEntries[MainViewKeys].hide = !TConf.keysDumped; // mainMenuEntries[MainViewKeys].hide = !TConf.keysDumped;
// -- Exit -- // // -- Exit --
mainMenuEntries[MainRebootAMS].hide = (!sd_mounted || !FileExists("sd:/atmosphere/reboot_payload.bin")); // mainMenuEntries[MainRebootAMS].hide = (!sd_mounted || !FileExists("sd:/atmosphere/reboot_payload.bin"));
mainMenuEntries[MainRebootHekate].hide = (!sd_mounted || !FileExists("sd:/bootloader/update.bin")); mainMenuEntries[MainRebootHekate].hide = (!sd_mounted || !FileExists("sd:/bootloader/update.bin"));
mainMenuEntries[MainRebootRCM].hide = h_cfg.t210b01; mainMenuEntries[MainRebootRCM].hide = h_cfg.t210b01;