[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.430,2.431 resource.cpp,1.306,1.307 resource_v4.cpp,1.19,1.20 resource_v7he.cpp,1.27,1.28 scumm.h,1.570,1.571
Max Horn
fingolfin at users.sourceforge.net
Sat Apr 9 13:22:47 CEST 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm costume.cpp,1.175,1.176 resource.cpp,1.305,1.306 script.cpp,1.212,1.213 scumm.cpp,1.416,1.417 scumm.h,1.569,1.570
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.431,2.432 resource.cpp,1.307,1.308 scumm.h,1.571,1.572
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26927
Modified Files:
intern.h resource.cpp resource_v4.cpp resource_v7he.cpp
scumm.h
Log Message:
Overload getStringAddress in subclasses; moved V6-V8 specific res stuff to resource.cpp
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.430
retrieving revision 2.431
diff -u -d -r2.430 -r2.431
--- intern.h 9 Apr 2005 08:55:26 -0000 2.430
+++ intern.h 9 Apr 2005 20:22:30 -0000 2.431
@@ -412,6 +412,7 @@
virtual void decodeParseString(int a, int b);
virtual void readArrayFromIndexFile();
+ virtual byte *getStringAddress(int i);
virtual void readMAXS(int blockSize);
virtual void palManipulateInit(int resID, int start, int end, int time);
@@ -754,15 +755,16 @@
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);
virtual void setupScummVars();
virtual void readArrayFromIndexFile();
-
+
+ virtual byte *getStringAddress(int i);
+ virtual void readMAXS(int blockSize);
+
virtual void redrawBGAreas();
ArrayHeader *defineArray(int array, int type, int dim2start, int dim2end, int dim1start, int dim1end);
@@ -924,13 +926,13 @@
virtual void scummInit();
protected:
- virtual void readMAXS(int blockSize);
-
virtual void allocateArrays();
virtual void setupOpcodes();
virtual void executeOpcode(byte i);
virtual const char *getOpcodeDesc(byte i);
+ virtual void readMAXS(int blockSize);
+
void createWizEmptyImage(const WizParameters *params);
void fillWizRect(const WizParameters *params);
void processWizImage(const WizParameters *params);
Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource.cpp,v
retrieving revision 1.306
retrieving revision 1.307
diff -u -d -r1.306 -r1.307
--- resource.cpp 9 Apr 2005 20:13:28 -0000 1.306
+++ resource.cpp 9 Apr 2005 20:22:30 -0000 1.307
@@ -25,6 +25,7 @@
#include "scumm/dialogs.h"
#include "scumm/imuse.h"
#include "scumm/imuse_digi/dimuse.h"
+#include "scumm/intern.h"
#include "scumm/object.h"
#include "scumm/resource.h"
#include "scumm/scumm.h"
@@ -706,15 +707,14 @@
byte *ScummEngine::getStringAddress(int i) {
byte *addr = getResourceAddress(rtString, i);
+ return addr;
+}
+
+byte *ScummEngine_v6::getStringAddress(int i) {
+ byte *addr = getResourceAddress(rtString, i);
if (addr == NULL)
return NULL;
-
- if (_heversion >= 72)
- return (addr + 0x14); // ArrayHeader->data
-
- if (_version >= 6)
- return (addr + 0x6); // ArrayHeader->data
- return addr;
+ return ((ScummEngine_v6::ArrayHeader *)addr)->data;
}
byte *ScummEngine::getStringAddressVar(int i) {
@@ -994,6 +994,107 @@
_dynamicRoomOffsets = true;
}
+void ScummEngine_v8::readMAXS(int blockSize) {
+ debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
+
+ _fileHandle->seek(50 + 50, SEEK_CUR); // 176 - 8
+ _numVariables = _fileHandle->readUint32LE(); // 1500
+ _numBitVariables = _fileHandle->readUint32LE(); // 2048
+ _fileHandle->readUint32LE(); // 40
+ _numScripts = _fileHandle->readUint32LE(); // 458
+ _numSounds = _fileHandle->readUint32LE(); // 789
+ _numCharsets = _fileHandle->readUint32LE(); // 1
+ _numCostumes = _fileHandle->readUint32LE(); // 446
+ _numRooms = _fileHandle->readUint32LE(); // 95
+ _fileHandle->readUint32LE(); // 80
+ _numGlobalObjects = _fileHandle->readUint32LE(); // 1401
+ _fileHandle->readUint32LE(); // 60
+ _numLocalObjects = _fileHandle->readUint32LE(); // 200
+ _numNewNames = _fileHandle->readUint32LE(); // 100
+ _numFlObject = _fileHandle->readUint32LE(); // 128
+ _numInventory = _fileHandle->readUint32LE(); // 80
+ _numArray = _fileHandle->readUint32LE(); // 200
+ _numVerbs = _fileHandle->readUint32LE(); // 50
+
+ _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
+ _numGlobalScripts = 2000;
+
+ _shadowPaletteSize = NUM_SHADOW_PALETTE * 256;
+ _shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
+
+ allocateArrays();
+ _dynamicRoomOffsets = true;
+}
+
+void ScummEngine_v7::readMAXS(int blockSize) {
+ debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
+
+ _fileHandle->seek(50 + 50, SEEK_CUR);
+ _numVariables = _fileHandle->readUint16LE();
+ _numBitVariables = _fileHandle->readUint16LE();
+ _fileHandle->readUint16LE();
+ _numGlobalObjects = _fileHandle->readUint16LE();
+ _numLocalObjects = _fileHandle->readUint16LE();
+ _numNewNames = _fileHandle->readUint16LE();
+ _numVerbs = _fileHandle->readUint16LE();
+ _numFlObject = _fileHandle->readUint16LE();
+ _numInventory = _fileHandle->readUint16LE();
+ _numArray = _fileHandle->readUint16LE();
+ _numRooms = _fileHandle->readUint16LE();
+ _numScripts = _fileHandle->readUint16LE();
+ _numSounds = _fileHandle->readUint16LE();
+ _numCharsets = _fileHandle->readUint16LE();
+ _numCostumes = _fileHandle->readUint16LE();
+
+ _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
+
+ if ((_gameId == GID_FT) && (_features & GF_DEMO) &&
+ (_features & GF_PC))
+ _numGlobalScripts = 300;
+ else
+ _numGlobalScripts = 2000;
+
+ _shadowPaletteSize = NUM_SHADOW_PALETTE * 256;
+ _shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
+
+ allocateArrays();
+ _dynamicRoomOffsets = true;
+}
+
+void ScummEngine_v6::readMAXS(int blockSize) {
+ debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
+
+ _numVariables = _fileHandle->readUint16LE();
+ _fileHandle->readUint16LE();
+ _numBitVariables = _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();
+ _numNewNames = 50;
+
+ _objectRoomTable = NULL;
+ _numGlobalScripts = 200;
+
+ if (_heversion >= 70) {
+ _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
+ }
+
+ _shadowPaletteSize = 256;
+ _shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
+
+ allocateArrays();
+ _dynamicRoomOffsets = true;
+}
+
void ScummEngine::readGlobalObjects() {
int i;
int num = _fileHandle->readUint16LE();
@@ -1014,6 +1115,42 @@
#endif
}
+void ScummEngine_v8::readGlobalObjects() {
+ int i;
+ int num = _fileHandle->readUint32LE();
+ assert(num == _numGlobalObjects);
+
+ char buffer[40];
+ for (i = 0; i < num; i++) {
+ _fileHandle->read(buffer, 40);
+ if (buffer[0]) {
+ // Add to object name-to-id map
+ _objectIDMap[buffer] = i;
+ }
+ _objectStateTable[i] = _fileHandle->readByte();
+ _objectRoomTable[i] = _fileHandle->readByte();
+ _classData[i] = _fileHandle->readUint32LE();
+ }
+ memset(_objectOwnerTable, 0xFF, num);
+}
+
+void ScummEngine_v7::readGlobalObjects() {
+ int num = _fileHandle->readUint16LE();
+ assert(num == _numGlobalObjects);
+
+ _fileHandle->read(_objectStateTable, num);
+ _fileHandle->read(_objectRoomTable, num);
+ memset(_objectOwnerTable, 0xFF, num);
+
+ _fileHandle->read(_classData, num * sizeof(uint32));
+
+#if defined(SCUMM_BIG_ENDIAN)
+ // Correct the endianess if necessary
+ for (int i = 0; i != num; i++)
+ _classData[i] = FROM_LE_32(_classData[i]);
+#endif
+}
+
void ScummEngine::allocateArrays() {
// Note: Buffers are now allocated in scummMain to allow for
// early GUI init.
Index: resource_v4.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource_v4.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- resource_v4.cpp 7 Apr 2005 12:08:43 -0000 1.19
+++ resource_v4.cpp 9 Apr 2005 20:22:30 -0000 1.20
@@ -184,141 +184,4 @@
}
-void ScummEngine_v8::readGlobalObjects() {
- int i;
- int num = _fileHandle->readUint32LE();
- assert(num == _numGlobalObjects);
-
- char buffer[40];
- for (i = 0; i < num; i++) {
- _fileHandle->read(buffer, 40);
- if (buffer[0]) {
- // Add to object name-to-id map
- _objectIDMap[buffer] = i;
- }
- _objectStateTable[i] = _fileHandle->readByte();
- _objectRoomTable[i] = _fileHandle->readByte();
- _classData[i] = _fileHandle->readUint32LE();
- }
- memset(_objectOwnerTable, 0xFF, num);
-}
-
-void ScummEngine_v7::readGlobalObjects() {
- int num = _fileHandle->readUint16LE();
- assert(num == _numGlobalObjects);
-
- _fileHandle->read(_objectStateTable, num);
- _fileHandle->read(_objectRoomTable, num);
- memset(_objectOwnerTable, 0xFF, num);
-
- _fileHandle->read(_classData, num * sizeof(uint32));
-
-#if defined(SCUMM_BIG_ENDIAN)
- // Correct the endianess if necessary
- for (int i = 0; i != num; i++)
- _classData[i] = FROM_LE_32(_classData[i]);
-#endif
-}
-
-void ScummEngine_v8::readMAXS(int blockSize) {
- debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
-
- _fileHandle->seek(50 + 50, SEEK_CUR); // 176 - 8
- _numVariables = _fileHandle->readUint32LE(); // 1500
- _numBitVariables = _fileHandle->readUint32LE(); // 2048
- _fileHandle->readUint32LE(); // 40
- _numScripts = _fileHandle->readUint32LE(); // 458
- _numSounds = _fileHandle->readUint32LE(); // 789
- _numCharsets = _fileHandle->readUint32LE(); // 1
- _numCostumes = _fileHandle->readUint32LE(); // 446
- _numRooms = _fileHandle->readUint32LE(); // 95
- _fileHandle->readUint32LE(); // 80
- _numGlobalObjects = _fileHandle->readUint32LE(); // 1401
- _fileHandle->readUint32LE(); // 60
- _numLocalObjects = _fileHandle->readUint32LE(); // 200
- _numNewNames = _fileHandle->readUint32LE(); // 100
- _numFlObject = _fileHandle->readUint32LE(); // 128
- _numInventory = _fileHandle->readUint32LE(); // 80
- _numArray = _fileHandle->readUint32LE(); // 200
- _numVerbs = _fileHandle->readUint32LE(); // 50
-
- _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
- _numGlobalScripts = 2000;
-
- _shadowPaletteSize = NUM_SHADOW_PALETTE * 256;
- _shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
-
- allocateArrays();
- _dynamicRoomOffsets = true;
-}
-
-void ScummEngine_v7::readMAXS(int blockSize) {
- debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
-
- _fileHandle->seek(50 + 50, SEEK_CUR);
- _numVariables = _fileHandle->readUint16LE();
- _numBitVariables = _fileHandle->readUint16LE();
- _fileHandle->readUint16LE();
- _numGlobalObjects = _fileHandle->readUint16LE();
- _numLocalObjects = _fileHandle->readUint16LE();
- _numNewNames = _fileHandle->readUint16LE();
- _numVerbs = _fileHandle->readUint16LE();
- _numFlObject = _fileHandle->readUint16LE();
- _numInventory = _fileHandle->readUint16LE();
- _numArray = _fileHandle->readUint16LE();
- _numRooms = _fileHandle->readUint16LE();
- _numScripts = _fileHandle->readUint16LE();
- _numSounds = _fileHandle->readUint16LE();
- _numCharsets = _fileHandle->readUint16LE();
- _numCostumes = _fileHandle->readUint16LE();
-
- _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
-
- if ((_gameId == GID_FT) && (_features & GF_DEMO) &&
- (_features & GF_PC))
- _numGlobalScripts = 300;
- else
- _numGlobalScripts = 2000;
-
- _shadowPaletteSize = NUM_SHADOW_PALETTE * 256;
- _shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
-
- allocateArrays();
- _dynamicRoomOffsets = true;
-}
-
-void ScummEngine_v6::readMAXS(int blockSize) {
- debug(9, "readMAXS: MAXS has blocksize %d", blockSize);
-
- _numVariables = _fileHandle->readUint16LE();
- _fileHandle->readUint16LE();
- _numBitVariables = _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();
- _numNewNames = 50;
-
- _objectRoomTable = NULL;
- _numGlobalScripts = 200;
-
- if (_heversion >= 70) {
- _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
- }
-
- _shadowPaletteSize = 256;
- _shadowPalette = (byte *)calloc(_shadowPaletteSize, 1);
-
- allocateArrays();
- _dynamicRoomOffsets = true;
-}
-
} // End of namespace Scumm
Index: resource_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/resource_v7he.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- resource_v7he.cpp 9 Apr 2005 11:59:42 -0000 1.27
+++ resource_v7he.cpp 9 Apr 2005 20:22:30 -0000 1.28
@@ -1753,4 +1753,11 @@
_dynamicRoomOffsets = true;
}
+byte *ScummEngine_v72he::getStringAddress(int i) {
+ byte *addr = getResourceAddress(rtString, i);
+ if (addr == NULL)
+ return NULL;
+ return ((ScummEngine_v72he::ArrayHeader *)addr)->data;
+}
+
} // End of namespace Scumm
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.570
retrieving revision 1.571
diff -u -d -r1.570 -r1.571
--- scumm.h 9 Apr 2005 20:13:30 -0000 1.570
+++ scumm.h 9 Apr 2005 20:22:31 -0000 1.571
@@ -709,7 +709,7 @@
public:
byte *getResourceAddress(int type, int i);
- byte *getStringAddress(int i);
+ virtual byte *getStringAddress(int i);
byte *getStringAddressVar(int i);
void ensureResourceLoaded(int type, int i);
int getResourceRoomNr(int type, int index);
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm costume.cpp,1.175,1.176 resource.cpp,1.305,1.306 script.cpp,1.212,1.213 scumm.cpp,1.416,1.417 scumm.h,1.569,1.570
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.431,2.432 resource.cpp,1.307,1.308 scumm.h,1.571,1.572
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list