[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