Scripting: nextemu command and EMUBASE global var

This commit is contained in:
d0k3 2018-06-14 00:24:07 +02:00
parent e4352d4cb0
commit ff86444e2c

View File

@ -117,6 +117,7 @@ typedef enum {
CMD_ID_EXIST, CMD_ID_EXIST,
CMD_ID_BOOT, CMD_ID_BOOT,
CMD_ID_SWITCHSD, CMD_ID_SWITCHSD,
CMD_ID_NEXTEMU,
CMD_ID_REBOOT, CMD_ID_REBOOT,
CMD_ID_POWEROFF, CMD_ID_POWEROFF,
CMD_ID_BKPT CMD_ID_BKPT
@ -187,6 +188,7 @@ Gm9ScriptCmd cmd_list[] = {
{ CMD_ID_EXIST , "exist" , 1, 0 }, { CMD_ID_EXIST , "exist" , 1, 0 },
{ CMD_ID_BOOT , "boot" , 1, 0 }, { CMD_ID_BOOT , "boot" , 1, 0 },
{ CMD_ID_SWITCHSD, "switchsd", 1, 0 }, { CMD_ID_SWITCHSD, "switchsd", 1, 0 },
{ CMD_ID_NEXTEMU , "nextemu" , 0, 0 },
{ CMD_ID_REBOOT , "reboot" , 0, 0 }, { CMD_ID_REBOOT , "reboot" , 0, 0 },
{ CMD_ID_POWEROFF, "poweroff", 0, 0 }, { CMD_ID_POWEROFF, "poweroff", 0, 0 },
{ CMD_ID_BKPT , "bkpt" , 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, "DATESTAMP", _VAR_NAME_LEN) == 0)) set_var("DATESTAMP", env_date);
if (!name || (strncmp(name, "TIMESTAMP", _VAR_NAME_LEN) == 0)) set_var("TIMESTAMP", env_time); 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) { 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); AutoEmuNandBase(true);
InitExtFS(); InitExtFS();
} }
else if (id == CMD_ID_NEXTEMU) {
DismountDriveType(DRV_EMUNAND);
AutoEmuNandBase(false);
InitExtFS();
}
else if (id == CMD_ID_REBOOT) { else if (id == CMD_ID_REBOOT) {
DeinitExtFS(); DeinitExtFS();
DeinitSDCardFS(); DeinitSDCardFS();