mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-26 04:46:53 +01:00
add configurable Vulkan present modes
Co-authored-by: Techx3 <56268269+Techx3@users.noreply.github.com>
This commit is contained in:
@@ -529,6 +529,11 @@ if(BUILD_TESTING)
|
|||||||
add_test(NAME emulator_user_name_too_long
|
add_test(NAME emulator_user_name_too_long
|
||||||
COMMAND $<TARGET_FILE:kyty_emulator> --help --user-name 12345678901234567)
|
COMMAND $<TARGET_FILE:kyty_emulator> --help --user-name 12345678901234567)
|
||||||
set_tests_properties(emulator_user_name_too_long PROPERTIES WILL_FAIL TRUE)
|
set_tests_properties(emulator_user_name_too_long PROPERTIES WILL_FAIL TRUE)
|
||||||
|
add_test(NAME emulator_present_mode_cli
|
||||||
|
COMMAND $<TARGET_FILE:kyty_emulator> --help --present-mode Immediate)
|
||||||
|
add_test(NAME emulator_present_mode_invalid
|
||||||
|
COMMAND $<TARGET_FILE:kyty_emulator> --help --present-mode Invalid)
|
||||||
|
set_tests_properties(emulator_present_mode_invalid PROPERTIES WILL_FAIL TRUE)
|
||||||
add_test(NAME ime_dialog COMMAND $<TARGET_FILE:ime_dialog_tests>)
|
add_test(NAME ime_dialog COMMAND $<TARGET_FILE:ime_dialog_tests>)
|
||||||
add_test(NAME shader_cfg COMMAND $<TARGET_FILE:shader_cfg_tests>)
|
add_test(NAME shader_cfg COMMAND $<TARGET_FILE:shader_cfg_tests>)
|
||||||
add_test(NAME scalar_provenance COMMAND $<TARGET_FILE:scalar_provenance_tests>)
|
add_test(NAME scalar_provenance COMMAND $<TARGET_FILE:scalar_provenance_tests>)
|
||||||
|
|||||||
@@ -38,6 +38,10 @@ const std::string& GetUserName() {
|
|||||||
return g_config->user_name;
|
return g_config->user_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PresentMode GetPresentMode() {
|
||||||
|
return g_config->present_mode;
|
||||||
|
}
|
||||||
|
|
||||||
bool FullscreenEnabled() {
|
bool FullscreenEnabled() {
|
||||||
return g_config->fullscreen_enabled;
|
return g_config->fullscreen_enabled;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ enum class ProfilerDirection { None, Network };
|
|||||||
|
|
||||||
enum class OutputDirection { Silent, Console, File };
|
enum class OutputDirection { Silent, Console, File };
|
||||||
|
|
||||||
|
enum class PresentMode { Fifo, Mailbox, Immediate };
|
||||||
|
|
||||||
using Keymap = std::vector<std::string>;
|
using Keymap = std::vector<std::string>;
|
||||||
|
|
||||||
constexpr uint32_t DEFAULT_CONSOLE_LANGUAGE = 1;
|
constexpr uint32_t DEFAULT_CONSOLE_LANGUAGE = 1;
|
||||||
@@ -37,6 +39,7 @@ struct ConfigOptions {
|
|||||||
uint32_t screen_width = 1280;
|
uint32_t screen_width = 1280;
|
||||||
uint32_t screen_height = 720;
|
uint32_t screen_height = 720;
|
||||||
std::string user_name = "Kyty";
|
std::string user_name = "Kyty";
|
||||||
|
PresentMode present_mode = PresentMode::Fifo;
|
||||||
bool fullscreen_enabled = false;
|
bool fullscreen_enabled = false;
|
||||||
uint32_t vblank_frequency = 60;
|
uint32_t vblank_frequency = 60;
|
||||||
uint32_t console_language = DEFAULT_CONSOLE_LANGUAGE;
|
uint32_t console_language = DEFAULT_CONSOLE_LANGUAGE;
|
||||||
@@ -67,6 +70,7 @@ void Load(const ConfigOptions& cfg);
|
|||||||
uint32_t GetScreenWidth();
|
uint32_t GetScreenWidth();
|
||||||
uint32_t GetScreenHeight();
|
uint32_t GetScreenHeight();
|
||||||
const std::string& GetUserName();
|
const std::string& GetUserName();
|
||||||
|
PresentMode GetPresentMode();
|
||||||
bool FullscreenEnabled();
|
bool FullscreenEnabled();
|
||||||
uint32_t GetVblankFrequency();
|
uint32_t GetVblankFrequency();
|
||||||
uint32_t GetConsoleLanguage();
|
uint32_t GetConsoleLanguage();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/common.h"
|
#include "common/common.h"
|
||||||
|
#include "common/emulatorConfig.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "common/profiler.h"
|
#include "common/profiler.h"
|
||||||
#include "common/threads.h"
|
#include "common/threads.h"
|
||||||
@@ -428,7 +429,21 @@ void Swapchain::Create() {
|
|||||||
create_info.imageSharingMode = vk::SharingMode::eExclusive;
|
create_info.imageSharingMode = vk::SharingMode::eExclusive;
|
||||||
create_info.preTransform = transform;
|
create_info.preTransform = transform;
|
||||||
create_info.compositeAlpha = composite;
|
create_info.compositeAlpha = composite;
|
||||||
create_info.presentMode = vk::PresentModeKHR::eFifo;
|
switch (Config::GetPresentMode()) {
|
||||||
|
case Config::PresentMode::Mailbox:
|
||||||
|
create_info.presentMode = vk::PresentModeKHR::eMailbox;
|
||||||
|
break;
|
||||||
|
case Config::PresentMode::Immediate:
|
||||||
|
create_info.presentMode = vk::PresentModeKHR::eImmediate;
|
||||||
|
break;
|
||||||
|
case Config::PresentMode::Fifo:
|
||||||
|
default: create_info.presentMode = vk::PresentModeKHR::eFifo; break;
|
||||||
|
}
|
||||||
|
if (std::find(surface.present_modes.begin(), surface.present_modes.end(),
|
||||||
|
create_info.presentMode) == surface.present_modes.end()) {
|
||||||
|
LOGF("warning: requested present mode is unavailable; falling back to Fifo\n");
|
||||||
|
create_info.presentMode = vk::PresentModeKHR::eFifo;
|
||||||
|
}
|
||||||
create_info.clipped = VK_TRUE;
|
create_info.clipped = VK_TRUE;
|
||||||
RequireVulkanSuccess(graphics.device.createSwapchainKHR(&create_info, nullptr, &m_handle),
|
RequireVulkanSuccess(graphics.device.createSwapchainKHR(&create_info, nullptr, &m_handle),
|
||||||
"vkCreateSwapchainKHR");
|
"vkCreateSwapchainKHR");
|
||||||
|
|||||||
@@ -133,13 +133,27 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_present_mode">
|
||||||
|
<property name="text">
|
||||||
|
<string>Present mode:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_present_mode">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Vulkan swapchain presentation mode</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
<widget class="QLabel" name="label_vblank_frequency">
|
<widget class="QLabel" name="label_vblank_frequency">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Vblank frequency:</string>
|
<string>Vblank frequency:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QSpinBox" name="spinBox_vblank_frequency">
|
<widget class="QSpinBox" name="spinBox_vblank_frequency">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Virtual display refresh rate used for frame pacing</string>
|
<string>Virtual display refresh rate used for frame pacing</string>
|
||||||
@@ -155,56 +169,56 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="0">
|
<item row="5" column="0">
|
||||||
<widget class="QLabel" name="label_console_language">
|
<widget class="QLabel" name="label_console_language">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Console language:</string>
|
<string>Console language:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="QComboBox" name="comboBox_console_language">
|
<widget class="QComboBox" name="comboBox_console_language">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Language</string>
|
<string>Language</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QLabel" name="label_20">
|
<widget class="QLabel" name="label_20">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Shader optimization type:</string>
|
<string>Shader optimization type:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1">
|
<item row="6" column="1">
|
||||||
<widget class="QComboBox" name="comboBox_shader_optimization_type">
|
<widget class="QComboBox" name="comboBox_shader_optimization_type">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Optimize shaders for code size or performance</string>
|
<string>Optimize shaders for code size or performance</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0">
|
<item row="7" column="0">
|
||||||
<widget class="QLabel" name="label_21">
|
<widget class="QLabel" name="label_21">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Shader log direction:</string>
|
<string>Shader log direction:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1">
|
<item row="7" column="1">
|
||||||
<widget class="QComboBox" name="comboBox_shader_log_direction">
|
<widget class="QComboBox" name="comboBox_shader_log_direction">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Dump shaders to file or console window. If enabled may decrease emulator performance</string>
|
<string>Dump shaders to file or console window. If enabled may decrease emulator performance</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="8" column="0">
|
||||||
<widget class="QLabel" name="label_22">
|
<widget class="QLabel" name="label_22">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Shader log folder:</string>
|
<string>Shader log folder:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item row="8" column="1">
|
||||||
<widget class="MandatoryLineEdit" name="lineEdit_shader_log_folder">
|
<widget class="MandatoryLineEdit" name="lineEdit_shader_log_folder">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Specify directory to dump shaders</string>
|
<string>Specify directory to dump shaders</string>
|
||||||
@@ -214,14 +228,14 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0">
|
<item row="9" column="0">
|
||||||
<widget class="QLabel" name="label_24">
|
<widget class="QLabel" name="label_24">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Command buffer dump folder:</string>
|
<string>Command buffer dump folder:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="1">
|
<item row="9" column="1">
|
||||||
<widget class="MandatoryLineEdit" name="lineEdit_cmd_dump_folder">
|
<widget class="MandatoryLineEdit" name="lineEdit_cmd_dump_folder">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Specify directory to dump command buffers</string>
|
<string>Specify directory to dump command buffers</string>
|
||||||
@@ -231,28 +245,28 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="0">
|
<item row="10" column="0">
|
||||||
<widget class="QLabel" name="label_25">
|
<widget class="QLabel" name="label_25">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Printf direction:</string>
|
<string>Printf direction:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="1">
|
<item row="10" column="1">
|
||||||
<widget class="QComboBox" name="comboBox_printf_direction">
|
<widget class="QComboBox" name="comboBox_printf_direction">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Print logs to file or console window. If enabled may decrease emulator performance</string>
|
<string>Print logs to file or console window. If enabled may decrease emulator performance</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="0">
|
<item row="11" column="0">
|
||||||
<widget class="QLabel" name="label_26">
|
<widget class="QLabel" name="label_26">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Printf output file:</string>
|
<string>Printf output file:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="1">
|
<item row="11" column="1">
|
||||||
<widget class="MandatoryLineEdit" name="lineEdit_printf_file">
|
<widget class="MandatoryLineEdit" name="lineEdit_printf_file">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Specify file to dump logs</string>
|
<string>Specify file to dump logs</string>
|
||||||
@@ -262,14 +276,14 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="0">
|
<item row="12" column="0">
|
||||||
<widget class="QLabel" name="label_27">
|
<widget class="QLabel" name="label_27">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Profiler direction:</string>
|
<string>Profiler direction:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="1">
|
<item row="12" column="1">
|
||||||
<widget class="QComboBox" name="comboBox_profiler_direction">
|
<widget class="QComboBox" name="comboBox_profiler_direction">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Enable or disable profiler. If enabled may decrease emulator performance</string>
|
<string>Enable or disable profiler. If enabled may decrease emulator performance</string>
|
||||||
|
|||||||
@@ -62,6 +62,9 @@ public:
|
|||||||
enum class ShaderOptimizationType { None, Size, Performance };
|
enum class ShaderOptimizationType { None, Size, Performance };
|
||||||
Q_ENUM(ShaderOptimizationType)
|
Q_ENUM(ShaderOptimizationType)
|
||||||
|
|
||||||
|
enum class PresentMode { Fifo, Mailbox, Immediate };
|
||||||
|
Q_ENUM(PresentMode)
|
||||||
|
|
||||||
enum class ShaderLogDirection { Silent, Console, File };
|
enum class ShaderLogDirection { Silent, Console, File };
|
||||||
Q_ENUM(ShaderLogDirection)
|
Q_ENUM(ShaderLogDirection)
|
||||||
|
|
||||||
@@ -88,6 +91,7 @@ public:
|
|||||||
|
|
||||||
Resolution screen_resolution = Resolution::R1280X720;
|
Resolution screen_resolution = Resolution::R1280X720;
|
||||||
QString user_name = "Kyty";
|
QString user_name = "Kyty";
|
||||||
|
PresentMode present_mode = PresentMode::Fifo;
|
||||||
bool fullscreen_enabled = false;
|
bool fullscreen_enabled = false;
|
||||||
int vblank_frequency = 60;
|
int vblank_frequency = 60;
|
||||||
int console_language = DEFAULT_CONSOLE_LANGUAGE;
|
int console_language = DEFAULT_CONSOLE_LANGUAGE;
|
||||||
@@ -112,6 +116,7 @@ public:
|
|||||||
void CopyEmulatorSettingsFrom(const Configuration& other) {
|
void CopyEmulatorSettingsFrom(const Configuration& other) {
|
||||||
screen_resolution = other.screen_resolution;
|
screen_resolution = other.screen_resolution;
|
||||||
user_name = other.user_name;
|
user_name = other.user_name;
|
||||||
|
present_mode = other.present_mode;
|
||||||
fullscreen_enabled = other.fullscreen_enabled;
|
fullscreen_enabled = other.fullscreen_enabled;
|
||||||
vblank_frequency = other.vblank_frequency;
|
vblank_frequency = other.vblank_frequency;
|
||||||
console_language = other.console_language;
|
console_language = other.console_language;
|
||||||
@@ -153,6 +158,7 @@ public:
|
|||||||
KYTY_CFG_SET(custom_settings);
|
KYTY_CFG_SET(custom_settings);
|
||||||
KYTY_CFG_SET(screen_resolution);
|
KYTY_CFG_SET(screen_resolution);
|
||||||
KYTY_CFG_SET(user_name);
|
KYTY_CFG_SET(user_name);
|
||||||
|
KYTY_CFG_SET(present_mode);
|
||||||
KYTY_CFG_SET(fullscreen_enabled);
|
KYTY_CFG_SET(fullscreen_enabled);
|
||||||
KYTY_CFG_SET(vblank_frequency);
|
KYTY_CFG_SET(vblank_frequency);
|
||||||
KYTY_CFG_SET(console_language);
|
KYTY_CFG_SET(console_language);
|
||||||
@@ -181,6 +187,10 @@ public:
|
|||||||
KYTY_CFG_GET(custom_settings);
|
KYTY_CFG_GET(custom_settings);
|
||||||
KYTY_CFG_GET(screen_resolution);
|
KYTY_CFG_GET(screen_resolution);
|
||||||
user_name = s->value("user_name", user_name).toString();
|
user_name = s->value("user_name", user_name).toString();
|
||||||
|
KYTY_CFG_GET(present_mode);
|
||||||
|
if (EnumToText(present_mode).isEmpty()) {
|
||||||
|
present_mode = PresentMode::Fifo;
|
||||||
|
}
|
||||||
KYTY_CFG_GET(fullscreen_enabled);
|
KYTY_CFG_GET(fullscreen_enabled);
|
||||||
vblank_frequency = s->value("vblank_frequency", vblank_frequency).toInt();
|
vblank_frequency = s->value("vblank_frequency", vblank_frequency).toInt();
|
||||||
console_language = s->value("console_language", console_language).toInt();
|
console_language = s->value("console_language", console_language).toInt();
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ void ConfigurationEditDialog::Init(const Configuration& info) {
|
|||||||
m_ui->lineEdit_user_name->setMaxLength(static_cast<int>(Config::MAX_USER_NAME_LENGTH));
|
m_ui->lineEdit_user_name->setMaxLength(static_cast<int>(Config::MAX_USER_NAME_LENGTH));
|
||||||
m_ui->lineEdit_user_name->setText(info.user_name);
|
m_ui->lineEdit_user_name->setText(info.user_name);
|
||||||
ListInit(m_ui->comboBox_screen_resolution, info.screen_resolution);
|
ListInit(m_ui->comboBox_screen_resolution, info.screen_resolution);
|
||||||
|
ListInit(m_ui->comboBox_present_mode, info.present_mode);
|
||||||
m_ui->checkBox_fullscreen->setChecked(info.fullscreen_enabled);
|
m_ui->checkBox_fullscreen->setChecked(info.fullscreen_enabled);
|
||||||
m_ui->spinBox_vblank_frequency->setValue(info.vblank_frequency);
|
m_ui->spinBox_vblank_frequency->setValue(info.vblank_frequency);
|
||||||
m_ui->comboBox_console_language->clear();
|
m_ui->comboBox_console_language->clear();
|
||||||
@@ -290,6 +291,8 @@ static void UpdateInfo(Configuration& info, Ui::ConfigurationEditDialog& ui) {
|
|||||||
info.user_name = ui.lineEdit_user_name->text().trimmed();
|
info.user_name = ui.lineEdit_user_name->text().trimmed();
|
||||||
info.screen_resolution =
|
info.screen_resolution =
|
||||||
TextToEnum<Configuration::Resolution>(ui.comboBox_screen_resolution->currentText());
|
TextToEnum<Configuration::Resolution>(ui.comboBox_screen_resolution->currentText());
|
||||||
|
info.present_mode =
|
||||||
|
TextToEnum<Configuration::PresentMode>(ui.comboBox_present_mode->currentText());
|
||||||
info.fullscreen_enabled = ui.checkBox_fullscreen->isChecked();
|
info.fullscreen_enabled = ui.checkBox_fullscreen->isChecked();
|
||||||
info.vblank_frequency = ui.spinBox_vblank_frequency->value();
|
info.vblank_frequency = ui.spinBox_vblank_frequency->value();
|
||||||
info.console_language = ui.comboBox_console_language->currentIndex();
|
info.console_language = ui.comboBox_console_language->currentIndex();
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ static QStringList CreateEmulatorArgs(const Configuration& info) {
|
|||||||
args << "--screen-width" << r.at(0);
|
args << "--screen-width" << r.at(0);
|
||||||
args << "--screen-height" << r.at(1);
|
args << "--screen-height" << r.at(1);
|
||||||
args << "--user-name" << info.user_name;
|
args << "--user-name" << info.user_name;
|
||||||
|
args << "--present-mode" << EnumToText(info.present_mode);
|
||||||
if (info.fullscreen_enabled) {
|
if (info.fullscreen_enabled) {
|
||||||
args << "--fullscreen";
|
args << "--fullscreen";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ static void PrintUsage() {
|
|||||||
::printf(" --screen-height <num> Window height. Default: 720.\n");
|
::printf(" --screen-height <num> Window height. Default: 720.\n");
|
||||||
::printf(
|
::printf(
|
||||||
" --user-name <name> Local user name (1-16 bytes). Default: Kyty.\n");
|
" --user-name <name> Local user name (1-16 bytes). Default: Kyty.\n");
|
||||||
|
::printf(" --present-mode <value> Fifo, Mailbox, or Immediate. Default: Fifo.\n");
|
||||||
::printf(" --fullscreen Run in borderless desktop fullscreen.\n");
|
::printf(" --fullscreen Run in borderless desktop fullscreen.\n");
|
||||||
::printf(" --vblank-frequency <num> Virtual vblank frequency. Default: 60.\n");
|
::printf(" --vblank-frequency <num> Virtual vblank frequency. Default: 60.\n");
|
||||||
::printf(" --console-language <0-29> Console language. Default: 1 (English US).\n");
|
::printf(" --console-language <0-29> Console language. Default: 1 (English US).\n");
|
||||||
@@ -210,6 +211,11 @@ static bool ParseArgs(int argc, char* argv[], RunOptions& options, bool& show_he
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
options.config.user_name = value;
|
options.config.user_name = value;
|
||||||
|
} else if (arg == "--present-mode") {
|
||||||
|
if (!ParseEnum(value, options.config.present_mode)) {
|
||||||
|
::printf("invalid present mode: %s\n", value.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else if (arg == "--vblank-frequency") {
|
} else if (arg == "--vblank-frequency") {
|
||||||
const int32_t vblank_frequency = Common::ToInt32(value);
|
const int32_t vblank_frequency = Common::ToInt32(value);
|
||||||
options.config.vblank_frequency =
|
options.config.vblank_frequency =
|
||||||
|
|||||||
Reference in New Issue
Block a user