aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h3
-rw-r--r--scumm/script_v90he.cpp9
-rw-r--r--scumm/sprite_he.cpp15
3 files changed, 20 insertions, 7 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index c00c6f8638..822478f440 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -900,6 +900,7 @@ protected:
int spriteInfoGet_field_78(int spriteId);
int spriteInfoGet_field_7C(int spriteId);
int spriteInfoGet_field_80(int spriteId);
+ int spriteInfoGet_field_88(int spriteId, int type);
void getSpriteImageDim(int spriteId, int32 &w, int32 &h);
void spriteInfoGet_tx_ty(int spriteId, int32 &tx, int32 &ty);
void spriteInfoGet_dx_dy(int spriteId, int32 &dx, int32 &dy);
@@ -938,7 +939,7 @@ protected:
void spriteInfoSet_field_78_64(int spriteId, int value);
void spriteInfoSet_setClassFlags(int spriteId, int value1, int value2);
void spriteInfoSet_resetClassFlags(int spriteId);
- void spriteInfoSet_field_88(int spriteId, int value1, int value2);
+ void spriteInfoSet_field_88(int spriteId, int type, int value);
void redrawSpriteGroup(int spriteGroupId);
void spriteGroupSet_case0_0(int spriteGroupId, int value1, int value2);
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index c9350ff4c6..79e3a01c78 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -926,9 +926,12 @@ void ScummEngine_v90he::o90_getSpriteInfo() {
}
break;
case 109:
- // dummy case
- pop();
- push(0);
+ spriteId = pop();
+ flags = pop();
+ if (spriteId)
+ push(spriteInfoGet_field_88(spriteId, flags));
+ else
+ push(0);
break;
case 110:
spriteId = pop();
diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp
index fd7039a76d..9ea986f25d 100644
--- a/scumm/sprite_he.cpp
+++ b/scumm/sprite_he.cpp
@@ -199,6 +199,15 @@ int ScummEngine_v90he::spriteInfoGet_field_80(int spriteId) {
return _spriteTable[spriteId].field_80;
}
+int ScummEngine_v90he::spriteInfoGet_field_88(int spriteId, int type) {
+ checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
+
+ if (type == 0x7B)
+ return _spriteTable[spriteId].field_88;
+ else
+ return 0;
+}
+
void ScummEngine_v90he::getSpriteImageDim(int spriteId, int32 &w, int32 &h) {
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
@@ -525,11 +534,11 @@ void ScummEngine_v90he::spriteInfoSet_resetClassFlags(int spriteId) {
_spriteTable[spriteId].class_flags = 0;
}
-void ScummEngine_v90he::spriteInfoSet_field_88(int spriteId, int value1, int value2) {
+void ScummEngine_v90he::spriteInfoSet_field_88(int spriteId, int type, int value) {
checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
- if (value1 == 0x7B) {
- _spriteTable[spriteId].field_88 = value2;
+ if (type == 0x7B) {
+ _spriteTable[spriteId].field_88 = value;
_spriteTable[spriteId].flags |= kSF01 | kSFNeedRedraw;
}
}