[Scummvm-cvs-logs] SF.net SVN: scummvm: [24250] scummvm/trunk/engines/agos

kirben at users.sourceforge.net kirben at users.sourceforge.net
Mon Oct 9 12:26:35 CEST 2006


Revision: 24250
          http://svn.sourceforge.net/scummvm/?rev=24250&view=rev
Author:   kirben
Date:     2006-10-09 03:26:27 -0700 (Mon, 09 Oct 2006)

Log Message:
-----------
Add Amiga ECS verison of Simon the Sorcerer 1

Modified Paths:
--------------
    scummvm/trunk/engines/agos/game.cpp
    scummvm/trunk/engines/agos/intern.h
    scummvm/trunk/engines/agos/items.cpp
    scummvm/trunk/engines/agos/res.cpp
    scummvm/trunk/engines/agos/res_ami.cpp
    scummvm/trunk/engines/agos/vga.cpp

Modified: scummvm/trunk/engines/agos/game.cpp
===================================================================
--- scummvm/trunk/engines/agos/game.cpp	2006-10-09 07:02:11 UTC (rev 24249)
+++ scummvm/trunk/engines/agos/game.cpp	2006-10-09 10:26:27 UTC (rev 24250)
@@ -245,34 +245,41 @@
 	{ "tbllist", 	GAME_TBLFILE,	"d198a80de2c59e4a0cd24b98814849e8"},
 };
 
-static const ADGameFileDescription SIMON1AMIGA_GameFiles[] = {
+static const ADGameFileDescription SIMON1AMIGA_ECS_GameFiles[] = {
+	{ "gameamiga",		GAME_BASEFILE,	"bb94a688e247695d912cce9d0173d73a"},
+	{ "icon.pkd",		GAME_ICONFILE,	"565ef7a98dcc21ef526a2bb10b6f42ed"},
+	{ "stripped.txt",	GAME_STRFILE,	"f5fc67db3b8c5283cda51c43b98a74f8"},
+	{ "tbllist",		GAME_TBLFILE,	"f9d5bf2ce09f82289c791c3ca26e1e4b"},
+};
+
+static const ADGameFileDescription SIMON1AMIGA_ECS_DEMO_GameFiles[] = {
+	{ "gameamiga",		GAME_BASEFILE,	"a12b696170f14eca5ff75f1549829251"},  // Unpacked version
+	{ "icon.pkd",		GAME_ICONFILE,	"ebc96af15bfaf75ba8210326b9260d2f"},
+	{ "stripped.txt",	GAME_STRFILE,	"8edde5b9498dc9f31da1093028da467c"},
+	{ "tbllist",		GAME_TBLFILE,	"1247e024e1f13ca54c1e354120c7519c"},
+};
+
+static const ADGameFileDescription SIMON1AMIGA_AGA_GameFiles[] = {
 	{ "gameamiga",		GAME_BASEFILE,	"6c9ad2ff571d34a4cf0c696cf4e13500"},
 	{ "icon.pkd",		GAME_ICONFILE,	"565ef7a98dcc21ef526a2bb10b6f42ed"},
 	{ "stripped.txt",	GAME_STRFILE,	"c649fcc0439766810e5097ee7e81d4c8"},
 	{ "tbllist",		GAME_TBLFILE,	"f9d5bf2ce09f82289c791c3ca26e1e4b"},
 };
 
-static const ADGameFileDescription SIMON1AMIGA_FR_GameFiles[] = {
+static const ADGameFileDescription SIMON1AMIGA_AGA_FR_GameFiles[] = {
 	{ "gameamiga",		GAME_BASEFILE,	"bd9828b9d4e5d89b50fe8c47a8e6bc07"},
 	{ "icon.pkd",		GAME_ICONFILE,	"565ef7a98dcc21ef526a2bb10b6f42ed"},
 	{ "stripped.txt",	GAME_STRFILE,	"2297baec985617d0d5612a0124bac359"},
 	{ "tbllist",		GAME_TBLFILE,	"f9d5bf2ce09f82289c791c3ca26e1e4b"},
 };
 
-static const ADGameFileDescription SIMON1AMIGA_DE_GameFiles[] = {
+static const ADGameFileDescription SIMON1AMIGA_AGA_DE_GameFiles[] = {
 	{ "gameamiga",		GAME_BASEFILE,	"a2de9553f3b73064369948b5af38bb30"},
 	{ "icon.pkd",		GAME_ICONFILE,	"565ef7a98dcc21ef526a2bb10b6f42ed"},
 	{ "stripped.txt",	GAME_STRFILE,	"c649fcc0439766810e5097ee7e81d4c8"},
 	{ "tbllist",		GAME_TBLFILE,	"f9d5bf2ce09f82289c791c3ca26e1e4b"},
 };
 
-static const ADGameFileDescription SIMON1AMIGADEMO_GameFiles[] = {
-	{ "gameamiga",		GAME_BASEFILE,	"a12b696170f14eca5ff75f1549829251"},  // Unpacked version
-	{ "icon.pkd",		GAME_ICONFILE,	"ebc96af15bfaf75ba8210326b9260d2f"},
-	{ "stripped.txt",	GAME_STRFILE,	"8edde5b9498dc9f31da1093028da467c"},
-	{ "tbllist",		GAME_TBLFILE,	"1247e024e1f13ca54c1e354120c7519c"},
-};
-
 static const ADGameFileDescription SIMON1CD32_GameFiles[] = {
 	{ "gameamiga",		GAME_BASEFILE,	"bab7f19237cf7d7619b6c73631da1854"},
 	{ "icon.pkd",		GAME_ICONFILE,	"565ef7a98dcc21ef526a2bb10b6f42ed"},
@@ -849,30 +856,46 @@
 		GF_TALKIE,
 	},
 
-	// Simon the Sorcerer 1 - English Amiga AGA Floppy
+	// Simon the Sorcerer 1 - English Amiga ECS Floppy
 	{
 		{
 			"simon1",
-			"AGA Floppy",
-			ARRAYSIZE(SIMON1AMIGA_GameFiles),
-			SIMON1AMIGA_GameFiles,
+			"ECS Floppy",
+			ARRAYSIZE(SIMON1AMIGA_ECS_GameFiles),
+			SIMON1AMIGA_ECS_GameFiles,
 			Common::EN_ANY,
 			Common::kPlatformAmiga,
 		},
 
 		GType_SIMON1,
-		GID_SIMON1AMIGA,
-		GF_CRUNCHED | GF_OLD_BUNDLE,
+		GID_SIMON1AMIGADEMO,
+		GF_32COLOR | GF_CRUNCHED | GF_OLD_BUNDLE,
 	},
 
-	// Simon the Sorcerer 1 - French Amiga AGA Floppy
+	// Simon the Sorcerer 1 - English Amiga ECS Demo
 	{
 		{
 			"simon1",
+			"ECS Demo",
+			ARRAYSIZE(SIMON1AMIGA_ECS_DEMO_GameFiles),
+			SIMON1AMIGA_ECS_DEMO_GameFiles,
+			Common::EN_ANY,
+			Common::kPlatformAmiga,
+		},
+
+		GType_SIMON1,
+		GID_SIMON1AMIGADEMO,
+		GF_32COLOR | GF_CRUNCHED | GF_OLD_BUNDLE,
+	},
+
+	// Simon the Sorcerer 1 - English Amiga AGA Floppy
+	{
+		{
+			"simon1",
 			"AGA Floppy",
-			ARRAYSIZE(SIMON1AMIGA_FR_GameFiles),
-			SIMON1AMIGA_FR_GameFiles,
-			Common::FR_FRA,
+			ARRAYSIZE(SIMON1AMIGA_AGA_GameFiles),
+			SIMON1AMIGA_AGA_GameFiles,
+			Common::EN_ANY,
 			Common::kPlatformAmiga,
 		},
 
@@ -881,14 +904,14 @@
 		GF_CRUNCHED | GF_OLD_BUNDLE,
 	},
 
-	// Simon the Sorcerer 1 - German Amiga AGA Floppy
+	// Simon the Sorcerer 1 - French Amiga AGA Floppy
 	{
 		{
 			"simon1",
 			"AGA Floppy",
-			ARRAYSIZE(SIMON1AMIGA_DE_GameFiles),
-			SIMON1AMIGA_DE_GameFiles,
-			Common::DE_DEU,
+			ARRAYSIZE(SIMON1AMIGA_AGA_FR_GameFiles),
+			SIMON1AMIGA_AGA_FR_GameFiles,
+			Common::FR_FRA,
 			Common::kPlatformAmiga,
 		},
 
@@ -897,19 +920,19 @@
 		GF_CRUNCHED | GF_OLD_BUNDLE,
 	},
 
-	// Simon the Sorcerer 1 - English Amiga ECS Demo
+	// Simon the Sorcerer 1 - German Amiga AGA Floppy
 	{
 		{
 			"simon1",
-			"ECS Demo",
-			ARRAYSIZE(SIMON1AMIGADEMO_GameFiles),
-			SIMON1AMIGADEMO_GameFiles,
-			Common::EN_ANY,
+			"AGA Floppy",
+			ARRAYSIZE(SIMON1AMIGA_AGA_DE_GameFiles),
+			SIMON1AMIGA_AGA_DE_GameFiles,
+			Common::DE_DEU,
 			Common::kPlatformAmiga,
 		},
 
 		GType_SIMON1,
-		GID_SIMON1AMIGADEMO,
+		GID_SIMON1AMIGA,
 		GF_CRUNCHED | GF_OLD_BUNDLE,
 	},
 

Modified: scummvm/trunk/engines/agos/intern.h
===================================================================
--- scummvm/trunk/engines/agos/intern.h	2006-10-09 07:02:11 UTC (rev 24249)
+++ scummvm/trunk/engines/agos/intern.h	2006-10-09 10:26:27 UTC (rev 24250)
@@ -208,7 +208,8 @@
 	GF_TALKIE     = 1 << 0,
 	GF_OLD_BUNDLE = 1 << 1,
 	GF_CRUNCHED   = 1 << 2,
-	GF_ZLIBCOMP   = 1 << 3
+	GF_ZLIBCOMP   = 1 << 3,
+	GF_32COLOR    = 1 << 4
 };
 
 enum GameFileTypes {

Modified: scummvm/trunk/engines/agos/items.cpp
===================================================================
--- scummvm/trunk/engines/agos/items.cpp	2006-10-09 07:02:11 UTC (rev 24249)
+++ scummvm/trunk/engines/agos/items.cpp	2006-10-09 10:26:27 UTC (rev 24250)
@@ -884,7 +884,12 @@
 	// 53: random
 	uint var = getVarWrapper();
 	uint value = (uint16)getVarOrWord();
-	writeVariable(var, _rnd.getRandomNumber(value - 1));
+
+	// Copy protection subtitles aren't displayed in Amiga version
+	if (getGameId() == GID_SIMON1AMIGA && var == 51 && value == 8)
+		writeVariable(var, 4);
+	else
+		writeVariable(var, _rnd.getRandomNumber(value - 1));
 }
 
 void AGOSEngine::o_moveDirn() {

Modified: scummvm/trunk/engines/agos/res.cpp
===================================================================
--- scummvm/trunk/engines/agos/res.cpp	2006-10-09 07:02:11 UTC (rev 24249)
+++ scummvm/trunk/engines/agos/res.cpp	2006-10-09 10:26:27 UTC (rev 24250)
@@ -708,9 +708,17 @@
 				}
 				free(srcBuffer);
 			} else {
-				dst = allocBlock(dstSize + extraBuffer);
-				if (in.read(dst, dstSize) != dstSize)
-					error("loadVGAFile: Read failed");
+				//if (getGameId() == GID_SIMON1CD32) {
+				//	dst = (byte *)malloc(dstSize);
+				//	if (in.read(dst, dstSize) != dstSize)
+				//		error("loadVGAFile: Read failed");
+				//	convertAmiga(dst, dstSize);
+				//	free(dst);
+				//} else {
+					dst = allocBlock(dstSize + extraBuffer);
+					if (in.read(dst, dstSize) != dstSize)
+						error("loadVGAFile: Read failed");
+				//}
 			}
 			in.close();
 		} else if (type != 3) {

Modified: scummvm/trunk/engines/agos/res_ami.cpp
===================================================================
--- scummvm/trunk/engines/agos/res_ami.cpp	2006-10-09 07:02:11 UTC (rev 24249)
+++ scummvm/trunk/engines/agos/res_ami.cpp	2006-10-09 10:26:27 UTC (rev 24250)
@@ -39,6 +39,8 @@
 int clipnumber;
 
 static void uncompressplane(byte *plane, byte *outptr, uint16 length) {
+	debug(0, "uncompressplane: length %d", length);
+
 	char x;
 	byte y, z;
 	while (length) {
@@ -69,6 +71,8 @@
 }
 
 static void convertcompressedclip(uint16 height, uint16 width) {
+	debug(0, "convertcompressedclip: height %d width %d", height, width);
+
 	byte *plane0;
 	byte *plane1;
 	byte *plane2;
@@ -218,6 +222,8 @@
 }
 
 static void convertclip(uint32 offset, uint16 height, uint16 width) {
+	debug(0, "convertclip: height %d width %d", height, width);
+
 	uint32 length, i, j;
 	uint16 word1, word2, word3, word4;
 	byte outbyte, outbyte1;

Modified: scummvm/trunk/engines/agos/vga.cpp
===================================================================
--- scummvm/trunk/engines/agos/vga.cpp	2006-10-09 07:02:11 UTC (rev 24249)
+++ scummvm/trunk/engines/agos/vga.cpp	2006-10-09 10:26:27 UTC (rev 24250)
@@ -959,6 +959,10 @@
 		state.palette = 0;
 	}
 
+	if (getFeatures() & GF_32COLOR) {
+		state.palette = 0;
+	}
+
 	state.x = (int16)vcReadNextWord();
 	state.x -= _scrollX;
 
@@ -2147,9 +2151,10 @@
 
 void AGOSEngine::vc45_setSpriteX() {
 	if (getGameType() == GType_ELVIRA2 || getGameType() == GType_WW) {
-		//FIXME
-		vcReadNextWord();
-		vcReadNextWord();
+		uint num = vcReadNextWord();
+		uint color = vcReadNextWord();
+
+		debug(0, "vc45: window %d color %d\n", num, color);
 	} else {
 		VgaSprite *vsp = findCurSprite();
 		vsp->x = vcReadVar(vcReadNextWord());


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list