[Scummvm-git-logs] scummvm master -> eb5fa17695aa36ba6db840ae445d47f6132bdfba

neuromancer noreply at scummvm.org
Fri Dec 23 12:11:27 UTC 2022


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

Summary:
3bb208de3f FREESCAPE: limit cpu usage when vsync is enabled
eb5fa17695 FREESCAPE: added space station oblivion borders and title screens and regenerated freescape.dat file


Commit: 3bb208de3f026d7c5c9f30f54a46397e110ccc5c
    https://github.com/scummvm/scummvm/commit/3bb208de3f026d7c5c9f30f54a46397e110ccc5c
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-12-23T09:11:05-03:00

Commit Message:
FREESCAPE: limit cpu usage when vsync is enabled

Changed paths:
    engines/freescape/freescape.cpp
    engines/freescape/freescape.h
    engines/freescape/movement.cpp


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 7456d774109..b8cb4efd0e9 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -131,6 +131,7 @@ FreescapeEngine::FreescapeEngine(OSystem *syst, const ADGameDescription *gd)
 	_ticks = 0;
 	_lastTick = -1;
 	_frameLimiter = nullptr;
+	_vsyncEnabled = false;
 
 	_underFireFrames = 0;
 	_shootingFrames = 0;
@@ -242,7 +243,7 @@ void FreescapeEngine::checkSensors() {
 		if (playerDetected) {
 			if (_ticks % sensor->_firingInterval == 0) {
 				if (_underFireFrames <= 0)
-					_underFireFrames = _gfx->_isAccelerated ? 60 : 4;
+					_underFireFrames = 4;
 				takeDamageFromSensor();
 			}
 		}
@@ -391,6 +392,7 @@ void FreescapeEngine::processInput() {
 				_flyMode = _noClipMode;
 				break;
 			case Common::KEYCODE_ESCAPE:
+				drawFrame();
 				_savedScreen = _gfx->getScreenshot();
 				_gfx->setViewport(_fullscreenViewArea);
 				openMainMenuDialog();
@@ -470,6 +472,7 @@ void FreescapeEngine::processInput() {
 }
 
 Common::Error FreescapeEngine::run() {
+	_vsyncEnabled = g_system->getFeatureState(OSystem::kFeatureVSync);
 	_frameLimiter = new Graphics::FrameLimiter(g_system, ConfMan.getInt("engine_speed"));
 	// Initialize graphics
 	_screenW = g_system->getWidth();
@@ -538,18 +541,19 @@ Common::Error FreescapeEngine::run() {
 			gotoArea(_startArea, _startEntrance);
 			endGame = false;
 		}
+		processInput();
+		if (_demoMode)
+			generateDemoInput();
 
 		checkSensors();
 		drawFrame();
 
-		if (_demoMode)
-			generateDemoInput();
-
-		processInput();
 		_gfx->flipBuffer();
 		_frameLimiter->delayBeforeSwap();
 		g_system->updateScreen();
 		_frameLimiter->startFrame();
+		if (_vsyncEnabled) // if vsync is enabled, the framelimiter will not work
+			g_system->delayMillis(15); // try to target ~60 FPS
 		endGame = checkIfGameEnded();
 	}
 
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 08a15edcbea..bbbf3e31388 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -272,6 +272,7 @@ public:
 	int _screenW, _screenH;
 	Renderer *_gfx;
 	Graphics::FrameLimiter *_frameLimiter;
+	bool _vsyncEnabled;
 	Common::RenderMode _renderMode;
 	ColorMap _colorMap;
 	int _underFireFrames;
diff --git a/engines/freescape/movement.cpp b/engines/freescape/movement.cpp
index e1576b774c7..513dbd4de5b 100644
--- a/engines/freescape/movement.cpp
+++ b/engines/freescape/movement.cpp
@@ -63,7 +63,7 @@ void FreescapeEngine::traverseEntrance(uint16 entranceID) {
 void FreescapeEngine::shoot() {
 	//_mixer->stopHandle(_soundFxHandle);
 	playSound(1, true);
-	_shootingFrames = _gfx->_isAccelerated ? 60 : 4;
+	_shootingFrames = 4;
 
 	Common::Point center(_viewArea.left + _viewArea.width() / 2, _viewArea.top + _viewArea.height() / 2);
 	float xoffset = _crossairPosition.x - center.x;


Commit: eb5fa17695aa36ba6db840ae445d47f6132bdfba
    https://github.com/scummvm/scummvm/commit/eb5fa17695aa36ba6db840ae445d47f6132bdfba
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-12-23T09:11:05-03:00

Commit Message:
FREESCAPE: added space station oblivion borders and title screens and regenerated freescape.dat file

Changed paths:
  A devtools/create_freescape/spacestationoblivion_cga.bmp
  A devtools/create_freescape/spacestationoblivion_cga_title.bmp
  A devtools/create_freescape/spacestationoblivion_ega_title.bmp
    dists/engine-data/freescape.dat


diff --git a/devtools/create_freescape/spacestationoblivion_cga.bmp b/devtools/create_freescape/spacestationoblivion_cga.bmp
new file mode 100644
index 00000000000..26efd4ce64a
Binary files /dev/null and b/devtools/create_freescape/spacestationoblivion_cga.bmp differ
diff --git a/devtools/create_freescape/spacestationoblivion_cga_title.bmp b/devtools/create_freescape/spacestationoblivion_cga_title.bmp
new file mode 100644
index 00000000000..2cdb371cde7
Binary files /dev/null and b/devtools/create_freescape/spacestationoblivion_cga_title.bmp differ
diff --git a/devtools/create_freescape/spacestationoblivion_ega_title.bmp b/devtools/create_freescape/spacestationoblivion_ega_title.bmp
new file mode 100644
index 00000000000..41c667015b6
Binary files /dev/null and b/devtools/create_freescape/spacestationoblivion_ega_title.bmp differ
diff --git a/dists/engine-data/freescape.dat b/dists/engine-data/freescape.dat
index f9e2892d9cb..d507c5172f3 100644
Binary files a/dists/engine-data/freescape.dat and b/dists/engine-data/freescape.dat differ




More information about the Scummvm-git-logs mailing list