aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudvig Strigeus2001-11-06 21:41:56 +0000
committerLudvig Strigeus2001-11-06 21:41:56 +0000
commitbddfc49eeacf84e3fda681a5f239c563b5fa8207 (patch)
treee296563fd94028d2862c83622ab2bdf3921bddec
parent78413a1c438ac697cd37e444d1c05461cf8d1f0a (diff)
downloadscummvm-rg350-bddfc49eeacf84e3fda681a5f239c563b5fa8207.tar.gz
scummvm-rg350-bddfc49eeacf84e3fda681a5f239c563b5fa8207.tar.bz2
scummvm-rg350-bddfc49eeacf84e3fda681a5f239c563b5fa8207.zip
removed some hardcoded constants
svn-id: r3467
-rw-r--r--object.cpp6
-rw-r--r--resource.cpp33
-rw-r--r--scumm.h4
-rw-r--r--scummvm.cpp20
-rw-r--r--verbs.cpp4
5 files changed, 32 insertions, 35 deletions
diff --git a/object.cpp b/object.cpp
index 70a5c0045a..233eec3d72 100644
--- a/object.cpp
+++ b/object.cpp
@@ -493,7 +493,7 @@ void Scumm::removeObjectFromRoom(int obj) {
void Scumm::addObjectToDrawQue(int object) {
_drawObjectQue[_drawObjectQueNr++] = object;
- if (_drawObjectQueNr > 200)
+ if (_drawObjectQueNr > sizeof(_drawObjectQue)/sizeof(_drawObjectQue[0]))
error("Draw Object Que overflow");
}
@@ -580,8 +580,8 @@ void Scumm::addObjectToInventory(uint obj, uint room) {
numobj = READ_LE_UINT16(&roomhdr->numObjects);
if (numobj==0)
error("addObjectToInventory: No object found in room %d", room);
- if (numobj > 200)
- error("addObjectToInventory: More (%d) than %d objects in room %d", numobj, 200, room);
+ if (numobj > _numLocalObjects)
+ error("addObjectToInventory: More (%d) than %d objects in room %d", numobj, _numLocalObjects, room);
for (i=0; i<numobj; i++) {
obcdptr = findResource(MKID('OBCD'), roomptr, i);
diff --git a/resource.cpp b/resource.cpp
index 965ce97e3d..b2fe608869 100644
--- a/resource.cpp
+++ b/resource.cpp
@@ -824,24 +824,13 @@ void Scumm::readMAXS() {
allocResTypeData(4, MKID('SOUN'), _numSounds, "sound", 1);
allocResTypeData(2, MKID('SCRP'), _numScripts, "script", 1);
allocResTypeData(6, MKID('CHAR'), _numCharsets, "charset", 1);
- allocResTypeData(5, MKID('NONE'), _numInventory, "inventory", 0);
- allocResTypeData(8, MKID('NONE'), _numVerbs,"verb", 0);
- allocResTypeData(7, MKID('NONE'), _numArray,"array", 0);
- allocResTypeData(13, MKID('NONE'),_numFlObject,"flobject", 0);
- allocResTypeData(12,MKID('NONE'),10, "temp", 0);
- allocResTypeData(11,MKID('NONE'),5, "scale table", 0);
- allocResTypeData(9, MKID('NONE'),13,"actor name", 0);
- allocResTypeData(10, MKID('NONE'),10,"buffer", 0);
- allocResTypeData(14, MKID('NONE'),10,"boxes", 0);
+
allocResTypeData(16, MKID('NONE'),50,"new name", 0);
+ allocateArrays();
+
_objectFlagTable = (byte*)alloc(_numGlobalObjects);
- _inventory = (uint16*)alloc(_numInventory * sizeof(uint16));
_arrays = (byte*)alloc(_numArray);
- _verbs = (VerbSlot*)alloc(_numVerbs * sizeof(VerbSlot));
- _objs = (ObjectData*)alloc(_numLocalObjects * sizeof(ObjectData));
- _vars = (int16*)alloc(_numVariables * sizeof(int16));
- _bitVars = (byte*)alloc(_numBitVariables >> 3);
_newNames = (uint16*)alloc(50 * sizeof(uint16));
_classData = (uint32*)alloc(_numGlobalObjects * sizeof(uint32));
@@ -849,4 +838,20 @@ void Scumm::readMAXS() {
_dynamicRoomOffsets = 1;
}
+void Scumm::allocateArrays() {
+ _inventory = (uint16*)alloc(_numInventory * sizeof(uint16));
+ _verbs = (VerbSlot*)alloc(_numVerbs * sizeof(VerbSlot));
+ _objs = (ObjectData*)alloc(_numLocalObjects * sizeof(ObjectData));
+ _vars = (int16*)alloc(_numVariables * sizeof(int16));
+ _bitVars = (byte*)alloc(_numBitVariables >> 3);
+ allocResTypeData(rtInventory, MKID('NONE'), _numInventory, "inventory", 0);
+ allocResTypeData(rtTemp,MKID('NONE'),10, "temp", 0);
+ allocResTypeData(rtScaleTable,MKID('NONE'),5, "scale table", 0);
+ allocResTypeData(rtActorName, MKID('NONE'),13,"actor name", 0);
+ allocResTypeData(rtBuffer, MKID('NONE'),10,"buffer", 0);
+ allocResTypeData(rtVerb, MKID('NONE'),_numVerbs,"verb", 0);
+ allocResTypeData(rtString, MKID('NONE'),_numArray,"array", 0);
+ allocResTypeData(rtFlObject, MKID('NONE'),_numFlObject,"flobject", 0);
+ allocResTypeData(rtMatrix, MKID('NONE'),10,"boxes", 0);
+}
diff --git a/scumm.h b/scumm.h
index b6104d424a..b54388ecb8 100644
--- a/scumm.h
+++ b/scumm.h
@@ -749,7 +749,7 @@ struct Scumm {
byte _talk_sound_mode;
int _drawObjectQueNr;
- byte _drawObjectQue[0xC8];
+ byte _drawObjectQue[200];
uint16 _currentDrive;
uint16 _soundCardType;
@@ -1573,6 +1573,8 @@ struct Scumm {
void setupCursor() { _cursorAnimate = true; }
void decompressDefaultCursor(int index);
+
+ void allocateArrays();
};
struct ScummDebugger {
diff --git a/scummvm.cpp b/scummvm.cpp
index 16b789ed96..32cc464c45 100644
--- a/scummvm.cpp
+++ b/scummvm.cpp
@@ -30,22 +30,12 @@ void Scumm::initThingsV5() {
_numLocalObjects = 200;
_numVerbs = 100;
_numInventory = 80;
+ _numVerbs = 100;
+ _numArray = 0x32;
+ _numFlObject = 0x32;
+
+ allocateArrays();
- _inventory = (uint16*)alloc(_numInventory * sizeof(uint16));
- _verbs = (VerbSlot*)alloc(100 * sizeof(VerbSlot));
- _objs = (ObjectData*)alloc(200 * sizeof(ObjectData));
- _vars = (int16*)alloc(800 * sizeof(int16));
- _bitVars = (byte*)alloc(2048 >> 3);
-
- allocResTypeData(5, MKID('NONE'), 0x50, "inventory", 0);
- allocResTypeData(12,MKID('NONE'),10, "temp", 0);
- allocResTypeData(11,MKID('NONE'),5, "scale table", 0);
- allocResTypeData(9, MKID('NONE'),13,"actor name", 0);
- allocResTypeData(10, MKID('NONE'),10,"buffer", 0);
- allocResTypeData(8, MKID('NONE'),100,"verb", 0);
- allocResTypeData(7, MKID('NONE'),0x32,"string", 0);
- allocResTypeData(13, MKID('NONE'),0x32,"flobject", 0);
- allocResTypeData(14, MKID('NONE'),10,"boxes", 0);
readIndexFileV5(2);
initRandSeeds();
diff --git a/verbs.cpp b/verbs.cpp
index 066fbb064a..d764a00171 100644
--- a/verbs.cpp
+++ b/verbs.cpp
@@ -260,8 +260,8 @@ void Scumm::setVerbObject(uint room, uint object, uint verb) {
numobj = READ_LE_UINT16(&roomhdr->numObjects);
if (numobj==0)
error("No images found in room %d", room);
- if (numobj > 200)
- error("More (%d) than %d objects in room %d", numobj, 200, room);
+ if (numobj > _numLocalObjects)
+ error("More (%d) than %d objects in room %d", numobj, _numLocalObjects, room);
for (i=0; i<numobj; i++) {
obimptr = findResource(MKID('OBIM'), roomptr, i);