From 57240e6c1644c41bc78e6ae29cb6742004f7421c Mon Sep 17 00:00:00 2001 From: szdarkhack <1457198+szdarkhack@users.noreply.github.com> Date: Thu, 25 Jul 2024 22:21:22 +0300 Subject: [PATCH] Implements a steps per hour (global) setting that gets returned by PTM GetStepHistory --- 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 +- 5 files changed, 32 insertions(+), 9 deletions(-) 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<s64>(ui->edit_init_ticks_value->text().toLongLong()); + Settings::values.steps_per_hour = static_cast<u16>(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..1239688e5 100644 --- a/src/citra_qt/configuration/configure_system.ui +++ b/src/citra_qt/configuration/configure_system.ui @@ -392,21 +392,35 @@ </property> </widget> </item> + <item row="13" column="0"> + <widget class="QLabel" name="label_steps_per_hour"> + <property name="text"> + <string>Steps per hour:</string> + </property> + </widget> + </item> <item row="13" column="1"> + <widget class="QSpinBox" name="spinBox_steps_per_hour"> + <property name="maximum"> + <number>9999</number> + </property> + </widget> + </item> + <item row="14" column="1"> <widget class="QCheckBox" name="toggle_system_setup"> <property name="text"> <string>Run System Setup when Home Menu is launched</string> </property> </widget> </item> - <item row="14" column="0"> + <item row="15" column="0"> <widget class="QLabel" name="label_console_id"> <property name="text"> <string>Console ID:</string> </property> </widget> </item> - <item row="14" column="1"> + <item row="15" column="1"> <widget class="QPushButton" name="button_regenerate_console_id"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> @@ -422,35 +436,35 @@ </property> </widget> </item> - <item row="15" column="0"> + <item row="16" column="0"> <widget class="QLabel" name="label_plugin_loader"> <property name="text"> <string>3GX Plugin Loader:</string> </property> </widget> </item> - <item row="15" column="1"> + <item row="16" column="1"> <widget class="QCheckBox" name="plugin_loader"> <property name="text"> <string>Enable 3GX plugin loader</string> </property> </widget> </item> - <item row="16" column="1"> + <item row="17" column="1"> <widget class="QCheckBox" name="allow_plugin_loader"> <property name="text"> <string>Allow games to change plugin loader state</string> </property> </widget> </item> - <item row="17" column="0"> + <item row="18" column="0"> <widget class="QLabel" name="label_nus_download"> <property name="text"> <string>Download System Files from Nitendo servers</string> </property> </widget> </item> - <item row="17" column="1"> + <item row="18" column="1"> <widget class="QWidget" name="body_nus_download"> <layout class="QHBoxLayout" name="horizontalLayout_nus_download"> <item> @@ -692,6 +706,7 @@ <tabstop>combo_init_clock</tabstop> <tabstop>edit_init_time</tabstop> <tabstop>spinBox_play_coins</tabstop> + <tabstop>spinBox_steps_per_hour</tabstop> <tabstop>button_regenerate_console_id</tabstop> </tabstops> <resources/> 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<s64> init_ticks_override{0, "init_ticks_override"}; Setting<bool> plugin_loader_enabled{false, "plugin_loader"}; Setting<bool> allow_plugin_loader{true, "allow_plugin_loader"}; + Setting<u16> steps_per_hour{0, "steps_per_hour"}; // Renderer SwitchableSetting<GraphicsAPI, true> 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)); }