[Scummvm-git-logs] scummvm master -> 6688e2219585bca95550dcb4f85a06621ca65519

aquadran noreply at scummvm.org
Sat Jul 16 10:53:29 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
6688e22195 WINTERMUTE: WME3D: Added game option to allow force 2d renderer for 2d games


Commit: 6688e2219585bca95550dcb4f85a06621ca65519
    https://github.com/scummvm/scummvm/commit/6688e2219585bca95550dcb4f85a06621ca65519
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2022-07-16T12:53:25+02:00

Commit Message:
WINTERMUTE: WME3D: Added game option to allow force 2d renderer for 2d games

Changed paths:
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/base_game.h
    engines/wintermute/detection.cpp
    engines/wintermute/detection_tables.h
    engines/wintermute/wintermute.cpp


diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 208970010f9..31fd8d4c591 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -417,6 +417,14 @@ bool BaseGame::initConfManSettings() {
 		_smartCache = true;
 	}
 
+#ifdef ENABLE_WME3D
+	if (ConfMan.hasKey("force_2d_renderer")) {
+		_force2dRenderer = ConfMan.getBool("force_2d_renderer");
+	} else {
+		_force2dRenderer = false;
+	}
+#endif
+
 	if (!_smartCache) {
 		LOG(0, "Smart cache is DISABLED");
 	}
@@ -540,19 +548,20 @@ bool BaseGame::initialize2() { // we know whether we are going to be accelerated
 
 	Graphics::RendererType matchingRendererType = Graphics::Renderer::getBestMatchingType(desiredRendererType, availableRendererTypes);
 
+	bool force2dRenderer = _force2dRenderer && !_playing3DGame;
 #if defined(USE_OPENGL_SHADERS)
-	if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
+	if (!force2dRenderer && matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
 		initGraphics3d(_settings->getResWidth(), _settings->getResHeight());
 		_renderer3D = makeOpenGL3DShaderRenderer(this);
 	}
 #endif // defined(USE_OPENGL_SHADERS)
 #if defined(USE_OPENGL_GAME)
-	if (matchingRendererType == Graphics::kRendererTypeOpenGL) {
+	if (!force2dRenderer && matchingRendererType == Graphics::kRendererTypeOpenGL) {
 		initGraphics3d(_settings->getResWidth(), _settings->getResHeight());
 		_renderer3D = makeOpenGL3DRenderer(this);
 	}
 #endif // defined(USE_OPENGL)
-	if (matchingRendererType == Graphics::kRendererTypeTinyGL) {
+	if (!force2dRenderer && matchingRendererType == Graphics::kRendererTypeTinyGL) {
 		if (_playing3DGame) {
 			_renderer3D = nullptr;// TODO: makeTinyGL3DRenderer(this);
 			warning("3D software renderer is not supported yet");
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 3913c8f3736..7c28fb4045e 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -315,6 +315,9 @@ protected:
 private:
 	bool _debugShowFPS;
 	bool _bilinearFiltering;
+#ifdef ENABLE_WME3D
+	bool _force2dRenderer;
+#endif
 	void *_debugLogFile;
 	void DEBUG_DebugDisable();
 	void DEBUG_DebugEnable(const char *filename = nullptr);
diff --git a/engines/wintermute/detection.cpp b/engines/wintermute/detection.cpp
index 72444c8a42d..23f7757985d 100644
--- a/engines/wintermute/detection.cpp
+++ b/engines/wintermute/detection.cpp
@@ -70,6 +70,20 @@ static const ADExtraGuiOptionsMap gameGuiOptions[] = {
 		}
 	},
 
+#ifdef ENABLE_WME3D
+	{
+		GAMEOPTION_FORCE_2D_RENDERER,
+		{
+			_s("Force to use 2D renderer (2D games only)"),
+			_s("This setting forces ScummVM to use 2D renderer while running 2D games"),
+			"force_2d_renderer",
+			false,
+			0,
+			0
+		}
+	},
+#endif
+
 	AD_EXTRA_GUI_OPTIONS_TERMINATOR
 };
 
@@ -86,7 +100,11 @@ public:
 		// Use kADFlagUseExtraAsHint to distinguish between SD and HD versions
 		// of J.U.L.I.A. when their datafiles sit in the same directory (e.g. in Steam distribution).
 		_flags = kADFlagUseExtraAsHint;
+#ifdef ENABLE_WME3D
+		_guiOptions = GUIO4(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS, GAMEOPTION_BILINEAR, GAMEOPTION_FORCE_2D_RENDERER);
+#else
 		_guiOptions = GUIO3(GUIO_NOMIDI, GAMEOPTION_SHOW_FPS, GAMEOPTION_BILINEAR);
+#endif
 		_maxScanDepth = 2;
 		_directoryGlobs = directoryGlobs;
 	}
diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index 8c3b437ada6..302acf1412c 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -21,8 +21,11 @@
 
 namespace Wintermute {
 
-#define GAMEOPTION_SHOW_FPS GUIO_GAMEOPTIONS1
-#define GAMEOPTION_BILINEAR GUIO_GAMEOPTIONS2
+#define GAMEOPTION_SHOW_FPS          GUIO_GAMEOPTIONS1
+#define GAMEOPTION_BILINEAR          GUIO_GAMEOPTIONS2
+#ifdef ENABLE_WME3D
+#define GAMEOPTION_FORCE_2D_RENDERER GUIO_GAMEOPTIONS3
+#endif
 
 static const PlainGameDescriptor wintermuteGames[] = {
 	{"5ld",             "Five Lethal Demons"},
diff --git a/engines/wintermute/wintermute.cpp b/engines/wintermute/wintermute.cpp
index b53f20efb11..eb4e0625ce4 100644
--- a/engines/wintermute/wintermute.cpp
+++ b/engines/wintermute/wintermute.cpp
@@ -61,7 +61,7 @@ WintermuteEngine::WintermuteEngine(OSystem *syst, const WMEGameDescription *desc
 	// Put your engine in a sane state, but do nothing big yet;
 	// in particular, do not load data from files; rather, if you
 	// need to do such things, do them from init().
-	ConfMan.registerDefault("show_fps","false");
+	ConfMan.registerDefault("show_fps", "false");
 
 	// Do not initialize graphics here
 




More information about the Scummvm-git-logs mailing list