diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt
index 94ddb295d..dc27ca2c5 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt
@@ -10,6 +10,9 @@ enum class FloatSetting(
override val defaultValue: Float
) : AbstractFloatSetting {
LARGE_SCREEN_PROPORTION("large_screen_proportion",Settings.SECTION_LAYOUT,2.25f),
+ BACKGROUND_RED("bg_red", Settings.SECTION_RENDERER, 0f),
+ BACKGROUND_BLUE("bg_blue", Settings.SECTION_RENDERER, 0f),
+ BACKGROUND_GREEN("bg_green", Settings.SECTION_RENDERER, 0f),
EMPTY_SETTING("", "", 0.0f);
override var float: Float = defaultValue
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt
index 28fb82e84..f43a6432b 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -1166,6 +1166,76 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
FloatSetting.LARGE_SCREEN_PROPORTION.defaultValue
)
)
+ add(HeaderSetting(R.string.bg_color, R.string.bg_color_description))
+ val bgRedSetting = object : AbstractIntSetting {
+ override var int: Int
+ get() = (FloatSetting.BACKGROUND_RED.float * 255).toInt()
+ set(value) {
+ FloatSetting.BACKGROUND_RED.float = value.toFloat() / 255
+ settings.saveSetting(FloatSetting.BACKGROUND_RED, SettingsFile.FILE_NAME_CONFIG)
+ }
+ override val key = null
+ override val section = null
+ override val isRuntimeEditable = false
+ override val valueAsString = int.toString()
+ override val defaultValue = FloatSetting.BACKGROUND_RED.defaultValue
+ }
+ add(
+ SliderSetting(
+ bgRedSetting,
+ R.string.bg_red,
+ 0,
+ 0,
+ 255,
+ ""
+ )
+ )
+ val bgGreenSetting = object : AbstractIntSetting {
+ override var int: Int
+ get() = (FloatSetting.BACKGROUND_GREEN.float * 255).toInt()
+ set(value) {
+ FloatSetting.BACKGROUND_GREEN.float = value.toFloat() / 255
+ settings.saveSetting(FloatSetting.BACKGROUND_GREEN, SettingsFile.FILE_NAME_CONFIG)
+ }
+ override val key = null
+ override val section = null
+ override val isRuntimeEditable = false
+ override val valueAsString = int.toString()
+ override val defaultValue = FloatSetting.BACKGROUND_GREEN.defaultValue
+ }
+ add(
+ SliderSetting(
+ bgGreenSetting,
+ R.string.bg_green,
+ 0,
+ 0,
+ 255,
+ ""
+ )
+ )
+ val bgBlueSetting = object : AbstractIntSetting {
+ override var int: Int
+ get() = (FloatSetting.BACKGROUND_BLUE.float * 255).toInt()
+ set(value) {
+ FloatSetting.BACKGROUND_BLUE.float = value.toFloat() / 255
+ settings.saveSetting(FloatSetting.BACKGROUND_BLUE, SettingsFile.FILE_NAME_CONFIG)
+ }
+ override val key = null
+ override val section = null
+ override val isRuntimeEditable = false
+ override val valueAsString = int.toString()
+ override val defaultValue = FloatSetting.BACKGROUND_BLUE.defaultValue
+ }
+ add(
+ SliderSetting(
+ bgBlueSetting,
+ R.string.bg_blue,
+ 0,
+ 0,
+ 255,
+ ""
+ )
+ )
add(
SubmenuSetting(
R.string.performance_overlay_options,
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 9c6a6182c..2a4e6f567 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -448,6 +448,11 @@
Default
System Default (mirror)
Custom Layout
+ Background Color
+ The color which appears behind the screens during emulation, represented as an RGB value.
+ Red
+ Green
+ Blue
Small Screen Position
Where should the small screen appear relative to the large one in Large Screen Layout?
Top Right