diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp
index acdcb78131..2407a9729a 100644
--- a/rpcs3/rpcs3qt/main_window.cpp
+++ b/rpcs3/rpcs3qt/main_window.cpp
@@ -468,6 +468,12 @@ void main_window::BootGame()
Boot(sstr(dir_path));
}
+void main_window::BootVSH()
+{
+ gui_log.notice("Booting from BootVSH...");
+ Boot(g_cfg.vfs.get_dev_flash() + "/vsh/module/vsh.self");
+}
+
void main_window::BootRsxCapture(std::string path)
{
if (path.empty())
@@ -1914,6 +1920,7 @@ void main_window::CreateConnects()
{
connect(ui->bootElfAct, &QAction::triggered, this, &main_window::BootElf);
connect(ui->bootGameAct, &QAction::triggered, this, &main_window::BootGame);
+ connect(ui->bootVSHAct, &QAction::triggered, this, &main_window::BootVSH);
connect(ui->actionopen_rsx_capture, &QAction::triggered, this, [this](){ BootRsxCapture(); });
connect(ui->actionCreate_RSX_Capture, &QAction::triggered, this, []()
{
diff --git a/rpcs3/rpcs3qt/main_window.h b/rpcs3/rpcs3qt/main_window.h
index b08f18d10e..d747d6b0a5 100644
--- a/rpcs3/rpcs3qt/main_window.h
+++ b/rpcs3/rpcs3qt/main_window.h
@@ -109,6 +109,7 @@ private Q_SLOTS:
void Boot(const std::string& path, const std::string& title_id = "", bool direct = false, bool add_only = false, bool force_global_config = false);
void BootElf();
void BootGame();
+ void BootVSH();
void BootRsxCapture(std::string path = "");
void DecryptSPRXLibraries();
static void show_boot_error(game_boot_result status);
diff --git a/rpcs3/rpcs3qt/main_window.ui b/rpcs3/rpcs3qt/main_window.ui
index 4295c4f003..0593aa54d3 100644
--- a/rpcs3/rpcs3qt/main_window.ui
+++ b/rpcs3/rpcs3qt/main_window.ui
@@ -188,6 +188,7 @@
+
@@ -1163,6 +1164,11 @@
Play Hover Gifs
+
+
+ Boot VSH/XMB
+
+