[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