[Scummvm-git-logs] scummvm master -> 93882c80bd6da7e851ee8843721cf9eefd997f10

neuromancer noreply at scummvm.org
Sun Mar 31 17:41:03 UTC 2024


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

Summary:
a3310a2af8 FREESCAPE: disable useless warning
c7f868b1bd FREESCAPE: improve castle endgame function
49975648b7 FREESCAPE: moved castle code to its own directory
403b01653e FREESCAPE: avoid crashing when taking damage in dark for dos/cga
93882c80bd FREESCAPE: avoid crashing when loading eclipse for dos/cga


Commit: a3310a2af83973f26c1bb5e2e76a063c76f84c02
    https://github.com/scummvm/scummvm/commit/a3310a2af83973f26c1bb5e2e76a063c76f84c02
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-03-31T19:41:43+02:00

Commit Message:
FREESCAPE: disable useless warning

Changed paths:
    engines/freescape/objects/connections.h
    engines/freescape/objects/global.h


diff --git a/engines/freescape/objects/connections.h b/engines/freescape/objects/connections.h
index 75e705fcceb..ea14f559c7a 100644
--- a/engines/freescape/objects/connections.h
+++ b/engines/freescape/objects/connections.h
@@ -36,7 +36,7 @@ public:
 
 	ObjectType getType() override { return ObjectType::kEntranceType; };
 	void draw(Freescape::Renderer *gfx) override { error("cannot render AreaConnections"); };
-	void scale(int factor) override { warning("cannot scale AreaConnections"); };
+	void scale(int factor) override { /* Nothing */ };
 	Object *duplicate() override { error("cannot duplicate AreaConnections"); };
 };
 
diff --git a/engines/freescape/objects/global.h b/engines/freescape/objects/global.h
index 3183eeb024d..4fa29de6fee 100644
--- a/engines/freescape/objects/global.h
+++ b/engines/freescape/objects/global.h
@@ -36,7 +36,7 @@ public:
 
 	ObjectType getType() override { return ObjectType::kEntranceType; };
 	void draw(Freescape::Renderer *gfx) override { error("cannot render GlobalStructure"); };
-	void scale(int factor) override { warning("cannot scale GlobalStructure"); };
+	void scale(int factor) override { /* Nothing */ };
 	Object *duplicate() override { error("cannot duplicate GlobalStructure"); };
 };
 


Commit: c7f868b1bdd528b4656afde692349724f43e7e63
    https://github.com/scummvm/scummvm/commit/c7f868b1bdd528b4656afde692349724f43e7e63
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-03-31T19:41:43+02:00

Commit Message:
FREESCAPE: improve castle endgame function

Changed paths:
    engines/freescape/freescape.h
    engines/freescape/games/castle.cpp


diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 5fdc1442973..fa93ddfc435 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -500,6 +500,7 @@ public:
 
 	Graphics::ManagedSurface *_option;
 	void initGameState() override;
+	void endGame() override;
 	void loadAssetsDOSFullGame() override;
 	void loadAssetsDOSDemo() override;
 	void loadAssetsAmigaDemo() override;
diff --git a/engines/freescape/games/castle.cpp b/engines/freescape/games/castle.cpp
index d29f970dbde..e0ba919e23e 100644
--- a/engines/freescape/games/castle.cpp
+++ b/engines/freescape/games/castle.cpp
@@ -334,6 +334,21 @@ void CastleEngine::initGameState() {
 	FreescapeEngine::initGameState();
 	_playerHeightNumber = 1;
 	_playerHeight = _playerHeights[_playerHeightNumber];
+
+	_gameStateVars[k8bitVariableShield] = 1;
+	_gameStateVars[k8bitVariableEnergy] = 1;
+	_countdown = INT_MAX;
+}
+
+void CastleEngine::endGame() {
+	_shootingFrames = 0;
+	_delayedShootObject = nullptr;
+	_endGamePlayerEndArea = true;
+
+	if (_endGameKeyPressed) {
+		_gameStateControl = kFreescapeGameStateRestart;
+		_endGameKeyPressed = false;
+	}
 }
 
 void CastleEngine::executePrint(FCLInstruction &instruction) {


Commit: 49975648b7091bedd3a781dd0ebc65f12d6cf554
    https://github.com/scummvm/scummvm/commit/49975648b7091bedd3a781dd0ebc65f12d6cf554
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-03-31T19:41:43+02:00

Commit Message:
FREESCAPE: moved castle code to its own directory

Changed paths:
  A engines/freescape/games/castle/castle.cpp
  A engines/freescape/games/castle/castle.h
  R engines/freescape/games/castle.cpp
    engines/freescape/freescape.h
    engines/freescape/metaengine.cpp
    engines/freescape/module.mk


diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index fa93ddfc435..b55bcae3f2c 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -493,28 +493,6 @@ public:
 	Common::RandomSource *_rnd;
 };
 
-class CastleEngine : public FreescapeEngine {
-public:
-	CastleEngine(OSystem *syst, const ADGameDescription *gd);
-	~CastleEngine();
-
-	Graphics::ManagedSurface *_option;
-	void initGameState() override;
-	void endGame() override;
-	void loadAssetsDOSFullGame() override;
-	void loadAssetsDOSDemo() override;
-	void loadAssetsAmigaDemo() override;
-
-	void drawDOSUI(Graphics::Surface *surface) override;
-
-	void executePrint(FCLInstruction &instruction) override;
-	void gotoArea(uint16 areaID, int entranceID) override;
-	Common::Error saveGameStreamExtended(Common::WriteStream *stream, bool isAutosave = false) override;
-	Common::Error loadGameStreamExtended(Common::SeekableReadStream *stream) override;
-private:
-	Common::SeekableReadStream *decryptFile(const Common::Path &filename);
-};
-
 extern FreescapeEngine *g_freescape;
 
 } // namespace Freescape
diff --git a/engines/freescape/games/castle.cpp b/engines/freescape/games/castle/castle.cpp
similarity index 99%
rename from engines/freescape/games/castle.cpp
rename to engines/freescape/games/castle/castle.cpp
index e0ba919e23e..f85fc26a81b 100644
--- a/engines/freescape/games/castle.cpp
+++ b/engines/freescape/games/castle/castle.cpp
@@ -23,6 +23,7 @@
 #include "common/memstream.h"
 
 #include "freescape/freescape.h"
+#include "freescape/games/castle/castle.h"
 #include "freescape/language/8bitDetokeniser.h"
 
 namespace Freescape {
diff --git a/engines/freescape/games/castle/castle.h b/engines/freescape/games/castle/castle.h
new file mode 100644
index 00000000000..b675ed057be
--- /dev/null
+++ b/engines/freescape/games/castle/castle.h
@@ -0,0 +1,46 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Freescape {
+
+class CastleEngine : public FreescapeEngine {
+public:
+	CastleEngine(OSystem *syst, const ADGameDescription *gd);
+	~CastleEngine();
+
+	Graphics::ManagedSurface *_option;
+	void initGameState() override;
+	void endGame() override;
+	void loadAssetsDOSFullGame() override;
+	void loadAssetsDOSDemo() override;
+	void loadAssetsAmigaDemo() override;
+
+	void drawDOSUI(Graphics::Surface *surface) override;
+
+	void executePrint(FCLInstruction &instruction) override;
+	void gotoArea(uint16 areaID, int entranceID) override;
+	Common::Error saveGameStreamExtended(Common::WriteStream *stream, bool isAutosave = false) override;
+	Common::Error loadGameStreamExtended(Common::SeekableReadStream *stream) override;
+private:
+	Common::SeekableReadStream *decryptFile(const Common::Path &filename);
+};
+
+}
\ No newline at end of file
diff --git a/engines/freescape/metaengine.cpp b/engines/freescape/metaengine.cpp
index 3161ae950c9..87ecfc1b177 100644
--- a/engines/freescape/metaengine.cpp
+++ b/engines/freescape/metaengine.cpp
@@ -26,6 +26,7 @@
 
 
 #include "freescape/freescape.h"
+#include "freescape/games/castle/castle.h"
 #include "freescape/games/dark/dark.h"
 #include "freescape/games/driller/driller.h"
 #include "freescape/games/eclipse/eclipse.h"
diff --git a/engines/freescape/module.mk b/engines/freescape/module.mk
index 4eceb0e5bc5..66ee16abfd1 100644
--- a/engines/freescape/module.mk
+++ b/engines/freescape/module.mk
@@ -6,7 +6,7 @@ MODULE_OBJS := \
 	events.o \
 	demo.o \
 	freescape.o \
-	games/castle.o \
+	games/castle/castle.o \
 	games/dark/amiga.o \
 	games/dark/cpc.o \
 	games/dark/dark.o \


Commit: 403b01653efaac362c51060a308f8e857dc96bf7
    https://github.com/scummvm/scummvm/commit/403b01653efaac362c51060a308f8e857dc96bf7
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-03-31T19:41:43+02:00

Commit Message:
FREESCAPE: avoid crashing when taking damage in dark for dos/cga

Changed paths:
    engines/freescape/freescape.cpp


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 123a4cf44e7..a29b4fe3869 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -335,8 +335,12 @@ void FreescapeEngine::drawFrame() {
 
 		if (isDriller() && (isDOS() || isAmiga() || isAtariST()))
 			underFireColor = 1;
-		else if (isDark() && (isDOS() || isAmiga() || isAtariST()))
-			underFireColor = 4;
+		else if (isDark() && (isDOS() || isAmiga() || isAtariST())) {
+			if (_renderMode == Common::kRenderCGA)
+				underFireColor = 3;
+			else
+				underFireColor = 4;
+		}
 
 		_currentArea->remapColor(_currentArea->_usualBackgroundColor, underFireColor);
 		_currentArea->remapColor(_currentArea->_skyColor, underFireColor);


Commit: 93882c80bd6da7e851ee8843721cf9eefd997f10
    https://github.com/scummvm/scummvm/commit/93882c80bd6da7e851ee8843721cf9eefd997f10
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-03-31T19:41:43+02:00

Commit Message:
FREESCAPE: avoid crashing when loading eclipse for dos/cga

Changed paths:
    engines/freescape/games/eclipse/dos.cpp


diff --git a/engines/freescape/games/eclipse/dos.cpp b/engines/freescape/games/eclipse/dos.cpp
index 5ddf9028596..538664ebee3 100644
--- a/engines/freescape/games/eclipse/dos.cpp
+++ b/engines/freescape/games/eclipse/dos.cpp
@@ -31,13 +31,49 @@ namespace Freescape {
 extern byte kEGADefaultPalette[16][3];
 byte kEclipseCGAPaletteRedGreen[4][3] = {
 	{0x00, 0x00, 0x00},
-	{0x55, 0xff, 0x55},
-	{0xff, 0x55, 0x55},
-	{0xff, 0xff, 0x55},
+	{0x00, 0xff, 0xff},
+	{0xff, 0x00, 0xff},
+	{0xff, 0xff, 0xff},
+};
+
+static const CGAPaletteEntry rawCGAPaletteByArea[] {
+	{1, (byte *)kEclipseCGAPaletteRedGreen},
+	{2, (byte *)kEclipseCGAPaletteRedGreen},
+	{3, (byte *)kEclipseCGAPaletteRedGreen},
+	{4, (byte *)kEclipseCGAPaletteRedGreen},
+	{5, (byte *)kEclipseCGAPaletteRedGreen},
+	{6, (byte *)kEclipseCGAPaletteRedGreen},
+	{7, (byte *)kEclipseCGAPaletteRedGreen},
+	{8, (byte *)kEclipseCGAPaletteRedGreen},
+	{9, (byte *)kEclipseCGAPaletteRedGreen},
+	{10, (byte *)kEclipseCGAPaletteRedGreen},
+	{11, (byte *)kEclipseCGAPaletteRedGreen},
+	{12, (byte *)kEclipseCGAPaletteRedGreen},
+	{13, (byte *)kEclipseCGAPaletteRedGreen},
+	{14, (byte *)kEclipseCGAPaletteRedGreen},
+	{15, (byte *)kEclipseCGAPaletteRedGreen},
+	{16, (byte *)kEclipseCGAPaletteRedGreen},
+	{17, (byte *)kEclipseCGAPaletteRedGreen},
+	{18, (byte *)kEclipseCGAPaletteRedGreen},
+	{19, (byte *)kEclipseCGAPaletteRedGreen},
+	{20, (byte *)kEclipseCGAPaletteRedGreen},
+	{21, (byte *)kEclipseCGAPaletteRedGreen},
+	{22, (byte *)kEclipseCGAPaletteRedGreen},
+	{23, (byte *)kEclipseCGAPaletteRedGreen},
+	{24, (byte *)kEclipseCGAPaletteRedGreen},
+	{25, (byte *)kEclipseCGAPaletteRedGreen},
+	{27, (byte *)kEclipseCGAPaletteRedGreen},
+	{28, (byte *)kEclipseCGAPaletteRedGreen},
+	{29, (byte *)kEclipseCGAPaletteRedGreen},
+	{30, (byte *)kEclipseCGAPaletteRedGreen},
+	{31, (byte *)kEclipseCGAPaletteRedGreen},
+	{32, (byte *)kEclipseCGAPaletteRedGreen},
+	{0, 0}   // This marks the end
 };
 
 void EclipseEngine::initDOS() {
 	_viewArea = Common::Rect(40, 32, 280, 132);
+	_rawCGAPaletteByArea = (const CGAPaletteEntry *)&rawCGAPaletteByArea;
 }
 
 void EclipseEngine::loadAssetsDOSFullGame() {
@@ -84,8 +120,9 @@ void EclipseEngine::loadAssetsDOSFullGame() {
 		if (!file.isOpen())
 			error("Failed to open TOTEC.EXE");
 
+		loadMessagesFixedSize(&file, 0x594f, 16, 17);
 		load1bPCM(&file, 0xd038 - 4);
-		loadFonts(&file, 0xd403);
+		loadFonts(&file, 0xb785);
 		load8bitBinary(&file, 0x2530, 4);
 		for (auto &it : _areaMap) {
 			it._value->addStructure(_areaMap[255]);
@@ -94,7 +131,7 @@ void EclipseEngine::loadAssetsDOSFullGame() {
 		}
 		_border = load8bitBinImage(&file, 0x210);
 		_border->setPalette((byte *)&kEclipseCGAPaletteRedGreen, 0, 4);
-
+		swapPalette(_startArea);
 	} else
 		error("Invalid or unsupported render mode %s for Total Eclipse", Common::getRenderModeDescription(_renderMode));
 }




More information about the Scummvm-git-logs mailing list