diff --git a/port/src/main.c b/port/src/main.c index c6ace0187..4e6ebfb15 100644 --- a/port/src/main.c +++ b/port/src/main.c @@ -41,6 +41,10 @@ s32 g_TickRateDiv = 1; s32 g_SkipIntro = false; +s32 g_FileAutoSelect = -1; + +extern s32 g_StageNum; + s32 bootGetMemSize(void) { return (s32)g_OsMemSize; @@ -145,6 +149,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 a5f904bfe..3cee8c3c0 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 d2d3438c7..327816ae2 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -552,6 +552,7 @@ extern bool g_BlurFbDirty; extern s32 g_TickRateDiv; extern s32 g_MusicDisableMpDeath; extern s32 g_BgunGeMuzzleFlashes; +extern s32 g_FileAutoSelect; extern s32 g_NetMode;