From 1dac4fbd557fc07be1bbc0dbbe94b1705b601a2a Mon Sep 17 00:00:00 2001
From: Filippos Karapetis
Date: Thu, 4 Nov 2010 15:58:53 +0000
Subject: SCI/SCUMMVM: Added an option to enable the dithering removal
algorithm (so called "undithering") in the graphics options tab. The
algorithm is now disabled by default, after popular demand. In retrospect, we
really shouldn't have made it default, in order to preserve the authenticity
of the graphics in early SCI EGA games, and allow the user to opt in and
enable the option if needed. Unfortunately, the lack of an easy way to modify
the option made it hard to do so.
svn-id: r54066
---
README | 1 +
base/commandLine.cpp | 1 +
engines/sci/sci.cpp | 2 +-
gui/launcher.cpp | 3 ++-
gui/options.cpp | 6 ++++++
gui/options.h | 1 +
gui/themes/default.inc | 6 ++++++
gui/themes/scummclassic.zip | Bin 73968 -> 33760 bytes
gui/themes/scummclassic/classic_layout.stx | 3 +++
gui/themes/scummclassic/classic_layout_lowres.stx | 3 +++
gui/themes/scummmodern.zip | Bin 181827 -> 140489 bytes
gui/themes/scummmodern/scummmodern_layout.stx | 3 +++
.../scummmodern/scummmodern_layout_lowres.stx | 3 +++
13 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/README b/README
index fd900ce310..d40ffadb43 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 6ee3ef382d..31ecab470a 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 0df75d53fb..03b8b659bc 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 2592eecd97..eae7f0b364 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 558a89386b..dbd6ee5b5a 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 c05f263d00..91e6457576 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 46ac4a1365..1e1a495585 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 65083f4bce..7cfe1a3157 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 1023e82ff9..cfad02b21f 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 51f1ce6c6f..74cae93fe9 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 bd7b5fd8ea..39e33c0d9c 100644
--- a/gui/themes/scummmodern/scummmodern_layout_lowres.stx
+++ b/gui/themes/scummmodern/scummmodern_layout_lowres.stx
@@ -214,6 +214,9 @@
+
--
cgit v1.2.3