[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.339,2.340 script_v90he.cpp,2.129,2.130 sprite_he.cpp,1.7,1.8 sprite_he.h,1.4,1.5
Eugene Sandulenko
sev at users.sourceforge.net
Sun Feb 20 16:03:41 CET 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.338,2.339 script_v90he.cpp,2.128,2.129 sprite_he.cpp,1.6,1.7
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.340,2.341 script_v90he.cpp,2.130,2.131 sprite_he.cpp,1.8,1.9
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16093
Modified Files:
intern.h script_v90he.cpp sprite_he.cpp sprite_he.h
Log Message:
o WIP for o90_spriteInfoSet.
o kSFx -> kSF0x
o kSGFx -> kSGF0x
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.339
retrieving revision 2.340
diff -u -d -r2.339 -r2.340
--- intern.h 20 Feb 2005 23:55:10 -0000 2.339
+++ intern.h 21 Feb 2005 00:02:44 -0000 2.340
@@ -852,6 +852,9 @@
const OpcodeEntryV90he *_opcodesV90he;
WizParameters _wizParams;
+ int _curMaxSpriteId;
+ int _curSpriteId;
+
public:
ScummEngine_v90he(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v80he(detector, syst, gs, md5sum) {}
@@ -893,6 +896,11 @@
int spriteInfoGet_field_80(int spriteNun);
void getSpriteImageDim(int spriteNum, int32 &w, int32 &h);
+ void spriteInfoSet_field_14(int spriteNum, int value);
+ void spriteInfoSet_field_7C(int spriteNum, int value);
+ void spriteInfoSet_field_80(int spriteNum, int value);
+ void spriteInfoSet_case183(int spriteNum);
+
void spritesAllocTables(int numSprites, int numGroups, int numImgSprites);
void spritesResetTables(bool refreshScreen);
void spriteGroupCheck(int sprGrpId);
Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.129
retrieving revision 2.130
diff -u -d -r2.129 -r2.130
--- script_v90he.cpp 20 Feb 2005 23:55:11 -0000 2.129
+++ script_v90he.cpp 21 Feb 2005 00:02:44 -0000 2.130
@@ -903,6 +903,7 @@
void ScummEngine_v90he::o90_setSpriteInfo() {
int args[16];
+ int spriteId;
byte subOp = fetchScriptByte();
subOp -= 34;
@@ -934,12 +935,27 @@
pop();
break;
case 23:
- pop();
- if (_gameId == GID_FREDDI4 || _heversion >= 99)
- pop();
+ if (_gameId == GID_FREDDI4 || _heversion >= 99) {
+ _curMaxSpriteId = pop();
+ _curSpriteId = pop();
+
+ if (_curSpriteId > _curMaxSpriteId)
+ SWAP(_curSpriteId, _curMaxSpriteId);
+ } else {
+ _curSpriteId = pop();
+ _curMaxSpriteId = _curSpriteId; // to make all functions happy
+ }
break;
case 28: // HE99+
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_7C(spriteId, args[0]);
break;
case 29:
pop();
@@ -959,7 +975,15 @@
pop();
break;
case 52: // HE 98+
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_14(spriteId, args[0]);
break;
case 58: // HE 99+
pop();
@@ -981,7 +1005,15 @@
pop();
break;
case 106: // HE 99+
- pop();
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_field_80(spriteId, args[0]);
break;
case 124:
break;
@@ -990,6 +1022,15 @@
pop();
break;
case 183:
+ args[0] = pop();
+ if (_curSpriteId > _curMaxSpriteId)
+ break;
+ spriteId = _curSpriteId;
+ if (!spriteId)
+ spriteId++;
+
+ for (; spriteId <= _curMaxSpriteId; spriteId++)
+ spriteInfoSet_case183(spriteId);
break;
default:
error("o90_setSpriteInfo: Unknown case %d", subOp);
Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- sprite_he.cpp 20 Feb 2005 23:55:11 -0000 1.7
+++ sprite_he.cpp 21 Feb 2005 00:02:44 -0000 1.8
@@ -161,6 +161,39 @@
getWizImageDim(_spriteTable[spriteNum].res_id, _spriteTable[spriteNum].res_state, w, h);
}
+//
+// spriteInfoSet functions
+//
+void ScummEngine_v90he::spriteInfoSet_field_14(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (_spriteTable[spriteNum].field_14 != value) {
+ _spriteTable[spriteNum].field_14 = value;
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+ }
+}
+
+void ScummEngine_v90he::spriteInfoSet_field_7C(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ if (_spriteTable[spriteNum].field_7C != value) {
+ _spriteTable[spriteNum].field_7C = value;
+ _spriteTable[spriteNum].flags |= kSF01 | kSF02;
+ }
+}
+
+void ScummEngine_v90he::spriteInfoSet_field_80(int spriteNum, int value) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ _spriteTable[spriteNum].field_80 = value;
+}
+
+void ScummEngine_v90he::spriteInfoSet_case183(int spriteNum) {
+ checkRange(_varNumSprites, 1, spriteNum, "Invalid sprite %d");
+
+ // TODO
+}
+
void ScummEngine_v90he::spritesAllocTables(int numSprites, int numGroups, int numImgLists) {
_varNumSpriteGroups = numGroups;
_numSpritesToProcess = 0;
@@ -189,7 +222,7 @@
for (i = 0; i < _numSpritesToProcess; ++i) {
SpriteInfo *spi = _activeSpritesTable[i];
if (spi->group_num == curGrp) {
- spi->flags |= kSF1 | kSF2;
+ spi->flags |= kSF01 | kSF02;
}
}
}
@@ -199,18 +232,18 @@
for (i = 0; i < _numSpritesToProcess; ++i) {
SpriteInfo *spi = _activeSpritesTable[i];
if (spi->group_num == curGrp) {
- spi->flags |= kSF1 | kSF2;
+ spi->flags |= kSF01 | kSF02;
}
}
}
- spg->flags &= ~kSGF1;
- spriteMarkIfInGroup(curGrp, kSF1 | kSF2);
+ spg->flags &= ~kSGF01;
+ spriteMarkIfInGroup(curGrp, kSF01 | kSF02);
if (spg->field_20 != 0) {
spriteGroupCheck(curGrp);
for (i = 0; i < _numSpritesToProcess; ++i) {
SpriteInfo *spi = _activeSpritesTable[i];
if (spi->group_num == curGrp) {
- spi->flags |= kSF1 | kSF2;
+ spi->flags |= kSF01 | kSF02;
}
}
}
Index: sprite_he.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- sprite_he.h 20 Feb 2005 22:16:31 -0000 1.4
+++ sprite_he.h 21 Feb 2005 00:02:44 -0000 1.5
@@ -26,15 +26,15 @@
namespace Scumm {
enum SpriteFlags {
- kSF1 = (1 << 0),
- kSF2 = (1 << 1),
- kSF3 = (1 << 2),
- kSF4 = (1 << 3),
+ kSF01 = (1 << 0),
+ kSF02 = (1 << 1),
+ kSF03 = (1 << 2),
+ kSF04 = (1 << 3),
kSFZoomed = (1 << 4),
kSFRotated = (1 << 5),
- kSF7 = (1 << 6),
- kSF8 = (1 << 7),
- kSF9 = (1 << 8),
+ kSF07 = (1 << 6),
+ kSF08 = (1 << 7),
+ kSF09 = (1 << 8),
kSF10 = (1 << 9),
kSF11 = (1 << 10),
kSF12 = (1 << 11),
@@ -61,8 +61,8 @@
};
enum SpriteGroupFlags {
- kSGF1 = 1 << 0,
- kSFG2 = 1 << 1
+ kSGF01 = 1 << 0,
+ kSGF02 = 1 << 1
};
struct SpriteInfo {
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.338,2.339 script_v90he.cpp,2.128,2.129 sprite_he.cpp,1.6,1.7
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.340,2.341 script_v90he.cpp,2.130,2.131 sprite_he.cpp,1.8,1.9
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list