diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt
index ff0ddd7ff..cba9633ff 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt
+++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt
@@ -60,6 +60,7 @@ enum class IntSetting(
VSYNC("use_vsync_new", Settings.SECTION_RENDERER, 1),
DEBUG_RENDERER("renderer_debug", Settings.SECTION_DEBUG, 0),
TEXTURE_FILTER("texture_filter", Settings.SECTION_RENDERER, 0),
+ TEXTURE_SAMPLING("texture_sampling", Settings.SECTION_RENDERER, 0),
USE_FRAME_LIMIT("use_frame_limit", Settings.SECTION_RENDERER, 1),
DELAY_RENDER_THREAD_US("delay_game_render_thread_us", Settings.SECTION_RENDERER, 0),
USE_ARTIC_BASE_CONTROLLER("use_artic_base_controller", Settings.SECTION_CONTROLS, 0),
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 d4f927e35..2ed60510a 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
@@ -951,6 +951,19 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
)
)
+ add(HeaderSetting(R.string.advanced))
+ add(
+ SingleChoiceSetting(
+ IntSetting.TEXTURE_SAMPLING,
+ R.string.texture_sampling_name,
+ R.string.texture_sampling_description,
+ R.array.textureSamplingNames,
+ R.array.textureSamplingValues,
+ IntSetting.TEXTURE_SAMPLING.key,
+ IntSetting.TEXTURE_SAMPLING.defaultValue
+ )
+ )
+
// Disabled until custom texture implementation gets rewrite, current one overloads RAM
// and crashes Citra.
// add(
diff --git a/src/android/app/src/main/jni/default_ini.h b/src/android/app/src/main/jni/default_ini.h
index 3f9c818de..048966af3 100644
--- a/src/android/app/src/main/jni/default_ini.h
+++ b/src/android/app/src/main/jni/default_ini.h
@@ -125,6 +125,11 @@ shaders_accurate_mul =
# 0: Interpreter (slow), 1 (default): JIT (fast)
use_shader_jit =
+# Overrides the sampling filter used by games. This can be useful in certain
+# cases with poorly behaved games when upscaling.
+# 0 (default): Game Controlled, 1: Nearest Neighbor, 2: Linear
+texture_sampling =
+
# Forces VSync on the display thread. Usually doesn't impact performance, but on some drivers it can
# so only turn this off if you notice a speed difference.
# 0: Off, 1 (default): On
diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml
index ecf58c60f..23bda49f5 100644
--- a/src/android/app/src/main/res/values/arrays.xml
+++ b/src/android/app/src/main/res/values/arrays.xml
@@ -233,6 +233,17 @@
- 5
+
+ - @string/game_controlled
+ - @string/nearest_neighbor
+ - @string/linear
+
+
+ - 0
+ - 1
+ - 2
+
+
- Blue (Default)
- Cyan
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 8afbc7d7e..09135403c 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -227,6 +227,9 @@
Enables linear filtering, which causes game visuals to appear smoother.
Texture Filter
Enhances the visuals of applications by applying a filter to textures. The supported filters are Anime4K Ultrafast, Bicubic, ScaleForce, xBRZ freescale, and MMPX.
+ Advanced"
+ Texture Sampling
+ Overrides the sampling filter used by games. This can be useful in certain cases with poorly behaved games when upscaling. If unsure, set this to Game Controlled.
Enable Hardware Shader
Uses hardware to emulate 3DS shaders. When enabled, game performance will be significantly improved.
Accurate Multiplication
@@ -596,11 +599,15 @@
Anime4K
Bicubic
- Nearest Neighbor
ScaleForce
xBRZ
MMPX
+
+ Game Controlled
+ Nearest Neighbor
+ Linear
+
Mono
Stereo
diff --git a/src/citra_qt/configuration/configure_graphics.ui b/src/citra_qt/configuration/configure_graphics.ui
index cb0a7323c..b2ee3c279 100644
--- a/src/citra_qt/configuration/configure_graphics.ui
+++ b/src/citra_qt/configuration/configure_graphics.ui
@@ -258,7 +258,7 @@
-
- <html><head/><body><p>Overrides the sampling filter used by applications. This can be useful in certain cases with poorly behaved applications when upscaling. If unsure set this to Application Controlled</p></body></html>
+ <html><head/><body><p>Overrides the sampling filter used by applications. This can be useful in certain cases with poorly behaved applications when upscaling. If unsure, set this to Application Controlled</p></body></html>
Texture Sampling