[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