diff --git a/simon/simon.cpp b/simon/simon.cpp index 3e01ea345e8..918f12c0fd6 100644 --- a/simon/simon.cpp +++ b/simon/simon.cpp @@ -338,6 +338,7 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst) _dump_images = 0; _speech = false; _subtitles = false; + _fade = true; _mouse_cursor = 0; _vga_var9 = 0; _script_unk_1 = 0; @@ -541,8 +542,15 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst) _debugMode = ConfMan.hasKey("debuglevel"); _debugLevel = ConfMan.getInt("debuglevel"); _language = Common::parseLanguage(ConfMan.get("language")); - _subtitles = ConfMan.getBool("subtitles"); + if (!(_game & GF_SIMON2) && _language > 1) { + if (ConfMan.hasKey("_subtitles") && ConfMan.getBool("_subtitles") == 0) + _subtitles = 0; + } else + _subtitles = ConfMan.getBool("subtitles"); + + if (ConfMan.hasKey("fade") && ConfMan.getBool("fade") == 0) + _fade = 0; if (ConfMan.hasKey("slow_down") && ConfMan.getInt("slow_down") >= 1) _speed = ConfMan.getInt("slow_down"); @@ -2431,7 +2439,8 @@ void SimonEngine::o_fade_to_black() { palette_fadeout((uint32 *)_video_buf_1 + 32 + 16 + 144 + 16, 48); _system->set_palette(_video_buf_1, 0, 256); - _system->update_screen(); + if (_fade) + _system->update_screen(); delay(5); } while (--i); diff --git a/simon/simon.h b/simon/simon.h index e2c95f1829f..aaa402687a1 100644 --- a/simon/simon.h +++ b/simon/simon.h @@ -200,6 +200,7 @@ protected: bool _dump_images; bool _speech; bool _subtitles; + bool _fade; byte _mouse_cursor; bool _vga_var9; int16 _script_unk_1; diff --git a/simon/vga.cpp b/simon/vga.cpp index 8ae84de003e..d86970d16c3 100644 --- a/simon/vga.cpp +++ b/simon/vga.cpp @@ -1717,7 +1717,8 @@ void SimonEngine::vc_62_palette_thing() { for (i = NUM_PALETTE_FADEOUT; i != 0; --i) { palette_fadeout((uint32 *)_video_buf_1, _video_num_pal_colors); _system->set_palette(_video_buf_1, 0, _video_num_pal_colors); - _system->update_screen(); + if (_fade) + _system->update_screen(); delay(5); }