From d8995ee9c06ae4482597c086296e6f031b2d9122 Mon Sep 17 00:00:00 2001 From: CTCaer Date: Sun, 22 Aug 2021 16:56:05 +0300 Subject: [PATCH] hekate: clean unused stuff Remove anything that will never be in TUI in the future. Especially these that need modernization. --- bootloader/config.c | 457 +-------------------------------- bootloader/config.h | 5 - bootloader/frontend/fe_info.c | 123 +-------- bootloader/frontend/fe_info.h | 1 - bootloader/frontend/fe_tools.c | 214 --------------- bootloader/frontend/fe_tools.h | 3 - bootloader/main.c | 19 -- nyx/nyx_gui/config.c | 7 + 8 files changed, 26 insertions(+), 803 deletions(-) diff --git a/bootloader/config.c b/bootloader/config.c index 664a025..a83172f 100644 --- a/bootloader/config.c +++ b/bootloader/config.c @@ -86,28 +86,36 @@ int create_config_entry() if (f_open(&fp, "bootloader/hekate_ipl.ini", FA_WRITE | FA_CREATE_ALWAYS) != FR_OK) return 1; + // Add config entry. f_puts("[config]\nautoboot=", &fp); itoa(h_cfg.autoboot, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nautoboot_list=", &fp); itoa(h_cfg.autoboot_list, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nbootwait=", &fp); itoa(h_cfg.bootwait, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nbacklight=", &fp); itoa(h_cfg.backlight, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nautohosoff=", &fp); itoa(h_cfg.autohosoff, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nautonogc=", &fp); itoa(h_cfg.autonogc, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nupdater2p=", &fp); itoa(h_cfg.updater2p, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nbootprotect=", &fp); itoa(h_cfg.bootprotect, lbuf, 10); f_puts(lbuf, &fp); @@ -158,452 +166,3 @@ int create_config_entry() return 0; } - -#pragma GCC push_options -#pragma GCC optimize ("Os") - -static void _save_config() -{ - gfx_clear_grey(0x1B); - gfx_con_setpos(0, 0); - - if (!create_config_entry()) - gfx_puts("\nConfiguration was saved!\n"); - else - EPRINTF("\nConfiguration saving failed!"); - gfx_puts("\nPress any key..."); -} - -static void _config_autoboot_list(void *ent) -{ - gfx_clear_grey(0x1B); - gfx_con_setpos(0, 0); - - u32 *temp_autoboot = NULL; - - LIST_INIT(ini_sections); - - u8 max_entries = 30; - - ment_t *ments = (ment_t *)malloc(sizeof(ment_t) * (max_entries + 3)); - u32 *boot_values = (u32 *)malloc(sizeof(u32) * max_entries); - char *boot_text = (char *)malloc(512 * max_entries); - - for (u32 j = 0; j < max_entries; j++) - boot_values[j] = j; - - if (sd_mount()) - { - if (ini_parse(&ini_sections, "bootloader/ini", true)) - { - // Build configuration menu. - ments[0].type = MENT_BACK; - ments[0].caption = "Back"; - - ments[1].type = MENT_CHGLINE; - - u32 i = 2; - LIST_FOREACH_ENTRY(ini_sec_t, ini_sec, &ini_sections, link) - { - // Skip other ini entries for autoboot. - if (ini_sec->type == INI_CHOICE) - { - if (!strcmp(ini_sec->name, "config")) - continue; - - if (strlen(ini_sec->name) > 510) - ments[i].caption = ini_sec->name; - else - { - if (h_cfg.autoboot != (i - 1) || !h_cfg.autoboot_list) - boot_text[(i - 1) * 512] = ' '; - - else - boot_text[(i - 1) * 512] = '*'; - strcpy(boot_text + (i - 1) * 512 + 1, ini_sec->name); - ments[i].caption = &boot_text[(i - 1) * 512]; - } - ments[i].type = ini_sec->type; - ments[i].data = &boot_values[i - 1]; - i++; - - if ((i - 1) > max_entries) - break; - } - } - - memset(&ments[i], 0, sizeof(ment_t)); - menu_t menu = {ments, "Select an entry to auto boot", 0, 0}; - temp_autoboot = (u32 *)tui_do_menu(&menu); - if (temp_autoboot != NULL) - { - h_cfg.autoboot = *(u32 *)temp_autoboot; - h_cfg.autoboot_list = 1; - _save_config(); - - ment_t *tmp = (ment_t *)ent; - tmp->data = NULL; - } - else - goto out2; - } - else - { - EPRINTF("Could not open 'bootloader/hekate_ipl.ini'.\nMake sure it exists!."); - goto out; - } - } - -out:; - btn_wait(); -out2:; - free(ments); - free(boot_values); - free(boot_text); - - sd_end(); -} - -void config_autoboot() -{ - gfx_clear_grey(0x1B); - gfx_con_setpos(0, 0); - - u32 *temp_autoboot = NULL; - - LIST_INIT(ini_sections); - - u8 max_entries = 30; - u32 boot_text_size = 512; - - ment_t *ments = (ment_t *)malloc(sizeof(ment_t) * (max_entries + 5)); - u32 *boot_values = (u32 *)malloc(sizeof(u32) * max_entries); - char *boot_text = (char *)malloc(boot_text_size * max_entries); - - for (u32 j = 0; j < max_entries; j++) - boot_values[j] = j; - - if (sd_mount()) - { - if (ini_parse(&ini_sections, "bootloader/hekate_ipl.ini", false)) - { - // Build configuration menu. - ments[0].type = MENT_BACK; - ments[0].caption = "Back"; - - ments[1].type = MENT_CHGLINE; - - ments[2].type = MENT_DATA; - if (!h_cfg.autoboot) - ments[2].caption = "*Disable"; - else - ments[2].caption = " Disable"; - ments[2].data = &boot_values[0]; - - ments[3].type = MENT_HDLR_RE; - if (h_cfg.autoboot_list) - ments[3].caption = "*More configs..."; - else - ments[3].caption = " More configs..."; - ments[3].handler = _config_autoboot_list; - ments[3].data = (void *)0xCAFE; - - ments[4].type = MENT_CHGLINE; - - u32 i = 5; - LIST_FOREACH_ENTRY(ini_sec_t, ini_sec, &ini_sections, link) - { - // Skip other ini entries for autoboot. - if (ini_sec->type == INI_CHOICE) - { - if (!strcmp(ini_sec->name, "config")) - continue; - - if (strlen(ini_sec->name) > 510) - ments[i].caption = ini_sec->name; - else - { - if (h_cfg.autoboot != (i - 4) || h_cfg.autoboot_list) - boot_text[(i - 4) * boot_text_size] = ' '; - - else - boot_text[(i - 4) * boot_text_size] = '*'; - strcpy(boot_text + (i - 4) * boot_text_size + 1, ini_sec->name); - ments[i].caption = &boot_text[(i - 4) * boot_text_size]; - } - ments[i].type = ini_sec->type; - ments[i].data = &boot_values[i - 4]; - i++; - - if ((i - 4) > max_entries) - break; - } - } - if (i < 6 && !h_cfg.autoboot_list) - { - ments[i].type = MENT_CAPTION; - ments[i].caption = "No main configurations found..."; - ments[i].color = 0xFFFFDD00; - i++; - } - - memset(&ments[i], 0, sizeof(ment_t)); - menu_t menu = {ments, "Disable or select entry to auto boot", 0, 0}; - temp_autoboot = (u32 *)tui_do_menu(&menu); - if (temp_autoboot != NULL) - { - h_cfg.autoboot = *(u32 *)temp_autoboot; - h_cfg.autoboot_list = 0; - _save_config(); - } - else - goto out2; - } - else - { - EPRINTF("Could not open 'bootloader/hekate_ipl.ini'.\nMake sure it exists!."); - goto out; - } - } - -out:; - btn_wait(); -out2:; - free(ments); - free(boot_values); - free(boot_text); - - sd_end(); - - if (temp_autoboot == NULL) - return; -} - -void config_bootdelay() -{ - gfx_clear_grey(0x1B); - gfx_con_setpos(0, 0); - - u32 delay_entries = 6; - u32 delay_text_size = 32; - - ment_t *ments = (ment_t *)malloc(sizeof(ment_t) * (delay_entries + 3)); - u32 *delay_values = (u32 *)malloc(sizeof(u32) * delay_entries); - char *delay_text = (char *)malloc(delay_text_size * delay_entries); - - for (u32 j = 0; j < delay_entries; j++) - delay_values[j] = j; - - ments[0].type = MENT_BACK; - ments[0].caption = "Back"; - - ments[1].type = MENT_CHGLINE; - - ments[2].type = MENT_DATA; - if (h_cfg.bootwait) - ments[2].caption = " 0 seconds (Bootlogo disabled)"; - else - ments[2].caption = "*0 seconds (Bootlogo disabled)"; - ments[2].data = &delay_values[0]; - - u32 i = 0; - for (i = 1; i < delay_entries; i++) - { - if (h_cfg.bootwait != i) - delay_text[i * delay_text_size] = ' '; - else - delay_text[i * delay_text_size] = '*'; - delay_text[i * delay_text_size + 1] = i + '0'; - strcpy(delay_text + i * delay_text_size + 2, " seconds"); - - ments[i + 2].type = MENT_DATA; - ments[i + 2].caption = delay_text + (i * delay_text_size); - ments[i + 2].data = &delay_values[i]; - } - - memset(&ments[i + 2], 0, sizeof(ment_t)); - menu_t menu = {ments, "Time delay for entering bootloader menu", 0, 0}; - - u32 *temp_bootwait = (u32 *)tui_do_menu(&menu); - if (temp_bootwait != NULL) - { - h_cfg.bootwait = *(u32 *)temp_bootwait; - _save_config(); - } - - free(ments); - free(delay_values); - free(delay_text); - - if (temp_bootwait == NULL) - return; - btn_wait(); -} - -void config_backlight() -{ - gfx_clear_grey(0x1B); - gfx_con_setpos(0, 0); - - u32 bri_text_size = 8; - u32 bri_entries = 11; - - ment_t *ments = (ment_t *)malloc(sizeof(ment_t) * (bri_entries + 3)); - u32 *bri_values = (u32 *)malloc(sizeof(u32) * bri_entries); - char *bri_text = (char *)malloc(bri_text_size * bri_entries); - - for (u32 j = 1; j < bri_entries; j++) - bri_values[j] = j * 10; - - ments[0].type = MENT_BACK; - ments[0].caption = "Back"; - - ments[1].type = MENT_CHGLINE; - - u32 i = 0; - for (i = 1; i < bri_entries; i++) - { - if ((h_cfg.backlight / 20) != i) - bri_text[i * bri_text_size] = ' '; - else - bri_text[i * bri_text_size] = '*'; - - if (i < 10) - { - bri_text[i * bri_text_size + 1] = i + '0'; - strcpy(bri_text + i * bri_text_size + 2, "0%"); - } - else - strcpy(bri_text + i * bri_text_size + 1, "100%"); - - ments[i + 1].type = MENT_DATA; - ments[i + 1].caption = bri_text + (i * bri_text_size); - ments[i + 1].data = &bri_values[i]; - } - - memset(&ments[i + 1], 0, sizeof(ment_t)); - menu_t menu = {ments, "Backlight brightness", 0, 0}; - - u32 *temp_backlight = (u32 *)tui_do_menu(&menu); - if (temp_backlight != NULL) - { - h_cfg.backlight = (*(u32 *)temp_backlight) * 2; - _save_config(); - } - - free(ments); - free(bri_values); - free(bri_text); - - if (temp_backlight == NULL) - return; - btn_wait(); -} - -void config_auto_hos_poweroff() -{ - gfx_clear_grey(0x1B); - gfx_con_setpos(0, 0); - - ment_t *ments = (ment_t *)malloc(sizeof(ment_t) * 6); - u32 *hp_values = (u32 *)malloc(sizeof(u32) * 3); - - for (u32 j = 0; j < 3; j++) - { - hp_values[j] = j; - ments[j + 2].type = MENT_DATA; - ments[j + 2].data = &hp_values[j]; - } - - ments[0].type = MENT_BACK; - ments[0].caption = "Back"; - - ments[1].type = MENT_CHGLINE; - - if (h_cfg.autohosoff == 1) - { - ments[2].caption = " Disable"; - ments[3].caption = "*Enable"; - ments[4].caption = " Enable (No logo)"; - } - else if (h_cfg.autohosoff >= 2) - { - ments[2].caption = " Disable"; - ments[3].caption = " Enable"; - ments[4].caption = "*Enable (No logo)"; - } - else - { - ments[2].caption = "*Disable"; - ments[3].caption = " Enable"; - ments[4].caption = " Enable (No logo)"; - } - - memset(&ments[5], 0, sizeof(ment_t)); - menu_t menu = {ments, "Power off if woke up from HOS", 0, 0}; - - u32 *temp_autohosoff = (u32 *)tui_do_menu(&menu); - if (temp_autohosoff != NULL) - { - h_cfg.autohosoff = *(u32 *)temp_autohosoff; - _save_config(); - } - - free(ments); - free(hp_values); - - if (temp_autohosoff == NULL) - return; - btn_wait(); -} - -void config_nogc() -{ - gfx_clear_grey(0x1B); - gfx_con_setpos(0, 0); - - ment_t *ments = (ment_t *)malloc(sizeof(ment_t) * 5); - u32 *cb_values = (u32 *)malloc(sizeof(u32) * 2); - - for (u32 j = 0; j < 2; j++) - { - cb_values[j] = j; - ments[j + 2].type = MENT_DATA; - ments[j + 2].data = &cb_values[j]; - } - - ments[0].type = MENT_BACK; - ments[0].caption = "Back"; - - ments[1].type = MENT_CHGLINE; - - if (h_cfg.autonogc) - { - ments[2].caption = " Disable"; - ments[3].caption = "*Auto"; - } - else - { - ments[2].caption = "*Disable"; - ments[3].caption = " Auto"; - } - - memset(&ments[4], 0, sizeof(ment_t)); - menu_t menu = {ments, "No Gamecard", 0, 0}; - - u32 *temp_nogc = (u32 *)tui_do_menu(&menu); - if (temp_nogc != NULL) - { - h_cfg.autonogc = *(u32 *)temp_nogc; - _save_config(); - } - - free(ments); - free(cb_values); - - if (temp_nogc == NULL) - return; - btn_wait(); -} - -#pragma GCC pop_options diff --git a/bootloader/config.h b/bootloader/config.h index 894cdf9..09c360a 100644 --- a/bootloader/config.h +++ b/bootloader/config.h @@ -44,10 +44,5 @@ typedef struct _hekate_config void set_default_configuration(); int create_config_entry(); -void config_autoboot(); -void config_bootdelay(); -void config_backlight(); -void config_auto_hos_poweroff(); -void config_nogc(); #endif /* _CONFIG_H_ */ diff --git a/bootloader/frontend/fe_info.c b/bootloader/frontend/fe_info.c index 693b0ea..938e071 100644 --- a/bootloader/frontend/fe_info.c +++ b/bootloader/frontend/fe_info.c @@ -19,6 +19,7 @@ #include #include "fe_info.h" +#include "../config.h" #include #include "../hos/hos.h" #include "../hos/pkg1.h" @@ -40,6 +41,7 @@ #include #include +extern hekate_config h_cfg; extern void emmcsn_path_impl(char *path, char *sub_dir, char *filename, sdmmc_storage_t *storage); #pragma GCC push_options @@ -47,6 +49,10 @@ extern void emmcsn_path_impl(char *path, char *sub_dir, char *filename, sdmmc_st void print_fuseinfo() { + u32 fuse_size = h_cfg.t210b01 ? 0x368 : 0x300; + u32 fuse_address = h_cfg.t210b01 ? 0x7000F898 : 0x7000F900; + u32 fuse_array_size = (h_cfg.t210b01 ? 256 : 192) * sizeof(u32); + gfx_clear_partial_grey(0x1B, 0, 1256); gfx_con_setpos(0, 0); @@ -66,8 +72,8 @@ void print_fuseinfo() byte_swap_32(FUSE(FUSE_PRIVATE_KEY0)), byte_swap_32(FUSE(FUSE_PRIVATE_KEY1)), byte_swap_32(FUSE(FUSE_PRIVATE_KEY2)), byte_swap_32(FUSE(FUSE_PRIVATE_KEY3))); - gfx_printf("%k(Unlocked) fuse cache:\n\n%k", 0xFF00DDFF, 0xFFCCCCCC); - gfx_hexdump(0x7000F900, (u8 *)0x7000F900, 0x300); + gfx_printf("%kFuse cache:\n\n%k", 0xFF00DDFF, 0xFFCCCCCC); + gfx_hexdump(fuse_address, (u8 *)fuse_address, fuse_size); gfx_puts("\nPress POWER to dump them to SD Card.\nPress VOL to go to the menu.\n"); @@ -78,13 +84,13 @@ void print_fuseinfo() { char path[64]; emmcsn_path_impl(path, "/dumps", "fuse_cached.bin", NULL); - if (!sd_save_to_file((u8 *)0x7000F900, 0x300, path)) + if (!sd_save_to_file((u8 *)fuse_address, fuse_size, path)) gfx_puts("\nfuse_cached.bin saved!\n"); - u32 words[192]; + u32 words[256]; fuse_read_array(words); emmcsn_path_impl(path, "/dumps", "fuse_array_raw.bin", NULL); - if (!sd_save_to_file((u8 *)words, sizeof(words), path)) + if (!sd_save_to_file((u8 *)words, fuse_array_size, path)) gfx_puts("\nfuse_array_raw.bin saved!\n"); sd_end(); @@ -326,113 +332,6 @@ void print_sdcard_info() btn_wait(); } -void print_tsec_key() -{ - gfx_clear_partial_grey(0x1B, 0, 1256); - gfx_con_setpos(0, 0); - - u32 retries = 0; - - tsec_ctxt_t tsec_ctxt; - - sdmmc_storage_init_mmc(&emmc_storage, &emmc_sdmmc, SDMMC_BUS_WIDTH_8, SDHCI_TIMING_MMC_HS400); - - // Read package1. - u8 *pkg1 = (u8 *)malloc(0x40000); - sdmmc_storage_set_mmc_partition(&emmc_storage, EMMC_BOOT0); - sdmmc_storage_read(&emmc_storage, 0x100000 / NX_EMMC_BLOCKSIZE, 0x40000 / NX_EMMC_BLOCKSIZE, pkg1); - sdmmc_storage_end(&emmc_storage); - const pkg1_id_t *pkg1_id = pkg1_identify(pkg1); - if (!pkg1_id) - { - EPRINTF("Unknown pkg1 version."); - goto out_wait; - } - - u8 keys[SE_KEY_128_SIZE * 2]; - memset(keys, 0x00, 0x20); - - tsec_ctxt.fw = (u8 *)pkg1 + pkg1_id->tsec_off; - tsec_ctxt.pkg1 = pkg1; - tsec_ctxt.pkg11_off = pkg1_id->pkg11_off; - tsec_ctxt.secmon_base = pkg1_id->secmon_base; - - if (pkg1_id->kb <= KB_FIRMWARE_VERSION_600) - tsec_ctxt.size = 0xF00; - else if (pkg1_id->kb == KB_FIRMWARE_VERSION_620) - tsec_ctxt.size = 0x2900; - else if (pkg1_id->kb == KB_FIRMWARE_VERSION_700) - { - tsec_ctxt.size = 0x3000; - // Exit after TSEC key generation. - *((vu16 *)((u32)tsec_ctxt.fw + 0x2DB5)) = 0x02F8; - } - else - tsec_ctxt.size = 0x3300; - - if (pkg1_id->kb == KB_FIRMWARE_VERSION_620) - { - u8 *tsec_paged = (u8 *)page_alloc(3); - memcpy(tsec_paged, (void *)tsec_ctxt.fw, tsec_ctxt.size); - tsec_ctxt.fw = tsec_paged; - } - - int res = 0; - - while (tsec_query(keys, pkg1_id->kb, &tsec_ctxt) < 0) - { - memset(keys, 0x00, 0x20); - - retries++; - - if (retries > 3) - { - res = -1; - break; - } - } - - gfx_printf("%kTSEC key: %k", 0xFF00DDFF, 0xFFCCCCCC); - - if (res >= 0) - { - for (u32 j = 0; j < SE_KEY_128_SIZE; j++) - gfx_printf("%02X", keys[j]); - - if (pkg1_id->kb == KB_FIRMWARE_VERSION_620) - { - gfx_printf("\n%kTSEC root: %k", 0xFF00DDFF, 0xFFCCCCCC); - for (u32 j = 0; j < SE_KEY_128_SIZE; j++) - gfx_printf("%02X", keys[SE_KEY_128_SIZE + j]); - } - } - else - EPRINTFARGS("ERROR %X\n", res); - - gfx_puts("\n\nPress POWER to dump them to SD Card.\nPress VOL to go to the menu.\n"); - - u32 btn = btn_wait(); - if (btn & BTN_POWER) - { - if (sd_mount()) - { - char path[64]; - emmcsn_path_impl(path, "/dumps", "tsec_keys.bin", NULL); - if (!sd_save_to_file(keys, SE_KEY_128_SIZE * 2, path)) - gfx_puts("\nDone!\n"); - sd_end(); - } - } - else - goto out; - -out_wait: - btn_wait(); - -out: - free(pkg1); -} - void print_fuel_gauge_info() { int value = 0; diff --git a/bootloader/frontend/fe_info.h b/bootloader/frontend/fe_info.h index 64eb83f..ba044d9 100644 --- a/bootloader/frontend/fe_info.h +++ b/bootloader/frontend/fe_info.h @@ -23,7 +23,6 @@ void print_fuseinfo(); void print_kfuseinfo(); void print_mmc_info(); void print_sdcard_info(); -void print_tsec_key(); void print_fuel_gauge_info(); void print_battery_charger_info(); void print_battery_info(); diff --git a/bootloader/frontend/fe_tools.c b/bootloader/frontend/fe_tools.c index 04672af..dabbd43 100644 --- a/bootloader/frontend/fe_tools.c +++ b/bootloader/frontend/fe_tools.c @@ -392,218 +392,4 @@ void menu_autorcm() tui_do_menu(&menu); } -int _fix_attributes(char *path, u32 *total, u32 hos_folder, u32 check_first_run) -{ - FRESULT res; - DIR dir; - u32 dirLength = 0; - static FILINFO fno; - - if (check_first_run) - { - // Read file attributes. - res = f_stat(path, &fno); - if (res != FR_OK) - return res; - - // Check if archive bit is set. - if (fno.fattrib & AM_ARC) - { - *(u32 *)total = *(u32 *)total + 1; - f_chmod(path, 0, AM_ARC); - } - } - - // Open directory. - res = f_opendir(&dir, path); - if (res != FR_OK) - return res; - - dirLength = strlen(path); - for (;;) - { - // Clear file or folder path. - path[dirLength] = 0; - - // Read a directory item. - res = f_readdir(&dir, &fno); - - // Break on error or end of dir. - if (res != FR_OK || fno.fname[0] == 0) - break; - - // Skip official Nintendo dir if started from root. - if (!hos_folder && !strcmp(fno.fname, "Nintendo")) - continue; - - // Set new directory or file. - memcpy(&path[dirLength], "/", 1); - memcpy(&path[dirLength + 1], fno.fname, strlen(fno.fname) + 1); - - // Check if archive bit is set. - if (fno.fattrib & AM_ARC) - { - *total = *total + 1; - f_chmod(path, 0, AM_ARC); - } - - // Is it a directory? - if (fno.fattrib & AM_DIR) - { - // Set archive bit to NCA folders. - if (hos_folder && !strcmp(fno.fname + strlen(fno.fname) - 4, ".nca")) - { - *total = *total + 1; - f_chmod(path, AM_ARC, AM_ARC); - } - - // Update status bar. - tui_sbar(false); - - // Enter the directory. - res = _fix_attributes(path, total, hos_folder, 0); - if (res != FR_OK) - break; - } - } - - f_closedir(&dir); - - return res; -} - -void _fix_sd_attr(u32 type) -{ - gfx_clear_partial_grey(0x1B, 0, 1256); - gfx_con_setpos(0, 0); - - char path[256]; - char label[16]; - - u32 total = 0; - if (sd_mount()) - { - switch (type) - { - case 0: - strcpy(path, "/"); - strcpy(label, "SD Card"); - break; - case 1: - default: - strcpy(path, "/Nintendo"); - strcpy(label, "Nintendo folder"); - break; - } - - gfx_printf("Traversing all %s files!\nThis may take some time...\n\n", label); - _fix_attributes(path, &total, type, type); - gfx_printf("%kTotal archive bits cleared: %d!%k\n\nDone! Press any key...", 0xFF96FF00, total, 0xFFCCCCCC); - sd_end(); - } - btn_wait(); -} - -void fix_sd_all_attr() { _fix_sd_attr(0); } -void fix_sd_nin_attr() { _fix_sd_attr(1); } - -/* void fix_fuel_gauge_configuration() -{ - gfx_clear_partial_grey(0x1B, 0, 1256); - gfx_con_setpos(0, 0); - - int battVoltage, avgCurrent; - - max17050_get_property(MAX17050_VCELL, &battVoltage); - max17050_get_property(MAX17050_AvgCurrent, &avgCurrent); - - // Check if still charging. If not, check if battery is >= 95% (4.1V). - if (avgCurrent < 0 && battVoltage > 4100) - { - if ((avgCurrent / 1000) < -10) - EPRINTF("You need to be connected to a wall adapter,\nto apply this fix!"); - else - { - gfx_printf("%kAre you really sure?\nThis will reset your fuel gauge completely!\n", 0xFFFFDD00); - gfx_printf("Additionally this will power off your console.\n%k", 0xFFCCCCCC); - - gfx_puts("\nPress POWER to Continue.\nPress VOL to go to the menu.\n\n\n"); - - u32 btn = btn_wait(); - if (btn & BTN_POWER) - { - max17050_fix_configuration(); - msleep(1000); - gfx_con_getpos(&gfx_con.savedx, &gfx_con.savedy); - u16 value = 0; - gfx_printf("%kThe console will power off in 45 seconds.\n%k", 0xFFFFDD00, 0xFFCCCCCC); - while (value < 46) - { - gfx_con_setpos(gfx_con.savedx, gfx_con.savedy); - gfx_printf("%2ds elapsed", value); - msleep(1000); - value++; - } - msleep(2000); - - power_off(); - } - return; - } - } - else - EPRINTF("You need a fully charged battery\nand connected to a wall adapter,\nto apply this fix!"); - - msleep(500); - btn_wait(); -} */ - -/*void reset_pmic_fuel_gauge_charger_config() -{ - int avgCurrent; - - gfx_clear_partial_grey(0x1B, 0, 1256); - gfx_con_setpos(0, 0); - - gfx_printf("%k\nThis will wipe your battery stats completely!\n" - "%kAnd it may not power on without physically\nremoving and re-inserting the battery.\n%k" - "\nAre you really sure?%k\n", 0xFFFFDD00, 0xFFFF0000, 0xFFFFDD00, 0xFFCCCCCC); - - gfx_puts("\nPress POWER to Continue.\nPress VOL to go to the menu.\n\n\n"); - u32 btn = btn_wait(); - if (btn & BTN_POWER) - { - gfx_clear_partial_grey(0x1B, 0, 1256); - gfx_con_setpos(0, 0); - gfx_printf("%kKeep the USB cable connected!%k\n\n", 0xFFFFDD00, 0xFFCCCCCC); - gfx_con_getpos(&gfx_con.savedx, &gfx_con.savedy); - - u8 value = 30; - while (value > 0) - { - gfx_con_setpos(gfx_con.savedx, gfx_con.savedy); - gfx_printf("%kWait... (%ds) %k", 0xFF888888, value, 0xFFCCCCCC); - msleep(1000); - value--; - } - gfx_con_setpos(gfx_con.savedx, gfx_con.savedy); - - //Check if still connected. - max17050_get_property(MAX17050_AvgCurrent, &avgCurrent); - if ((avgCurrent / 1000) < -10) - EPRINTF("You need to be connected to a wall adapter\nor PC to apply this fix!"); - else - { - // Apply fix. - bq24193_fake_battery_removal(); - gfx_printf("Done! \n" - "%k1. Remove the USB cable\n" - "2. Press POWER for 15s.\n" - "3. Reconnect the USB to power-on!%k\n", 0xFFFFDD00, 0xFFCCCCCC); - } - msleep(500); - btn_wait(); - } -}*/ - #pragma GCC pop_options diff --git a/bootloader/frontend/fe_tools.h b/bootloader/frontend/fe_tools.h index 5311cbd..7b8e99b 100644 --- a/bootloader/frontend/fe_tools.h +++ b/bootloader/frontend/fe_tools.h @@ -19,9 +19,6 @@ #define _FE_TOOLS_H_ void dump_packages12(); -void fix_sd_all_attr(); -void fix_sd_nin_attr(); -void fix_battery_desync(); void menu_autorcm(); #endif diff --git a/bootloader/main.c b/bootloader/main.c index 40b8754..107234f 100644 --- a/bootloader/main.c +++ b/bootloader/main.c @@ -1411,19 +1411,6 @@ static void _about() btn_wait(); } -ment_t ment_options[] = { - MDEF_BACK(), - MDEF_CHGLINE(), - MDEF_HANDLER("Auto boot", config_autoboot), - MDEF_HANDLER("Boot delay", config_bootdelay), - MDEF_HANDLER("Auto NoGC", config_nogc), - MDEF_HANDLER("Auto HOS power off", config_auto_hos_poweroff), - MDEF_HANDLER("Backlight", config_backlight), - MDEF_END() -}; - -menu_t menu_options = { ment_options, "Options", 0, 0 }; - ment_t ment_cinfo[] = { MDEF_BACK(), MDEF_CHGLINE(), @@ -1431,7 +1418,6 @@ ment_t ment_cinfo[] = { MDEF_HANDLER("Ipatches & bootrom", bootrom_ipatches_info), MDEF_HANDLER("Fuses", print_fuseinfo), //MDEF_HANDLER("Print kfuse info", print_kfuseinfo), - //MDEF_HANDLER("Print TSEC keys", print_tsec_key), MDEF_CHGLINE(), MDEF_CAPTION("-- Storage Info --", 0xFF0AB9E6), MDEF_HANDLER("eMMC", print_mmc_info), @@ -1482,10 +1468,6 @@ ment_t ment_tools[] = { //MDEF_CHGLINE(), //MDEF_CAPTION("-------- Misc --------", 0xFF0AB9E6), //MDEF_HANDLER("Dump package1/2", dump_packages12), - //MDEF_HANDLER("Fix archive bit (except Nintendo)", fix_sd_all_attr), - //MDEF_HANDLER("Fix archive bit (Nintendo only)", fix_sd_nin_attr), - //MDEF_HANDLER("Fix fuel gauge configuration", fix_fuel_gauge_configuration), - //MDEF_HANDLER("Reset all battery cfg", reset_pmic_fuel_gauge_charger_config), //MDEF_CHGLINE(), MDEF_CAPTION("-------- Other -------", 0xFFFFDD00), MDEF_HANDLER("AutoRCM", menu_autorcm), @@ -1500,7 +1482,6 @@ power_state_t STATE_REBOOT_BYPASS_FUSES = REBOOT_BYPASS_FUSES; ment_t ment_top[] = { MDEF_HANDLER("Launch", launch_firmware), - //MDEF_MENU("Options", &menu_options), MDEF_CAPTION("---------------", 0xFF444444), MDEF_MENU("Tools", &menu_tools), MDEF_MENU("Console info", &menu_cinfo), diff --git a/nyx/nyx_gui/config.c b/nyx/nyx_gui/config.c index 22a1623..4906b06 100644 --- a/nyx/nyx_gui/config.c +++ b/nyx/nyx_gui/config.c @@ -100,28 +100,35 @@ int create_config_entry() if (f_open(&fp, "bootloader/hekate_ipl.ini", FA_WRITE | FA_CREATE_ALWAYS) != FR_OK) return 1; + // Add config entry. f_puts("[config]\nautoboot=", &fp); itoa(h_cfg.autoboot, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nautoboot_list=", &fp); itoa(h_cfg.autoboot_list, lbuf, 10); f_puts(lbuf, &fp); f_puts("\nbootwait=", &fp); itoa(h_cfg.bootwait, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nbacklight=", &fp); itoa(h_cfg.backlight, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nautohosoff=", &fp); itoa(h_cfg.autohosoff, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nautonogc=", &fp); itoa(h_cfg.autonogc, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nupdater2p=", &fp); itoa(h_cfg.updater2p, lbuf, 10); f_puts(lbuf, &fp); + f_puts("\nbootprotect=", &fp); itoa(h_cfg.bootprotect, lbuf, 10); f_puts(lbuf, &fp);