[Scummvm-git-logs] scummvm branch-2-7 -> 2dca26a4a62b95c17fdb38f9ef23825a48511daf

neuromancer noreply at scummvm.org
Wed Feb 1 13:48:47 UTC 2023


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

Summary:
13670ea643 FREESCAPE: added some initial code for supporting dos release of dark
f9bdbf2735 FREESCAPE: basic parsing of Dark Side DOS demo
304d31326e HYPNO: added missing cutscene in wet for level c20
2dca26a4a6 HYPNO: finish level c30 when all the objectives are complete in wet


Commit: 13670ea64329223b819d5ec4c28c390a4a31a657
    https://github.com/scummvm/scummvm/commit/13670ea64329223b819d5ec4c28c390a4a31a657
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-02-01T14:48:05+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: f9bdbf27352dc65f548a5472bc8f5addf3239e45
    https://github.com/scummvm/scummvm/commit/f9bdbf27352dc65f548a5472bc8f5addf3239e45
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-02-01T14:48:16+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: 304d31326e7d57345e47a6d71eaf7e0c7189ef30
    https://github.com/scummvm/scummvm/commit/304d31326e7d57345e47a6d71eaf7e0c7189ef30
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-02-01T14:49:27+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);
 	}


Commit: 2dca26a4a62b95c17fdb38f9ef23825a48511daf
    https://github.com/scummvm/scummvm/commit/2dca26a4a62b95c17fdb38f9ef23825a48511daf
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-02-01T14:49:50+01:00

Commit Message:
HYPNO: finish level c30 when all the objectives are complete in wet

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


diff --git a/engines/hypno/wet/arcade.cpp b/engines/hypno/wet/arcade.cpp
index 189ebce1c47..e090d64b523 100644
--- a/engines/hypno/wet/arcade.cpp
+++ b/engines/hypno/wet/arcade.cpp
@@ -216,7 +216,8 @@ void WetEngine::findNextSegment(ArcadeShooting *arc) {
 						_segmentOffset = 8;
 						_segmentRepetition = 0;
 						_segmentShootSequenceOffset = 8;
-					}
+					} else if (_arcadeMode == "Y3")
+						_skipLevel = true;
 				} else {
 					_loseLevel = true;
 					return;




More information about the Scummvm-git-logs mailing list