From e1ff3b8dbed4a2827a5fe09f405d458b42789641 Mon Sep 17 00:00:00 2001 From: szdarkhack <1457198+szdarkhack@users.noreply.github.com> Date: Tue, 20 Aug 2024 22:04:29 +0300 Subject: [PATCH] Add "Steps per hour" system setting (#211) * Implements a steps per hour (global) setting that gets returned by PTM GetStepHistory * Make setting label text clearer * Add setting to SDL frontend * Add setting to Android (no UI) * Remove IntSetting enum value * Follow convension in android default ini --- src/android/app/src/main/jni/config.cpp | 1 + src/android/app/src/main/jni/default_ini.h | 4 +++ src/citra/config.cpp | 1 + src/citra/default_ini.h | 4 +++ src/citra_qt/configuration/config.cpp | 2 ++ .../configuration/configure_system.cpp | 6 ++++ .../configuration/configure_system.ui | 29 ++++++++++++++----- src/common/settings.h | 1 + src/core/hle/service/ptm/ptm.cpp | 3 +- 9 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/android/app/src/main/jni/config.cpp b/src/android/app/src/main/jni/config.cpp index 105712aba..9715a6f80 100644 --- a/src/android/app/src/main/jni/config.cpp +++ b/src/android/app/src/main/jni/config.cpp @@ -223,6 +223,7 @@ void Config::ReadValues() { ReadSetting("System", Settings::values.init_ticks_override); ReadSetting("System", Settings::values.plugin_loader_enabled); ReadSetting("System", Settings::values.allow_plugin_loader); + ReadSetting("System", Settings::values.steps_per_hour); // Camera using namespace Service::CAM; diff --git a/src/android/app/src/main/jni/default_ini.h b/src/android/app/src/main/jni/default_ini.h index 8f82352f9..d2161f9ef 100644 --- a/src/android/app/src/main/jni/default_ini.h +++ b/src/android/app/src/main/jni/default_ini.h @@ -307,6 +307,10 @@ init_ticks_type = # Defaults to 0. init_ticks_override = +# Number of steps per hour reported by the pedometer. +# Defaults to 0. +steps_per_hour = + # Plugin loader state, if enabled plugins will be loaded from the SD card. # You can also set if homebrew apps are allowed to enable the plugin loader plugin_loader = diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 367b4cd8e..f4806f231 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -232,6 +232,7 @@ void Config::ReadValues() { ReadSetting("System", Settings::values.init_ticks_override); ReadSetting("System", Settings::values.plugin_loader_enabled); ReadSetting("System", Settings::values.allow_plugin_loader); + ReadSetting("System", Settings::values.steps_per_hour); { constexpr const char* default_init_time_offset = "0 00:00:00"; diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index b3cdf9293..75945e040 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -319,6 +319,10 @@ init_ticks_type = # Defaults to 0. init_ticks_override = +# Number of steps per hour reported by the pedometer. +# Defaults to 0. +steps_per_hour = + [Camera] # Which camera engine to use for the right outer camera # blank (default): a dummy camera that always returns black image diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 619d82833..21271946b 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -713,6 +713,7 @@ void Config::ReadSystemValues() { ReadBasicSetting(Settings::values.init_time_offset); ReadBasicSetting(Settings::values.init_ticks_type); ReadBasicSetting(Settings::values.init_ticks_override); + ReadBasicSetting(Settings::values.steps_per_hour); ReadBasicSetting(Settings::values.plugin_loader_enabled); ReadBasicSetting(Settings::values.allow_plugin_loader); } @@ -1219,6 +1220,7 @@ void Config::SaveSystemValues() { WriteBasicSetting(Settings::values.init_time_offset); WriteBasicSetting(Settings::values.init_ticks_type); WriteBasicSetting(Settings::values.init_ticks_override); + WriteBasicSetting(Settings::values.steps_per_hour); WriteBasicSetting(Settings::values.plugin_loader_enabled); WriteBasicSetting(Settings::values.allow_plugin_loader); } diff --git a/src/citra_qt/configuration/configure_system.cpp b/src/citra_qt/configuration/configure_system.cpp index 971f9f520..bc7bb53b1 100644 --- a/src/citra_qt/configuration/configure_system.cpp +++ b/src/citra_qt/configuration/configure_system.cpp @@ -328,6 +328,8 @@ void ConfigureSystem::SetConfiguration() { ui->edit_init_ticks_value->setText( QString::number(Settings::values.init_ticks_override.GetValue())); + ui->spinBox_steps_per_hour->setValue(Settings::values.steps_per_hour.GetValue()); + cfg = Service::CFG::GetModule(system); ReadSystemSettings(); @@ -460,6 +462,8 @@ void ConfigureSystem::ApplyConfiguration() { Settings::values.init_ticks_override = static_cast(ui->edit_init_ticks_value->text().toLongLong()); + Settings::values.steps_per_hour = static_cast(ui->spinBox_steps_per_hour->value()); + s64 time_offset_time = ui->edit_init_time_offset_time->time().msecsSinceStartOfDay() / 1000; s64 time_offset_days = ui->edit_init_time_offset_days->value() * 86400; @@ -631,8 +635,10 @@ void ConfigureSystem::SetupPerGameUI() { ui->label_language->setVisible(false); ui->label_country->setVisible(false); ui->label_play_coins->setVisible(false); + ui->label_steps_per_hour->setVisible(false); ui->edit_username->setVisible(false); ui->spinBox_play_coins->setVisible(false); + ui->spinBox_steps_per_hour->setVisible(false); ui->combo_birthday->setVisible(false); ui->combo_birthmonth->setVisible(false); ui->combo_init_clock->setVisible(false); diff --git a/src/citra_qt/configuration/configure_system.ui b/src/citra_qt/configuration/configure_system.ui index 71819029e..ab56071dd 100644 --- a/src/citra_qt/configuration/configure_system.ui +++ b/src/citra_qt/configuration/configure_system.ui @@ -392,21 +392,35 @@ + + + + Pedometer steps per hour: + + + + + + 9999 + + + + Run System Setup when Home Menu is launched - + Console ID: - + @@ -422,35 +436,35 @@ - + 3GX Plugin Loader: - + Enable 3GX plugin loader - + Allow games to change plugin loader state - + Download System Files from Nitendo servers - + @@ -692,6 +706,7 @@ combo_init_clock edit_init_time spinBox_play_coins + spinBox_steps_per_hour button_regenerate_console_id diff --git a/src/common/settings.h b/src/common/settings.h index ba556c8c6..8bb6a474b 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -448,6 +448,7 @@ struct Values { Setting init_ticks_override{0, "init_ticks_override"}; Setting plugin_loader_enabled{false, "plugin_loader"}; Setting allow_plugin_loader{true, "allow_plugin_loader"}; + Setting steps_per_hour{0, "steps_per_hour"}; // Renderer SwitchableSetting graphics_api { diff --git a/src/core/hle/service/ptm/ptm.cpp b/src/core/hle/service/ptm/ptm.cpp index a9851a19b..79c104bce 100644 --- a/src/core/hle/service/ptm/ptm.cpp +++ b/src/core/hle/service/ptm/ptm.cpp @@ -84,9 +84,8 @@ void Module::Interface::GetStepHistory(Kernel::HLERequestContext& ctx) { ASSERT_MSG(sizeof(u16) * hours == buffer.GetSize(), "Buffer for steps count has incorrect size"); - // Stub: set zero steps count for every hour + const u16_le steps_per_hour = Settings::values.steps_per_hour.GetValue(); for (u32 i = 0; i < hours; ++i) { - const u16_le steps_per_hour = 0; buffer.Write(&steps_per_hour, i * sizeof(u16), sizeof(u16)); }