nyx: emummc: allow migrating emummc backup

Now if an eMMC backup is not found, emuMMC backup will be used.
This commit is contained in:
CTCaer 2023-08-07 21:11:17 +03:00
parent 6de29094fe
commit 187b6d843e

View file

@ -35,8 +35,8 @@ typedef struct _mbr_ctxt_t
u32 sector_start;
} mbr_ctxt_t;
static bool emummc_backup;
static mbr_ctxt_t mbr_ctx;
static lv_obj_t *emummc_manage_window;
static lv_res_t (*emummc_tools)(lv_obj_t *btn);
@ -518,7 +518,10 @@ static void _migrate_sd_backup_file_based()
f_open(&fp, "emuMMC/BK00/file_based", FA_CREATE_ALWAYS | FA_WRITE);
f_close(&fp);
emmcsn_path_impl(backup_path, "", "", NULL);
if (!emummc_backup)
emmcsn_path_impl(backup_path, "", "", NULL);
else
emmcsn_path_impl(backup_path, "/emummc", "", NULL);
// Move BOOT0.
s_printf(backup_file_path, "%s/BOOT0", backup_path);
@ -689,9 +692,14 @@ static lv_res_t _create_emummc_migrate_action(lv_obj_t * btns, const char * txt)
if (backup)
{
s_printf(txt_buf,
"#C7EA46 Found suitable backup for emuMMC!#\n\n"
"#FF8000 Do you want to migrate it?#\n");
if (!emummc_backup)
s_printf(txt_buf,
"#C7EA46 Found suitable eMMC backup!#\n\n"
"#FF8000 Do you want to migrate it?#\n");
else
s_printf(txt_buf,
"#C7EA46 Found suitable emuMMC backup!#\n\n"
"#FF8000 Do you want to migrate it?#\n");
lv_mbox_add_btns(mbox, mbox_btn_map, _create_emummc_mig4_action);
}
else if (emummc)
@ -823,6 +831,8 @@ static lv_res_t _create_mbox_emummc_migrate(lv_obj_t *btn)
if (!f_stat(path_buf, NULL))
em_file = true;
emummc_backup = false;
emmcsn_path_impl(path_buf, "", "BOOT0", &emmc_storage);
if (!f_stat(path_buf, NULL))
backup = true;
@ -837,6 +847,26 @@ static lv_res_t _create_mbox_emummc_migrate(lv_obj_t *btn)
backup = backup && rawnand_backup;
if (!backup)
{
rawnand_backup = false;
emummc_backup = true;
emmcsn_path_impl(path_buf, "/emummc", "BOOT0", &emmc_storage);
if (!f_stat(path_buf, NULL))
backup = true;
emmcsn_path_impl(path_buf, "/emummc", "rawnand.bin", &emmc_storage);
if (!f_stat(path_buf, NULL))
rawnand_backup = true;
emmcsn_path_impl(path_buf, "/emummc", "rawnand.bin.00", &emmc_storage);
if (!f_stat(path_buf, NULL))
rawnand_backup = true;
backup = backup && rawnand_backup;
}
sd_unmount();
emmc_end();