Expand Up @@ -34,6 +34,7 @@ import org.dolphinemu.dolphinemu.model.GpuDriverMetadata
import org.dolphinemu.dolphinemu.ui.main.MainPresenter
import org.dolphinemu.dolphinemu.utils.*
import java.util.*
import kotlin.collections.ArrayList
import kotlin.math.ceil
import kotlin.math.floor

Expand Down Expand Up @@ -72,9 +73,8 @@ class SettingsFragmentPresenter(
&& GpuDriverHelper.supportsCustomDriverLoading()
) {
this.gpuDriver =
GpuDriverHelper.getInstalledDriverMetadata() ?: GpuDriverHelper.getSystemDriverMetadata(
context.applicationContext
)
GpuDriverHelper.getInstalledDriverMetadata()
?: GpuDriverHelper.getSystemDriverMetadata(context.applicationContext)
}
}

Expand Down Expand Up @@ -120,6 +120,7 @@ class SettingsFragmentPresenter(
MenuTag.GCPAD_TYPE -> addGcPadSettings(sl)
MenuTag.WIIMOTE -> addWiimoteSettings(sl)
MenuTag.ENHANCEMENTS -> addEnhanceSettings(sl)
MenuTag.COLOR_CORRECTION -> addColorCorrectionSettings(sl)
MenuTag.STEREOSCOPY -> addStereoSettings(sl)
MenuTag.HACKS -> addHackSettings(sl)
MenuTag.STATISTICS -> addStatisticsSettings(sl)
Expand Down Expand Up @@ -250,10 +251,11 @@ class SettingsFragmentPresenter(
FloatSetting.MAIN_EMULATION_SPEED,
R.string.speed_limit,
0,
0,
200,
0f,
200f,
"%",
1
1f,
false
)
)
sl.add(
Expand Down Expand Up @@ -713,12 +715,12 @@ class SettingsFragmentPresenter(
)
)
sl.add(
SwitchSetting(
context,
BooleanSetting.MAIN_WII_WIILINK_ENABLE,
R.string.wii_enable_wiilink,
R.string.wii_enable_wiilink_description
)
SwitchSetting(
context,
BooleanSetting.MAIN_WII_WIILINK_ENABLE,
R.string.wii_enable_wiilink,
R.string.wii_enable_wiilink_description
)
)
sl.add(
SingleChoiceSetting(
Expand Down Expand Up @@ -1001,10 +1003,11 @@ class SettingsFragmentPresenter(
FloatSetting.MAIN_OVERCLOCK,
R.string.overclock_title,
R.string.overclock_title_description,
0,
400,
0f,
400f,
"%",
1
1f,
false
)
)

Expand Down Expand Up @@ -1333,6 +1336,13 @@ class SettingsFragmentPresenter(
R.array.textureFilteringValues
)
)
sl.add(
SubmenuSetting(
context,
R.string.color_correction_submenu,
MenuTag.COLOR_CORRECTION
)
)

val stereoModeValue = IntSetting.GFX_STEREO_MODE.int
val anaglyphMode = 3
Expand Down Expand Up @@ -1429,6 +1439,53 @@ class SettingsFragmentPresenter(
}
}

private fun addColorCorrectionSettings(sl: ArrayList<SettingsItem>) {
sl.apply {
add(HeaderSetting(context, R.string.color_space, 0))
add(
SwitchSetting(
context,
BooleanSetting.GFX_CC_CORRECT_COLOR_SPACE,
R.string.correct_color_space,
R.string.correct_color_space_description
)
)
add(
SingleChoiceSetting(
context,
IntSetting.GFX_CC_GAME_COLOR_SPACE,
R.string.game_color_space,
0,
R.array.colorSpaceEntries,
R.array.colorSpaceValues
)
)

add(HeaderSetting(context, R.string.gamma, 0))
add(
FloatSliderSetting(
context,
FloatSetting.GFX_CC_GAME_GAMMA,
R.string.game_gamma,
R.string.game_gamma_description,
2.2f,
2.8f,
"",
0.01f,
true
)
)
add(
SwitchSetting(
context,
BooleanSetting.GFX_CC_CORRECT_GAMMA,
R.string.correct_sdr_gamma,
0
)
)
}
}

private fun addHackSettings(sl: ArrayList<SettingsItem>) {
sl.add(HeaderSetting(context, R.string.embedded_frame_buffer, 0))
sl.add(
Expand Down Expand Up @@ -2296,9 +2353,10 @@ class SettingsFragmentPresenter(
InputMappingDoubleSetting(setting),
setting.getUiName(),
"",
ceil(setting.getDoubleMin()).toInt(),
floor(setting.getDoubleMax()).toInt(),
setting.getUiSuffix()
ceil(setting.getDoubleMin()).toFloat(),
floor(setting.getDoubleMax()).toFloat(),
setting.getUiSuffix(),
false
)
)

Expand Down
Expand Up @@ -7,14 +7,15 @@ import android.text.TextUtils
import android.view.View
import org.dolphinemu.dolphinemu.R
import org.dolphinemu.dolphinemu.databinding.ListItemSettingBinding
import org.dolphinemu.dolphinemu.features.settings.model.view.IntSliderSetting
import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem
import org.dolphinemu.dolphinemu.features.settings.model.view.SliderSetting
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter

class SliderViewHolder(
private val binding: ListItemSettingBinding, adapter: SettingsAdapter?,
private val context: Context
) : SettingViewHolder(binding.getRoot(), adapter!!) {
) : SettingViewHolder(binding.root, adapter!!) {
private lateinit var setting: SliderSetting

override val item: SettingsItem
Expand All @@ -28,11 +29,25 @@ class SliderViewHolder(
if (!TextUtils.isEmpty(item.description)) {
binding.textSettingDescription.text = item.description
} else {
binding.textSettingDescription.text = context.getString(
R.string.slider_setting_value,
setting.selectedValue,
setting.units
)
val selectedValue: Float = if (item is IntSliderSetting) {
(setting.selectedValue as Int).toFloat()
} else {
setting.selectedValue as Float
}

if (setting.showDecimal) {
binding.textSettingDescription.text = String.format(
context.getString(R.string.slider_setting_float_value),
selectedValue,
setting.units
)
} else {
binding.textSettingDescription.text = String.format(
context.getString(R.string.slider_setting_value),
selectedValue,
setting.units
)
}
}

setStyle(binding.textSettingName, setting)
Expand Down
11 changes: 11 additions & 0 deletions Source/Android/app/src/main/res/values/arrays.xml
Expand Up @@ -732,4 +732,15 @@
<item>21</item>
<item>22</item>
</integer-array>

<string-array name="colorSpaceEntries">
<item>@string/ntscm_space</item>
<item>@string/ntscj_space</item>
<item>@string/pal_space</item>
</string-array>
<integer-array name="colorSpaceValues">
<item>0</item>
<item>1</item>
<item>2</item>
</integer-array>
</resources>
17 changes: 16 additions & 1 deletion Source/Android/app/src/main/res/values/strings.xml
Expand Up @@ -222,6 +222,20 @@
<string name="disable_copy_filter_description">Disables the blending of adjacent rows when copying the EFB. This is known in some games as \"deflickering\" or \"smoothing\". Disabling the filter is usually safe, and may result in a sharper image.</string>
<string name="arbitrary_mipmap_detection">Arbitrary Mipmap Detection</string>
<string name="arbitrary_mipmap_detection_description">Enables detection of arbitrary mipmaps, which some games use for special distance-based effects.\nMay have false positives that result in blurry textures at increased internal resolution, such as in games that use very low resolution mipmaps. Disabling this can also reduce stutter in games that frequently load new textures.\n\nIf unsure, leave this checked.</string>
<string name="color_correction_submenu">Color Correction</string>
<string name="color_space">Color Space</string>
<string name="correct_color_space">Correct Color Space</string>
<string name="correct_color_space_description">Converts the colors from the color spaces that GC/Wii were meant to work with to sRGB/Rec.709.</string>
<string name="game_color_space">Game Color Space</string>
<string name="ntscm_space">NTSC-M (SMPTE 170M)</string>
<string name="ntscj_space">NTSC-J (ARUB TR-89)</string>
<string name="pal_space">PAL (EBU)</string>
<string name="gamma">Gamma</string>
<string name="game_gamma">Game Gamma</string>
<string name="game_gamma_description">NTSC-M and NTSC-J target gamma ~2.2. PAL targets gamma ~2.8.\nNone of the two were necessarily followed by games or TVs. 2.35 is a good generic value for all regions.\nIf a game allows you to chose a gamma value, match it here.</string>
<string name="correct_sdr_gamma">Correct SDR Gamma</string>
<string name="sdr_display_gamma_target">SDR Display Gamma Target</string>
<string name="custom_gamma_target">Custom Gamma Target</string>
<string name="stereoscopy_submenu">Stereoscopy</string>
<string name="stereoscopy_submenu_description">Stereoscopy allows you to get a better feeling of depth if you have the necessary hardware.\nHeavily decreases emulation speed and sometimes causes issues</string>
<string name="wide_screen_hack">Widescreen Hack</string>
Expand Down Expand Up @@ -619,7 +633,8 @@ It can efficiently compress both junk data and encrypted Wii data.
<!-- Misc -->
<string name="enabled">Enabled</string>
<string name="default_values">Default Values</string>
<string name="slider_setting_value">%1$d%2$s</string>
<string name="slider_setting_value">%.0f%2$s</string>
<string name="slider_setting_float_value">%.2f%2$s</string>
<string name="disc_number">Disc %1$d</string>
<string name="replug_gc_adapter">GameCube Adapter couldn\'t be opened. Please re-plug the device.</string>
<string name="disabled_gc_overlay_notice">The selected GameCube controller is set to \"None\"</string>
Expand Down