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..6dd1344aa7 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
@@ -70,6 +70,7 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
INPUT_OVERLAY_AUTO_HIDE("input_overlay_auto_hide"),
OVERLAY_GRID_SIZE("overlay_grid_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/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp
index 1393068a95..d1c8b49438 100644
--- a/src/core/hle/service/set/system_settings_server.cpp
+++ b/src/core/hle/service/set/system_settings_server.cpp
@@ -1159,7 +1159,7 @@ 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
auto const product_model = ::Settings::values.product_model.GetValue();
- LOG_WARNING(Service_SET, "(STUBBED) called, product_model={}", product_model);
+ LOG_INFO(Service_SET, "called, product_model={}", product_model);
*out_product_model = product_model;
R_SUCCEED();
}