From b484dc11d8a1cc8bd9600bd717c558c1147fb146 Mon Sep 17 00:00:00 2001 From: "Such Meme, Many Skill" Date: Sun, 10 May 2020 11:41:16 +0200 Subject: [PATCH] Hopefully fix partitioning issues & clean up menu control code --- source/libs/fatfs/ff.c | 11 ++++------- source/tegraexplorer/gfx/menu.c | 34 ++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/source/libs/fatfs/ff.c b/source/libs/fatfs/ff.c index f1d251c..2464273 100644 --- a/source/libs/fatfs/ff.c +++ b/source/libs/fatfs/ff.c @@ -6114,9 +6114,6 @@ FRESULT f_fdisk ( DWORD sz_disk, p_sect, b_cyl, b_sect; FRESULT res; - BYTE *empty_buff; - empty_buff = ff_memcalloc(sizeof(BYTE), 16384); - stat = disk_initialize(pdrv); if (stat & STA_NOINIT) return FR_NOT_READY; if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; @@ -6169,14 +6166,14 @@ FRESULT f_fdisk ( st_dword(p + 8, b_sect); /* Start sector in LBA */ st_dword(p + 12, p_sect); /* Number of sectors */ /* Next partition */ - b_sect += p_sect; - for (int cursect = 0; cursect < 1024; cursect++){ - disk_write(pdrv, empty_buff, b_sect + (32 * cursect), 32); + for (u32 cursect = 0; cursect < 512; cursect++){ + disk_write(pdrv, buf + 0x4000, b_sect + (64 * cursect), 64); } + + b_sect += p_sect; } st_word(p, 0xAA55); /* MBR signature (always at offset 510) */ - ff_memfree(empty_buff); /* Write it to the MBR */ res = (disk_write(pdrv, buf, 0, 1) == RES_OK && disk_ioctl(pdrv, CTRL_SYNC, 0) == RES_OK) ? FR_OK : FR_DISK_ERR; diff --git a/source/tegraexplorer/gfx/menu.c b/source/tegraexplorer/gfx/menu.c index 223dcef..c5f808c 100644 --- a/source/tegraexplorer/gfx/menu.c +++ b/source/tegraexplorer/gfx/menu.c @@ -167,8 +167,8 @@ int menu_make(menu_entry *entries, int amount, const char *toptext){ while (hidRead()->buttons & (KEY_B | KEY_A)); - input->buttons = 0; - while (!(input->buttons & (KEY_A | KEY_LDOWN | KEY_LUP | KEY_B | KEY_RUP | KEY_RDOWN))){ + scrolltimer = get_tmr_ms(); + while (1){ if (sd_inited && !!gpio_read(GPIO_PORT_Z, GPIO_PIN_1)){ gfx_errDisplay("menu", ERR_SD_EJECTED, 0); sd_unmount(); @@ -177,9 +177,29 @@ int menu_make(menu_entry *entries, int amount, const char *toptext){ input = hidRead(); - if (!(input->buttons & (KEY_A | KEY_LDOWN | KEY_LUP | KEY_B | KEY_RUP | KEY_RDOWN))) + if (!(input->buttons & (KEY_A | KEY_LDOWN | KEY_LUP | KEY_B | KEY_RUP | KEY_RDOWN))){ delay = 300; + continue; + } + + if (input->buttons & (KEY_RDOWN | KEY_RUP)){ + delay = 1; + input->Lup = input->Rup; + input->Ldown = input->Rdown; + } + + + if (delay < 300){ + if (scrolltimer + delay < get_tmr_ms()){ + break; + } + } + else { + break; + } + + /* if (delay < 300){ scrolltimer = get_tmr_ms(); while (input->buttons & (KEY_A | KEY_LDOWN | KEY_LUP | KEY_B | KEY_RUP | KEY_RDOWN)){ @@ -195,15 +215,19 @@ int menu_make(menu_entry *entries, int amount, const char *toptext){ if (input->buttons & (KEY_RUP | KEY_RDOWN)) delay = 1; + */ } - if (input->buttons & (KEY_LUP | KEY_RUP) && currentpos >= 1){ + if (delay > 46) + delay -= 45; + + if (input->Lup && currentpos >= 1){ currentpos--; while(entries[currentpos].property & (ISSKIP | ISHIDE) && currentpos >= 1) currentpos--; } - else if (input->buttons & (KEY_LDOWN | KEY_RDOWN) && currentpos < amount - 1){ + else if (input->Ldown && currentpos < amount - 1){ currentpos++; while(entries[currentpos].property & (ISSKIP | ISHIDE) && currentpos < amount - 1) currentpos++;