From efa7d8d04b4738bca213c29d346e73d0b97cb18a Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Fri, 28 Jun 2019 18:37:33 -0400 Subject: [PATCH 1/2] settings: Add config option for kiosk (quest) mode --- src/core/settings.h | 1 + src/yuzu/configuration/config.cpp | 2 ++ src/yuzu/configuration/configure_debug.cpp | 2 ++ src/yuzu/configuration/configure_debug.ui | 18 +++++++++++++++++- src/yuzu_cmd/config.cpp | 1 + src/yuzu_cmd/default_ini.h | 3 +++ 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/core/settings.h b/src/core/settings.h index e2ffcaaf7..0e0b4e15c 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -416,6 +416,7 @@ struct Values { bool dump_exefs; bool dump_nso; bool reporting_services; + bool quest_flag; // WebService bool enable_telemetry; diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 5a456e603..781771e16 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -475,6 +475,7 @@ void Config::ReadDebuggingValues() { Settings::values.dump_nso = ReadSetting(QStringLiteral("dump_nso"), false).toBool(); Settings::values.reporting_services = ReadSetting(QStringLiteral("reporting_services"), false).toBool(); + Settings::values.quest_flag = ReadSetting(QStringLiteral("quest_flag"), false).toBool(); qt_config->endGroup(); } @@ -858,6 +859,7 @@ void Config::SaveDebuggingValues() { QString::fromStdString(Settings::values.program_args), QStringLiteral("")); WriteSetting(QStringLiteral("dump_exefs"), Settings::values.dump_exefs, false); WriteSetting(QStringLiteral("dump_nso"), Settings::values.dump_nso, false); + WriteSetting(QStringLiteral("quest_flag"), Settings::values.quest_flag, false); qt_config->endGroup(); } diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp index 63426fe4f..9a13bb797 100644 --- a/src/yuzu/configuration/configure_debug.cpp +++ b/src/yuzu/configuration/configure_debug.cpp @@ -37,6 +37,7 @@ void ConfigureDebug::SetConfiguration() { ui->dump_exefs->setChecked(Settings::values.dump_exefs); ui->dump_decompressed_nso->setChecked(Settings::values.dump_nso); ui->reporting_services->setChecked(Settings::values.reporting_services); + ui->quest_flag->setChecked(Settings::values.quest_flag); } void ConfigureDebug::ApplyConfiguration() { @@ -48,6 +49,7 @@ void ConfigureDebug::ApplyConfiguration() { Settings::values.dump_exefs = ui->dump_exefs->isChecked(); Settings::values.dump_nso = ui->dump_decompressed_nso->isChecked(); Settings::values.reporting_services = ui->reporting_services->isChecked(); + Settings::values.quest_flag = ui->quest_flag->isChecked(); Debugger::ToggleConsole(); Log::Filter filter; filter.ParseFilterString(Settings::values.log_filter); diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui index 4a7e3dc3d..7e109cef0 100644 --- a/src/yuzu/configuration/configure_debug.ui +++ b/src/yuzu/configuration/configure_debug.ui @@ -7,7 +7,7 @@ 0 0 400 - 357 + 474 @@ -180,6 +180,22 @@ + + + + Advanced + + + + + + Kiosk (Quest) Mode + + + + + + diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 9ac92e937..8fe266f19 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp @@ -383,6 +383,7 @@ void Config::ReadValues() { Settings::values.dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false); Settings::values.reporting_services = sdl2_config->GetBoolean("Debugging", "reporting_services", false); + Settings::values.quest_flag = sdl2_config->GetBoolean("Debugging", "quest_flag", false); const auto title_list = sdl2_config->Get("AddOns", "title_ids", ""); std::stringstream ss(title_list); diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h index 6538af098..b4f50d27d 100644 --- a/src/yuzu_cmd/default_ini.h +++ b/src/yuzu_cmd/default_ini.h @@ -224,6 +224,9 @@ gdbstub_port=24689 dump_exefs=false # Determines whether or not yuzu will dump all NSOs it attempts to load while loading them dump_nso=false +# Determines whether or not yuzu will report to the game that the emulated console is in Kiosk Mode +# false: Retail/Normal Mode (default), true: Kiosk Mode +quest_flag = [WebService] # Whether or not to enable telemetry From f477c5dfdd755744d16b639869cd1d9c78750880 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Fri, 28 Jun 2019 18:38:47 -0400 Subject: [PATCH 2/2] set: Implement GetQuestFlag Simply returns a true/false value indicating if the system is a kiosk system. This has been mapped to a config option for the purposes of yuzu. --- src/core/hle/service/set/set.cpp | 10 +++++++++- src/core/hle/service/set/set.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp index 298d85011..b54214421 100644 --- a/src/core/hle/service/set/set.cpp +++ b/src/core/hle/service/set/set.cpp @@ -95,6 +95,14 @@ void SET::GetAvailableLanguageCodeCount2(Kernel::HLERequestContext& ctx) { PushResponseLanguageCode(ctx, post4_0_0_max_entries); } +void SET::GetQuestFlag(Kernel::HLERequestContext& ctx) { + LOG_DEBUG(Service_SET, "called"); + + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(RESULT_SUCCESS); + rb.Push(static_cast(Settings::values.quest_flag)); +} + void SET::GetLanguageCode(Kernel::HLERequestContext& ctx) { LOG_DEBUG(Service_SET, "called {}", Settings::values.language_index); @@ -114,7 +122,7 @@ SET::SET() : ServiceFramework("set") { {5, &SET::GetAvailableLanguageCodes2, "GetAvailableLanguageCodes2"}, {6, &SET::GetAvailableLanguageCodeCount2, "GetAvailableLanguageCodeCount2"}, {7, nullptr, "GetKeyCodeMap"}, - {8, nullptr, "GetQuestFlag"}, + {8, &SET::GetQuestFlag, "GetQuestFlag"}, {9, nullptr, "GetKeyCodeMap2"}, }; // clang-format on diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h index 31f9cb296..b154e08aa 100644 --- a/src/core/hle/service/set/set.h +++ b/src/core/hle/service/set/set.h @@ -42,6 +42,7 @@ private: void GetAvailableLanguageCodes2(Kernel::HLERequestContext& ctx); void GetAvailableLanguageCodeCount(Kernel::HLERequestContext& ctx); void GetAvailableLanguageCodeCount2(Kernel::HLERequestContext& ctx); + void GetQuestFlag(Kernel::HLERequestContext& ctx); }; } // namespace Service::Set