emunand: Fix bugs and add missing stuff

This commit is contained in:
hexkyz 2019-04-06 20:01:11 +01:00
parent e5045556bf
commit c878e96398
3 changed files with 13 additions and 10 deletions

View file

@ -4,6 +4,10 @@ stage2_path = atmosphere/fusee-secondary.bin
stage2_addr = 0xF0000000 stage2_addr = 0xF0000000
stage2_entrypoint = 0xF0000000 stage2_entrypoint = 0xF0000000
[emunand]
emunand_enabled = 0
emunand_path = atmosphere/emunand
[exosphere] [exosphere]
; Note: Disabling debugmode will cause parts of ams.tma to not work, in the future. ; Note: Disabling debugmode will cause parts of ams.tma to not work, in the future.
debugmode = 1 debugmode = 1
@ -11,4 +15,4 @@ debugmode_user = 0
[stratosphere] [stratosphere]
; To force-enable nogc, add nogc = 1 ; To force-enable nogc, add nogc = 1
; To force-disable nogc, add nogc = 0 ; To force-disable nogc, add nogc = 0

View file

@ -37,7 +37,7 @@ static char g_bct0_buffer[BCTO_MAX_SIZE];
typedef struct { typedef struct {
bool enabled; bool enabled;
char* path; char path[0x100];
} emunand_config_t; } emunand_config_t;
#define CONFIG_LOG_LEVEL_KEY "log_level" #define CONFIG_LOG_LEVEL_KEY "log_level"
@ -159,11 +159,7 @@ int main(void) {
stage2_args_t *stage2_args; stage2_args_t *stage2_args;
uint32_t stage2_version = 0; uint32_t stage2_version = 0;
ScreenLogLevel log_level = SCREEN_LOG_LEVEL_MANDATORY; ScreenLogLevel log_level = SCREEN_LOG_LEVEL_MANDATORY;
emunand_config_t emunand_cfg = {0}; emunand_config_t emunand_cfg = {.enabled = false, .path = ""};
/* Set default values for emunand settings. */
emunand_cfg.enabled = false;
emunand_cfg.path = "atmosphere/emunand";
/* Override the global logging level. */ /* Override the global logging level. */
log_set_log_level(log_level); log_set_log_level(log_level);

View file

@ -294,9 +294,12 @@ int nxfs_mount_all(bool emunand_enabled, const char *emunand_path) {
char emu_boot0_path[0x100]; char emu_boot0_path[0x100];
char emu_boot1_path[0x100]; char emu_boot1_path[0x100];
char emu_rawnand_path[0x100]; char emu_rawnand_path[0x100];
snprintf(emu_boot0_path, sizeof(emu_boot0_path) - 1, "sdmc:/%s/%s", emunand_path, "boot0"); memset(emu_boot0_path, 0, sizeof(emu_boot0_path));
snprintf(emu_boot1_path, sizeof(emu_boot1_path) - 1, "sdmc:/%s/%s", emunand_path, "boot1"); memset(emu_boot1_path, 0, sizeof(emu_boot1_path));
snprintf(emu_rawnand_path, sizeof(emu_rawnand_path) - 1, "sdmc:/%s/%s", emunand_path, "rawnand"); memset(emu_rawnand_path, 0, sizeof(emu_rawnand_path));
snprintf(emu_boot0_path, sizeof(emu_boot0_path), "sdmc:/%s/%s", emunand_path, "boot0");
snprintf(emu_boot1_path, sizeof(emu_boot1_path), "sdmc:/%s/%s", emunand_path, "boot1");
snprintf(emu_rawnand_path, sizeof(emu_rawnand_path), "sdmc:/%s/%s", emunand_path, "rawnand");
/* Setup an emulation template for boot0. */ /* Setup an emulation template for boot0. */
model = g_emummc_devpart_template; model = g_emummc_devpart_template;