diff Render.cpp @ 2166:00bd098f6435

fixpoint_mul in different functions and others
author Ritor1
date Fri, 17 Jan 2014 17:58:48 +0600
parents 0a1438c16c2b
children 5b27c035a241
line wrap: on
line diff
--- a/Render.cpp	Thu Jan 16 17:34:48 2014 +0600
+++ b/Render.cpp	Fri Jan 17 17:58:48 2014 +0600
@@ -4323,18 +4323,8 @@
 //----- (004A1B22) --------------------------------------------------------
 unsigned int Render::Billboard_ProbablyAddToListAndSortByZOrder(float z)
 {
-  //unsigned int v2; // ebx@1
-  //double v4; // st7@5
-  //unsigned int v5; // esi@5
-  //int v6; // ecx@5
   unsigned int v7; // edx@6
-  char *v8; // ecx@12
-  void *v9; // edi@16
-  unsigned int v10; // eax@16
-  void *v11; // edi@21
-  unsigned int v12; // eax@21
-
-  //v2 = uNumBillboardsToDraw;
+
   if (uNumBillboardsToDraw >= 999 )
     return 0;
   if (!uNumBillboardsToDraw)
@@ -4343,9 +4333,6 @@
     return 0;
   }
 
-  //v4 = *(float *)&a1;
-  //v5 = pRenderer->uNumBillboardsToDraw;
-  //v6 = 0;
   for (int left = 0, right = uNumBillboardsToDraw; left < right; ) // binsearch
   {
     v7 = left + (right - left) / 2;
@@ -4355,48 +4342,37 @@
       left = v7 + 1;
   }
 
-  v8 = (char *)&pRenderer->pBillboardRenderListD3D[v7].z_order;
-  if (z > *(float *)v8 )
+  if (z > pRenderer->pBillboardRenderListD3D[v7].z_order )
   {
     if ( v7 == pRenderer->uNumBillboardsToDraw - 1 )
-    {
       v7 = pRenderer->uNumBillboardsToDraw;
-    }
     else
     {
       if ( (signed int)pRenderer->uNumBillboardsToDraw > (signed int)v7 )
       {
-        v9 = &pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw];
-        v10 = pRenderer->uNumBillboardsToDraw - v7;
-        do
+        for ( uint i = 0; i < pRenderer->uNumBillboardsToDraw - v7; i++ )
         {
-          memcpy(v9, (char *)v9 - 156, 0x9Cu);
-          v9 = (char *)v9 - 156;
-          --v10;
+          memcpy(&pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw - i],
+                 &pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw - (i + 1)],
+           sizeof(pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw - i]));
         }
-        while ( v10 );
       }
       ++v7;
     }
-//LABEL_23:
     uNumBillboardsToDraw++;
     return v7;
   }
-  if (z <= *(float *)v8 )
+  if (z <= pRenderer->pBillboardRenderListD3D[v7].z_order )
   {
     if ( (signed int)pRenderer->uNumBillboardsToDraw > (signed int)v7 )
     {
-      v11 = &pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw];
-      v12 = pRenderer->uNumBillboardsToDraw - v7;
-      do
-      {
-        memcpy(v11, (char *)v11 - 156, 0x9Cu);
-        v11 = (char *)v11 - 156;
-        --v12;
-      }
-      while ( v12 );
-    }
-    //goto LABEL_23;
+      for ( uint i = 0; i < pRenderer->uNumBillboardsToDraw - v7; i++ )
+      {
+        memcpy(&pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw - i],
+               &pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw -(i + 1)],
+        sizeof(pRenderer->pBillboardRenderListD3D[pRenderer->uNumBillboardsToDraw - i]));
+      }
+    }
     uNumBillboardsToDraw++;
     return v7;
   }
@@ -8587,7 +8563,6 @@
   {
     if (pBillboardRenderListD3D[i].opacity != RenderBillboardD3D::NoBlend)
       SetBillboardBlendOptions(pBillboardRenderListD3D[i].opacity);
-    
 
     pRenderD3D->pDevice->SetTexture(0, pBillboardRenderListD3D[i].pTexture);
     ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
@@ -8817,14 +8792,14 @@
               array_77EC08[pODMRenderParams->uNumPolygons].flags |= 2;
             if (pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_INDOOR_SKY )
               HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 4;
-            if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & 4 )
+            if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_UNKNOW8 )
               HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 4;
             else
             {
-              if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & 0x20 )
+              if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_UNKNOW9 )
                 HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 8;
             }
-            if (pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & 0x0800)
+            if (pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_UNKNOW10)
               array_77EC08[pODMRenderParams->uNumPolygons].flags |= 0x2000;
             else
             {