[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.344,2.345 script_v90he.cpp,2.136,2.137 sprite_he.cpp,1.12,1.13
Eugene Sandulenko
sev at users.sourceforge.net
Sun Feb 20 18:03:18 CET 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.343,2.344 script_v90he.cpp,2.135,2.136 sprite_he.cpp,1.11,1.12
- Next message: [Scummvm-cvs-logs] CVS: scummvm/sword2 layers.cpp,1.35,1.36 resman.cpp,1.106,1.107 resman.h,1.23,1.24 sword2.cpp,1.135,1.136
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12779
Modified Files:
intern.h script_v90he.cpp sprite_he.cpp
Log Message:
WIP for o90_spriteInfoSet
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.344
retrieving revision 2.345
diff -u -d -r2.344 -r2.345
--- intern.h 21 Feb 2005 01:08:48 -0000 2.344
+++ intern.h 21 Feb 2005 02:02:29 -0000 2.345
@@ -919,6 +919,16 @@
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 spriteInfoSet_rotAngle(int spriteNum, int value);
+ void spriteInfoSet_flag22(int spriteNum, int value);
+ void spriteInfoSet_flag7(int spriteNum, int value);
+ void spriteInfoSet_flagRotated(int spriteNum, int value);
+ void spriteInfoSet_flag8(int spriteNum, int value);
+ void spriteInfoSet_flagZoomed(int spriteNum, int value);
+ void spriteInfoSet_flag20(int spriteNum, int value);
+ void spriteInfoSet_flags23_26(int spriteNum, int value);
+ void spriteInfoSet_flag31(int spriteNum, int value);
+ void spriteInfoSet_field_78_64(int spriteNum, int value);
void spritesAllocTables(int numSprites, int numGroups, int numImgSprites);
void spritesResetTables(bool refreshScreen);
Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.136
retrieving revision 2.137
diff -u -d -r2.136 -r2.137
--- script_v90he.cpp 21 Feb 2005 01:08:48 -0000 2.136
+++ script_v90he.cpp 21 Feb 2005 02:02:32 -0000 2.137
@@ -928,16 +928,39 @@
void ScummEngine_v90he::o90_setSpriteInfo() {
int args[16];
- int spriteId;
+ int spriteId, tmp[2];
+ static int storedFields[2];
byte subOp = fetchScriptByte();
subOp -= 34;
switch (subOp) {
case 0:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++) {
+ spriteInfoGet_field_2C_30(spriteId, tmp[0], tmp[1]);
+ storedFields[0] = tmp[0];
+ spriteInfoSet_field_2C_30(spriteId, args[0], tmp[1]);
+ }
break;
case 1:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++) {
+ spriteInfoGet_field_2C_30(spriteId, tmp[0], tmp[1]);
+ storedFields[1] = tmp[1];
+ spriteInfoSet_field_2C_30(spriteId, tmp[0], args[0]);
+ }
break;
case 3:
args[0] = pop();
@@ -951,8 +974,34 @@
spriteInfoSet_groupNum(spriteId, args[0]);
break;
case 8:
- pop();
- pop();
+ args[1] = pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ switch(args[1]) {
+ case 0:
+ spriteInfoSet_flag7(spriteId, args[0]);
+ break;
+ case 1:
+ spriteInfoSet_flagRotated(spriteId, args[0]);
+ break;
+ case 2:
+ spriteInfoSet_flag8(spriteId, args[0]);
+ break;
+ case 3:
+ spriteInfoSet_flagZoomed(spriteId, args[0]);
+ break;
+ case 4:
+ spriteInfoSet_flag20(spriteId, args[0]);
+ break;
+ default:
+ break;
+ }
break;
case 9:
args[0] = pop();
@@ -989,7 +1038,15 @@
spriteInfoSet_resState(spriteId, args[0]);
break;
case 19:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_rotAngle(spriteId, args[0]);
break;
case 23:
if (_gameId == GID_FREDDI4 || _heversion >= 99) {
@@ -1038,7 +1095,15 @@
spriteInfoSet_tx_ty(spriteId, args[0], args[1]);
break;
case 34:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_flag31(spriteId, args[0]);
break;
case 43:
args[1] = pop();
@@ -1053,7 +1118,15 @@
spriteInfoSet_field_2C_30(spriteId, args[0], args[1]);
break;
case 48:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_flag22(spriteId, args[0]);
break;
case 52: // HE 98+
args[0] = pop();
@@ -1078,7 +1151,15 @@
spriteInfoSet_zoom(spriteId, args[0]);
break;
case 63: // HE 98+
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_78_64(spriteId, args[0]);
break;
case 64:
args[0] = pop();
@@ -1092,7 +1173,15 @@
spriteInfoSet_field_54(spriteId, args[0]);
break;
case 90:
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_flags23_26(spriteId, args[0]);
break;
case 91:
getStackList(args, ARRAYSIZE(args));
@@ -1113,6 +1202,7 @@
spriteInfoSet_field_80(spriteId, args[0]);
break;
case 124:
+ spritesResetTables(true);
break;
case 164:
args[1] = pop();
Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- sprite_he.cpp 21 Feb 2005 01:08:48 -0000 1.12
+++ sprite_he.cpp 21 Feb 2005 02:02:32 -0000 1.13
@@ -343,6 +343,111 @@
}
}
+void ScummEngine_v90he::spriteInfoSet_rotAngle(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].flags |= kSFRotated;
+
+ if (_spriteTable[spriteNum].rot_angle != value) {
+ _spriteTable[spriteNum].rot_angle = value;
+
+ if (_spriteTable[spriteNum].res_id)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+ }
+}
+
+void ScummEngine_v90he::spriteInfoSet_flag22(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (value)
+ _spriteTable[spriteNum].flags |= kSF22;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSF22);
+}
+
+void ScummEngine_v90he::spriteInfoSet_flag7(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (value)
+ _spriteTable[spriteNum].flags |= kSF07;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSF07);
+
+ if (_spriteTable[spriteNum].res_id)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+}
+
+void ScummEngine_v90he::spriteInfoSet_flagRotated(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (value)
+ _spriteTable[spriteNum].flags |= kSFRotated;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSFRotated);
+
+ if (_spriteTable[spriteNum].res_id)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+}
+
+void ScummEngine_v90he::spriteInfoSet_flag8(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (value)
+ _spriteTable[spriteNum].flags |= kSF08;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSF08);
+}
+
+void ScummEngine_v90he::spriteInfoSet_flagZoomed(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (value)
+ _spriteTable[spriteNum].flags |= kSFZoomed;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSFZoomed);
+
+ if (_spriteTable[spriteNum].res_id)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+}
+
+void ScummEngine_v90he::spriteInfoSet_flag20(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (value)
+ _spriteTable[spriteNum].flags |= kSF20;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSF20);
+
+ if (_spriteTable[spriteNum].res_id)
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+}
+
+void ScummEngine_v90he::spriteInfoSet_flags23_26(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (value)
+ _spriteTable[spriteNum].flags |= kSF23 | kSF26;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSF23 | kSF26);
+}
+
+void ScummEngine_v90he::spriteInfoSet_flag31(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ // Note that condition is inverted
+ if (!value)
+ _spriteTable[spriteNum].flags |= kSF31;
+ else
+ _spriteTable[spriteNum].flags &= ~(kSF01 | kSF31);
+}
+
+void ScummEngine_v90he::spriteInfoSet_field_78_64(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].field_78 = value;
+ _spriteTable[spriteNum].field_64 = value;
+}
+
void ScummEngine_v90he::spriteInfoSet_case183(int spriteNum) {
checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.343,2.344 script_v90he.cpp,2.135,2.136 sprite_he.cpp,1.11,1.12
- Next message: [Scummvm-cvs-logs] CVS: scummvm/sword2 layers.cpp,1.35,1.36 resman.cpp,1.106,1.107 resman.h,1.23,1.24 sword2.cpp,1.135,1.136
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list