[Scummvm-git-logs] scummvm master -> 609d89f61319e47b3c05ee65d3b54f92921aabf3

athrxx noreply at scummvm.org
Sun Apr 5 11:13:43 UTC 2026


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

Summary:
609d89f613 KYRA: Return an error code if setting the pixel format fails


Commit: 609d89f61319e47b3c05ee65d3b54f92921aabf3
    https://github.com/scummvm/scummvm/commit/609d89f61319e47b3c05ee65d3b54f92921aabf3
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2026-04-05T13:13:39+02:00

Commit Message:
KYRA: Return an error code if setting the pixel format fails

Changed paths:
    engines/kyra/engine/eobcommon.cpp
    engines/kyra/engine/kyra_hof.cpp
    engines/kyra/engine/kyra_lok.cpp
    engines/kyra/engine/kyra_mr.cpp
    engines/kyra/engine/lol.cpp
    engines/kyra/graphics/screen.cpp
    engines/kyra/graphics/screen.h
    engines/kyra/metaengine.cpp


diff --git a/engines/kyra/engine/eobcommon.cpp b/engines/kyra/engine/eobcommon.cpp
index c3ff17a93ef..fd7386a17ec 100644
--- a/engines/kyra/engine/eobcommon.cpp
+++ b/engines/kyra/engine/eobcommon.cpp
@@ -403,7 +403,10 @@ Common::Error EoBCoreEngine::init() {
 
 	_screen = new Screen_EoB(this, _system);
 	assert(_screen);
-	_screen->setResolution();
+
+	Common::Error err = _screen->setResolution();
+	if (err.getCode() != Common::kNoError)
+		return err;
 
 	_res = new Resource(this);
 	assert(_res);
@@ -491,7 +494,7 @@ Common::Error EoBCoreEngine::init() {
 
 	loadFonts();
 
-	Common::Error err = KyraRpgEngine::init();
+	err = KyraRpgEngine::init();
 	if (err.getCode() != Common::kNoError)
 		return err;
 
diff --git a/engines/kyra/engine/kyra_hof.cpp b/engines/kyra/engine/kyra_hof.cpp
index 92c6dc83bd9..7ab1bde611b 100644
--- a/engines/kyra/engine/kyra_hof.cpp
+++ b/engines/kyra/engine/kyra_hof.cpp
@@ -185,7 +185,10 @@ void KyraEngine_HoF::pauseEngineIntern(bool pause) {
 Common::Error KyraEngine_HoF::init() {
 	_screen = new Screen_HoF(this, _system);
 	assert(_screen);
-	_screen->setResolution();
+
+	Common::Error err = _screen->setResolution();
+	if (err.getCode() != Common::kNoError)
+		return err;
 
 	setDebugger(new Debugger_HoF(this));
 
diff --git a/engines/kyra/engine/kyra_lok.cpp b/engines/kyra/engine/kyra_lok.cpp
index f2331ae7f8f..b1d54702e60 100644
--- a/engines/kyra/engine/kyra_lok.cpp
+++ b/engines/kyra/engine/kyra_lok.cpp
@@ -197,7 +197,10 @@ Common::Error KyraEngine_LoK::init() {
 	else
 		_screen = new Screen_LoK(this, _system);
 	assert(_screen);
-	_screen->setResolution();
+
+	Common::Error err = _screen->setResolution();
+	if (err.getCode() != Common::kNoError)
+		return err;
 
 	setDebugger(new Debugger_LoK(this));
 
diff --git a/engines/kyra/engine/kyra_mr.cpp b/engines/kyra/engine/kyra_mr.cpp
index 40cb3436463..c5b0120ea8a 100644
--- a/engines/kyra/engine/kyra_mr.cpp
+++ b/engines/kyra/engine/kyra_mr.cpp
@@ -218,7 +218,10 @@ KyraEngine_MR::~KyraEngine_MR() {
 Common::Error KyraEngine_MR::init() {
 	_screen = new Screen_MR(this, _system);
 	assert(_screen);
-	_screen->setResolution();
+
+	Common::Error err = _screen->setResolution();
+	if (err.getCode() != Common::kNoError)
+		return err;
 
 	setDebugger(new Debugger_v2(this));
 
diff --git a/engines/kyra/engine/lol.cpp b/engines/kyra/engine/lol.cpp
index 44fbb1bbf20..9094a563db5 100644
--- a/engines/kyra/engine/lol.cpp
+++ b/engines/kyra/engine/lol.cpp
@@ -384,7 +384,10 @@ GUI *LoLEngine::gui() const {
 Common::Error LoLEngine::init() {
 	_screen = new Screen_LoL(this, _system);
 	assert(_screen);
-	_screen->setResolution();
+
+	Common::Error err = _screen->setResolution();
+	if (err.getCode() != Common::kNoError)
+		return err;
 
 	setDebugger(new Debugger_LoL(this));
 
diff --git a/engines/kyra/graphics/screen.cpp b/engines/kyra/graphics/screen.cpp
index 0f80c637685..aacdc0a02c9 100644
--- a/engines/kyra/graphics/screen.cpp
+++ b/engines/kyra/graphics/screen.cpp
@@ -287,15 +287,20 @@ bool Screen::enableScreenDebug(bool enable) {
 
 	if (_debugEnabled != enable) {
 		_debugEnabled = enable;
-		setResolution();
-		_forceFullUpdate = true;
-		updateScreen();
+
+		Common::Error err = setResolution();
+		if (err.getCode() != Common::kNoError){
+			_debugEnabled = enable;
+		} else {
+			_forceFullUpdate = true;
+			updateScreen();
+		}
 	}
 
 	return temp;
 }
 
-void Screen::setResolution() {
+Common::Error Screen::setResolution() {
 	byte palette[3 * 256];
 	if (!_useHiColorScreen)
 		_system->getPaletteManager()->grabPalette(palette, 0, 256);
@@ -333,12 +338,14 @@ void Screen::setResolution() {
 		}
 		initGraphics(width, height, tryModes);
 		if (_system->getScreenFormat().bytesPerPixel != 2)
-			error("Required graphics mode not supported by platform.");
+			return Common::kUnsupportedColorMode;
 
 	} else {
 		initGraphics(width, height);
 		_system->getPaletteManager()->setPalette(palette, 0, 256);
 	}
+
+	return Common::kNoError;
 }
 
 void Screen::enableHiColorMode(bool enabled) {
diff --git a/engines/kyra/graphics/screen.h b/engines/kyra/graphics/screen.h
index c1bc073210c..083d8b328bf 100644
--- a/engines/kyra/graphics/screen.h
+++ b/engines/kyra/graphics/screen.h
@@ -30,6 +30,7 @@
 #include "common/rendermode.h"
 #include "common/stream.h"
 #include "common/ptr.h"
+#include "common/error.h"
 
 class OSystem;
 
@@ -640,7 +641,7 @@ public:
 
 	// init
 	virtual bool init();
-	virtual void setResolution();
+	virtual Common::Error setResolution();
 	virtual void enableHiColorMode(bool enabled);
 
 	// refresh
diff --git a/engines/kyra/metaengine.cpp b/engines/kyra/metaengine.cpp
index 8683a144f08..525ad6d833e 100644
--- a/engines/kyra/metaengine.cpp
+++ b/engines/kyra/metaengine.cpp
@@ -256,10 +256,6 @@ Common::Error KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, con
 			flags.lang = Common::EN_ANY;
 	}
 
-#ifndef USE_RGB_COLOR
-	flags.useHiColorMode = false;
-#endif
-
 	switch (flags.gameID) {
 	case Kyra::GI_KYRA1:
 		*engine = new Kyra::KyraEngine_LoK(syst, flags);
@@ -285,8 +281,6 @@ Common::Error KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, con
 	case Kyra::GI_EOB2:
 		 if (Common::parseRenderMode(ConfMan.get("render_mode")) == Common::kRenderEGA)
 			 flags.useHiRes = true;
-		 if (platform == Common::kPlatformFMTowns && !flags.useHiColorMode)
-			 return Common::Error(Common::kUnsupportedColorMode, _s("EOB II FM-TOWNS requires support of 16bit color modes which has not been activated in your ScummVM build"));
 		*engine = new Kyra::DarkMoonEngine(syst, flags);
 		break;
 #else




More information about the Scummvm-git-logs mailing list