[Scummvm-cvs-logs] CVS: scummvm/scumm/insane insane.cpp,1.46,1.47 insane.h,1.16,1.17 insane_enemy.cpp,1.13,1.14 insane_iact.cpp,1.16,1.17 insane_scenes.cpp,1.24,1.25
Eugene Sandulenko
sev at users.sourceforge.net
Sat Sep 4 22:41:05 CEST 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.382,1.383
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.279,1.280 actor.h,1.60,1.61 intern.h,2.215,2.216 saveload.h,1.39,1.40 script.cpp,1.192,1.193 script_v6.cpp,1.395,1.396 script_v6he.cpp,2.109,2.110 script_v72he.cpp,2.45,2.46 scumm.cpp,1.167,1.168 scumm.h,1.468,1.469 vars.cpp,1.97,1.98
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm/insane
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6474
Modified Files:
insane.cpp insane.h insane_enemy.cpp insane_iact.cpp
insane_scenes.cpp
Log Message:
Fix bug which sometimes lead to some enemies never appear.
Remove some unused code.
Give some vars and functions proper names.
Index: insane.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane.cpp,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- insane.cpp 14 Aug 2004 02:44:16 -0000 1.46
+++ insane.cpp 5 Sep 2004 05:40:29 -0000 1.47
@@ -122,7 +122,6 @@
_keyboardDisable = 0;
_needSceneSwitch = false;
_idx2Exceeded = 0;
- _memoryAllocatedNotOK = 0;
_lastKey = 0;
_tiresRustle = false;
_keybOldDx = 0;
@@ -156,7 +155,7 @@
_roadBumps = false;
_val211d = 0;
_val213d = 0;
- _val215d = 0;
+ _metEnemiesListTail = 0;
_smlayer_room = 0;
_smlayer_room2 = 0;
_isBenCut = 0;
@@ -166,6 +165,9 @@
_iactSceneId = 0;
_iactSceneId2 = 0;
+ for (i = 0; i < 12; i++)
+ _metEnemiesList[i] = 0;
+
for (i = 0; i < 9; i++)
for (j = 0; j < 9; j++)
_enHdlVar[i][j] = 0;
@@ -451,7 +453,7 @@
}
void Insane::init_enemyStruct(int n, int32 handler, int32 initializer,
- int16 occurences, int32 maxdamage, int32 field_10,
+ int16 occurences, int32 maxdamage, int32 isEmpty,
int32 weapon, int32 sound, const char *filename,
int32 costume4, int32 costume6, int32 costume5,
int16 costumevar, int32 maxframe, int32 apprAnim) {
@@ -461,7 +463,7 @@
_enemy[n].initializer = initializer;
_enemy[n].occurences = occurences;
_enemy[n].maxdamage = maxdamage;
- _enemy[n].field_10 = field_10;
+ _enemy[n].isEmpty = isEmpty;
_enemy[n].weapon = weapon;
_enemy[n].sound = sound;
strncpy(_enemy[n].filename, filename, 20);
@@ -648,7 +650,6 @@
_actor[0].inventory[INV_DUST] = readArray(55) != 0;
_actor[0].inventory[INV_HAND] = 1;
_actor[0].inventory[INV_BOOT] = 1;
- _enemy[EN_CAVEFISH].field_10 = readArray(56);
_smlayer_room = readArray(320);
_smlayer_room2 = readArray(321);
_posBrokenTruck = readArray(322);
@@ -667,8 +668,22 @@
_enemy[EN_VULTF2].occurences = readArray(334);
_enemy[EN_VULTM2].occurences = readArray(335);
_enemy[EN_CAVEFISH].occurences = readArray(336);
- _enemy[EN_VULTM2].field_10 = readArray(340);
- _enemy[EN_VULTF2].field_10 = readArray(339);
+ _enemy[EN_VULTM2].isEmpty = readArray(340);
+ _enemy[EN_VULTF2].isEmpty = readArray(339);
+ _enemy[EN_CAVEFISH].isEmpty = readArray(56);
+
+ // Some sanity checks. There were submitted savefiles where these values were wrong
+ if (_enemy[EN_VULTM2].isEmpty != readArray(7))
+ error("Wrong INSANE parameters for EN_VULTM2 (%d %d). Please, report this",
+ _enemy[EN_VULTM2].isEmpty, readArray(7));
+
+ if (_enemy[EN_VULTF2].isEmpty != _actor[0].inventory[INV_CHAINSAW])
+ error("Wrong INSANE parameters for EN_VULTF2 (%d %d). Please, report this",
+ _enemy[EN_VULTF2].isEmpty, _actor[0].inventory[INV_CHAINSAW]);
+
+ if (_enemy[EN_CAVEFISH].isEmpty != readArray(8))
+ error("Wrong INSANE parameters for EN_CAVEFISH (%d %d). Please, report this",
+ _enemy[EN_CAVEFISH].isEmpty, readArray(8));
}
}
@@ -691,47 +706,6 @@
smush_warpMouse(160, 100, -1);
}
-// FIXME: it seems that in ScummVM it may be unused
-void Insane::mainLoop(void) {
- int32 resid;
-
- while (!idx2Compare()) {
- if(!(resid = idx2Tweak()))
- continue;
-
- _vm->ensureResourceLoaded(rtSound, resid);
- _vm->setResourceCounter(rtSound, resid, 1);
- }
- _vm->increaseResourceCounter();
-
- while (!idx1Compare()) {
- resid = idx1Tweak();
- _vm->ensureResourceLoaded(rtCostume, resid);
- _vm->setResourceCounter(rtCostume, resid, 1);
- // smlayer_lock (rtCostume, resid);
- }
-
- if (loadSceneData(_currSceneId, 0, 2)) {
- _sceneData1Loaded = 0;
- _objArray2[0] = 0;
- return;
- }
- _sceneData1Loaded = 1;
- if (idx1Compare() || idx2Compare()) {
- _objArray2[0] = 0;
- return;
- }
- _objArray2[0]++;
- if (_objArray2[0] <= 5) {
- _objArray2[0] = 0;
- return;
- }
-
- smush_setToFinish();
- loadSceneData(_currSceneId, 1, 2);
- _memoryAllocatedNotOK = 1;
-}
-
bool Insane::idx1Compare(void) {
return _objArray1Idx == _objArray1Idx2;
}
Index: insane.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- insane.h 8 Aug 2004 11:44:42 -0000 1.16
+++ insane.h 5 Sep 2004 05:40:29 -0000 1.17
@@ -105,7 +105,6 @@
int16 _keyboardDisable;
bool _needSceneSwitch;
int32 _idx2Exceeded;
- bool _memoryAllocatedNotOK;
int32 _lastKey;
bool _beenCheated;
bool _tiresRustle;
@@ -175,15 +174,15 @@
bool _val115_;
int32 _val211d;
int32 _val213d;
- int32 _val215d;
- int32 _val216d[12];
+ int32 _metEnemiesListTail;
+ int32 _metEnemiesList[12];
struct enemy {
int32 handler;
int32 initializer;
int16 occurences;
int32 maxdamage;
- int32 field_10;
+ int32 isEmpty;
int32 weapon;
int32 sound;
char filename[20];
@@ -288,7 +287,6 @@
int32 readArray(int item);
void writeArray(int item, int value);
- void mainLoop(void);
bool idx1Compare(void);
bool idx2Compare(void);
int32 idx1Tweak(void);
@@ -335,7 +333,7 @@
void init_actStruct(int actornum, int actnum, int32 actorval, byte state,
int32 room, int32 animtilt, int32 tilt, int32 frame);
void init_enemyStruct(int n, int32 handler, int32 initializer,
- int16 occurences, int32 maxdamage, int32 field_10,
+ int16 occurences, int32 maxdamage, int32 isEmpty,
int32 field_14, int32 sound, const char *filename,
int32 costume4, int32 costume6, int32 costume5,
int16 field_2C, int32 field_30, int32 field_34);
@@ -448,9 +446,9 @@
bool isBitSet(int n);
void setBit(int n);
void clearBit(int n);
- void proc62(void);
- void proc63(void);
- void proc64(int32);
+ void chooseEnemy(void);
+ void removeEmptyEnemies(void);
+ void removeEnemyFromMetList(int32);
};
} // End of namespace Insane
Index: insane_enemy.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane_enemy.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- insane_enemy.cpp 9 Aug 2004 03:21:51 -0000 1.13
+++ insane_enemy.cpp 5 Sep 2004 05:40:29 -0000 1.14
@@ -2410,7 +2410,7 @@
_actor[1].lost = true;
if (_actor[1].act[2].frame >= 18) {
writeArray(7, 1);
- _enemy[EN_VULTM2].field_10 = 1;
+ _enemy[EN_VULTM2].isEmpty = 1;
queueSceneSwitch(12, 0, "getnitro.san", 0, 0, 0, 0);
}
break;
@@ -2467,7 +2467,7 @@
if (_actor[1].act[2].frame >= 18 || ((_actor[1].x < 50 || _actor[1].x > 270) &&
_actor[1].act[2].frame >= 9)) {
- _enemy[EN_CAVEFISH].field_10 = 1;
+ _enemy[EN_CAVEFISH].isEmpty = 1;
queueSceneSwitch(20, 0, "wr2_cvko.san", 64, 0, 0, 0);
_actor[1].act[2].state = 38;
}
@@ -2535,7 +2535,7 @@
_actor[1].act[0].room = 0;
_actor[1].cursorX = 0;
_actor[1].act[2].state = 114;
- _enemy[EN_VULTF2].field_10 = 1;
+ _enemy[EN_VULTF2].isEmpty = 1;
smlayer_startVoice(275);
break;
case 114:
Index: insane_iact.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane_iact.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- insane_iact.cpp 4 Sep 2004 08:32:04 -0000 1.16
+++ insane_iact.cpp 5 Sep 2004 05:40:29 -0000 1.17
@@ -86,7 +86,7 @@
}
if (_approachAnim == -1) {
- proc62(); //PATCH
+ chooseEnemy(); //PATCH
_approachAnim = _enemy[_currEnemy].apprAnim;
}
@@ -183,26 +183,25 @@
}
}
-void Insane::proc62(void) {
- debug(1, "Insane::proc62");
+void Insane::chooseEnemy(void) {
if (readArray(58) != 0)
- _enemy[EN_TORQUE].field_10 = 1;
+ _enemy[EN_TORQUE].isEmpty = 1;
if (_enemy[EN_TORQUE].occurences == 0) {
_currEnemy = EN_TORQUE;
- _val215d++;
- _val216d[_val215d] = EN_TORQUE;
+ _metEnemiesListTail++;
+ _metEnemiesList[_metEnemiesListTail] = EN_TORQUE;
return;
}
- proc63();
+ removeEmptyEnemies();
int32 count, i, j, en, en2;
bool notfound;
en = 0;
for (i = 0; i < 9; i++)
- if (_enemy[i].field_10 == 0)
+ if (_enemy[i].isEmpty == 0)
++en;
en -= 4;
@@ -220,16 +219,16 @@
notfound = true;
- if (_enemy[en2].field_10 != 0)
+ if (_enemy[en2].isEmpty != 0)
continue;
- if (0 < _val215d) {
+ if (0 < _metEnemiesListTail) {
i = 0;
do {
- if (en2 == _val216d[i + 1])
+ if (en2 == _metEnemiesList[i + 1])
notfound = false;
i++;
- } while (i < _val215d && notfound);
+ } while (i < _metEnemiesListTail && notfound);
}
if (!notfound) {
continue;
@@ -239,29 +238,29 @@
do {
notfound = true;
en2 = j;
- if (0 < _val215d) {
+ if (0 < _metEnemiesListTail) {
i = 0;
do {
- if (en2 == _val216d[i + 1])
+ if (en2 == _metEnemiesList[i + 1])
notfound = false;
i++;
- } while (i < _val215d && notfound);
+ } while (i < _metEnemiesListTail && notfound);
}
j++;
} while (j < 9 && !notfound);
if (!notfound) {
- _val215d = 0;
+ _metEnemiesListTail = 0;
count = 0;
continue;
}
}
- ++_val215d;
- assert(_val215d < ARRAYSIZE(_val216d));
- _val216d[_val215d] = en2;
+ ++_metEnemiesListTail;
+ assert(_metEnemiesListTail < ARRAYSIZE(_metEnemiesList));
+ _metEnemiesList[_metEnemiesListTail] = en2;
- if (_val215d >= en) {
- proc64(0);
+ if (_metEnemiesListTail >= en) {
+ removeEnemyFromMetList(0);
}
if (notfound)
@@ -271,25 +270,25 @@
_currEnemy = en2;
}
-void Insane::proc63(void) {
- if (_val215d > 0) {
- for (int i = 0; i < _val215d; i++)
- if (_enemy[i].field_10 == 1)
- proc64(i);
+void Insane::removeEmptyEnemies(void) {
+ if (_metEnemiesListTail > 0) {
+ for (int i = 0; i < _metEnemiesListTail; i++)
+ if (_enemy[i].isEmpty == 1)
+ removeEnemyFromMetList(i);
}
}
-void Insane::proc64(int32 enemy1) {
- if (enemy1 >= _val215d)
+void Insane::removeEnemyFromMetList(int32 enemy1) {
+ if (enemy1 >= _metEnemiesListTail)
return;
int en = enemy1;
do {
++en;
- assert(en + 1 < ARRAYSIZE(_val216d));
- _val216d[en] = _val216d[en + 1];
- } while (en < _val215d);
- _val215d--;
+ assert(en + 1 < ARRAYSIZE(_metEnemiesList));
+ _metEnemiesList[en] = _metEnemiesList[en + 1];
+ } while (en < _metEnemiesListTail);
+ _metEnemiesListTail--;
}
void Insane::iactScene3(byte *renderBitmap, int32 codecparam, int32 setupsan12,
Index: insane_scenes.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/insane/insane_scenes.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- insane_scenes.cpp 8 Aug 2004 02:21:26 -0000 1.24
+++ insane_scenes.cpp 5 Sep 2004 05:40:29 -0000 1.25
@@ -148,7 +148,7 @@
writeArray(53, _actor[0].inventory[INV_2X4]);
writeArray(54, _actor[0].inventory[INV_WRENCH]);
writeArray(55, _actor[0].inventory[INV_DUST]);
- writeArray(56, _enemy[EN_CAVEFISH].field_10);
+ writeArray(56, _enemy[EN_CAVEFISH].isEmpty);
writeArray(337, _enemy[EN_TORQUE].occurences);
writeArray(329, _enemy[EN_ROTT1].occurences);
writeArray(330, _enemy[EN_ROTT2].occurences);
@@ -158,14 +158,11 @@
writeArray(334, _enemy[EN_VULTF2].occurences);
writeArray(335, _enemy[EN_VULTM2].occurences);
writeArray(336, _enemy[EN_CAVEFISH].occurences);
- writeArray(339, _enemy[EN_VULTF2].field_10);
- writeArray(340, _enemy[EN_VULTM2].field_10);
+ writeArray(339, _enemy[EN_VULTF2].isEmpty);
+ writeArray(340, _enemy[EN_VULTM2].isEmpty);
}
// insane_unlock(); // FIXME
_vm->_sound->stopAllSounds(); // IMUSE_StopAllSounds();
- if (_memoryAllocatedNotOK) {
- error("Memory Alloc Error in Mineroad (Heap Size?)");
- }
delete _player;
}
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm sound.cpp,1.382,1.383
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.279,1.280 actor.h,1.60,1.61 intern.h,2.215,2.216 saveload.h,1.39,1.40 script.cpp,1.192,1.193 script_v6.cpp,1.395,1.396 script_v6he.cpp,2.109,2.110 script_v72he.cpp,2.45,2.46 scumm.cpp,1.167,1.168 scumm.h,1.468,1.469 vars.cpp,1.97,1.98
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list