From b9db86f89b0c15129467fac5dbced7634404616d Mon Sep 17 00:00:00 2001 From: fgsfds Date: Sun, 7 Jan 2024 22:05:31 +0100 Subject: [PATCH] port: add command line parameter to select player file --- port/src/main.c | 7 +++++++ src/game/filemgr.c | 10 ++++++++++ src/include/data.h | 1 + 3 files changed, 18 insertions(+) diff --git a/port/src/main.c b/port/src/main.c index 8f8ec2af8..006353cf7 100644 --- a/port/src/main.c +++ b/port/src/main.c @@ -39,6 +39,8 @@ s32 g_TickRateDiv = 1; s32 g_SkipIntro = false; +s32 g_FileAutoSelect = -1; + extern s32 g_StageNum; s32 bootGetMemSize(void) @@ -142,6 +144,11 @@ int main(int argc, const char **argv) sysLogPrintf(LOG_NOTE, "boot stage set to 0x%02x", g_StageNum); } + g_FileAutoSelect = sysArgGetInt("--profile", -1); + if (g_FileAutoSelect >= 0) { + sysLogPrintf(LOG_NOTE, "player profile set to %d", g_FileAutoSelect); + } + mainProc(); return 0; diff --git a/src/game/filemgr.c b/src/game/filemgr.c index 6d7184cf1..aac819ad1 100644 --- a/src/game/filemgr.c +++ b/src/game/filemgr.c @@ -2592,6 +2592,16 @@ MenuItemHandlerResult filemgrChooseAgentListMenuHandler(s32 operation, struct me } } } + +#ifndef PLATFORM_N64 + if (g_FileAutoSelect >= 0 && g_FileLists[0] && g_FileLists[0]->numfiles > 0) { + const u32 tmp = data->list.value; + data->list.value = g_FileAutoSelect; + g_FileAutoSelect = -1; + filemgrChooseAgentListMenuHandler(MENUOP_SET, item, data); + data->list.value = tmp; + } +#endif break; case MENUOP_GETOPTIONCOUNT: data->list.value = g_FileLists[0]->numfiles + 1; diff --git a/src/include/data.h b/src/include/data.h index 315c8bb17..e513c6f10 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -549,6 +549,7 @@ extern bool g_BlurFbDirty; extern s32 g_TickRateDiv; extern s32 g_MusicDisableMpDeath; extern s32 g_BgunGeMuzzleFlashes; +extern s32 g_FileAutoSelect; #define PLAYER_EXTCFG() g_PlayerExtCfg[g_Vars.currentplayerstats->mpindex & 3] #define PLAYER_DEFAULT_FOV (PLAYER_EXTCFG().fovy)