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 /engines | |
parent | 43385406ba9a3394ddec4deb8c6690afb550fcca (diff) | |
download | scummvm-rg350-eb9a0009bb1b4699ce60be7b3638c3a63ee0dfda.tar.gz scummvm-rg350-eb9a0009bb1b4699ce60be7b3638c3a63ee0dfda.tar.bz2 scummvm-rg350-eb9a0009bb1b4699ce60be7b3638c3a63ee0dfda.zip |
PRINCE: Small update to hero zooming.
Diffstat (limited to 'engines')
-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); } |