diff _deleted.cpp @ 1410:38df78aba732

deleted stru220.h and stru220 (bezier terrain stuff) stru167 -> TrailParticle stru167warp -> TrailParticleGenerator
author Nomad
date Fri, 26 Jul 2013 22:19:29 +0200
parents cc9a3a24d61d
children 3881d2f94eb1
line wrap: on
line diff
--- a/_deleted.cpp	Fri Jul 26 21:16:51 2013 +0200
+++ b/_deleted.cpp	Fri Jul 26 22:19:29 2013 +0200
@@ -1677,6 +1677,104 @@
   return result;
 }
 
+//----- (0047BC6F) --------------------------------------------------------
+unsigned __int16 *__fastcall sr_GetBillboardPalette(RenderBillboard *a1, int a2, signed int a3, int a4)
+{
+  int v4; // ebx@1
+  int v6; // edx@4
+  int v7; // ecx@5
+  signed int v8; // eax@6
+  signed __int64 v9; // qtt@11
+  signed int v10; // eax@12
+  int v11; // esi@17
+  signed __int64 v12; // qtt@19
+  double v13; // ST10_8@19
+  int v14; // edi@25
+  signed int v15; // edx@26
+  signed __int64 v16; // qtt@29
+  signed int v17; // eax@30
+  int v18; // [sp+10h] [bp-8h]@1
+  float a3a; // [sp+20h] [bp+8h]@19
+
+  v4 = a2;
+  v18 = a2;
+  if ( pParty->armageddon_timer )
+    return PaletteManager::Get(a2);
+  if ( !pWeather->bNight )
+  {
+    if (day_attrib & DAY_ATTRIB_FOG)
+    {
+      v14 = day_fogrange_1 << 16;
+      if ( a3 >= day_fogrange_1 << 16 )
+      {
+        if ( a3 <= day_fogrange_2 << 16 )
+        {
+          LODWORD(v16) = (a3 - v14) << 16;
+          HIDWORD(v16) = (a3 - v14) >> 16;
+          v15 = (unsigned __int64)(27 * v16 / ((day_fogrange_2 - day_fogrange_1) << 16)) >> 16;
+        }
+        else
+        {
+          v15 = 27;
+        }
+      }
+      else
+      {
+        v15 = 0;
+      }
+      v17 = _43F55F_get_billboard_light_level(a1, v15);
+      if ( v17 > 27 )
+        v17 = 27;
+      if ( !a3 )
+        v17 = 27;
+      v7 = v18;
+      v6 = v17;
+      return (unsigned __int16 *)PaletteManager::Get_Mist_or_Red_LUT(v7, v6, 1);
+    }
+    v11 = a4;
+    if ( a4 < 0 )
+      v11 = 0;
+    LODWORD(v12) = a3 << 16;
+    HIDWORD(v12) = a3 >> 16;
+    a3a = (double)(signed int)(((unsigned __int64)(11 * v12 / (pOutdoorCamera->shading_dist_shade << 16)) >> 16) + 20)
+        * pOutdoor->fFogDensity;
+    v13 = a3a + 6.7553994e15;
+    v10 = _43F55F_get_billboard_light_level(a1, LODWORD(v13) + v11);
+    if ( v10 > 27 )
+      v10 = 27;
+    if ( v10 < a4 )
+      v10 = a4;
+    if ( v10 > pOutdoor->max_terrain_dimming_level )
+      v10 = pOutdoor->max_terrain_dimming_level;
+    return PaletteManager::Get_Dark_or_Red_LUT(v4, v10, 1);
+  }
+  v6 = 0;
+  if (pWeather->bNight)
+  {
+    v8 = 67108864;
+    if ( (signed __int64)pParty->pPartyBuffs[PARTY_BUFF_TORCHLIGHT].uExpireTime > 0 )
+      v8 = pParty->pPartyBuffs[PARTY_BUFF_TORCHLIGHT].uPower << 26;
+    if ( a3 <= v8 )
+    {
+      if ( a3 > 0 )
+      {
+        LODWORD(v9) = a3 << 16;
+        HIDWORD(v9) = a3 >> 16;
+        v6 = (unsigned __int64)(27 * v9 / v8) >> 16;
+      }
+    }
+    else
+    {
+      v6 = 27;
+    }
+    v10 = _43F55F_get_billboard_light_level(a1, v6);
+    if ( v10 > 27 || !a3 )
+      v10 = 27;
+    return PaletteManager::Get_Dark_or_Red_LUT(v4, v10, 1);
+  }
+  v7 = 0;
+  return (unsigned __int16 *)PaletteManager::Get_Mist_or_Red_LUT(v7, v6, 1);
+}
 //----- (00487389) --------------------------------------------------------
 void Render::ExecOutdoorDrawSW()
 {
@@ -3649,6 +3747,87 @@
   return result;
 }
 
+//----- (0047F4D3) --------------------------------------------------------
+void __fastcall _47F4D3_initialize_terrain_bezier_stuff(int band1, int band2, int band3)
+{
+  int v3; // edi@1
+  //stru220 *v4; // esi@1
+  double v5; // ST2C_8@3
+  double v6; // st7@3
+  //double v7; // [sp+18h] [bp-28h]@3
+  //double v8; // [sp+20h] [bp-20h]@2
+  int v9; // [sp+34h] [bp-Ch]@1
+  int v10; // [sp+38h] [bp-8h]@1
+  //signed int band3a; // [sp+48h] [bp+8h]@2
+
+  v9 = band2 * 512;
+  pOutdoorCamera->outdoor_grid_band_3 = band3;
+  v10 = band1 * 512;
+  v3 = band3 * 512;
+  pOutdoorCamera->uPickDepth = band3 * 512;
+  //v4 = terrain_76E5C8;                             // v4:  0 -> 65536
+  for (uint i = 0; i < 16384; ++i)
+  //do
+  {
+    auto v4 = terrain_76E5C8[i];
+    //band3a = 256;
+    //v8 = (double)(signed int)((char *)v4 + 256 - (int)terrain_76E5C8);
+    for (uint j = 0; j < 128; ++j)                  // band3a: 0 -> 128
+    {
+      v5 = pow(j * 512 + 256, 2.0);
+      v6 = pow(i * 4 + 256, 2.0);
+      //*((float *)&v5 + 1) = sqrt(v6 + v5);
+      int v7 = floorf(sqrtf(v5 + v6) + 0.5f);//*((float *)&v5 + 1) + 6.7553994e15;
+      if (v7 >= v10)
+      {
+        if (v7 >= v9)
+          v4.field_0 = ((v7 >= v3) - 1) & 2;
+        else
+          v4.field_0 = 2;
+      }
+      else
+      {
+        v4.field_0 = 1;
+      }
+      //band3a += 512;
+      v4.distance = v7;
+      //++v4;
+    }
+    //while ( band3a < 65792 );
+  }
+  //while ( (signed int)v4 < (signed int)arary_77E5C8 );
+}
+
+//----- (00481EFA) --------------------------------------------------------
+bool __fastcall _481EFA_clip_terrain_poly(RenderVertexSoft *a1, RenderVertexSoft *a2, RenderVertexSoft *a3, RenderVertexSoft *a4, int a5)
+{
+  RenderVertexSoft *v5; // esi@1
+  RenderVertexSoft *v6; // edx@1
+  bool v7; // edi@2
+  bool v8; // ecx@5
+  bool v9; // esi@8
+  bool v10; // eax@11
+  double v11; // st7@14
+  signed int v12; // esi@15
+  signed int v13; // edx@18
+  signed int v14; // ecx@21
+  signed int v15; // eax@24
+  RenderVertexSoft *v17; // [sp+Ch] [bp-8h]@1
+
+  v5 = a2;
+  v6 = a1;
+  v17 = v5;
+  v7 = a1->vWorldViewPosition.x < 8.0;
+  v8 = v5->vWorldViewPosition.x < 8.0;
+  v9 = a3->vWorldViewPosition.x < 8.0;
+  v10 = a4->vWorldViewPosition.x < 8.0;
+  return !(v8 & v9 & v10 & v7)
+      && ((v11 = (double)pOutdoorCamera->shading_dist_mist, v11 > v6->vWorldViewPosition.x) ? (v12 = 0) : (v12 = 1),
+          v11 > v17->vWorldViewPosition.x ? (v13 = 0) : (v13 = 1),
+          v11 > a3->vWorldViewPosition.x ? (v14 = 0) : (v14 = 1),
+          v11 > a4->vWorldViewPosition.x ? (v15 = 0) : (v15 = 1),
+          !(v13 & v14 & v15 & v12));
+}
 //----- (00481212) --------------------------------------------------------
 void Render::DrawTerrainSW(int a1, int a2, int a3, int a4)
 {
@@ -3779,7 +3958,7 @@
       v7 = abs(X);
       v8 = abs(v86);
       --X;
-      v92 = &stru_76E5C8[(v7 << 7) + v8];
+      v92 = &terrain_76E5C8[(v7 << 7) + v8];
       if ( !v92->field_0
         || ((v9 = v6, v10 = &pVerticesSR_806210[v6], v104 = v10, !v85) ? (v11 = &pVerticesSR_801A10[v9],
                                                                           v12 = &pVerticesSR_806210[v9 + 1]) : (v11 = &pVerticesSR_806210[v9 + 1], v12 = &pVerticesSR_801A10[v9]),
@@ -3807,7 +3986,7 @@
               WorldPosToGridCellZ(v100),
               !byte_4D864C)
           || !(pGame->uFlags & 0x80))
-         && !sub_481EFA(v10, v11, v102, v103, 1)) )
+         && !_481EFA_clip_terrain_poly(v10, v11, v102, v103, 1)) )
         goto LABEL_105;
       if ( v10->vWorldPosition.z != v11->vWorldPosition.z
         || v11->vWorldPosition.z != v103->vWorldPosition.z
@@ -3851,7 +4030,7 @@
         if ( pOutdoorCamera->uNumPolygons >= 1999 )
           return;
         ++pOutdoorCamera->uNumPolygons;
-        if ( !sub_481FC9(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) )
+        if ( !_481FC9_terrain(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) )
           goto LABEL_104;
         v26 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001);
         memcpy(array_50AC10, v104, 0x30u);
@@ -3972,7 +4151,7 @@
     if ( pOutdoorCamera->uNumPolygons >= 1999 )
       return;
     ++pOutdoorCamera->uNumPolygons;
-    if ( !sub_481FC9((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) )
+    if ( !_481FC9_terrain((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) )
       goto LABEL_74;
     v48 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001);
     memcpy(array_50AC10, v104, 0x30u);
@@ -4062,7 +4241,7 @@
           if ( pOutdoorCamera->uNumPolygons >= 1999 )
             return;
           ++pOutdoorCamera->uNumPolygons;
-          if ( !sub_481FC9(v102, v104, v103, v17) )
+          if ( !_481FC9_terrain(v102, v104, v103, v17) )
           {
 LABEL_104:
             --pOutdoorCamera->uNumPolygons;
@@ -4147,12 +4326,43 @@
   }
 }
 
+//----- (00481FC9) --------------------------------------------------------
+int __fastcall _481FC9_terrain(RenderVertexSoft *a1, RenderVertexSoft *a2, RenderVertexSoft *a3, struct Polygon *a4)//Rotate camera
+{
+  float arg_0, arg_4, var_4, var_8, var_c, var_10, var_14;
+
+  if (a1->vWorldPosition.y == a2->vWorldPosition.y && a2->vWorldPosition.y == a3->vWorldPosition.y)
+    a4->flags |= 0x10;
+  var_c = a1->vWorldViewPosition.x - a2->vWorldViewPosition.x;
+  var_14 = a1->vWorldViewPosition.y - a2->vWorldViewPosition.y;
+  arg_0 = a1->vWorldViewPosition.z - a2->vWorldViewPosition.z;
+  var_10 = a3->vWorldViewPosition.x - a2->vWorldViewPosition.x;
+  var_8 = a3->vWorldViewPosition.y - a2->vWorldViewPosition.y;
+  var_4 = a3->vWorldViewPosition.z - a2->vWorldViewPosition.z;
+  arg_4 = a3->vWorldPosition.y - a2->vWorldPosition.y;
+  if (((a3->vWorldPosition.y - a2->vWorldPosition.y) * (a1->vWorldPosition.x - a2->vWorldPosition.x) - (a3->vWorldPosition.x - a2->vWorldPosition.x) * (a1->vWorldPosition.y - a2->vWorldPosition.y)) * (pIndoorCamera->pos.y - a2->vWorldPosition.z) +
+      ((a3->vWorldPosition.z - a2->vWorldPosition.z) * (a1->vWorldPosition.y - a2->vWorldPosition.y) - (a3->vWorldPosition.y - a2->vWorldPosition.y) * (a1->vWorldPosition.z - a2->vWorldPosition.z)) * (pIndoorCamera->pos.x - a2->vWorldPosition.x) +
+      ((a3->vWorldPosition.x - a2->vWorldPosition.x) * (a1->vWorldPosition.z - a2->vWorldPosition.z) - (a3->vWorldPosition.z - a2->vWorldPosition.z) * (a1->vWorldPosition.x - a2->vWorldPosition.x)) * (pIndoorCamera->pos.z - a2->vWorldPosition.y) < 0)
+  {
+   arg_4 = var_4 * var_14 - var_8 * arg_0;
+   a4->v_18.x = floorf(arg_4 + 0.5f);
+   arg_4 = var_10 * arg_0 - var_4 * var_c;
+   a4->v_18.y = floorf(arg_4 + 0.5f);
+   arg_4 = var_8 * var_c - var_10 * var_14;
+   a4->v_18.z = floorf(arg_4 + 0.5f);
+   a4->_normalize_v_18();
+   arg_4 = -(a4->v_18.x * a2->vWorldViewPosition.x) - a4->v_18.y * a2->vWorldViewPosition.y - a4->v_18.z * a2->vWorldViewPosition.z;
+   a4->field_24 = floorf(arg_4 + 0.5f);
+   return true;
+  }
+  else
+    return false;
+}
 //----- (00438250) --------------------------------------------------------
 void IndoorCameraD3D::sr_Reset_list_0037C()
 {
   this->list_0037C_size = 0;
 }
-
 //----- (00438240) --------------------------------------------------------
 void IndoorCameraD3D::sr_438240_draw_lits()
 {