[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