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

neuromancer noreply at scummvm.org
Wed Feb 1 08:19:52 UTC 2023


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

Summary:
9bc385c5cb FREESCAPE: added some initial code for supporting dos release of dark
db1b2cbc2f FREESCAPE: basic parsing of Dark Side DOS demo
bb90b1b87b HYPNO: added missing cutscene in wet for level c20


Commit: 9bc385c5cb6b00875dcfca97e15d94d62c377609
    https://github.com/scummvm/scummvm/commit/9bc385c5cb6b00875dcfca97e15d94d62c377609
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-02-01T09:20:28+01:00

Commit Message:
FREESCAPE: added some initial code for supporting dos release of dark

Changed paths:
    engines/freescape/freescape.h
    engines/freescape/games/dark.cpp
    engines/freescape/loaders/8bitBinaryLoader.cpp


diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index cca53101991..56f9085e345 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -439,6 +439,8 @@ public:
 
 	void loadAssets() override;
 	void gotoArea(uint16 areaID, int entranceID) override;
+	void pressedKey(const int keycode) override;
+
 	void drawUI() override;
 	Common::Error saveGameStreamExtended(Common::WriteStream *stream, bool isAutosave = false) override;
 	Common::Error loadGameStreamExtended(Common::SeekableReadStream *stream) override;
diff --git a/engines/freescape/games/dark.cpp b/engines/freescape/games/dark.cpp
index 2d4ffa2b27f..6324b1f679f 100644
--- a/engines/freescape/games/dark.cpp
+++ b/engines/freescape/games/dark.cpp
@@ -97,15 +97,32 @@ void DarkEngine::gotoArea(uint16 areaID, int entranceID) {
 		assert(newPos != -1);
 	}
 
-	debugC(1, kFreescapeDebugMove, "starting player position: %f, %f, %f", _position.x(), _position.y(), _position.z());
-	playSound(5, false);
 	_lastPosition = _position;
+	_gameStateVars[0x1f] = 0;
+
+	if (areaID == _startArea && entranceID == _startEntrance) {
+		_yaw = 90;
+		_pitch = 0;
+	}
 
+	debugC(1, kFreescapeDebugMove, "starting player position: %f, %f, %f", _position.x(), _position.y(), _position.z());
+	clearTemporalMessages();
+	playSound(5, false);
 	// Ignore sky/ground fields
-	if (_currentArea->getAreaFlags() == 1)
-		_gfx->_keyColor = 0;
-	else
-		_gfx->_keyColor = 255;
+	_gfx->_keyColor = 0;
+	_gfx->setColorRemaps(&_currentArea->_colorRemaps);
+
+	swapPalette(areaID);
+	_currentArea->_skyColor = 0;
+	_currentArea->_usualBackgroundColor = 0;
+
+	resetInput();
+}
+
+void DarkEngine::pressedKey(const int keycode) {
+	if (keycode == Common::KEYCODE_j) {
+		_flyMode = !_flyMode;
+	}
 }
 
 void DarkEngine::drawUI() {
@@ -125,9 +142,9 @@ void DarkEngine::drawUI() {
 	if (_currentAreaMessages.size() == 1) {
 		int score = _gameStateVars[k8bitVariableScore];
 		drawStringInSurface(_currentAreaMessages[0], 112, 177, yellow, black, surface);
-		drawStringInSurface(Common::String::format("%04d", 2 * int(_position.x())), 201, 137, yellow, black, surface);
-		drawStringInSurface(Common::String::format("%04d", 2 * int(_position.z())), 201, 145, yellow, black, surface);
-		drawStringInSurface(Common::String::format("%04d", 2 * int(_position.y())), 201, 153, yellow, black, surface);
+		drawStringInSurface(Common::String::format("%04d", 2 * int(_position.x())), 199, 137, yellow, black, surface);
+		drawStringInSurface(Common::String::format("%04d", 2 * int(_position.z())), 199, 145, yellow, black, surface);
+		drawStringInSurface(Common::String::format("%04d", 2 * int(_position.y())), 199, 153, yellow, black, surface);
 		drawStringInSurface(Common::String::format("%07d", score), 95, 8, yellow, black, surface);
 	}
 
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index 12b899a705a..ff395a1a2ce 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -528,7 +528,9 @@ void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offse
 
 		if (_useExtendedTimer)
 			_initialCountdown = 359999; // 99:59:59
-	}
+	} else if (isDark())
+		_initialCountdown = 2 * 3600; // 02:00:00
+
 
 	if (isAmiga() || isAtariST())
 		file->seek(offset + 0x190);


Commit: db1b2cbc2f71ccab57bf9d0419c9f01de1ca647d
    https://github.com/scummvm/scummvm/commit/db1b2cbc2f71ccab57bf9d0419c9f01de1ca647d
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-02-01T09:20:28+01:00

Commit Message:
FREESCAPE: basic parsing of Dark Side DOS demo

Changed paths:
    engines/freescape/detection.cpp
    engines/freescape/freescape.h
    engines/freescape/games/dark.cpp
    engines/freescape/language/8bitDetokeniser.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 86ab3dcd7c7..7dd84c98c29 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -277,6 +277,21 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_UNSTABLE,
 		GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
 	},
+	{
+		"darkside",
+		"Demo",
+		{
+			{"DARKSIDE.EXE", 0, "5c69b7c5586031c153cbb58fc6d2bff8", 20905},
+			{"DSIDEC.EXE", 0, "796c1d1a9583a0ccf5bba47813fa6a8a", 39640},
+			{"DSIDEE.EXE", 0, "1f3f607dad97efe1d8e979ef588bda01", 46952},
+			{"DSIDEH.EXE", 0, "7f45c6047798c5443f57c2002e2d2c27", 43368},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformDOS,
+		ADGF_UNSTABLE | ADGF_DEMO,
+		GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
+	},
 	{
 		"totaleclipse",
 		"",
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 56f9085e345..b4641f73912 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -441,6 +441,9 @@ public:
 	void gotoArea(uint16 areaID, int entranceID) override;
 	void pressedKey(const int keycode) override;
 
+	void loadAssetsDemo();
+	void loadAssetsFullGame();
+
 	void drawUI() override;
 	Common::Error saveGameStreamExtended(Common::WriteStream *stream, bool isAutosave = false) override;
 	Common::Error loadGameStreamExtended(Common::SeekableReadStream *stream) override;
diff --git a/engines/freescape/games/dark.cpp b/engines/freescape/games/dark.cpp
index 6324b1f679f..cf338790f29 100644
--- a/engines/freescape/games/dark.cpp
+++ b/engines/freescape/games/dark.cpp
@@ -38,6 +38,36 @@ DarkEngine::DarkEngine(OSystem *syst, const ADGameDescription *gd) : FreescapeEn
 }
 
 void DarkEngine::loadAssets() {
+	if (isDemo())
+		loadAssetsDemo();
+	else
+		loadAssetsFullGame();
+}
+
+void DarkEngine::loadAssetsDemo() {
+	Common::File file;
+	if (isDOS() && _renderMode == Common::kRenderEGA) {
+		loadBundledImages();
+		file.open("DSIDEE.EXE");
+
+		if (!file.isOpen())
+			error("Failed to open DSIDEE.EXE");
+
+		loadFonts(&file, 0xa598);
+		load8bitBinary(&file, 0xa700, 16);
+	} else if (isDOS() && _renderMode == Common::kRenderCGA) {
+		//loadBundledImages();
+		file.open("DSIDEC.EXE");
+
+		if (!file.isOpen())
+			error("Failed to open DSIDEC.EXE");
+		loadFonts(&file, 0xa598);
+		load8bitBinary(&file, 0x8a70, 4); // TODO
+	} else
+		error("Invalid or unsupported render mode %s for Dark Side", Common::getRenderModeDescription(_renderMode));
+}
+
+void DarkEngine::loadAssetsFullGame() {
 	Common::File file;
 	if (_renderMode == Common::kRenderEGA) {
 		loadBundledImages();
diff --git a/engines/freescape/language/8bitDetokeniser.cpp b/engines/freescape/language/8bitDetokeniser.cpp
index db1e0dc3223..06fe20c56ab 100644
--- a/engines/freescape/language/8bitDetokeniser.cpp
+++ b/engines/freescape/language/8bitDetokeniser.cpp
@@ -378,6 +378,7 @@ Common::String detokenise8bitCondition(Common::Array<uint8> &tokenisedCondition,
 
 		case 48:
 			detokenisedStream += "EXECUTE ";
+			currentInstruction = FCLInstruction(Token::EXECUTE);
 			break;
 		}
 


Commit: bb90b1b87b5a121e7dc17b128746cbae11565d08
    https://github.com/scummvm/scummvm/commit/bb90b1b87b5a121e7dc17b128746cbae11565d08
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-02-01T09:20:28+01:00

Commit Message:
HYPNO: added missing cutscene in wet for level c20

Changed paths:
    engines/hypno/wet/arcade.cpp


diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 98998517f6b..189ebce1c47 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -624,6 +624,12 @@ void WetEngine::runBeforeArcade(ArcadeShooting *arc) {
 		delete video;
 	}
 
+	if (arc->mode == "Y2" && !arc->additionalVideo.empty()) {
+		video = new MVideo(arc->additionalVideo, Common::Point(0, 0), false, true, false);
+		runIntro(*video);
+		delete video;
+	}
+
 	if (!arc->player.empty()) {
 		_playerFrames = decodeFrames(arc->player);
 	}




More information about the Scummvm-git-logs mailing list