From b0f0e9be474eedf43b51ffc6ee4ecaa7a943ec80 Mon Sep 17 00:00:00 2001 From: Christoph Baumann Date: Wed, 7 May 2025 17:28:47 +0200 Subject: [PATCH] get actual size of file based emummc instead of reading from gpt --- nyx/nyx_gui/frontend/gui_tools.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/nyx/nyx_gui/frontend/gui_tools.c b/nyx/nyx_gui/frontend/gui_tools.c index 739d3fac..ca6f011a 100644 --- a/nyx/nyx_gui/frontend/gui_tools.c +++ b/nyx/nyx_gui/frontend/gui_tools.c @@ -609,6 +609,7 @@ static lv_res_t _ums_emummc(u32 part){ int error = !boot_storage_mount(); bool file_based = false; + char path[0x80]; if(!error){ load_emummc_cfg(&emu_info); @@ -632,7 +633,6 @@ static lv_res_t _ums_emummc(u32 part){ error = 4; }else{ file_based = true; - char path[0x80]; strcpy(path, emu_info.path); strcat(path, "/eMMC/"); if(!emummc_storage_file_based_init(path)){ @@ -676,20 +676,25 @@ static lv_res_t _ums_emummc(u32 part){ } if(part == NYX_UMS_EMUMMC_GPP){ - gpt_header_t *gpt_hdr = malloc(sizeof(*gpt_hdr)); - int res; if(file_based){ - res = emummc_storage_file_based_read(1, 1, gpt_hdr); - }else{ - res = sdmmc_storage_read(storage, usbs.offset + 1, 1, gpt_hdr); - } - if(res){ - if(!memcmp(&gpt_hdr->signature, "EFI PART", 8)){ + error = 8; + u32 sz = emummc_storage_file_based_get_total_gpp_size(path); + if(sz){ error = 0; - usbs.sectors = gpt_hdr->alt_lba + 1; } + usbs.sectors = sz; + }else{ + int res; + gpt_header_t *gpt_hdr = malloc(sizeof(*gpt_hdr)); + res = sdmmc_storage_read(storage, usbs.offset + 1, 1, gpt_hdr); + if(res){ + if(!memcmp(&gpt_hdr->signature, "EFI PART", 8)){ + error = 0; + usbs.sectors = gpt_hdr->alt_lba + 1; + } + } + free(gpt_hdr); } - free(gpt_hdr); }else{ error = 0; usbs.sectors = 0x2000;