[Scummvm-git-logs] scummvm master -> 426008391dd5dfe9f8373f245ecf1c39290b4f91

neuromancer noreply at scummvm.org
Wed May 7 13:42:04 UTC 2025


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

Summary:
dd8374788b FREESCAPE: refactored support for tape releases to perform automatic decompression
7ee52a6a94 FREESCAPE: detect and load another eclipse release for c64
426008391d FREESCAPE: added more details to the eclipse UI for c64


Commit: dd8374788b676823b519574d70357f7b09e24227
    https://github.com/scummvm/scummvm/commit/dd8374788b676823b519574d70357f7b09e24227
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2025-05-07T15:44:36+02:00

Commit Message:
FREESCAPE: refactored support for tape releases to perform automatic decompression

Changed paths:
  A engines/freescape/loaders/c64.cpp
    engines/freescape/detection.cpp
    engines/freescape/freescape.cpp
    engines/freescape/freescape.h
    engines/freescape/games/dark/c64.cpp
    engines/freescape/games/dark/dark.cpp
    engines/freescape/games/dark/dark.h
    engines/freescape/games/eclipse/c64.cpp
    engines/freescape/module.mk


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 21682563e36..97a70e1e49c 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -530,7 +530,7 @@ static const ADGameDescription gameDescriptions[] = {
 	{
 		"darkside", // Tape release
 		"",
-		AD_ENTRY1s("DARKSIDE.C64.DATA", "c0d271d86cf4434ef7c3d823a32c0df5", 61290),
+		AD_ENTRY1s("DARKSIDE.C64.DATA", "7d5fc9a962a146e303a0c71a2d5c651e", 48129),
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE | GF_C64_TAPE,
@@ -696,7 +696,7 @@ static const ADGameDescription gameDescriptions[] = {
 	{
 		"totaleclipse", // Tape relese
 		"",
-		AD_ENTRY1s("TOTALECLIPSE.C64.DATA", "70bbb8b122a27a476f908de697098947", 64317),
+		AD_ENTRY1s("TOTALECLIPSE.C64.DATA", "968fd46b941a00f887741dfc348ac149", 47105),
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE,
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 3d4f3641519..ff980fa973d 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -143,6 +143,7 @@ FreescapeEngine::FreescapeEngine(OSystem *syst, const ADGameDescription *gd)
 	_uiTexture = nullptr;
 	_fontLoaded = false;
 	_dataBundle = nullptr;
+	_extraBuffer = nullptr;
 
 	_lastFrame = 0;
 	_nearClipPlane = 2;
@@ -264,6 +265,10 @@ FreescapeEngine::~FreescapeEngine() {
 		_savedScreen->free();
 		delete _savedScreen;
 	}
+
+	if (_extraBuffer)
+		free(_extraBuffer);
+	_extraBuffer = nullptr;
 }
 
 void FreescapeEngine::drawBorder() {
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 2633ca6d1c5..b8fd12a8ddf 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -24,10 +24,13 @@
 
 #include "common/bitarray.h"
 #include "common/events.h"
+#include "common/file.h"
+#include "common/memstream.h"
 #include "engines/advancedDetector.h"
 #include "graphics/managed_surface.h"
 #include "graphics/surface.h"
 
+
 #include "audio/decoders/wave.h"
 #include "audio/mixer.h"
 #include "audio/softsynth/pcspk.h"
@@ -593,6 +596,10 @@ public:
 
 	// Random
 	Common::RandomSource *_rnd;
+
+	// C64 specifics
+	byte *decompressC64RLE(byte *buffer, int *size, byte marker);
+	byte *_extraBuffer;
 };
 
 enum GameReleaseFlags {
diff --git a/engines/freescape/games/dark/c64.cpp b/engines/freescape/games/dark/c64.cpp
index 53278a19081..ad8e3c64d59 100644
--- a/engines/freescape/games/dark/c64.cpp
+++ b/engines/freescape/games/dark/c64.cpp
@@ -39,10 +39,19 @@ void DarkEngine::loadAssetsC64FullGame() {
 	file.open("darkside.c64.data");
 
 	if (_variant & GF_C64_TAPE) {
-		loadMessagesFixedSize(&file, 0x1edf, 16, 27);
-		loadFonts(&file, 0xc3e);
-		loadGlobalObjects(&file, 0x20bd, 23);
-		load8bitBinary(&file, 0x9b3e, 16);
+		int size = file.size();
+
+		byte *buffer = (byte *)malloc(size * sizeof(byte));
+		file.read(buffer, file.size());
+
+		_extraBuffer = decompressC64RLE(buffer, &size, 0xdf);
+		// size should be the size of the decompressed data
+		Common::MemoryReadStream dfile(_extraBuffer, size, DisposeAfterUse::NO);
+
+		loadMessagesFixedSize(&dfile, 0x1edf, 16, 27);
+		loadFonts(&dfile, 0xc3e);
+		loadGlobalObjects(&dfile, 0x20bd, 23);
+		load8bitBinary(&dfile, 0x9b3e, 16);
 	} else if (_variant & GF_C64_DISC) {
 		loadMessagesFixedSize(&file, 0x16a3, 16, 27);
 		loadFonts(&file, 0x402);
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index 0a45f032cfc..20f7854b082 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -84,13 +84,6 @@ DarkEngine::DarkEngine(OSystem *syst, const ADGameDescription *gd) : FreescapeEn
 	_initialShield = 15;
 
 	_jetFuelSeconds = _initialEnergy * 6;
-	_extraBuffer = nullptr;
-}
-
-DarkEngine::~DarkEngine() {
-	if (_extraBuffer)
-		free(_extraBuffer);
-	_extraBuffer = nullptr;
 }
 
 void DarkEngine::addECDs(Area *area) {
diff --git a/engines/freescape/games/dark/dark.h b/engines/freescape/games/dark/dark.h
index 90e530a3d1e..27b5788d896 100644
--- a/engines/freescape/games/dark/dark.h
+++ b/engines/freescape/games/dark/dark.h
@@ -48,7 +48,6 @@ enum DarkFontSize {
 class DarkEngine : public FreescapeEngine {
 public:
 	DarkEngine(OSystem *syst, const ADGameDescription *gd);
-	~DarkEngine();
 
 	uint32 _initialEnergy;
 	uint32 _initialShield;
@@ -105,8 +104,6 @@ public:
 	int _soundIndexDestroyECD;
 	Audio::SoundHandle _soundFxHandleJetpack;
 
-	byte *_extraBuffer;
-
 	void drawString(const DarkFontSize size, const Common::String &str, int x, int y, uint32 primaryColor, uint32 secondaryColor, uint32 backColor, Graphics::Surface *surface);
 	void drawInfoMenu() override;
 
diff --git a/engines/freescape/games/eclipse/c64.cpp b/engines/freescape/games/eclipse/c64.cpp
index 478953bfb98..dfdf1083742 100644
--- a/engines/freescape/games/eclipse/c64.cpp
+++ b/engines/freescape/games/eclipse/c64.cpp
@@ -36,9 +36,22 @@ extern byte kC64Palette[16][3];
 void EclipseEngine::loadAssetsC64FullGame() {
 	Common::File file;
 	file.open("totaleclipse.c64.data");
-	loadMessagesFixedSize(&file, 0x1d82, 16, 30);
-	loadFonts(&file, 0xc3e);
-	load8bitBinary(&file, 0x9a3e, 16);
+
+	if (_variant & GF_C64_TAPE) {
+		int size = file.size();
+
+		byte *buffer = (byte *)malloc(size * sizeof(byte));
+		file.read(buffer, file.size());
+
+		_extraBuffer = decompressC64RLE(buffer, &size, 0xe1);
+		// size should be the size of the decompressed data
+		Common::MemoryReadStream dfile(_extraBuffer, size, DisposeAfterUse::NO);
+
+		loadMessagesFixedSize(&dfile, 0x1d82, 16, 30);
+		loadFonts(&dfile, 0xc3e);
+		load8bitBinary(&dfile, 0x9a3e, 16);
+	} else
+		error("Unknown C64 variant %x", _variant);
 
 	for (auto &it : _areaMap) {
 		it._value->addStructure(_areaMap[255]);
diff --git a/engines/freescape/loaders/c64.cpp b/engines/freescape/loaders/c64.cpp
new file mode 100644
index 00000000000..46d9e7f9c2e
--- /dev/null
+++ b/engines/freescape/loaders/c64.cpp
@@ -0,0 +1,51 @@
+/* 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/>.
+ *
+ */
+
+#include "freescape/freescape.h"
+
+namespace Freescape {
+
+byte *FreescapeEngine::decompressC64RLE(byte *buffer, int *size, byte marker) {
+	Common::MemoryReadWriteStream *tmp = new Common::MemoryReadWriteStream(DisposeAfterUse::NO);
+	// Format is: [ Byte, Marker, Length ] or [ Byte ]
+	for (int i = 0; i < *size - 1; ) {
+		if (buffer[i] == marker && i > 0) {
+			int length = buffer[i + 1];
+			byte value = buffer[i - 1];
+			if (length == 0)
+				tmp->writeByte(value);
+
+			for (int j = 0; j < length; j++) {
+				tmp->writeByte(value);
+			}
+			i += 2;
+		} else {
+			tmp->writeByte(buffer[i]);
+			i += 1;
+		}
+	}
+	*size = tmp->size();
+	byte *data = tmp->getData();
+	delete tmp;
+	return data;
+}
+
+} // namespace Freescape
\ No newline at end of file
diff --git a/engines/freescape/module.mk b/engines/freescape/module.mk
index 12c60dce2af..f7b8682b21a 100644
--- a/engines/freescape/module.mk
+++ b/engines/freescape/module.mk
@@ -38,6 +38,7 @@ MODULE_OBJS := \
 	gfx.o \
 	loaders/8bitImage.o \
 	loaders/8bitBinaryLoader.o \
+	loaders/c64.o \
 	language/8bitDetokeniser.o \
 	language/instruction.o \
 	metaengine.o \


Commit: 7ee52a6a94ea22079b325ec4b5b38bac20d28811
    https://github.com/scummvm/scummvm/commit/7ee52a6a94ea22079b325ec4b5b38bac20d28811
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2025-05-07T15:44:36+02:00

Commit Message:
FREESCAPE: detect and load another eclipse release for c64

Changed paths:
    engines/freescape/detection.cpp
    engines/freescape/games/eclipse/c64.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 97a70e1e49c..a36d68a8130 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -93,7 +93,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSUPPORTED,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 	{
 		"driller", // Original tape relase?
@@ -102,7 +102,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE | GF_C64_TAPE,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 	{
 		"driller", // Tape re-relase
@@ -111,7 +111,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE | GF_C64_TAPE,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 	{
 		"driller", // Disc release
@@ -120,7 +120,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE | GF_C64_DISC,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 	{
 		"driller",
@@ -344,7 +344,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSUPPORTED,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 	{
 		"spacestationoblivion",
@@ -353,7 +353,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSUPPORTED,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 
 	// Dark Side
@@ -534,7 +534,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE | GF_C64_TAPE,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
 	},
 	{
 		"darkside", // Disk release PAL?
@@ -543,7 +543,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE | GF_C64_DISC,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
 	},
 	{
 		"darkside", // Disk release NTSC?
@@ -555,7 +555,7 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE | GF_C64_DISC,
-		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
 	},
 
 	// Total Eclipse
@@ -700,7 +700,16 @@ static const ADGameDescription gameDescriptions[] = {
 		Common::EN_ANY,
 		Common::kPlatformC64,
 		ADGF_UNSTABLE,
-		GUIO1(GUIO_NOMIDI)
+		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
+	},
+	{
+		"totaleclipse", // Disk release
+		"",
+		AD_ENTRY1s("TOTALECLIPSE.C64.DATA", "b9d3aa682777ee50840cabfc036693b0", 50356),
+		Common::EN_ANY,
+		Common::kPlatformC64,
+		ADGF_UNSTABLE | GF_C64_DISC,
+		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
 	},
 	{
 		"totaleclipse",
diff --git a/engines/freescape/games/eclipse/c64.cpp b/engines/freescape/games/eclipse/c64.cpp
index dfdf1083742..a1f5ea3f9c6 100644
--- a/engines/freescape/games/eclipse/c64.cpp
+++ b/engines/freescape/games/eclipse/c64.cpp
@@ -50,6 +50,10 @@ void EclipseEngine::loadAssetsC64FullGame() {
 		loadMessagesFixedSize(&dfile, 0x1d82, 16, 30);
 		loadFonts(&dfile, 0xc3e);
 		load8bitBinary(&dfile, 0x9a3e, 16);
+	} else if (_variant & GF_C64_DISC) {
+		loadMessagesFixedSize(&file,0x1536, 16, 30);
+		loadFonts(&file, 0x3f2);
+		load8bitBinary(&file, 0x7ab4, 16);
 	} else
 		error("Unknown C64 variant %x", _variant);
 


Commit: 426008391dd5dfe9f8373f245ecf1c39290b4f91
    https://github.com/scummvm/scummvm/commit/426008391dd5dfe9f8373f245ecf1c39290b4f91
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2025-05-07T15:44:36+02:00

Commit Message:
FREESCAPE: added more details to the eclipse UI for c64

Changed paths:
  A devtools/create_freescape/eclipse_ankh_indicator_Commodore 64.bmp
    dists/engine-data/freescape.dat
    engines/freescape/games/eclipse/c64.cpp
    engines/freescape/games/eclipse/eclipse.cpp


diff --git a/devtools/create_freescape/eclipse_ankh_indicator_Commodore 64.bmp b/devtools/create_freescape/eclipse_ankh_indicator_Commodore 64.bmp
new file mode 100644
index 00000000000..f3dec8e4c5d
Binary files /dev/null and b/devtools/create_freescape/eclipse_ankh_indicator_Commodore 64.bmp differ
diff --git a/dists/engine-data/freescape.dat b/dists/engine-data/freescape.dat
index 616d4642e78..0ddaddc32a8 100644
Binary files a/dists/engine-data/freescape.dat and b/dists/engine-data/freescape.dat differ
diff --git a/engines/freescape/games/eclipse/c64.cpp b/engines/freescape/games/eclipse/c64.cpp
index a1f5ea3f9c6..01c86adddcc 100644
--- a/engines/freescape/games/eclipse/c64.cpp
+++ b/engines/freescape/games/eclipse/c64.cpp
@@ -80,6 +80,11 @@ void EclipseEngine::loadAssetsC64FullGame() {
 	colorFile2.open("totaleclipse.c64.title.colors2");
 
 	_title = loadAndConvertDoodleImage(&file, &colorFile1, &colorFile2, (byte *)&kC64Palette);
+
+	_indicators.push_back(loadBundledImage("eclipse_ankh_indicator"));
+
+	for (auto &it : _indicators)
+		it->convertToInPlace(_gfx->_texturePixelFormat);
 }
 
 
@@ -136,11 +141,11 @@ void EclipseEngine::drawC64UI(Graphics::Surface *surface) {
 
 	Common::String shieldStr = Common::String::format("%d", shield);
 
-	int x = 171;
+	int x = 174;
 	if (shield < 10)
-		x = 179;
+		x = 182;
 	else if (shield < 100)
-		x = 175;
+		x = 179;
 
 	if (energy < 0)
 		energy = 0;
@@ -153,20 +158,25 @@ void EclipseEngine::drawC64UI(Graphics::Surface *surface) {
 	Common::Rect jarWater(112, 196 - energy, 144, 196);
 	surface->fillRect(jarWater, blue);
 
-	/*drawStringInSurface(shiftStr("0", 'Z' - '$' + 1 - _angleRotationIndex), 79, 141, back, yellow, surface);
-	drawStringInSurface(shiftStr("3", 'Z' - '$' + 1 - _playerStepIndex), 63, 141, back, yellow, surface);
-	drawStringInSurface(shiftStr("7", 'Z' - '$' + 1 - _playerHeightNumber), 240, 141, back, yellow, surface);
+	// TODO
+	/*drawStringInSurface(shiftStr("0", 'Z' - '$' + 1 - _angleRotationIndex), 79, 138, back, yellow, surface);
+	drawStringInSurface(shiftStr("3", 'Z' - '$' + 1 - _playerStepIndex), 63, 138, back, yellow, surface);
+	drawStringInSurface(shiftStr("7", 'Z' - '$' + 1 - _playerHeightNumber), 240, 138, back, yellow, surface);
 
 	if (_shootingFrames > 0) {
-		drawStringInSurface(shiftStr("4", 'Z' - '$' + 1), 232, 141, back, yellow, surface);
-		drawStringInSurface(shiftStr("<", 'Z' - '$' + 1) , 240, 141, back, yellow, surface);
-	}
-	drawAnalogClock(surface, 89, 172, back, back, gray);
+		drawStringInSurface(shiftStr("4", 'Z' - '$' + 1), 232, 138, back, yellow, surface);
+		drawStringInSurface(shiftStr("<", 'Z' - '$' + 1) , 240, 138, back, yellow, surface);
+	}*/
+
+	drawAnalogClockHand(surface, 72, 172, 38 * 6 - 90, 11, white);
+	drawAnalogClockHand(surface, 72, 172, 37 * 6 - 90, 11, white);
+	drawAnalogClockHand(surface, 72, 172, 36 * 6 - 90, 11, white);
+	drawAnalogClock(surface, 72, 172, back, red, white);
 
-	surface->fillRect(Common::Rect(227, 168, 235, 187), gray);
-	drawCompass(surface, 231, 177, _yaw, 10, back);*/
+	surface->fillRect(Common::Rect(236, 170, 258, 187), white);
+	drawCompass(surface, 247, 177, _yaw, 13, back);
 
-	//drawIndicator(surface, 65, 7, 8);
+	drawIndicator(surface, 56, 4, 8);
 	drawEclipseIndicator(surface, 224, 0, front, green);
 }
 
diff --git a/engines/freescape/games/eclipse/eclipse.cpp b/engines/freescape/games/eclipse/eclipse.cpp
index f804e067622..13af15f9875 100644
--- a/engines/freescape/games/eclipse/eclipse.cpp
+++ b/engines/freescape/games/eclipse/eclipse.cpp
@@ -516,6 +516,9 @@ void EclipseEngine::drawAnalogClockHand(Graphics::Surface *surface, int x, int y
 	double w = magnitude * cos(degrees * degtorad);
 	double h = magnitude * sin(degrees * degtorad);
 	surface->drawLine(x, y, x+(int)w, y+(int)h, color);
+	if (isC64()) {
+		surface->drawLine(x+1, y, x+1+(int)w, y+(int)h, color);
+	}
 }
 
 void EclipseEngine::drawCompass(Graphics::Surface *surface, int x, int y, double degrees, double magnitude, uint32 color) {
@@ -528,28 +531,28 @@ void EclipseEngine::drawCompass(Graphics::Surface *surface, int x, int y, double
 
 	// Adjust dx and dy to make the compass look like a compass
 	if (degrees == 0 || degrees == 360) {
-		dx = 0;
+		dx = 1;
 		dy = 2;
 	} else if (degrees > 0 && degrees < 90) {
-		dx = 1;
+		dx = 2;
 		dy = 1;
 	} else if (degrees == 90) {
 		dx = 2;
-		dy = 0;
+		dy = 1;
 	} else if (degrees > 90 && degrees < 180) {
-		dx = 1;
+		dx = 2;
 		dy = -1;
 	} else if (degrees == 180) {
-		dx = 0;
+		dx = 1;
 		dy = 2;
 	} else if (degrees > 180 && degrees < 270) {
-		dx = -1;
+		dx = -2;
 		dy = -1;
 	} else if (degrees == 270) {
 		dx = 2;
-		dy = 0;
+		dy = 1;
 	} else if (degrees > 270 && degrees < 360) {
-		dx = -1;
+		dx = -2;
 		dy = 1;
 	}
 
@@ -619,7 +622,7 @@ void EclipseEngine::drawIndicator(Graphics::Surface *surface, int xPosition, int
 		return;
 
 	for (int i = 0; i < 5; i++) {
-		if (isSpectrum()) {
+		if (isSpectrum() || isC64()) {
 			if (_gameStateVars[kVariableEclipseAnkhs] <= i)
 				continue;
 		} else if (_gameStateVars[kVariableEclipseAnkhs] > i)




More information about the Scummvm-git-logs mailing list