emummc: Fix emupath folder and add more checks

The checks are checking if the emuMMC was found. If it didn't  and error will be show.
This commit is contained in:
CTCaer 2020-05-05 19:23:31 +03:00
parent 5b91c54936
commit 7543234401
3 changed files with 28 additions and 14 deletions

View file

@ -465,8 +465,11 @@ void ini_list_launcher()
} }
} }
if (emummc_path) if (emummc_path && !emummc_set_path(emummc_path))
emummc_set_path(emummc_path); {
EPRINTF("emupath is wrong!");
goto wrong_emupath;
}
if (cfg_sec && !payload_path) if (cfg_sec && !payload_path)
check_sept(cfg_sec); check_sept(cfg_sec);
@ -497,15 +500,13 @@ void ini_list_launcher()
} }
else if (!hos_launch(cfg_sec)) else if (!hos_launch(cfg_sec))
{ {
EPRINTF("Failed to launch firmware."); wrong_emupath:
EPRINTF("Failed to launch HOS.");
if (emummc_path) if (emummc_path)
{ {
sd_mount(); sd_mount();
emummc_load_cfg(); emummc_load_cfg();
} }
btn_wait();
} }
out: out:
@ -605,8 +606,11 @@ void launch_firmware()
} }
} }
if (emummc_path) if (emummc_path && !emummc_set_path(emummc_path))
emummc_set_path(emummc_path); {
EPRINTF("emupath is wrong!");
goto wrong_emupath;
}
if (cfg_sec && !payload_path) if (cfg_sec && !payload_path)
check_sept(cfg_sec); check_sept(cfg_sec);
@ -642,7 +646,8 @@ void launch_firmware()
} }
else if (!hos_launch(cfg_sec)) else if (!hos_launch(cfg_sec))
{ {
EPRINTF("Failed to launch firmware."); wrong_emupath:
EPRINTF("Failed to launch HOS.");
if (emummc_path) if (emummc_path)
{ {
sd_mount(); sd_mount();
@ -1034,8 +1039,13 @@ skip_list:
{ {
if (b_cfg.boot_cfg & BOOT_CFG_TO_EMUMMC) if (b_cfg.boot_cfg & BOOT_CFG_TO_EMUMMC)
emummc_set_path(b_cfg.emummc_path); emummc_set_path(b_cfg.emummc_path);
else if (emummc_path) else if (emummc_path && !emummc_set_path(emummc_path))
emummc_set_path(emummc_path); {
gfx_con.mute = false;
EPRINTF("emupath is wrong!");
goto wrong_emupath;
}
check_sept(cfg_sec); check_sept(cfg_sec);
hos_launch(cfg_sec); hos_launch(cfg_sec);
@ -1045,6 +1055,8 @@ skip_list:
emummc_load_cfg(); emummc_load_cfg();
} }
wrong_emupath:
display_backlight_brightness(h_cfg.backlight, 1000);
EPRINTF("\nFailed to launch HOS!"); EPRINTF("\nFailed to launch HOS!");
gfx_printf("\nPress any key...\n"); gfx_printf("\nPress any key...\n");
msleep(500); msleep(500);

View file

@ -72,7 +72,7 @@ void emummc_load_cfg()
} }
} }
void emummc_set_path(char *path) bool emummc_set_path(char *path)
{ {
FIL fp; FIL fp;
bool found = false; bool found = false;
@ -105,8 +105,10 @@ void emummc_set_path(char *path)
emu_cfg.enabled = 1; emu_cfg.enabled = 1;
emu_cfg.id = 0; emu_cfg.id = 0;
strcpy(emu_cfg.nintendo_path, path); strcpy(emu_cfg.nintendo_path, path);
strcpy(emu_cfg.nintendo_path, "/Nintendo"); strcat(emu_cfg.nintendo_path, "/Nintendo");
} }
return found;
} }
static int emummc_raw_get_part_off(int part_idx) static int emummc_raw_get_part_off(int part_idx)

View file

@ -50,7 +50,7 @@ typedef struct _emummc_cfg_t
emummc_cfg_t emu_cfg; emummc_cfg_t emu_cfg;
void emummc_load_cfg(); void emummc_load_cfg();
void emummc_set_path(char *path); bool emummc_set_path(char *path);
int emummc_storage_init_mmc(sdmmc_storage_t *storage, sdmmc_t *sdmmc); int emummc_storage_init_mmc(sdmmc_storage_t *storage, sdmmc_t *sdmmc);
int emummc_storage_end(sdmmc_storage_t *storage); int emummc_storage_end(sdmmc_storage_t *storage);
int emummc_storage_read(sdmmc_storage_t *storage, u32 sector, u32 num_sectors, void *buf); int emummc_storage_read(sdmmc_storage_t *storage, u32 sector, u32 num_sectors, void *buf);