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 @@ " " +" " " " " " " " @@ -969,6 +972,9 @@ " " +" " " " " " " " diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip index 2507572e40..0940d7854e 100644 Binary files a/gui/themes/scummclassic.zip and b/gui/themes/scummclassic.zip differ diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx index 74b8bf4b2c..20301192cf 100644 --- a/gui/themes/scummclassic/classic_layout.stx +++ b/gui/themes/scummclassic/classic_layout.stx @@ -218,6 +218,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