[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.424,2.425 resource_v4.cpp,1.17,1.18 resource_v7he.cpp,1.24,1.25 scumm.cpp,1.409,1.410

kirben kirben at users.sourceforge.net
Thu Apr 7 04:51:03 CEST 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29385/scumm

Modified Files:
	intern.h resource_v4.cpp resource_v7he.cpp scumm.cpp 
Log Message:

Split readMAXS between HE versions


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.424
retrieving revision 2.425
diff -u -d -r2.424 -r2.425
--- intern.h	7 Apr 2005 11:15:09 -0000	2.424
+++ intern.h	7 Apr 2005 11:43:21 -0000	2.425
@@ -754,6 +754,8 @@
 	ScummEngine_v72he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v70he(detector, syst, gs, md5sum) {}
 
 protected:
+	virtual void readMAXS(int blockSize);
+
 	virtual void setupOpcodes();
 	virtual void executeOpcode(byte i);
 	virtual const char *getOpcodeDesc(byte i);
@@ -922,6 +924,8 @@
 	virtual void scummInit();
 
 protected:
+	virtual void readMAXS(int blockSize);
+
 	virtual void allocateArrays();
 	virtual void setupOpcodes();
 	virtual void executeOpcode(byte i);
@@ -1096,6 +1100,8 @@
 	virtual void scummInit();
 
 protected:
+	virtual void readMAXS(int blockSize);
+
 	virtual void copyPalColor(int dst, int src);
 	virtual void darkenPalette(int redScale, int greenScale, int blueScale, int startColor, int endColor);
 	virtual void setPaletteFromPtr(const byte *ptr, int numcolor = -1);

Index: resource_v4.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource_v4.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- resource_v4.cpp	6 Apr 2005 17:31:08 -0000	1.17
+++ resource_v4.cpp	7 Apr 2005 11:43:22 -0000	1.18
@@ -290,118 +290,32 @@
 void ScummEngine_v6::readMAXS(int blockSize) {
 	debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
 
-	if (_heversion >= 70 && (blockSize == 44 + 8)) { // C++ based engine
-		_numVariables = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE();
-		_numRoomVariables = _fileHandle->readUint16LE();
-		_numLocalObjects = _fileHandle->readUint16LE();
-		_numArray = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE(); // unknown
-		_fileHandle->readUint16LE(); // unknown
-		_numFlObject = _fileHandle->readUint16LE();
-		_numInventory = _fileHandle->readUint16LE();
-		_numRooms = _fileHandle->readUint16LE();
-		_numScripts = _fileHandle->readUint16LE();
-		_numSounds = _fileHandle->readUint16LE();
-		_numCharsets = _fileHandle->readUint16LE();
-		_numCostumes = _fileHandle->readUint16LE();
-		_numGlobalObjects = _fileHandle->readUint16LE();
-		_numImages = _fileHandle->readUint16LE();
-		_numSprites = _fileHandle->readUint16LE();
-		_numLocalScripts = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE(); // heap related
-		_numPalettes = _fileHandle->readUint16LE();
-		_numUnk = _fileHandle->readUint16LE();
-		_numTalkies = _fileHandle->readUint16LE();
-		_numNewNames = 10;
-
-		_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
-		_numGlobalScripts = 2048;
-
-	} else if (_heversion >= 70 && (blockSize == 38 + 8)) { // Scummsys.9x
-		_numVariables = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE();
-		_numRoomVariables = _fileHandle->readUint16LE();
-		_numLocalObjects = _fileHandle->readUint16LE();
-		_numArray = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE(); // unknown
-		_fileHandle->readUint16LE(); // unknown
-		_numFlObject = _fileHandle->readUint16LE();
-		_numInventory = _fileHandle->readUint16LE();
-		_numRooms = _fileHandle->readUint16LE();
-		_numScripts = _fileHandle->readUint16LE();
-		_numSounds = _fileHandle->readUint16LE();
-		_numCharsets = _fileHandle->readUint16LE();
-		_numCostumes = _fileHandle->readUint16LE();
-		_numGlobalObjects = _fileHandle->readUint16LE();
-		_numImages = _fileHandle->readUint16LE();
-		_numSprites = _fileHandle->readUint16LE();
-		_numLocalScripts = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE(); // heap releated
-		_numNewNames = 10;
-
-		_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
-		if (_gameId == GID_FREDDI4)
-			_numGlobalScripts = 2048;
-		else
-			_numGlobalScripts = 200;
+	_numVariables = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE();                      // 16 in Sam/DOTT
+	_numBitVariables = _fileHandle->readUint16LE();
+	_numLocalObjects = _fileHandle->readUint16LE();
+	_numArray = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE();                      // 0 in Sam/DOTT
+	_numVerbs = _fileHandle->readUint16LE();
+	_numFlObject = _fileHandle->readUint16LE();
+	_numInventory = _fileHandle->readUint16LE();
+	_numRooms = _fileHandle->readUint16LE();
+	_numScripts = _fileHandle->readUint16LE();
+	_numSounds = _fileHandle->readUint16LE();
+	_numCharsets = _fileHandle->readUint16LE();
+	_numCostumes = _fileHandle->readUint16LE();
+	_numGlobalObjects = _fileHandle->readUint16LE();
+	_numNewNames = 50;
 
-	} else if (_heversion >= 70 && blockSize > 38) { // sputm7.2
-		if (blockSize != 32 + 8)
-				error("MAXS block of size %d not supported, please report", blockSize);
-		_numVariables = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE();
-		_numBitVariables = _numRoomVariables = _fileHandle->readUint16LE();
-		_numLocalObjects = _fileHandle->readUint16LE();
-		_numArray = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE();
-		_numVerbs = _fileHandle->readUint16LE();
-		_numFlObject = _fileHandle->readUint16LE();
-		_numInventory = _fileHandle->readUint16LE();
-		_numRooms = _fileHandle->readUint16LE();
-		_numScripts = _fileHandle->readUint16LE();
-		_numSounds = _fileHandle->readUint16LE();
-		_numCharsets = _fileHandle->readUint16LE();
-		_numCostumes = _fileHandle->readUint16LE();
-		_numGlobalObjects = _fileHandle->readUint16LE();
-		_numImages = _fileHandle->readUint16LE();
-		_numNewNames = 10;
+	_objectRoomTable = NULL;
+	_numGlobalScripts = 200;
 
+	if (_heversion >= 70) {
 		_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
-		_numGlobalScripts = 200;
-
-	} else if (_version == 6) {
-		if (blockSize != 30 + 8)
-			error("MAXS block of size %d not supported", blockSize);
-		_numVariables = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE();                      // 16 in Sam/DOTT
-		_numBitVariables = _fileHandle->readUint16LE();
-		_numLocalObjects = _fileHandle->readUint16LE();
-		_numArray = _fileHandle->readUint16LE();
-		_fileHandle->readUint16LE();                      // 0 in Sam/DOTT
-		_numVerbs = _fileHandle->readUint16LE();
-		_numFlObject = _fileHandle->readUint16LE();
-		_numInventory = _fileHandle->readUint16LE();
-		_numRooms = _fileHandle->readUint16LE();
-		_numScripts = _fileHandle->readUint16LE();
-		_numSounds = _fileHandle->readUint16LE();
-		_numCharsets = _fileHandle->readUint16LE();
-		_numCostumes = _fileHandle->readUint16LE();
-		_numGlobalObjects = _fileHandle->readUint16LE();
-		_numNewNames = 50;
-
-		_objectRoomTable = NULL;
-		_numGlobalScripts = 200;
-
-		_shadowPaletteSize = 256;
-
-		if (_heversion >= 70) {
-			_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
-		}
 	}
 
-	if (_shadowPaletteSize)
-		_shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
+	_shadowPaletteSize = 256;
+	_shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
 
 	allocateArrays();
 	_dynamicRoomOffsets = true;

Index: resource_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource_v7he.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- resource_v7he.cpp	4 Apr 2005 07:25:21 -0000	1.24
+++ resource_v7he.cpp	7 Apr 2005 11:43:38 -0000	1.25
@@ -1657,4 +1657,104 @@
 #endif
 }
 
+void ScummEngine_v99he::readMAXS(int blockSize) {
+	debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
+
+	printf("C++ based engine\n");
+
+	_numVariables = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE();
+	_numRoomVariables = _fileHandle->readUint16LE();
+	_numLocalObjects = _fileHandle->readUint16LE();
+	_numArray = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE(); // unknown
+	_fileHandle->readUint16LE(); // unknown
+	_numFlObject = _fileHandle->readUint16LE();
+	_numInventory = _fileHandle->readUint16LE();
+	_numRooms = _fileHandle->readUint16LE();
+	_numScripts = _fileHandle->readUint16LE();
+	_numSounds = _fileHandle->readUint16LE();
+	_numCharsets = _fileHandle->readUint16LE();
+	_numCostumes = _fileHandle->readUint16LE();
+	_numGlobalObjects = _fileHandle->readUint16LE();
+	_numImages = _fileHandle->readUint16LE();
+	_numSprites = _fileHandle->readUint16LE();
+	_numLocalScripts = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE(); // heap related
+	_numPalettes = _fileHandle->readUint16LE();
+	_numUnk = _fileHandle->readUint16LE();
+	_numTalkies = _fileHandle->readUint16LE();
+	_numNewNames = 10;
+
+	_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
+	_numGlobalScripts = 2048;
+
+	allocateArrays();
+	_dynamicRoomOffsets = true;
+}
+
+void ScummEngine_v90he::readMAXS(int blockSize) {
+	debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
+
+	printf("Scummsys.9x\n");
+
+	_numVariables = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE();
+	_numRoomVariables = _fileHandle->readUint16LE();
+	_numLocalObjects = _fileHandle->readUint16LE();
+	_numArray = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE(); // unknown
+	_fileHandle->readUint16LE(); // unknown
+	_numFlObject = _fileHandle->readUint16LE();
+	_numInventory = _fileHandle->readUint16LE();
+	_numRooms = _fileHandle->readUint16LE();
+	_numScripts = _fileHandle->readUint16LE();
+	_numSounds = _fileHandle->readUint16LE();
+	_numCharsets = _fileHandle->readUint16LE();
+	_numCostumes = _fileHandle->readUint16LE();
+	_numGlobalObjects = _fileHandle->readUint16LE();
+	_numImages = _fileHandle->readUint16LE();
+	_numSprites = _fileHandle->readUint16LE();
+	_numLocalScripts = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE(); // heap releated
+	_numNewNames = 10;
+
+	_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
+	if (_gameId == GID_FREDDI4)
+		_numGlobalScripts = 2048;
+	else
+		_numGlobalScripts = 200;
+
+	allocateArrays();
+	_dynamicRoomOffsets = true;
+}
+
+void ScummEngine_v72he::readMAXS(int blockSize) {
+	debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
+
+	_numVariables = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE();
+	_numBitVariables = _numRoomVariables = _fileHandle->readUint16LE();
+	_numLocalObjects = _fileHandle->readUint16LE();
+	_numArray = _fileHandle->readUint16LE();
+	_fileHandle->readUint16LE();
+	_numVerbs = _fileHandle->readUint16LE();
+	_numFlObject = _fileHandle->readUint16LE();
+	_numInventory = _fileHandle->readUint16LE();
+	_numRooms = _fileHandle->readUint16LE();
+	_numScripts = _fileHandle->readUint16LE();
+	_numSounds = _fileHandle->readUint16LE();
+	_numCharsets = _fileHandle->readUint16LE();
+	_numCostumes = _fileHandle->readUint16LE();
+	_numGlobalObjects = _fileHandle->readUint16LE();
+	_numImages = _fileHandle->readUint16LE();
+	_numNewNames = 10;
+
+	_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
+	_numGlobalScripts = 200;
+
+	allocateArrays();
+	_dynamicRoomOffsets = true;
+}
+
 } // End of namespace Scumm

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.409
retrieving revision 1.410
diff -u -d -r1.409 -r1.410
--- scumm.cpp	7 Apr 2005 11:15:10 -0000	1.409
+++ scumm.cpp	7 Apr 2005 11:43:38 -0000	1.410
@@ -3302,6 +3302,7 @@
 			break;
 		case 99:
 			engine = new ScummEngine_v99he(detector, syst, game, md5sum);
+			break;
 		case 90:
 		case 98:
 			engine = new ScummEngine_v90he(detector, syst, game, md5sum);





More information about the Scummvm-git-logs mailing list