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

kirben at users.sourceforge.net kirben at users.sourceforge.net
Thu Oct 5 05:43:48 CEST 2006


Revision: 24120
          http://svn.sourceforge.net/scummvm/?rev=24120&view=rev
Author:   kirben
Date:     2006-10-04 20:43:40 -0700 (Wed, 04 Oct 2006)

Log Message:
-----------
Add Amiga versions of Elvira 1/2 and Waxworks

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/game.cpp
    scummvm/trunk/engines/agos/midiparser_s1d.cpp
    scummvm/trunk/engines/agos/res.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2006-10-05 02:08:51 UTC (rev 24119)
+++ scummvm/trunk/engines/agos/agos.cpp	2006-10-05 03:43:40 UTC (rev 24120)
@@ -616,7 +616,7 @@
 #else
 		_vgaMemSize = gVars->memory[kMemSimon1Games];
 #endif
-		_itemMemSize = 64000;
+		_itemMemSize = 80000;
 		_tableMemSize = 50000;
 		_frameRate = 4;
 		_vgaBaseDelay = 1;
@@ -645,7 +645,7 @@
 		_vgaMemSize = gVars->memory[kMemSimon1Games];
 #endif
 		_itemMemSize = 64000;
-		_tableMemSize = 80000;
+		_tableMemSize = 256000;
 		_frameRate = 4;
 		_vgaBaseDelay = 1;
 		_numVars = 512;
@@ -2364,6 +2364,9 @@
 
 		midi.startTrack (0);
 	} else {
+		if (getPlatform() == Common::kPlatformAmiga)
+			return;
+
 		midi.stop();
 		midi.setLoop (true); // Must do this BEFORE loading music. (GMF may have its own override.)
 

Modified: scummvm/trunk/engines/agos/game.cpp
===================================================================
--- scummvm/trunk/engines/agos/game.cpp	2006-10-05 02:08:51 UTC (rev 24119)
+++ scummvm/trunk/engines/agos/game.cpp	2006-10-05 03:43:40 UTC (rev 24120)
@@ -169,6 +169,11 @@
 using Common::ADGameFileDescription;
 using Common::ADGameDescription;
 
+static ADGameFileDescription ELVIRA1AMIGA_GameFiles[] = {
+	{ "gameamiga",		GAME_BASEFILE,	"7bdaff4a118d8035047cf9b1393b3fa0"},
+	{ "icon.dat",		GAME_ICONFILE,	"2db931e84f1ca01f0816dddfae3f49e1"},
+};
+
 static ADGameFileDescription ELVIRA1DOS_GameFiles[] = {
 	{ "gamepc",		GAME_BASEFILE,	"a49e132a1f18306dd5d1ec2fe435e178"},
 	{ "icon.dat",		GAME_ICONFILE,	"fda48c9da7f3e72d0313e2f5f760fc45"},
@@ -181,6 +186,13 @@
 	{ "tbllist",		GAME_TBLFILE,	"319f6b227c7822a551f57d24e70f8149"},
 };
 
+static ADGameFileDescription ELVIRA2AMIGA_GameFiles[] = {
+	{ "gameamiga",		GAME_BASEFILE,	"4aa163967f5d2bd319f8350d6af03186"},
+	{ "icon.dat",		GAME_ICONFILE,	"a88b1c02e13ab04dd790ec30502c323d"},
+	{ "stripped.txt",	GAME_STRFILE,	"41c975a9c1106cb5298a0bc3df0a266e"},
+	{ "tbllist",		GAME_TBLFILE,	"177f5f2640e80ef92d1421d32de06a5e"},
+};
+
 static ADGameFileDescription ELVIRA2DOS_GameFiles[] = {
 	{ "gamepc",		GAME_BASEFILE,	"3313254722031b22d833a2cf45a91fd7"},
 	{ "icon.dat",		GAME_ICONFILE,	"83a7278bff55c82fbb3aef92981866c9"},
@@ -195,6 +207,14 @@
 	{ "tbllist",		GAME_TBLFILE,	"8252660df0edbdbc3e6377e155bbd0c5"},
 };
 
+static ADGameFileDescription WAXWORKSAMIGA_GameFiles[] = {
+	{ "gameamiga",		GAME_BASEFILE,	"e6207a69cf7356f13acbe8d14bdd844e"},  // Unpacked version
+	{ "icon.pkd",		GAME_ICONFILE,	"4822a91c18b1b2005ac17fc617f7dcbe"},
+	{ "stripped.txt",	GAME_STRFILE,	"6faaebff2786216900061eeb978f10af"},
+	{ "tbllist",		GAME_TBLFILE,	"95c44bfc380770a6b6dd0dfcc69e80a0"},
+	{ "xtbllist",		GAME_XTBLFILE,	"6c7b3db345d46349a5226f695c03e20f"},
+};
+
 static ADGameFileDescription WAXWORKSDOS_GameFiles[] = {
 	{ "gamepc",		GAME_BASEFILE,	"7751e9358e894e32ef40ef3b3bae0f2a"},
 	{ "icon.dat",		GAME_ICONFILE,	"ef1b8ad3494cf103dc10a99fe152ef9a"},
@@ -648,11 +668,27 @@
 };
 
 static AGOSGameDescription gameDescriptions[] = {
-	// Elvira - English Floppy
+	// Elvira - English Amiga Floppy
 	{
 		{
 			"elvira",
 			"Floppy",
+			ARRAYSIZE(ELVIRA1AMIGA_GameFiles),
+			ELVIRA1AMIGA_GameFiles,
+			Common::EN_ANY,
+			Common::kPlatformAmiga,
+		},
+
+		GType_ELVIRA,
+		GID_ELVIRA,
+		GF_OLD_BUNDLE | GF_CRUNCHED,
+	},
+
+	// Elvira - English DOS Floppy
+	{
+		{
+			"elvira",
+			"Floppy",
 			ARRAYSIZE(ELVIRA1DOS_GameFiles),
 			ELVIRA1DOS_GameFiles,
 			Common::EN_ANY,
@@ -664,7 +700,7 @@
 		GF_OLD_BUNDLE,
 	},
 
-	// Elvira - English Floppy Alternative?
+	// Elvira - English DOS Floppy Alternative?
 	{
 		{
 			"elvira",
@@ -680,11 +716,27 @@
 		GF_OLD_BUNDLE,
 	},
 
-	// Elvira 2 - English Floppy
+	// Elvira 2 - English Amiga Floppy
 	{
 		{
 			"elvira2",
 			"Floppy",
+			ARRAYSIZE(ELVIRA2AMIGA_GameFiles),
+			ELVIRA2AMIGA_GameFiles,
+			Common::EN_ANY,
+			Common::kPlatformAmiga,
+		},
+
+		GType_ELVIRA2,
+		GID_ELVIRA2,
+		GF_OLD_BUNDLE | GF_CRUNCHED,
+	},
+
+	// Elvira 2 - English DOS Floppy
+	{
+		{
+			"elvira2",
+			"Floppy",
 			ARRAYSIZE(ELVIRA2DOS_GameFiles),
 			ELVIRA2DOS_GameFiles,
 			Common::EN_ANY,
@@ -696,7 +748,7 @@
 		GF_OLD_BUNDLE,
 	},
 
-	// Elvira 2 - French Floppy
+	// Elvira 2 - French DOS Floppy
 	{
 		{
 			"elvira2",
@@ -712,11 +764,27 @@
 		GF_OLD_BUNDLE,
 	},
 
-	// Waxworks - English Floppy
+	// Waxworks - English Amiga Floppy
 	{
 		{
 			"waxworks",
 			"Floppy",
+			ARRAYSIZE(WAXWORKSAMIGA_GameFiles),
+			WAXWORKSAMIGA_GameFiles,
+			Common::EN_ANY,
+			Common::kPlatformAmiga,
+		},
+
+		GType_WW,
+		GID_WAXWORKS,
+		GF_OLD_BUNDLE | GF_CRUNCHED,
+	},
+
+	// Waxworks - English DOS Floppy
+	{
+		{
+			"waxworks",
+			"Floppy",
 			ARRAYSIZE(WAXWORKSDOS_GameFiles),
 			WAXWORKSDOS_GameFiles,
 			Common::EN_ANY,
@@ -760,7 +828,7 @@
 		GF_TALKIE,
 	},
 
-	// Simon the Sorcerer 1 - English AGA Floppy
+	// Simon the Sorcerer 1 - English Amiga AGA Floppy
 	{
 		{
 			"simon1",
@@ -776,7 +844,7 @@
 		GF_CRUNCHED | GF_OLD_BUNDLE,
 	},
 
-	// Simon the Sorcerer 1 - French AGA Floppy
+	// Simon the Sorcerer 1 - French Amiga AGA Floppy
 	{
 		{
 			"simon1",
@@ -792,7 +860,7 @@
 		GF_CRUNCHED | GF_OLD_BUNDLE,
 	},
 
-	// Simon the Sorcerer 1 - German AGA Floppy
+	// Simon the Sorcerer 1 - German Amiga AGA Floppy
 	{
 		{
 			"simon1",

Modified: scummvm/trunk/engines/agos/midiparser_s1d.cpp
===================================================================
--- scummvm/trunk/engines/agos/midiparser_s1d.cpp	2006-10-05 02:08:51 UTC (rev 24119)
+++ scummvm/trunk/engines/agos/midiparser_s1d.cpp	2006-10-05 03:43:40 UTC (rev 24120)
@@ -115,7 +115,7 @@
 		// OTherwise fall through to default.
 
 	default:
-		debug(3, "MidiParser_S1D: Unexpected byte 0x%02X found", (int) info.command());
+		debug(6, "MidiParser_S1D: Unexpected byte 0x%02X found", (int) info.command());
 		break;
 	}
 }

Modified: scummvm/trunk/engines/agos/res.cpp
===================================================================
--- scummvm/trunk/engines/agos/res.cpp	2006-10-05 02:08:51 UTC (rev 24119)
+++ scummvm/trunk/engines/agos/res.cpp	2006-10-05 03:43:40 UTC (rev 24120)
@@ -173,7 +173,8 @@
 
 	in.close();
 
-	if (getGameType() == GType_PP)
+	if ((getGameType() == GType_ELVIRA && getPlatform() == Common::kPlatformAmiga) ||
+		getGameType() == GType_PP)
 		return;
 
 	/* Read list of TABLE resources */
@@ -210,42 +211,42 @@
 	in.read(_strippedTxtMem, file_size);
 	in.close();
 
-	if (getGameType() != GType_WW)
-		return;
+	if (getGameType() == GType_WW && getPlatform() == Common::kPlatformPC) {
+		/* Read list of ROOM ITEMS resources */
+		in.open(getFileName(GAME_RMSLFILE));
+		if (in.isOpen() == false) {
+			error("loadGamePcFile: Can't load room resources file '%s'", getFileName(GAME_XTBLFILE));
+		}
 
-	/* Read list of ROOM ITEMS resources */
-	in.open(getFileName(GAME_RMSLFILE));
-	if (in.isOpen() == false) {
-		error("loadGamePcFile: Can't load room resources file '%s'", getFileName(GAME_XTBLFILE));
-	}
+		file_size = in.size();
 
-	file_size = in.size();
-
-	_roomsList = (byte *)malloc(file_size);
-	if (_roomsList == NULL)
-		error("loadGamePcFile: Out of memory for room items list");
-	in.read(_roomsList, file_size);
-	in.close();
-
-	/* Read list of XTABLE resources */
-	in.open(getFileName(GAME_XTBLFILE));
-	if (in.isOpen() == false) {
-		error("loadGamePcFile: Can't load xtable resources file '%s'", getFileName(GAME_XTBLFILE));
+		_roomsList = (byte *)malloc(file_size);
+		if (_roomsList == NULL)
+			error("loadGamePcFile: Out of memory for room items list");
+		in.read(_roomsList, file_size);
+		in.close();
 	}
 
-	file_size = in.size();
+	if (getGameType() == GType_WW) {
+		/* Read list of XTABLE resources */
+		in.open(getFileName(GAME_XTBLFILE));
+		if (in.isOpen() == false) {
+			error("loadGamePcFile: Can't load xtable resources file '%s'", getFileName(GAME_XTBLFILE));
+		}
 
-	_xtblList = (byte *)malloc(file_size);
-	if (_xtblList == NULL)
-		error("loadGamePcFile: Out of memory for strip xtable list");
-	in.read(_xtblList, file_size);
-	in.close();
+		file_size = in.size();
 
-	/* Remember the current state */
-	_xsubroutineListOrg = _subroutineList;
-	_xtablesHeapPtrOrg = _tablesHeapPtr;
-	_xtablesHeapCurPosOrg = _tablesHeapCurPos;
+		_xtblList = (byte *)malloc(file_size);
+		if (_xtblList == NULL)
+			error("loadGamePcFile: Out of memory for strip xtable list");
+		in.read(_xtblList, file_size);
+		in.close();
 
+		/* Remember the current state */
+		_xsubroutineListOrg = _subroutineList;
+		_xtablesHeapPtrOrg = _tablesHeapPtr;
+		_xtablesHeapCurPosOrg = _tablesHeapCurPos;
+	}
 }
 
 void AGOSEngine::readGamePcText(Common::File *in) {
@@ -668,6 +669,8 @@
 		if (getPlatform() == Common::kPlatformAmiga) {
 			if (getFeatures() & GF_TALKIE)
 				sprintf(filename, "%.3d%d.out", id, type);
+			else if (getGameType() == GType_ELVIRA || getGameType() == GType_ELVIRA2)
+				sprintf(filename, "%.2d%d.pkd", id, type);
 			else
 				sprintf(filename, "%.3d%d.pkd", id, type);
 		} else {


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