diff options
| -rw-r--r-- | scumm/sprite_he.cpp | 22 | 
1 files changed, 14 insertions, 8 deletions
| diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp index a102fad5eb..0ec68be5ed 100644 --- a/scumm/sprite_he.cpp +++ b/scumm/sprite_he.cpp @@ -671,10 +671,20 @@ void ScummEngine_v90he::spriteInfoSet_flag22(int spriteId, int value) {  void ScummEngine_v90he::spriteInfoSet_flagMarkDirty(int spriteId, int value) {  	checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d"); -	if (value) +	switch(value) { +	case 2: +		_spriteTable[spriteId].flags &= ~(kSFMarkDirty); +		_spriteTable[spriteId].flags |= kSFBlitDirectly; +		break; +	case 1:  		_spriteTable[spriteId].flags |= kSFMarkDirty | kSFBlitDirectly; -	else +		break; +	case 0:  		_spriteTable[spriteId].flags &= ~(kSFMarkDirty | kSFBlitDirectly); +		break; +	default: +		error("spriteInfoSet_flagMarkDirty: Invalid value %d", value); +	}  }  void ScummEngine_v90he::spriteInfoSet_flagHasImage(int spriteId, int value) { @@ -834,12 +844,8 @@ void ScummEngine_v90he::spriteGroupSet_case0_3(int spriteGroupId, int value) {  	checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d");  	for (int i = 1; i < _varNumSprites; i++) { -		if (_spriteTable[i].groupNum == spriteGroupId) { -			if (value) -				_spriteTable[i].flags |= kSFMarkDirty | kSFBlitDirectly; -			else -				_spriteTable[i].flags &= ~(kSFMarkDirty | kSFBlitDirectly); -		} +		if (_spriteTable[i].groupNum == spriteGroupId) +			spriteInfoSet_flagMarkDirty(i, value);  	}  } | 
