diff --git a/Core/CmdLine.cpp b/Core/CmdLine.cpp index 92526ad8cd..15de1d4b8a 100644 --- a/Core/CmdLine.cpp +++ b/Core/CmdLine.cpp @@ -294,6 +294,7 @@ static const CommandLineParam g_autoParams[] = { {POFF(yres), CmdParamType::Int, "yres", '\0', "Set Y resolution", CmdLineMode::Application}, {POFF(dpi), CmdParamType::Double, "dpi", '\0', "Set DPI", CmdLineMode::Application}, {POFF(scale), CmdParamType::Double, "scale", '\0', "Set scale", CmdLineMode::Application}, + {POFF(skipLogo), CmdParamType::Bool, "skip-logo", '\0', "Skip the logo screen", CmdLineMode::Application}, // TODO: At some point we should maybe simply expose all config settings to be set directly from the command line automatically? }; diff --git a/Core/CmdLine.h b/Core/CmdLine.h index 76792e516f..2920ac0ee7 100644 --- a/Core/CmdLine.h +++ b/Core/CmdLine.h @@ -36,6 +36,7 @@ struct CommandLineOptions { // --graphics=null: headless only, see GPU_Null.h. std::optional nullGraphics; std::optional enableLogging; + std::optional skipLogo; std::optional logLevel; // Override log level with this. std::optional log; std::vector bootFilenames; diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index 6c3f2a73cb..2ffd9cc48e 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -757,9 +757,14 @@ void NativeInit(int argc, const char *argv[], const CommandLineOptions &cmdLineO cmdLineOptions.ApplyToConfig(); g_cmdLineOptions = cmdLineOptions; + if (cmdLineOptions.skipLogo.value_or(false)) { + skipLogo = true; + } + boot_filename.clear(); if (boot_filename.empty() && cmdLineOptions.bootVSH.value_or(false)) { boot_filename = g_Config.nandRootDirectory / "flash0/vsh/module/vshmain.prx"; + skipLogo = true; } boot_mountIso = cmdLineOptions.mountIso.has_value() ? Path(cmdLineOptions.mountIso.value()) : Path(); @@ -895,8 +900,10 @@ void NativeInit(int argc, const char *argv[], const CommandLineOptions &cmdLineO } else if (skipLogo && !boot_filename.empty()) { INFO_LOG(Log::System, "Launching EmuScreen with boot filename '%s'", boot_filename.c_str()); g_screenManager->switchScreen(new EmuScreen(boot_filename, boot_mountIso)); - } else { + } else if (!skipLogo) { g_screenManager->switchScreen(new LogoScreen(AfterLogoScreen::DEFAULT)); + } else { + g_screenManager->switchScreen(new MainScreen()); } g_screenManager->SetBackgroundOverlayScreens(new BackgroundScreen(), new OSDOverlayScreen());