[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
kirben
kirben at users.sourceforge.net
Sun Feb 20 17:09:29 CET 2005
- Previous message: [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
- Next message: [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
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32284/scumm
Modified Files:
intern.h script_v90he.cpp sprite_he.cpp
Log Message:
Add functions for o90_getSpriteGroupInfo
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.343
retrieving revision 2.344
diff -u -d -r2.343 -r2.344
--- intern.h 21 Feb 2005 00:59:50 -0000 2.343
+++ intern.h 21 Feb 2005 01:08:48 -0000 2.344
@@ -898,6 +898,14 @@
void spriteInfoGet_tx_ty(int spriteId, int32 &tx, int32 &ty);
void spriteInfoGet_field_2C_30(int spriteId, int32 &field_2C, int32 &field_30);
+ int spriteGroupGet_field_10(int spriteId);
+ int spriteGroupGet_field_20(int spriteId);
+ int spriteGroupGet_field_30(int spriteId);
+ int spriteGroupGet_field_34(int spriteId);
+ int spriteGroupGet_field_38(int spriteId);
+ int spriteGroupGet_field_3C(int spriteId);
+ void spriteGroupGet_tx_ty(int spriteId, int32 &tx, int32 &ty);
+
void spriteInfoSet_field_14(int spriteId, int value);
void spriteInfoSet_field_7C(int spriteId, int value);
void spriteInfoSet_field_80(int spriteId, int value);
Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.135
retrieving revision 2.136
diff -u -d -r2.135 -r2.136
--- script_v90he.cpp 21 Feb 2005 00:59:50 -0000 2.135
+++ script_v90he.cpp 21 Feb 2005 01:08:48 -0000 2.136
@@ -1143,35 +1143,82 @@
}
void ScummEngine_v90he::o90_getSpriteGroupInfo() {
+ int32 tx, ty;
+ int spriteId, type;
+
byte subOp = fetchScriptByte();
switch (subOp) {
case 8: // HE 99+
pop();
+ push(0);
break;
case 30:
- pop();
+ spriteId = pop();
+ if (spriteId) {
+ spriteGroupGet_tx_ty(spriteId, tx, ty);
+ push(tx);
+ } else {
+ push(0);
+ }
break;
case 31:
- pop();
+ spriteId = pop();
+ if (spriteId) {
+ spriteGroupGet_tx_ty(spriteId, tx, ty);
+ push(ty);
+ } else {
+ push(0);
+ }
break;
case 42: // HE 99+
- pop();
- pop();
+ type = pop();
+ spriteId = pop();
+ if (spriteId) {
+ switch(type) {
+ case 0:
+ push(spriteGroupGet_field_30(spriteId));
+ break;
+ case 1:
+ push(spriteGroupGet_field_34(spriteId));
+ break;
+ case 2:
+ push(spriteGroupGet_field_38(spriteId));
+ break;
+ case 3:
+ push(spriteGroupGet_field_3C(spriteId));
+ break;
+ default:
+ push(0);
+ }
+ } else {
+ push(0);
+ }
break;
case 43:
- pop();
+ spriteId = pop();
+ if (spriteId) {
+ push(spriteGroupGet_field_10(spriteId));
+ } else {
+ push(0);
+ }
break;
case 63: // HE 99+
- pop();
+ spriteId = pop();
+ if (spriteId) {
+ push(spriteGroupGet_field_20(spriteId));
+ } else {
+ push(0);
+ }
break;
case 139: // HE 99+
+ // dummy case
pop();
pop();
+ push(0);
break;
default:
error("o90_getSpriteGroupInfo: Unknown case %d", subOp);
}
- push(0);
debug(1,"o90_getSpriteGroupInfo stub (%d)", subOp);
}
Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- sprite_he.cpp 21 Feb 2005 00:59:50 -0000 1.11
+++ sprite_he.cpp 21 Feb 2005 01:08:48 -0000 1.12
@@ -35,6 +35,10 @@
spritesAllocTables(_numSprites, 64, 64);
}
+//
+// spriteInfoGet functions
+//
+
int ScummEngine_v90he::spriteInfoGet_flags_1(int spriteId) {
checkRange(_numSprites, 1, spriteId, "_spriteTableGet_flags_1: Invalid sprite %d");
@@ -182,6 +186,53 @@
}
//
+// spriteGroupGet functions
+//
+
+int ScummEngine_v90he::spriteGroupGet_field_10(int spriteId) {
+ checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_10: Invalid sprite %d");
+
+ return _spriteGroups[spriteId].field_10;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_20(int spriteId) {
+ checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_20: Invalid sprite %d");
+
+ return _spriteGroups[spriteId].field_20;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_30(int spriteId) {
+ checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_30: Invalid sprite %d");
+
+ return _spriteGroups[spriteId].field_30;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_34(int spriteId) {
+ checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_34: Invalid sprite %d");
+
+ return _spriteGroups[spriteId].field_34;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_38(int spriteId) {
+ checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_38: Invalid sprite %d");
+
+ return _spriteGroups[spriteId].field_38;
+}
+
+int ScummEngine_v90he::spriteGroupGet_field_3C(int spriteId) {
+ checkRange(_numSprites, 1, spriteId, "spriteInfoGet_field_3C: Invalid sprite %d");
+
+ return _spriteGroups[spriteId].field_3C;
+}
+
+void ScummEngine_v90he::spriteGroupGet_tx_ty(int spriteId, int32 &tx, int32 &ty) {
+ checkRange(_numSprites, 1, spriteId, "spriteGroupGet_tx_ty: Invalid sprite %d");
+
+ tx = _spriteGroups[spriteId].tx;
+ ty = _spriteGroups[spriteId].ty;
+}
+
+//
// spriteInfoSet functions
//
void ScummEngine_v90he::spriteInfoSet_field_14(int spriteId, int value) {
- Previous message: [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
- Next message: [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
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list