diff Render.cpp @ 670:9824e2eeee30

fixed decorations animation
author Gloval
date Fri, 15 Mar 2013 01:51:51 +0400
parents 7747161ea5b5
children c0bfb386b15f
line wrap: on
line diff
--- a/Render.cpp	Wed Mar 13 17:08:21 2013 +0600
+++ b/Render.cpp	Fri Mar 15 01:51:51 2013 +0400
@@ -9044,80 +9044,54 @@
 }
 
 //----- (004A5048) --------------------------------------------------------
-HWLTexture *Render::MoveSpriteToDevice(Sprite *pSprite)
-{
-  Sprite *v2; // edi@1
-  Render *v3; // ebx@1
-  HWLTexture *result; // eax@1
-  HWLTexture *v5; // esi@1
-  //unsigned int v6; // ST18_4@2
-  //RenderD3D *v7; // ecx@2
-  Sprite *v8; // ebx@4
+bool Render::MoveSpriteToDevice( Sprite *pSprite )
+    {
+
+  HWLTexture *sprite_texture; // eax@1
   unsigned __int16 *v9; // edx@5
   LPVOID v10; // eax@5
-  signed int v11; // ebx@5
-  signed int v12; // ecx@6
-  signed int v13; // edi@7
-  HRESULT v14; // eax@10
   DDSURFACEDESC2 Dst; // [sp+Ch] [bp-7Ch]@4
 
-  v2 = pSprite;
-  v3 = this;
-  result = pD3DSprites.LoadTexture(pSprite->pName, pSprite->uPaletteID);
-  v5 = result;
-  if ( result )
-  {
-    v3->_gpu_memory_used += 2 * result->uWidth * result->uHeight;
-    v2->uAreaX = result->field_30;
-    v2->uAreaY = result->field_34;
-    v2->uBufferWidth = result->field_18;
-    v2->uBufferHeight = result->field_1C;
-    v2->uAreaWidth = result->field_20;
-    v2->uAreaHeight = result->field_24;
+  sprite_texture = pD3DSprites.LoadTexture(pSprite->pName, pSprite->uPaletteID);
+  if ( sprite_texture )
+  {
+    _gpu_memory_used += 2 * sprite_texture->uWidth * sprite_texture->uHeight;
+    pSprite->uAreaX = sprite_texture->uAreaX;
+    pSprite->uAreaY = sprite_texture->uAreaY;
+    pSprite->uBufferWidth = sprite_texture->uBufferWidth;
+    pSprite->uBufferHeight = sprite_texture->uBufferHeight;
+    pSprite->uAreaWidth = sprite_texture->uAreaWidth;
+    pSprite->uAreaHeight = sprite_texture->uAreaHeigth;
     //v6 = v3->uMinDeviceTextureDim;
     //v7 = v3->pRenderD3D;
-    if (!pRenderD3D->CreateTexture(result->uWidth, result->uHeight, &v2->pTextureSurface, &v2->pTexture, 1u, 0, uMinDeviceTextureDim))
+    if (!pRenderD3D->CreateTexture(sprite_texture->uWidth, sprite_texture->uHeight, &pSprite->pTextureSurface, &pSprite->pTexture, 1u, 0, uMinDeviceTextureDim))
       Abortf("HiScreen16::LoadTexture - D3Drend->CreateTexture() failed: %x", 0);
     //pSprite = v2->pTextureSurface;
     //pSprite = (Sprite *)pSprite->pName;
     //v8 = pSprite;
-    memset(&Dst, 0, 0x7Cu);
+    memset(&Dst, 0, sizeof(DDSURFACEDESC2));
     Dst.dwSize = 124;
-    if ( LockSurface_DDraw4((IDirectDrawSurface4 *)v2->pTextureSurface, &Dst, DDLOCK_WAIT | DDLOCK_WRITEONLY) )
-    {
-      v9 = v5->pPixels;
-      v10 = Dst.lpSurface;
-      v11 = 0;
-      if ( (signed int)v5->uHeight > 0 )
-      {
-        v12 = (signed int)v5->uWidth >> 1;
-        do
-        {
-          v13 = 0;
-          if ( v12 > 0 )
+    if ( LockSurface_DDraw4((IDirectDrawSurface4 *)pSprite->pTextureSurface, &Dst, DDLOCK_WAIT | DDLOCK_WRITEONLY) )
+    {
+    v9 = sprite_texture->pPixels;
+    v10 = Dst.lpSurface;
+      for (int i=0; i<sprite_texture->uHeight; ++i)
           {
-            do
-            {
-              ++v13;
+          for (int j=0; j<sprite_texture->uWidth/2; ++j)
+              {
               *(int *)v10 = *(int *)v9;
               v9 += 2;
               v10 = (char *)v10 + 4;
-            }
-            while ( v13 < (signed int)v5->uWidth >> 1 );
+              }
+          v10 = (char *)v10+Dst.lPitch-sprite_texture->uWidth*2;
           }
-          v12 = (signed int)v5->uWidth >> 1;
-          ++v11;
-          v10 = (char *)v10 + 4 * ((Dst.lPitch >> 2) - v12);
-        }
-        while ( v11 < (signed int)v5->uHeight );
-      }
-      ErrD3D(v2->pTextureSurface->Unlock(0));
-    }
-    free(v5->pPixels);
-    free(v5);
-    result = (HWLTexture *)1;
-  }
-  return result;
+      ErrD3D(pSprite->pTextureSurface->Unlock(0));
+    }
+    free(sprite_texture->pPixels);
+    free(sprite_texture);
+    return true;
+  }
+  return false;
 }
 
 //----- (004A51CB) --------------------------------------------------------
@@ -11222,14 +11196,14 @@
   fread(&uCompressedSize, 4, 1, pFile);
 
     auto pTex = new HWLTexture;
-    fread(&pTex->field_18, 4, 1, pFile);
-    fread(&pTex->field_1C, 4, 1, pFile);
-    fread(&pTex->field_20, 4, 1, pFile);
-    fread(&pTex->field_24, 4, 1, pFile);
+    fread(&pTex->uBufferWidth, 4, 1, pFile);
+    fread(&pTex->uBufferHeight, 4, 1, pFile);
+    fread(&pTex->uAreaWidth, 4, 1, pFile);
+    fread(&pTex->uAreaHeigth, 4, 1, pFile);
     fread(&pTex->uWidth, 4, 1, pFile);
     fread(&pTex->uHeight, 4, 1, pFile);
-    fread(&pTex->field_30, 4, 1, pFile);
-    fread(&pTex->field_34, 4, 1, pFile);
+    fread(&pTex->uAreaX, 4, 1, pFile);
+    fread(&pTex->uAreaY, 4, 1, pFile);
 
     pTex->pPixels = new unsigned __int16[pTex->uWidth * pTex->uHeight];
     if (uCompressedSize)