[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.342,2.343 script_v90he.cpp,2.134,2.135 sprite_he.cpp,1.10,1.11
Eugene Sandulenko
sev at users.sourceforge.net
Sun Feb 20 17:00:21 CET 2005
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30279
Modified Files:
intern.h script_v90he.cpp sprite_he.cpp
Log Message:
WIP for o90_spriteInfoSet. Regression fix.
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.342
retrieving revision 2.343
diff -u -d -r2.342 -r2.343
--- intern.h 21 Feb 2005 00:34:00 -0000 2.342
+++ intern.h 21 Feb 2005 00:59:50 -0000 2.343
@@ -902,12 +902,23 @@
void spriteInfoSet_field_7C(int spriteId, int value);
void spriteInfoSet_field_80(int spriteId, int value);
void spriteInfoSet_case183(int spriteId);
+ void spriteInfoSet_resState(int spriteNum, int value);
+ void spriteInfoSet_tx_ty(int spriteNum, int value1, int value2);
+ void spriteInfoSet_groupNum(int spriteNum, int value);
+ void spriteInfoSet_field_2C_30(int spriteNum, int value1, int value2);
+ void spriteInfoSet_field_54(int spriteNum, int value);
+ void spriteInfoSet_field_44(int spriteNum, int value1, int value2);
+ void spriteInfoSet_field_18(int spriteNum, int value);
+ void spriteInfoSet_Inc_tx_ty(int spriteNum, int value1, int value2);
+ void spriteInfoSet_zoom(int spriteNum, int value);
void spritesAllocTables(int numSprites, int numGroups, int numImgSprites);
void spritesResetTables(bool refreshScreen);
void spriteGroupCheck(int sprGrpId);
void spriteMarkIfInGroup(int sprGrpId, uint32 flags);
+ void spriteInfoSet_addImageToList(int spriteNum, int imageNum, int *spriteIdptr);
+
/* HE version 90 script opcodes */
void o90_dup();
void o90_min();
Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.134
retrieving revision 2.135
diff -u -d -r2.134 -r2.135
--- script_v90he.cpp 21 Feb 2005 00:38:13 -0000 2.134
+++ script_v90he.cpp 21 Feb 2005 00:59:50 -0000 2.135
@@ -940,21 +940,53 @@
pop();
break;
case 3:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_groupNum(spriteId, args[0]);
break;
case 8:
pop();
pop();
break;
case 9:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_18(spriteId, args[0]);
break;
case 10:
- pop();
- pop();
+ args[1] = pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_Inc_tx_ty(spriteId, args[0], args[1]);
break;
case 18:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_resState(spriteId, args[0]);
break;
case 19:
pop();
@@ -983,18 +1015,42 @@
spriteInfoSet_field_7C(spriteId, args[0]);
break;
case 29:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_addImageToList(spriteId, 1, &args[0]);
break;
case 31:
- pop();
- pop();
+ args[1] = pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_tx_ty(spriteId, args[0], args[1]);
break;
case 34:
pop();
break;
case 43:
- pop();
- pop();
+ args[1] = pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_2C_30(spriteId, args[0], args[1]);
break;
case 48:
pop();
@@ -1011,13 +1067,29 @@
spriteInfoSet_field_14(spriteId, args[0]);
break;
case 58: // HE 99+
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_zoom(spriteId, args[0]);
break;
case 63: // HE 98+
pop();
break;
case 64:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_54(spriteId, args[0]);
break;
case 90:
pop();
@@ -1043,11 +1115,18 @@
case 124:
break;
case 164:
- pop();
- pop();
+ args[1] = pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_44(spriteId, args[0], args[1]);
break;
case 183:
- args[0] = pop();
if (_curSpriteId > _curMaxSpriteId)
break;
spriteId = _curSpriteId;
Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- sprite_he.cpp 21 Feb 2005 00:34:00 -0000 1.10
+++ sprite_he.cpp 21 Feb 2005 00:59:50 -0000 1.11
@@ -208,9 +208,97 @@
_spriteTable[spriteId].field_80 = value;
}
-void ScummEngine_v90he::spriteInfoSet_case183(int spriteId) {
- checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
+void ScummEngine_v90he::spriteInfoSet_resState(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (_spriteTable[spriteNum].res_id) {
+ int state;
+
+ state = MAX(value, _spriteTable[spriteNum].res_wiz_states - 1);
+ if (state < 0)
+ state = 0;
+
+ if (_spriteTable[spriteNum].res_state != state) {
+ _spriteTable[spriteNum].res_state = state;
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+ }
+ }
+}
+
+void ScummEngine_v90he::spriteInfoSet_tx_ty(int spriteNum, int value1, int value2) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (_spriteTable[spriteNum].tx != value1 || _spriteTable[spriteNum].ty != value2) {
+ _spriteTable[spriteNum].tx = value1;
+ _spriteTable[spriteNum].ty = value2;
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+ }
+}
+
+void ScummEngine_v90he::spriteInfoSet_groupNum(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+ checkRange(_varNumSpriteGroups, 1, value, "Invalid sprite group%d");
+
+ _spriteTable[spriteNum].group_num = value;
+}
+
+void ScummEngine_v90he::spriteInfoSet_field_2C_30(int spriteNum, int value1, int value2) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].field_2C = value1;
+ _spriteTable[spriteNum].field_30 = value2;
+}
+
+void ScummEngine_v90he::spriteInfoSet_field_54(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].field_54 = value;
+ if (_spriteTable[spriteNum].res_id)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+}
+
+void ScummEngine_v90he::spriteInfoSet_field_44(int spriteNum, int value1, int value2) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].field_44 = value2;
+}
+
+void ScummEngine_v90he::spriteInfoSet_field_18(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].field_18 = value;
+}
+
+void ScummEngine_v90he::spriteInfoSet_Inc_tx_ty(int spriteNum, int value1, int value2) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].tx += value1;
+ _spriteTable[spriteNum].ty += value2;
+
+ if (_spriteTable[spriteNum].tx || _spriteTable[spriteNum].ty)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+}
+
+void ScummEngine_v90he::spriteInfoSet_zoom(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+ _spriteTable[spriteNum].flags |= kSFZoomed;
+
+ if (_spriteTable[spriteNum].zoom != value) {
+ _spriteTable[spriteNum].zoom = value;
+
+ if (_spriteTable[spriteNum].res_id)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+ }
+}
+
+void ScummEngine_v90he::spriteInfoSet_case183(int spriteNum) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ // TODO
+}
+
+void ScummEngine_v90he::spriteInfoSet_addImageToList(int spriteNum, int imageNum, int *spriteIdptr) {
// TODO
}
More information about the Scummvm-git-logs
mailing list