diff --git a/README b/README
index fd900ce3103..d40ffadb435 100644
--- a/README
+++ b/README
@@ -1949,6 +1949,7 @@ The following keywords are recognized:
fullscreen bool Fullscreen mode
aspect_ratio bool Enable aspect ratio correction
+ sci_undither bool Remove dithering artifacts from early SCI EGA games
gfx_mode string Graphics mode (normal, 2x, 3x, 2xsai,
super2xsai, supereagle, advmame2x, advmame3x,
hq2x, hq3x, tv2x, dotmatrix)
diff --git a/base/commandLine.cpp b/base/commandLine.cpp
index 6ee3ef382d1..31ecab470a6 100644
--- a/base/commandLine.cpp
+++ b/base/commandLine.cpp
@@ -157,6 +157,7 @@ void registerDefaults() {
// Graphics
ConfMan.registerDefault("fullscreen", false);
ConfMan.registerDefault("aspect_ratio", false);
+ ConfMan.registerDefault("sci_undither", false);
ConfMan.registerDefault("gfx_mode", "normal");
ConfMan.registerDefault("render_mode", "default");
ConfMan.registerDefault("desired_screen_aspect_ratio", "auto");
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index 0df75d53fbb..03b8b659bc8 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -180,7 +180,7 @@ Common::Error SciEngine::run() {
g_eventRec.registerRandomSource(_rng, "sci");
// Assign default values to the config manager, in case settings are missing
- ConfMan.registerDefault("sci_undither", "true");
+ ConfMan.registerDefault("sci_undither", "false");
ConfMan.registerDefault("sci_originalsaveload", "false");
ConfMan.registerDefault("native_fb01", "false");
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index 2592eecd97c..eae7f0b364d 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -341,7 +341,8 @@ void EditGameDialog::open() {
e = ConfMan.hasKey("gfx_mode", _domain) ||
ConfMan.hasKey("render_mode", _domain) ||
ConfMan.hasKey("fullscreen", _domain) ||
- ConfMan.hasKey("aspect_ratio", _domain);
+ ConfMan.hasKey("aspect_ratio", _domain) ||
+ ConfMan.hasKey("sci_undither", _domain);
_globalGraphicsOverride->setState(e);
e = ConfMan.hasKey("music_driver", _domain) ||
diff --git a/gui/options.cpp b/gui/options.cpp
index 558a89386b9..dbd6ee5b5a0 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -98,6 +98,7 @@ void OptionsDialog::init() {
_renderModePopUp = 0;
_fullscreenCheckbox = 0;
_aspectCheckbox = 0;
+ _unditheringCheckbox = 0;
_enableAudioSettings = false;
_midiPopUp = 0;
_oplPopUp = 0;
@@ -192,6 +193,7 @@ void OptionsDialog::open() {
// Aspect ratio setting
_aspectCheckbox->setState(ConfMan.getBool("aspect_ratio", _domain));
#endif // SMALL_SCREEN_DEVICE
+ _unditheringCheckbox->setState(ConfMan.getBool("sci_undither", _domain));
}
// Audio options
@@ -297,6 +299,7 @@ void OptionsDialog::close() {
if (_enableGraphicSettings) {
ConfMan.setBool("fullscreen", _fullscreenCheckbox->getState(), _domain);
ConfMan.setBool("aspect_ratio", _aspectCheckbox->getState(), _domain);
+ ConfMan.setBool("sci_undither", _unditheringCheckbox->getState(), _domain);
bool isSet = false;
@@ -320,6 +323,7 @@ void OptionsDialog::close() {
} else {
ConfMan.removeKey("fullscreen", _domain);
ConfMan.removeKey("aspect_ratio", _domain);
+ ConfMan.removeKey("sci_undither", _domain);
ConfMan.removeKey("gfx_mode", _domain);
ConfMan.removeKey("render_mode", _domain);
}
@@ -506,6 +510,7 @@ void OptionsDialog::setGraphicSettingsState(bool enabled) {
_fullscreenCheckbox->setEnabled(enabled);
_aspectCheckbox->setEnabled(enabled);
#endif
+ _unditheringCheckbox->setEnabled(enabled);
}
void OptionsDialog::setAudioSettingsState(bool enabled) {
@@ -645,6 +650,7 @@ void OptionsDialog::addGraphicControls(GuiObject *boss, const Common::String &pr
// Aspect ratio checkbox
_aspectCheckbox = new CheckboxWidget(boss, prefix + "grAspectCheckbox", _("Aspect ratio correction"), _("Correct aspect ratio for 320x200 games"));
+ _unditheringCheckbox = new CheckboxWidget(boss, prefix + "grUnditherCheckbox", _("Remove SCI dithering"), _("Remove dithering artifacts from early SCI EGA games"));
_enableGraphicSettings = true;
}
diff --git a/gui/options.h b/gui/options.h
index c05f263d008..91e64575764 100644
--- a/gui/options.h
+++ b/gui/options.h
@@ -96,6 +96,7 @@ private:
PopUpWidget *_gfxPopUp;
CheckboxWidget *_fullscreenCheckbox;
CheckboxWidget *_aspectCheckbox;
+ CheckboxWidget *_unditheringCheckbox;
StaticTextWidget *_renderModePopUpDesc;
PopUpWidget *_renderModePopUp;
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index 46ac4a1365b..1e1a4955851 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -177,6 +177,9 @@
" "
+" "
" "
" "
" "
"
diff --git a/gui/themes/scummclassic/classic_layout_lowres.stx b/gui/themes/scummclassic/classic_layout_lowres.stx
index 65083f4bce0..7cfe1a31570 100644
--- a/gui/themes/scummclassic/classic_layout_lowres.stx
+++ b/gui/themes/scummclassic/classic_layout_lowres.stx
@@ -216,6 +216,9 @@
+
diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
index 1023e82ff96..cfad02b21f0 100644
Binary files a/gui/themes/scummmodern.zip and b/gui/themes/scummmodern.zip differ
diff --git a/gui/themes/scummmodern/scummmodern_layout.stx b/gui/themes/scummmodern/scummmodern_layout.stx
index 51f1ce6c6f8..74cae93fe9d 100644
--- a/gui/themes/scummmodern/scummmodern_layout.stx
+++ b/gui/themes/scummmodern/scummmodern_layout.stx
@@ -233,6 +233,9 @@
+
diff --git a/gui/themes/scummmodern/scummmodern_layout_lowres.stx b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
index bd7b5fd8ea3..39e33c0d9c5 100644
--- a/gui/themes/scummmodern/scummmodern_layout_lowres.stx
+++ b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
@@ -214,6 +214,9 @@
+