diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
index 4c70d2b35b..5f64ff676e 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
@@ -69,7 +69,8 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
MY_PAGE_APPLET("my_page_applet_mode"),
INPUT_OVERLAY_AUTO_HIDE("input_overlay_auto_hide"),
OVERLAY_GRID_SIZE("overlay_grid_size"),
- GPU_LOG_RING_BUFFER_SIZE("gpu_log_ring_buffer_size")
+ GPU_LOG_RING_BUFFER_SIZE("gpu_log_ring_buffer_size"),
+ PRODUCT_MODEL("product_model")
;
override fun getInt(needsGlobal: Boolean): Int = NativeConfig.getInt(key, needsGlobal)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
index 6f25856cbf..1ef7608957 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
@@ -965,6 +965,16 @@ abstract class SettingsItem(
max = 4096
)
)
+ put(
+ SpinBoxSetting(
+ IntSetting.PRODUCT_MODEL,
+ titleId = R.string.product_model,
+ descriptionId = R.string.product_model_description,
+ valueHint = R.string.product_model,
+ min = 1,
+ max = 2
+ )
+ )
val fastmem = object : AbstractBooleanSetting {
override fun getBoolean(needsGlobal: Boolean): Boolean =
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
index 060a6fe9ae..34445c43b3 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -1265,6 +1265,7 @@ class SettingsFragmentPresenter(
add(BooleanSetting.GPU_LOG_MEMORY_TRACKING.key)
add(BooleanSetting.GPU_LOG_DRIVER_DEBUG.key)
add(IntSetting.GPU_LOG_RING_BUFFER_SIZE.key)
+ add(IntSetting.PRODUCT_MODEL.key)
}
}
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 343cc4b21a..43f13f0ea2 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -586,6 +586,9 @@
Number of recent Vulkan calls to track (default: 512)
64 to 4096 entries
+ Product model
+ Reported product model by HLE firmware
+
General
diff --git a/src/common/settings.h b/src/common/settings.h
index 8cd55bcdd3..52d003c07c 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -640,6 +640,7 @@ struct Values {
SwitchableSetting time_zone_index{linkage, TimeZone::Auto, "time_zone_index", Category::System};
Setting serial_battery{linkage, 0, "serial_battery", Category::System};
Setting serial_unit{linkage, 0, "serial_unit", Category::System};
+ Setting product_model{linkage, 1, "product_model", Category::System};
// Measured in seconds since epoch
SwitchableSetting custom_rtc_enabled{linkage, false, "custom_rtc_enabled", Category::System, Specialization::Paired, true, true};
SwitchableSetting custom_rtc{
diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp
index c7a83e69f4..d1c8b49438 100644
--- a/src/core/hle/service/set/system_settings_server.cpp
+++ b/src/core/hle/service/set/system_settings_server.cpp
@@ -1158,8 +1158,8 @@ Result ISystemSettingsServer::SetDeviceNickName(
Result ISystemSettingsServer::GetProductModel(Out out_product_model) {
// Most certainly should be 1 -- definitely should not be 2, but it's worth tinkering with anyways
- u32 const product_model = 1;
- LOG_WARNING(Service_SET, "(STUBBED) called, product_model={}", product_model);
+ auto const product_model = ::Settings::values.product_model.GetValue();
+ LOG_INFO(Service_SET, "called, product_model={}", product_model);
*out_product_model = product_model;
R_SUCCEED();
}
diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp
index a0c4779b73..7f0141badf 100644
--- a/src/qt_common/config/shared_translation.cpp
+++ b/src/qt_common/config/shared_translation.cpp
@@ -329,6 +329,7 @@ std::unique_ptr InitializeTranslations(QObject* parent) {
INSERT(Settings, current_user, QString(), QString());
INSERT(Settings, serial_unit, tr("Unit Serial"), QString());
INSERT(Settings, serial_battery, tr("Battery Serial"), QString());
+ INSERT(Settings, product_model, tr("Product Model"), QString());
INSERT(Settings, debug_knobs, tr("Debug knobs"), QString());
// Controls