[Scummvm-cvs-logs] SF.net SVN: scummvm: [21299] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Tue Mar 14 11:49:03 CET 2006


Revision: 21299
Author:   lordhoto
Date:     2006-03-14 11:48:08 -0800 (Tue, 14 Mar 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21299&view=rev

Log Message:
-----------
- Deletes wrong spaces in debugC calls in resource.cpp
- Adds support for amiga .pak files (and a filelist)

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra.cpp
    scummvm/trunk/engines/kyra/kyra.h
    scummvm/trunk/engines/kyra/resource.cpp
    scummvm/trunk/engines/kyra/resource.h
Modified: scummvm/trunk/engines/kyra/kyra.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra.cpp	2006-03-14 19:08:09 UTC (rev 21298)
+++ scummvm/trunk/engines/kyra/kyra.cpp	2006-03-14 19:48:08 UTC (rev 21299)
@@ -84,6 +84,8 @@
 										"8909b41596913b3f5deaf3c9f1017b01", "GEMCUT.EMC"},
 	{ "kyra1", "The Legend of Kyrandia",		GI_KYRA1, GF_SPANISH | GF_FLOPPY, // floppy 1.8 from clemmy
 										"747861d2a9c643c59fdab570df5b9093", "GEMCUT.EMC"},
+	//{ "kyra1", "The Legend of Kyrandia",		GI_KYRA1, GF_AMIGA | GF_FLOPPY | GF_ENGLISH,
+	//									"2bd1da653eaefd691e050e4a9eb68a64", "GEMCUT.PAK" },
 	{ "kyra1", "The Legend of Kyrandia",		GI_KYRA1, GF_ENGLISH | GF_TALKIE, 
 										"fac399fe62f98671e56a005c5e94e39f", "GEMCUT.PAK" },
 	{ "kyra1", "The Legend of Kyrandia",		GI_KYRA1, GF_GERMAN | GF_TALKIE, 
@@ -554,7 +556,7 @@
 	uint32 sz;
 
 	res_loadResources();
-	if (_features & GF_FLOPPY) {
+	if (_features & GF_FLOPPY && !(_features & GF_AMIGA)) {
 		_screen->loadFont(Screen::FID_6_FNT, _res->fileData("6.FNT", &sz));
 	}
 	_screen->loadFont(Screen::FID_8_FNT, _res->fileData("8FAT.FNT", &sz));

Modified: scummvm/trunk/engines/kyra/kyra.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra.h	2006-03-14 19:08:09 UTC (rev 21298)
+++ scummvm/trunk/engines/kyra/kyra.h	2006-03-14 19:48:08 UTC (rev 21299)
@@ -56,7 +56,8 @@
 	GF_GERMAN	= 1 <<  6,
 	GF_SPANISH	= 1 <<  7,
 	// other languages here
-	GF_LNGUNK	= 1 << 16
+	GF_LNGUNK	= 1 << 16,
+	GF_AMIGA	= 1 << 17	// this is no special version flag yet!
 };
 
 enum {

Modified: scummvm/trunk/engines/kyra/resource.cpp
===================================================================
--- scummvm/trunk/engines/kyra/resource.cpp	2006-03-14 19:08:09 UTC (rev 21298)
+++ scummvm/trunk/engines/kyra/resource.cpp	2006-03-14 19:48:08 UTC (rev 21299)
@@ -46,6 +46,25 @@
 		"WSA6.PAK", 0
 	};
 
+	/*static const char *kyra1AmigaFilelist[] = {
+		"alchemy.pak",  "chasm.pak",    "finale1.pak",   "gen_cav.pak",  "mix.pak",      "spring.pak",
+		"algae.pak",    "cliff.pak",    "finale2.pak",   "genhall.pak",  "mooncav.pak",  "square.pak",
+		"altar.pak",    "darms.pak",    "fnorth.pak",    "glade.pak",    "ncliffb.pak",  "startup.pak",
+		"arch.pak",     "dead.pak",     "foresta.pak",   "grave.pak",    "ncliff.pak",   "stump.pak",
+		"balcony.pak",  "dnstair.pak",  "forestb.pak",   "grthall.pak",  "nwclifb.pak",  "temple.pak",
+		"belroom.pak",  "dragon.pak",   "forestc.pak",   "healer.pak",   "nwcliff.pak",  "trunk.pak",
+		"bonkbg.pak",   "drgnwsa.pak",  "fountn.pak",    "herman.pak",   "oaks.pak",     "upstair.pak",
+		"bridge.pak",   "edgeb.pak",    "foyer.pak",     "intro1.pak",   "plateau.pak",  "well.pak",
+		"brins.pak",    "edge.pak",     "frstawsa.pak",  "kitchen.pak",  "pltcave.pak",  "willow.pak",
+		"broken.pak",   "emcav.pak",    "fsouthb.pak",   "kyragem.pak",  "potion.pak",   "wise.pak",
+		"burn.pak",     "enter.pak",    "fsouth.pak",    "lagoon.pak",   "potwsa.pak",   "xedgeb.pak",
+		"castle.pak",   "extheal.pak",  "fwststh.pak",   "landing.pak",  "ruby.pak",     "xedgec.pak",
+		"catacom.pak",  "extpot.pak",   "gatecv.pak",    "lava.pak",     "sickwil.pak",  "xedge.pak",
+		"caveb.pak",    "extspel.pak",  "gemcut.pak",    "lephole.pak",  "song.pak",     "zrock.pak",
+		"cave.pak",     "falls.pak",    "gem.pak",       "library.pak",  "sorrow.pak",
+		"cgate.pak",    "fgowest.pak",  "gencavb.pak",   "misc.pak",     "spell.pak", 0
+	};*/
+
 	static const char *kyra1CDFilelist[] = {
 		"ALTAR.APK", "BELROOM.APK", "BONKBG.APK", "BROKEN.APK", "CASTLE.APK", "CAVE.APK", "CGATE.APK",
 		"DEAD.APK", "DNSTAIR.APK", "DRAGON1.APK", "DRAGON2.APK", "EXTPOT.APK", "FORESTA.APK", "FORESTB.APK",
@@ -74,7 +93,9 @@
 
 	const char **usedFilelist = 0;
 
-	if (_engine->features() & GF_FLOPPY)
+	/*if (_engine->features() & GF_AMIGA)
+		usedFilelist = kyra1AmigaFilelist;
+	else*/ if (_engine->features() & GF_FLOPPY)
 		usedFilelist = kyra1Filelist;
 	else if (_engine->features() & GF_TALKIE)
 		usedFilelist = kyra1CDFilelist;
@@ -83,15 +104,15 @@
 
 	for (uint32 tmp = 0; usedFilelist[tmp]; ++tmp) {
 		// prefetch file
-		PAKFile *file = new PAKFile(usedFilelist[tmp]);
+		PAKFile *file = new PAKFile(usedFilelist[tmp], (_engine->features() & GF_AMIGA) != 0);
 		assert(file);
 
 		PakFileEntry newPak;
 		newPak._file = file;
 		strncpy(newPak._filename, usedFilelist[tmp], 32);
-		if (file->isOpen() && file->isValid())
+		if (file->isOpen() && file->isValid()) {
 			_pakfiles.push_back(newPak);
-		else {
+		} else {
 			delete file;
 			debug(3, "couldn't load file '%s' correctly", usedFilelist[tmp]);
 		}
@@ -203,8 +224,9 @@
 ///////////////////////////////////////////
 // Pak file manager
 #define PAKFile_Iterate Common::List<PakChunk*>::iterator start=_files.begin();start != _files.end(); ++start
-PAKFile::PAKFile(const Common::String& file) {
+PAKFile::PAKFile(const Common::String& file, bool amiga) {
 	_filename = 0;
+	_amiga = amiga;
 
 	Common::File pakfile;
 	uint8 *buffer = 0;
@@ -225,7 +247,11 @@
 	// works with the file
 	uint32 pos = 0, startoffset = 0, endoffset = 0;
 
-	startoffset = READ_LE_UINT32(buffer + pos);
+	if (!_amiga) {
+		startoffset = READ_LE_UINT32(buffer + pos);
+	} else {
+		startoffset = READ_BE_UINT32(buffer + pos);
+	}
 	pos += 4;
 
 	while (pos < filesize) {
@@ -240,7 +266,11 @@
 		if (!(*chunk->_name))
 			break;
 
-		endoffset = READ_LE_UINT32(buffer + pos);
+		if (!_amiga) {
+			endoffset = READ_LE_UINT32(buffer + pos);
+		} else {
+			endoffset = READ_BE_UINT32(buffer + pos);
+		}
 		pos += 4;
 
 		if (endoffset == 0) {
@@ -321,19 +351,19 @@
 }
 
 void KyraEngine::loadPalette(const char *filename, uint8 *palData) {
-	debugC( 9, kDebugLevelMain, "KyraEngine::loadPalette('%s' %p)", filename, (void *)palData);
+	debugC(9, kDebugLevelMain, "KyraEngine::loadPalette('%s' %p)", filename, (void *)palData);
 	uint32 fileSize = 0;
 	uint8 *srcData = _res->fileData(filename, &fileSize);
 
 	if (palData && fileSize) {
-		debugC( 9, kDebugLevelMain,"Loading a palette of size %i from '%s'", fileSize, filename);
+		debugC(9, kDebugLevelMain,"Loading a palette of size %i from '%s'", fileSize, filename);
 		memcpy(palData, srcData, fileSize);
 	}
 	delete [] srcData;
 }
 
 void KyraEngine::loadBitmap(const char *filename, int tempPage, int dstPage, uint8 *palData) {
-	debugC( 9, kDebugLevelMain,"KyraEngine::copyBitmap('%s', %d, %d, %p)", filename, tempPage, dstPage, (void *)palData);
+	debug("KyraEngine::loadBitmap('%s', %d, %d, %p)", filename, tempPage, dstPage, (void *)palData);
 	uint32 fileSize;
 	uint8 *srcData = _res->fileData(filename, &fileSize);
 	assert(srcData);
@@ -341,7 +371,7 @@
 	uint32 imgSize = READ_LE_UINT32(srcData + 4);
 	uint16 palSize = READ_LE_UINT16(srcData + 8);
 	if (palData && palSize) {
-		debugC( 9, kDebugLevelMain,"Loading a palette of size %i from %s", palSize, filename);
+		debugC(9, kDebugLevelMain,"Loading a palette of size %i from %s", palSize, filename);
 		memcpy(palData, srcData + 10, palSize);		
 	}
 	uint8 *srcPtr = srcData + 10 + palSize;

Modified: scummvm/trunk/engines/kyra/resource.h
===================================================================
--- scummvm/trunk/engines/kyra/resource.h	2006-03-14 19:08:09 UTC (rev 21298)
+++ scummvm/trunk/engines/kyra/resource.h	2006-03-14 19:48:08 UTC (rev 21299)
@@ -43,7 +43,7 @@
 
 public:
 
-	PAKFile(const Common::String &file);
+	PAKFile(const Common::String &file, bool amiga = false);
 	~PAKFile();
 
 	uint8* getFile(const char *file);
@@ -56,6 +56,7 @@
 private:
 
 	bool _open;
+	bool _amiga;
 	char *_filename;
 	Common::List<PakChunk*> _files; // the entries
 };


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