diff Indoor.cpp @ 1438:bc99e1a48bea

m
author Ritor1
date Mon, 22 Jul 2013 18:00:34 +0600
parents 22cb507446a4
children 468f434a8d8a
line wrap: on
line diff
--- a/Indoor.cpp	Sat Jul 06 09:07:04 2013 +0600
+++ b/Indoor.cpp	Mon Jul 22 18:00:34 2013 +0600
@@ -7177,13 +7177,13 @@
   //signed int v9; // ecx@10
   //int v10; // eax@10
   //int v11; // edx@11
-  int v12; // ST28_4@12
-  signed int v13; // edx@12
-  signed __int64 v14; // qtt@12
-  char *v15; // ebx@12
-  int v16; // ST28_4@14
-  signed int v17; // eax@14
-  signed __int64 v18; // qtt@14
+  int t;
+  //signed int v13; // edx@12
+  //signed __int64 v14; // qtt@12
+  //char *v15; // ebx@12
+  //int v16; // ST28_4@14
+  //signed int v17; // eax@14
+  //signed __int64 v18; // qtt@14
   signed int v19; // edx@15
   signed int v20; // edx@17
   signed int v21; // ebx@19
@@ -7323,42 +7323,35 @@
       if ( current_vertices_flag ^ next_vertices_flag )
       {
         //v11 = stru_50B700._view_transformed_xs[i + 2];
-        if ( stru_50B700._view_transformed_xs[i + 3] >= 524288 )
+        if ( next_vertices_flag )
         {
-          v12 = stru_50B700._view_transformed_xs[i + 3] - stru_50B700._view_transformed_xs[i + 2];
-          v13 = 524288 - stru_50B700._view_transformed_xs[i + 2];
-          LODWORD(v14) = v13 << 16;
-          HIDWORD(v14) = v13 >> 16;
-          v15 = (char *)&stru_50B700._view_transformed_ys[i + 2];
-          stru_50B700._view_transformed_zs[depth_num_vertices] = ((unsigned __int64)((stru_50B700._view_transformed_zs[i + 3]
-                                                                     - stru_50B700._view_transformed_zs[i + 2])
-                                                                    * v14
-                                                                    / v12) >> 16)
-                                                + stru_50B700._view_transformed_zs[i + 2];
-          thisb = (unsigned __int64)((stru_50B700._view_transformed_ys[i + 3] - stru_50B700._view_transformed_ys[i + 2])
-                                   * v14
-                                   / v12) >> 16;
+          //t = near_clip - v0.z/v1.z - v0.z
+          // near_clip = 8.0(524288)
+          t = 524288 - stru_50B700._view_transformed_xs[i + 2] / stru_50B700._view_transformed_xs[i + 3] - stru_50B700._view_transformed_xs[i + 2];
+          // new_x = (v1.x - v0.x) * t + v0.x
+          stru_50B700._view_transformed_zs[depth_num_vertices] = (unsigned __int64)(stru_50B700._view_transformed_zs[i + 3]
+                                                                 - stru_50B700._view_transformed_zs[i + 2]) * t + stru_50B700._view_transformed_zs[i + 2];
+          //new_y = (v1.y - v0.y)*t + v0.y
+          stru_50B700._view_transformed_ys[depth_num_vertices] = (unsigned __int64)(stru_50B700._view_transformed_ys[i + 3] - stru_50B700._view_transformed_ys[i + 2])
+                                   * t + stru_50B700._view_transformed_ys[i + 2];
+          stru_50B700._view_transformed_xs[depth_num_vertices] = 524288;
         }
         else
         {
-          v16 = stru_50B700._view_transformed_xs[i + 2] - stru_50B700._view_transformed_xs[i + 3];
-          v17 = 524288 - stru_50B700._view_transformed_xs[i + 3];
-          LODWORD(v18) = v17 << 16;
-          HIDWORD(v18) = v17 >> 16;
-          v15 = (char *)&stru_50B700._view_transformed_ys[i + 3];
-          stru_50B700._view_transformed_zs[depth_num_vertices] = ((unsigned __int64)((stru_50B700._view_transformed_zs[i + 2]
-                                                                     - stru_50B700._view_transformed_zs[i + 3])
-                                                                    * v18
-                                                                    / v16) >> 16)
-                                                + stru_50B700._view_transformed_zs[i + 3];
-          thisb = (unsigned __int64)((stru_50B700._view_transformed_ys[i + 2] - stru_50B700._view_transformed_ys[i + 3])
-                                   * v18
-                                   / v16) >> 16;
+          //t = near_clip - v1.z/v0.z - v1.z
+          t = 524288 - stru_50B700._view_transformed_xs[i + 3] / stru_50B700._view_transformed_xs[i + 2] - stru_50B700._view_transformed_xs[i + 3];
+          // new_x = (v0.x - v1.x) * t + v1.x
+          stru_50B700._view_transformed_zs[depth_num_vertices] = (unsigned __int64)(stru_50B700._view_transformed_zs[i + 2]
+                                                               - stru_50B700._view_transformed_zs[i + 3]) * t + stru_50B700._view_transformed_zs[i + 3];
+          //new_y = (v0.y - v1.y)*t + v1.y
+          stru_50B700._view_transformed_ys[depth_num_vertices] = (unsigned __int64)(stru_50B700._view_transformed_ys[i + 2] - stru_50B700._view_transformed_ys[i + 3])
+                                                * t + stru_50B700._view_transformed_ys[i + 3];
+          stru_50B700._view_transformed_xs[depth_num_vertices] = 524288;
         }
         v19 = depth_num_vertices++;
         //v7 = pFace->uNumVertices;
-        stru_50B700._view_transformed_ys[v19] = thisb + *(_DWORD *)v15;
-        stru_50B700._view_transformed_xs[v19] = 524288;
+        //stru_50B700._view_transformed_ys[v19] = thisb + *(_DWORD *)v15;
+        //stru_50B700._view_transformed_xs[v19] = 524288;
       }
       if ( next_vertices_flag )
       {
@@ -7371,17 +7364,16 @@
     }
   }
 
-  v87 = 0;
+  
   v21 = depth_num_vertices;
   stru_50B700._view_transformed_xs[depth_num_vertices] = stru_50B700._view_transformed_xs[0];
   stru_50B700._view_transformed_zs[depth_num_vertices] = stru_50B700._view_transformed_zs[0];
-  for ( stru_50B700._view_transformed_ys[depth_num_vertices] = stru_50B700._view_transformed_ys[0];
-        v87 < depth_num_vertices;
-        stru_50B700._screen_space_y[v22 + 12] = pBLVRenderParams->uViewportCenterY - v35 )
+  stru_50B700._view_transformed_ys[depth_num_vertices] = stru_50B700._view_transformed_ys[0];
+  for ( v87 = 0; v87 < depth_num_vertices; ++v87 )
   {
     v22 = v87;
     thisc = abs(stru_50B700._view_transformed_xs[v87]);
-    if ( abs(stru_50B700._view_transformed_zs[v87]) >> 13 <= thisc )
+    if ( (abs(stru_50B700._view_transformed_zs[v87]) >> 13) <= thisc )
     {
       v27 = stru_50B700._view_transformed_zs[v22];
       LODWORD(v28) = v27 << 16;
@@ -7416,7 +7408,7 @@
 
     v29 = stru_50B700._view_transformed_ys[v22];
     stru_50B700._screen_space_x[v22 + 12] = v26;
-    if ( abs(v29) >> 13 <= thisc )
+    if ( (abs(v29) >> 13) <= thisc )
     {
       v33 = stru_50B700._view_transformed_ys[v22];
       LODWORD(v34) = v33 << 16;
@@ -7451,7 +7443,8 @@
                                                              * (signed __int64)stru_50B700._screen_space_x[v22 + 12]) >> 16;
     v35 = (unsigned __int64)(SHIWORD(pBLVRenderParams->field_40) * (signed __int64)stru_50B700._screen_space_y[v22 + 12]) >> 16;
     stru_50B700._screen_space_x[v22 + 12] = pBLVRenderParams->uViewportCenterX - stru_50B700._screen_space_x[v22 + 12];
-    ++v87;
+    stru_50B700._screen_space_y[v22 + 12] = pBLVRenderParams->uViewportCenterY - v35;
+    //++v87;
   }
   v36 = 0;
   stru_50B700._screen_space_x[v21 + 12] = stru_50B700._screen_space_x[12];