diff LightmapBuilder.cpp @ 2:2ca04ccb612a

NoCD, main menu, various
author Nomad
date Wed, 10 Oct 2012 14:21:15 +0200
parents 8b8875f5b359
children 540178ef9b18
line wrap: on
line diff
--- a/LightmapBuilder.cpp	Tue Oct 09 13:09:08 2012 +0200
+++ b/LightmapBuilder.cpp	Wed Oct 10 14:21:15 2012 +0200
@@ -72,9 +72,9 @@
   int arg0; // [sp+2Ch] [bp-40h]@21
   int v29; // [sp+30h] [bp-3Ch]@21
   int v30; // [sp+34h] [bp-38h]@21
-  double v31; // [sp+38h] [bp-34h]@21
-  double v32; // [sp+40h] [bp-2Ch]@21
-  double v33; // [sp+48h] [bp-24h]@21
+  //double v31; // [sp+38h] [bp-34h]@21
+  //double v32; // [sp+40h] [bp-2Ch]@21
+  //double v33; // [sp+48h] [bp-24h]@21
   int v34; // [sp+50h] [bp-1Ch]@24
   LightmapBuilder *thisa; // [sp+54h] [bp-18h]@1
   int v36; // [sp+58h] [bp-14h]@21
@@ -163,15 +163,17 @@
       a6 = v20;
       v36 = v21;
       v37 = v19[20];
-      v33 = a6 + 6.7553994e15;
+      //v33 = a6 + 6.7553994e15;
       a6 = *((float *)v19 + 100) * 255.0;
-      v32 = a6 + 6.7553994e15;
+      //v32 = a6 + 6.7553994e15;
       a6 = *((float *)v19 + 120) * 255.0;
-      v31 = a6 + 6.7553994e15;
-      v38 = __PAIR__(LODWORD(v32), LODWORD(v31));
-      v22 = LODWORD(v31) | ((LODWORD(v32) | (LODWORD(v33) << 8)) << 8);
-      if ( !(LODWORD(v31) | ((LODWORD(v32) | (LODWORD(v33) << 8)) << 8)) )
-        v22 = 0xFFFFFFu;
+      //v31 = a6 + 6.7553994e15;
+      //v38 = __PAIR__(LODWORD(v32), LODWORD(v31));
+      v38 = __PAIR__((int)floorf(a6), (int)floorf(a6));
+      //v22 = LODWORD(v31) | ((LODWORD(v32) | (LODWORD(v33) << 8)) << 8);
+      v22 = (int)floorf(a6) | (((int)floorf(a6) | ((int)floorf(a6) << 8)) << 8);
+      if (!v22)
+        v22 = 0x00FFFFFF;
       v27 = a7;
       v23 = (int)a5;
       v26 = (Vec3_float_ *)a9;
@@ -257,7 +259,7 @@
   float v61; // [sp+24h] [bp-28h]@8
   float v62; // [sp+28h] [bp-24h]@8
   Vec3_float_ a1; // [sp+2Ch] [bp-20h]@8
-  double v64; // [sp+38h] [bp-14h]@8
+  //double v64; // [sp+38h] [bp-14h]@8
   int pLightmapVertices_; // [sp+40h] [bp-Ch]@5
   float v66; // [sp+44h] [bp-8h]@5
   char v67; // [sp+4Bh] [bp-1h]@2
@@ -359,28 +361,31 @@
     a1.z = a5;
     a1.y = v30;
     a1.Normalize();
-    v64 = v62 + 6.7553994e15;
-    LODWORD(a5) = LODWORD(v64);
-    v64 = v61 + 6.7553994e15;
-    arg0c = LODWORD(v64);
-    v64 = v60 + 6.7553994e15;
-    arg8 = LODWORD(v64);
-    HIDWORD(v64) = abs(*(int *)(v25 + 8) - (signed)LODWORD(a5));
+    //v64 = v62 + 6.7553994e15;
+    //LODWORD(a5) = LODWORD(v64);
+    LODWORD(a5) = floorf(v62);
+    //v64 = v61 + 6.7553994e15;
+    //arg0c = LODWORD(v64);
+    arg0c = floorf(v61);
+    //v64 = v60 + 6.7553994e15;
+    //arg8 = LODWORD(v64);
+    arg8 = floorf(v60);
+    auto v64 /*HIDWORD(v64)*/ = abs(*(int *)(v25 + 8) - (signed)LODWORD(a5));
     arg0a = abs(*(int *)(v25 + 4) - arg0c);
     v31 = abs(*(int *)v25 - arg8);
     LODWORD(a5) = v31;
     v32 = arg0a;
-    v33 = HIDWORD(v64);
+    v33 = v64;//HIDWORD(v64);
     if ( v31 < arg0a )
     {
       v34 = v31;
       v31 = arg0a;
       v32 = v34;
     }
-    if ( v31 < SHIDWORD(v64) )
+    if ( v31 < v64)//SHIDWORD(v64) )
     {
       v35 = v31;
-      v31 = HIDWORD(v64);
+      v31 = v64;//HIDWORD(v64);
       v33 = v35;
     }
     if ( v32 < (signed int)v33 )
@@ -806,7 +811,7 @@
   char v21; // c2@12
   char v22; // c3@12
   signed int v23; // [sp+10h] [bp-4h]@2
-  float pLighta; // [sp+1Ch] [bp+8h]@13
+  //float pLighta; // [sp+1Ch] [bp+8h]@13
   signed int a2a; // [sp+20h] [bp+Ch]@4
 
   v7 = pLight;
@@ -841,8 +846,8 @@
     stru_F8AD28._blv_lights_rs[*pSlot] = (double)pLight->uLightColorR * 0.0039215689;
     stru_F8AD28._blv_lights_gs[*pSlot] = (double)pLight->uLightColorG * 0.0039215689;
     stru_F8AD28._blv_lights_bs[*pSlot] = (double)pLight->uLightColorB * 0.0039215689;
-    pLighta = v13;
-    stru_F8AD28._blv_lights_light_dot_faces[*pSlot] = abs(COERCE_UNSIGNED_INT64(pLighta + 6.7553994e15));
+    //pLighta = v13;
+    stru_F8AD28._blv_lights_light_dot_faces[*pSlot] = abs((int)floorf(v13));//COERCE_UNSIGNED_INT64(pLighta + 6.7553994e15));
     result = (BLVFace *)*pSlot;
     stru_F8AD28._blv_lights_smthngs[(*pSlot)++] = v7->field_B;
     LOBYTE(result) = 1;
@@ -1035,16 +1040,20 @@
 
   v7 = a5;
   LODWORD(a5) = *(unsigned int *)(LODWORD(a5) + 8);
-  v24 = a5 + 6.7553994e15;
-  v26 = LODWORD(v24);
+  //v24 = a5 + 6.7553994e15;
+  v26 = floorf(a5);//LODWORD(v24);
   LODWORD(a5) = *(unsigned int *)(LODWORD(v7) + 4);
-  v24 = a5 + 6.7553994e15;
+  //v24 = a5 + 6.7553994e15;
+  auto _v24 = floorf(a5);
   LODWORD(a5) = *(unsigned int *)LODWORD(v7);
-  v23 = a5 + 6.7553994e15;
-  *(_QWORD *)((char *)&v24 + 4) = __PAIR__(LODWORD(v24), LODWORD(v23));
+  //v23 = a5 + 6.7553994e15;
+  auto _v23 = floorf(a5);
+  //*(_QWORD *)((char *)&v24 + 4) = __PAIR__(LODWORD(v24), LODWORD(v23));
   v26 = abs((signed)LODWORD(a1.z) - v26);
-  v25 = abs((signed)LODWORD(a1.y) - (signed)LODWORD(v24));
-  v8 = abs((int)a1.x - (signed)LODWORD(v23));
+  //v25 = abs((signed)LODWORD(a1.y) - (signed)LODWORD(v24));
+  //v8 = abs((int)a1.x - (signed)LODWORD(v23));
+  v25 = abs((signed)LODWORD(a1.y) - (signed)_v24);
+  v8 = abs((int)a1.x - (signed)_v23);
   LODWORD(a5) = v8;
   v9 = v25;
   v10 = v26;
@@ -1548,8 +1557,8 @@
   float v17; // ST04_4@17
   double v18; // st7@17
   int result; // eax@19
-  double v20; // ST14_8@20
-  double v21; // ST14_8@20
+  //double v20; // ST14_8@20
+  //double v21; // ST14_8@20
   double v22; // st7@20
   int v23; // ecx@20
   double v24; // st6@20
@@ -1633,11 +1642,13 @@
     else
     {
       a5a = ((double)a1->field_A - v15->field_2C) * v15->field_4 + v15->field_24 - 0.5;
-      v20 = a5a + 6.7553994e15;
-      a5b = (double)SLODWORD(v20);
+      //v20 = a5a + 6.7553994e15;
+      //a5b = (double)SLODWORD(v20);
+      a5b = (double)floorf(a5a);
       a1a = ((double)a1->field_A - *(float *)(v14 + 44)) * *(float *)(v14 + 4) + *(float *)(v14 + 36) + 0.5;
-      v21 = a1a + 6.7553994e15;
-      v22 = (double)SLODWORD(v21);
+      //v21 = a1a + 6.7553994e15;
+      //v22 = (double)SLODWORD(v21);
+      v22 = (double)floorf(a1a);
       result = v9->field_8;
       v23 = v9->field_C;
       v24 = -((a3a - a2a) / (v22 - a5b));
@@ -1985,17 +1996,22 @@
     v30 = a1->field_C10 & 0xFFi64;
     a1b = BYTE2(a1->field_C10);
     v7 = arg4;
-    v31 = v6;
+    //v31 = v6;
     *((float *)&v30 + 1) = (double)v30 * v4->flt_C14;
     a1c = (double)a1b * v4->flt_C14 * arg4->x;
-    v29 = a1c + 6.7553994e15;
-    arg4a = LODWORD(v29);
-    a1d = v31 * v7->y;
+    //v29 = a1c + 6.7553994e15;
+    //arg4a = LODWORD(v29);
+    arg4a = floorf(a1c);
+
+    a1d = v6 * v7->y;
     v29 = a1d + 6.7553994e15;
     LODWORD(v31) = LODWORD(v29);
+
     a1e = *((float *)&v30 + 1) * v7->z;
+
     v29 = a1e + 6.7553994e15;
     HIDWORD(v30) = LODWORD(v29);
+
     v8 = uCurrentlyLoadedLevelType;
     v9 = LODWORD(v29) | ((LODWORD(v31) | (arg4a << 8)) << 8);
     if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor)