[Scummvm-cvs-logs] SF.net SVN: scummvm:[35861] scummvm/trunk/engines/made/database.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Jan 14 12:18:14 CET 2009


Revision: 35861
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35861&view=rev
Author:   thebluegr
Date:     2009-01-14 11:18:14 +0000 (Wed, 14 Jan 2009)

Log Message:
-----------
Game database headers are verified now

Modified Paths:
--------------
    scummvm/trunk/engines/made/database.cpp

Modified: scummvm/trunk/engines/made/database.cpp
===================================================================
--- scummvm/trunk/engines/made/database.cpp	2009-01-14 07:47:52 UTC (rev 35860)
+++ scummvm/trunk/engines/made/database.cpp	2009-01-14 11:18:14 UTC (rev 35861)
@@ -370,11 +370,22 @@
 }
 
 void GameDatabaseV2::load(Common::SeekableReadStream &sourceS) {
+	int16 version = sourceS.readUint16LE();
 
-	// TODO: Read/verifiy header
+	// Manhole:NE, Rodney's Funscreen and LGOP2 are version 54
+	// The earlier EGA version of Manhole is version 40
+	if (version != 54 && version != 40)
+		warning("Unknown database version, known versions are 54 and 40");
 
-	sourceS.seek(0x1C);
+	char header[6];
+	sourceS.read(header, 6);
+	if (strncmp(header, "ADVSYS", 6))
+		warning ("Unexpected database header, expected ADVSYS");
 
+	/*uint32 unk = */sourceS.readUint16LE();
+
+	sourceS.skip(18);
+
 	uint32 textOffs = sourceS.readUint16LE() * 512;
 	uint16 objectCount = sourceS.readUint16LE();
 	uint16 varObjectCount = sourceS.readUint16LE();
@@ -527,10 +538,14 @@
 }
 
 void GameDatabaseV3::load(Common::SeekableReadStream &sourceS) {
+	char header[6];
+	sourceS.read(header, 6);
+	if (strncmp(header, "ADVSYS", 6))
+		warning ("Unexpected database header, expected ADVSYS");
 
-	// TODO: Read/verifiy header
+	/*uint32 unk = */sourceS.readUint32LE();
 
-	sourceS.seek(0x1E);
+	sourceS.skip(20);
 
 	uint32 objectIndexOffs = sourceS.readUint32LE();
 	uint16 objectCount = sourceS.readUint16LE();
@@ -649,7 +664,7 @@
 	if (size != expectedSize) {
 		warning("Unexpected save game size. Expected %d, size is %d", expectedSize, size);
 		delete in;
-		return false;
+		return 1;
 	}
 
 	int16 saveVersion = in->readUint16LE();


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