From ff86444e2c1c28a8a0981829b142983277be1e11 Mon Sep 17 00:00:00 2001 From: d0k3 Date: Thu, 14 Jun 2018 00:24:07 +0200 Subject: [PATCH] Scripting: nextemu command and EMUBASE global var --- arm9/source/utils/scripting.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arm9/source/utils/scripting.c b/arm9/source/utils/scripting.c index 9b26dea..9af5423 100644 --- a/arm9/source/utils/scripting.c +++ b/arm9/source/utils/scripting.c @@ -117,6 +117,7 @@ typedef enum { CMD_ID_EXIST, CMD_ID_BOOT, CMD_ID_SWITCHSD, + CMD_ID_NEXTEMU, CMD_ID_REBOOT, CMD_ID_POWEROFF, CMD_ID_BKPT @@ -187,6 +188,7 @@ Gm9ScriptCmd cmd_list[] = { { CMD_ID_EXIST , "exist" , 1, 0 }, { CMD_ID_BOOT , "boot" , 1, 0 }, { CMD_ID_SWITCHSD, "switchsd", 1, 0 }, + { CMD_ID_NEXTEMU , "nextemu" , 0, 0 }, { CMD_ID_REBOOT , "reboot" , 0, 0 }, { CMD_ID_POWEROFF, "poweroff", 0, 0 }, { CMD_ID_BKPT , "bkpt" , 0, 0 } @@ -418,6 +420,14 @@ void upd_var(const char* name) { if (!name || (strncmp(name, "DATESTAMP", _VAR_NAME_LEN) == 0)) set_var("DATESTAMP", env_date); if (!name || (strncmp(name, "TIMESTAMP", _VAR_NAME_LEN) == 0)) set_var("TIMESTAMP", env_time); } + + // emunand base sector + if (!name || (strncmp(name, "EMUBASE", _VAR_NAME_LEN) == 0)) { + u32 emu_base = GetEmuNandBase(); + char emu_base_str[8+1]; + snprintf(emu_base_str, 8+1, "%08lX", emu_base); + set_var("EMUBASE", emu_base_str); + } } char* get_var(const char* name, char** endptr) { @@ -1397,6 +1407,11 @@ bool run_cmd(cmd_id id, u32 flags, char** argv, char* err_str) { AutoEmuNandBase(true); InitExtFS(); } + else if (id == CMD_ID_NEXTEMU) { + DismountDriveType(DRV_EMUNAND); + AutoEmuNandBase(false); + InitExtFS(); + } else if (id == CMD_ID_REBOOT) { DeinitExtFS(); DeinitSDCardFS();