diff options
| author | lukaslw | 2014-04-28 20:59:42 +0200 | 
|---|---|---|
| committer | lukaslw | 2014-06-22 20:07:50 +0200 | 
| commit | eb9a0009bb1b4699ce60be7b3638c3a63ee0dfda (patch) | |
| tree | f3ca8ae7326e1524e1ae0b01b5a20d46c6732291 | |
| parent | 43385406ba9a3394ddec4deb8c6690afb550fcca (diff) | |
| download | scummvm-rg350-eb9a0009bb1b4699ce60be7b3638c3a63ee0dfda.tar.gz scummvm-rg350-eb9a0009bb1b4699ce60be7b3638c3a63ee0dfda.tar.bz2 scummvm-rg350-eb9a0009bb1b4699ce60be7b3638c3a63ee0dfda.zip | |
PRINCE: Small update to hero zooming.
| -rw-r--r-- | engines/prince/hero.cpp | 85 | 
1 files changed, 66 insertions, 19 deletions
| diff --git a/engines/prince/hero.cpp b/engines/prince/hero.cpp index 070a2fe82c..deccb7d24d 100644 --- a/engines/prince/hero.cpp +++ b/engines/prince/hero.cpp @@ -83,6 +83,7 @@ const Graphics::Surface * Hero::getSurface() {  		int16 phaseFrameIndex = _moveSet[_moveSetType]->getPhaseFrameIndex(_phase);  		Graphics::Surface *heroFrame = _moveSet[_moveSetType]->getFrame(phaseFrameIndex);  		//return _moveSet[_moveSetType]->getFrame(phaseFrameIndex); +  		return heroFrame;  	}  	return NULL; @@ -176,46 +177,90 @@ void Hero::countDrawPosition() {  	int16 tempMiddleY;  	int16 baseX = _moveSet[_moveSetType]->getBaseX();  	int16 baseY = _moveSet[_moveSetType]->getBaseY(); +	// any chance?  	if(baseX == 320) {  		tempMiddleY = _middleY - (baseY - 240); +	} else { +		tempMiddleY = _middleY;  	}  	int16 frameXSize = _moveSet[_moveSetType]->getFrameWidth(_phase);  	int16 frameYSize = _moveSet[_moveSetType]->getFrameHeight(_phase);  	int scaledX = getScaledValue(frameXSize); // ebx  	int scaledY = getScaledValue(frameYSize); // edx -	int tempHeroHeight = scaledY; +	int tempHeroHeight = scaledY; // not used? global?  	int width = scaledX / 2;  	tempMiddleX = _middleX - width; //eax  	int z = _middleY; //ebp  	int y = _middleY - scaledY; //ecx -	  	//TODO  	checkNak(); +  	//zoomSprite(tempMiddleY);  	// zoomSprite: -	if(_zoomFactor == 0) { +	int sprModulo; +	if(_zoomFactor != 0) {  		//notfullSize -		int sprFullHeight = _moveSet[_moveSetType]->getFrameHeight(_phase); // edx -		int sprModulo = tempMiddleY; // ebp ??? -		int sprSkipX = 0; -		int sprSkipY = 0; +		int sprFullHeight = frameXSize; +		sprModulo = tempMiddleY; // ebp ??? +		//int sprSkipX = 0; +		//int sprSkipY = 0;  		int sprWidth = scaledX; -		int sprHeight = scaledY; +		int sprHeight = scaledY; // after resize +		int allocMemSize = sprWidth*sprHeight; +		sprFullHeight--; +		int imulEDX = sprFullHeight*sprModulo; // edx +		int sprZoomX; +		int sprZoomY = _scaleValue; +		int loop_lin; +		for(int i = 0; i < sprHeight; i++) { +			// linear_loop: +			while(1) { +				sprZoomY -= 100; +				if(sprZoomY >= 0 || _scaleValue == 10000) { +					// all_r_y +					// push esi +					loop_lin = sprWidth; +					// mov ah, -1 +					sprZoomX = _scaleValue; +					break; // to loop_lin +				} else { +					sprZoomY += _scaleValue; +					// add esi, sprModulo /? +				} +			} +			// end of linear_loop +			// loop_lin: +			for(int i = 0; i < loop_lin; i++) { +				// mov al, b[esi] +				// inc esi +				sprZoomX -= 100; +				if(sprZoomX >= 0) { +					//its_all_r +					// without ZOOMFIX +					//mov [edi], al +					// inc edi +				} else { +					sprZoomX += _scaleValue; +				} +			} +			//pop esi +			//add esi, sprModulo +			debug("loop_lin: %d", loop_lin); +		} +		debug("scaledX: %d", scaledX); +		debug("scaledY: %d", scaledY); +		_drawX = _middleX - frameXSize/2; +		_drawY = _middleY - frameYSize;  	} else {  		//fullSize -		int sprWidth = frameXSize; -		int temp = sprWidth / 2; -		int lowerYPosition = y + 1; +		sprModulo = 0; //? +		_drawX = _middleX - frameXSize / 2; +		_drawY = tempMiddleY + 1 - frameYSize;  	} -	debug("scaledX: %d", scaledX); -	debug("scaledY: %d", scaledY); -	_drawX = _middleX - frameXSize/2; -	_drawY = _middleY - frameYSize; - -	 +	// ShowSprite  }  /*  AnimHeader	struc		;struktura naglowka pliku z animacja @@ -243,11 +288,13 @@ void Hero::showHeroAnimFrame() {  void Hero::setScale(int8 zoomBitmapValue) {  	if (zoomBitmapValue == 0) { -		_zoomFactor = 1; +		_zoomFactor = 0; +		_scaleValue = 10000;  	} else {  		_zoomFactor = zoomBitmapValue; +		_scaleValue = 10000 / _zoomFactor;  	} -	_scaleValue = 10000 / _zoomFactor; +	debug("_zoomFactor: %d", _zoomFactor);  	debug("_scaleValue: %d", _scaleValue);  } | 
