comparison _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
comparison
equal deleted inserted replaced
1409:c9e3b93ec570 1410:38df78aba732
1675 } 1675 }
1676 } 1676 }
1677 return result; 1677 return result;
1678 } 1678 }
1679 1679
1680 //----- (0047BC6F) --------------------------------------------------------
1681 unsigned __int16 *__fastcall sr_GetBillboardPalette(RenderBillboard *a1, int a2, signed int a3, int a4)
1682 {
1683 int v4; // ebx@1
1684 int v6; // edx@4
1685 int v7; // ecx@5
1686 signed int v8; // eax@6
1687 signed __int64 v9; // qtt@11
1688 signed int v10; // eax@12
1689 int v11; // esi@17
1690 signed __int64 v12; // qtt@19
1691 double v13; // ST10_8@19
1692 int v14; // edi@25
1693 signed int v15; // edx@26
1694 signed __int64 v16; // qtt@29
1695 signed int v17; // eax@30
1696 int v18; // [sp+10h] [bp-8h]@1
1697 float a3a; // [sp+20h] [bp+8h]@19
1698
1699 v4 = a2;
1700 v18 = a2;
1701 if ( pParty->armageddon_timer )
1702 return PaletteManager::Get(a2);
1703 if ( !pWeather->bNight )
1704 {
1705 if (day_attrib & DAY_ATTRIB_FOG)
1706 {
1707 v14 = day_fogrange_1 << 16;
1708 if ( a3 >= day_fogrange_1 << 16 )
1709 {
1710 if ( a3 <= day_fogrange_2 << 16 )
1711 {
1712 LODWORD(v16) = (a3 - v14) << 16;
1713 HIDWORD(v16) = (a3 - v14) >> 16;
1714 v15 = (unsigned __int64)(27 * v16 / ((day_fogrange_2 - day_fogrange_1) << 16)) >> 16;
1715 }
1716 else
1717 {
1718 v15 = 27;
1719 }
1720 }
1721 else
1722 {
1723 v15 = 0;
1724 }
1725 v17 = _43F55F_get_billboard_light_level(a1, v15);
1726 if ( v17 > 27 )
1727 v17 = 27;
1728 if ( !a3 )
1729 v17 = 27;
1730 v7 = v18;
1731 v6 = v17;
1732 return (unsigned __int16 *)PaletteManager::Get_Mist_or_Red_LUT(v7, v6, 1);
1733 }
1734 v11 = a4;
1735 if ( a4 < 0 )
1736 v11 = 0;
1737 LODWORD(v12) = a3 << 16;
1738 HIDWORD(v12) = a3 >> 16;
1739 a3a = (double)(signed int)(((unsigned __int64)(11 * v12 / (pOutdoorCamera->shading_dist_shade << 16)) >> 16) + 20)
1740 * pOutdoor->fFogDensity;
1741 v13 = a3a + 6.7553994e15;
1742 v10 = _43F55F_get_billboard_light_level(a1, LODWORD(v13) + v11);
1743 if ( v10 > 27 )
1744 v10 = 27;
1745 if ( v10 < a4 )
1746 v10 = a4;
1747 if ( v10 > pOutdoor->max_terrain_dimming_level )
1748 v10 = pOutdoor->max_terrain_dimming_level;
1749 return PaletteManager::Get_Dark_or_Red_LUT(v4, v10, 1);
1750 }
1751 v6 = 0;
1752 if (pWeather->bNight)
1753 {
1754 v8 = 67108864;
1755 if ( (signed __int64)pParty->pPartyBuffs[PARTY_BUFF_TORCHLIGHT].uExpireTime > 0 )
1756 v8 = pParty->pPartyBuffs[PARTY_BUFF_TORCHLIGHT].uPower << 26;
1757 if ( a3 <= v8 )
1758 {
1759 if ( a3 > 0 )
1760 {
1761 LODWORD(v9) = a3 << 16;
1762 HIDWORD(v9) = a3 >> 16;
1763 v6 = (unsigned __int64)(27 * v9 / v8) >> 16;
1764 }
1765 }
1766 else
1767 {
1768 v6 = 27;
1769 }
1770 v10 = _43F55F_get_billboard_light_level(a1, v6);
1771 if ( v10 > 27 || !a3 )
1772 v10 = 27;
1773 return PaletteManager::Get_Dark_or_Red_LUT(v4, v10, 1);
1774 }
1775 v7 = 0;
1776 return (unsigned __int16 *)PaletteManager::Get_Mist_or_Red_LUT(v7, v6, 1);
1777 }
1680 //----- (00487389) -------------------------------------------------------- 1778 //----- (00487389) --------------------------------------------------------
1681 void Render::ExecOutdoorDrawSW() 1779 void Render::ExecOutdoorDrawSW()
1682 { 1780 {
1683 unsigned __int16 *v0; // ebx@1 1781 unsigned __int16 *v0; // ebx@1
1684 unsigned int v1; // esi@1 1782 unsigned int v1; // esi@1
3647 } 3745 }
3648 --result->field_28; 3746 --result->field_28;
3649 return result; 3747 return result;
3650 } 3748 }
3651 3749
3750 //----- (0047F4D3) --------------------------------------------------------
3751 void __fastcall _47F4D3_initialize_terrain_bezier_stuff(int band1, int band2, int band3)
3752 {
3753 int v3; // edi@1
3754 //stru220 *v4; // esi@1
3755 double v5; // ST2C_8@3
3756 double v6; // st7@3
3757 //double v7; // [sp+18h] [bp-28h]@3
3758 //double v8; // [sp+20h] [bp-20h]@2
3759 int v9; // [sp+34h] [bp-Ch]@1
3760 int v10; // [sp+38h] [bp-8h]@1
3761 //signed int band3a; // [sp+48h] [bp+8h]@2
3762
3763 v9 = band2 * 512;
3764 pOutdoorCamera->outdoor_grid_band_3 = band3;
3765 v10 = band1 * 512;
3766 v3 = band3 * 512;
3767 pOutdoorCamera->uPickDepth = band3 * 512;
3768 //v4 = terrain_76E5C8; // v4: 0 -> 65536
3769 for (uint i = 0; i < 16384; ++i)
3770 //do
3771 {
3772 auto v4 = terrain_76E5C8[i];
3773 //band3a = 256;
3774 //v8 = (double)(signed int)((char *)v4 + 256 - (int)terrain_76E5C8);
3775 for (uint j = 0; j < 128; ++j) // band3a: 0 -> 128
3776 {
3777 v5 = pow(j * 512 + 256, 2.0);
3778 v6 = pow(i * 4 + 256, 2.0);
3779 //*((float *)&v5 + 1) = sqrt(v6 + v5);
3780 int v7 = floorf(sqrtf(v5 + v6) + 0.5f);//*((float *)&v5 + 1) + 6.7553994e15;
3781 if (v7 >= v10)
3782 {
3783 if (v7 >= v9)
3784 v4.field_0 = ((v7 >= v3) - 1) & 2;
3785 else
3786 v4.field_0 = 2;
3787 }
3788 else
3789 {
3790 v4.field_0 = 1;
3791 }
3792 //band3a += 512;
3793 v4.distance = v7;
3794 //++v4;
3795 }
3796 //while ( band3a < 65792 );
3797 }
3798 //while ( (signed int)v4 < (signed int)arary_77E5C8 );
3799 }
3800
3801 //----- (00481EFA) --------------------------------------------------------
3802 bool __fastcall _481EFA_clip_terrain_poly(RenderVertexSoft *a1, RenderVertexSoft *a2, RenderVertexSoft *a3, RenderVertexSoft *a4, int a5)
3803 {
3804 RenderVertexSoft *v5; // esi@1
3805 RenderVertexSoft *v6; // edx@1
3806 bool v7; // edi@2
3807 bool v8; // ecx@5
3808 bool v9; // esi@8
3809 bool v10; // eax@11
3810 double v11; // st7@14
3811 signed int v12; // esi@15
3812 signed int v13; // edx@18
3813 signed int v14; // ecx@21
3814 signed int v15; // eax@24
3815 RenderVertexSoft *v17; // [sp+Ch] [bp-8h]@1
3816
3817 v5 = a2;
3818 v6 = a1;
3819 v17 = v5;
3820 v7 = a1->vWorldViewPosition.x < 8.0;
3821 v8 = v5->vWorldViewPosition.x < 8.0;
3822 v9 = a3->vWorldViewPosition.x < 8.0;
3823 v10 = a4->vWorldViewPosition.x < 8.0;
3824 return !(v8 & v9 & v10 & v7)
3825 && ((v11 = (double)pOutdoorCamera->shading_dist_mist, v11 > v6->vWorldViewPosition.x) ? (v12 = 0) : (v12 = 1),
3826 v11 > v17->vWorldViewPosition.x ? (v13 = 0) : (v13 = 1),
3827 v11 > a3->vWorldViewPosition.x ? (v14 = 0) : (v14 = 1),
3828 v11 > a4->vWorldViewPosition.x ? (v15 = 0) : (v15 = 1),
3829 !(v13 & v14 & v15 & v12));
3830 }
3652 //----- (00481212) -------------------------------------------------------- 3831 //----- (00481212) --------------------------------------------------------
3653 void Render::DrawTerrainSW(int a1, int a2, int a3, int a4) 3832 void Render::DrawTerrainSW(int a1, int a2, int a3, int a4)
3654 { 3833 {
3655 int v3; // esi@1 3834 int v3; // esi@1
3656 int v4; // ecx@1 3835 int v4; // ecx@1
3777 while ( 1 ) 3956 while ( 1 )
3778 { 3957 {
3779 v7 = abs(X); 3958 v7 = abs(X);
3780 v8 = abs(v86); 3959 v8 = abs(v86);
3781 --X; 3960 --X;
3782 v92 = &stru_76E5C8[(v7 << 7) + v8]; 3961 v92 = &terrain_76E5C8[(v7 << 7) + v8];
3783 if ( !v92->field_0 3962 if ( !v92->field_0
3784 || ((v9 = v6, v10 = &pVerticesSR_806210[v6], v104 = v10, !v85) ? (v11 = &pVerticesSR_801A10[v9], 3963 || ((v9 = v6, v10 = &pVerticesSR_806210[v6], v104 = v10, !v85) ? (v11 = &pVerticesSR_801A10[v9],
3785 v12 = &pVerticesSR_806210[v9 + 1]) : (v11 = &pVerticesSR_806210[v9 + 1], v12 = &pVerticesSR_801A10[v9]), 3964 v12 = &pVerticesSR_806210[v9 + 1]) : (v11 = &pVerticesSR_806210[v9 + 1], v12 = &pVerticesSR_801A10[v9]),
3786 ((v103 = &pVerticesSR_801A10[v9 + 1], 3965 ((v103 = &pVerticesSR_801A10[v9 + 1],
3787 v13 = v10->vWorldPosition.x, 3966 v13 = v10->vWorldPosition.x,
3805 LODWORD(v99) = WorldPosToGridCellZ(LODWORD(v16)), 3984 LODWORD(v99) = WorldPosToGridCellZ(LODWORD(v16)),
3806 WorldPosToGridCellX(v101), 3985 WorldPosToGridCellX(v101),
3807 WorldPosToGridCellZ(v100), 3986 WorldPosToGridCellZ(v100),
3808 !byte_4D864C) 3987 !byte_4D864C)
3809 || !(pGame->uFlags & 0x80)) 3988 || !(pGame->uFlags & 0x80))
3810 && !sub_481EFA(v10, v11, v102, v103, 1)) ) 3989 && !_481EFA_clip_terrain_poly(v10, v11, v102, v103, 1)) )
3811 goto LABEL_105; 3990 goto LABEL_105;
3812 if ( v10->vWorldPosition.z != v11->vWorldPosition.z 3991 if ( v10->vWorldPosition.z != v11->vWorldPosition.z
3813 || v11->vWorldPosition.z != v103->vWorldPosition.z 3992 || v11->vWorldPosition.z != v103->vWorldPosition.z
3814 || v103->vWorldPosition.z != v102->vWorldPosition.z ) 3993 || v103->vWorldPosition.z != v102->vWorldPosition.z )
3815 break; 3994 break;
3849 v17->dimming_level = 0; 4028 v17->dimming_level = 0;
3850 } 4029 }
3851 if ( pOutdoorCamera->uNumPolygons >= 1999 ) 4030 if ( pOutdoorCamera->uNumPolygons >= 1999 )
3852 return; 4031 return;
3853 ++pOutdoorCamera->uNumPolygons; 4032 ++pOutdoorCamera->uNumPolygons;
3854 if ( !sub_481FC9(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) ) 4033 if ( !_481FC9_terrain(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) )
3855 goto LABEL_104; 4034 goto LABEL_104;
3856 v26 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001); 4035 v26 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001);
3857 memcpy(array_50AC10, v104, 0x30u); 4036 memcpy(array_50AC10, v104, 0x30u);
3858 array_50AC10[0]._rhw = v26; 4037 array_50AC10[0]._rhw = v26;
3859 array_50AC10[0].u = 0.0; 4038 array_50AC10[0].u = 0.0;
3970 if ( v38->dimming_level < 0 ) 4149 if ( v38->dimming_level < 0 )
3971 v38->dimming_level = 0; 4150 v38->dimming_level = 0;
3972 if ( pOutdoorCamera->uNumPolygons >= 1999 ) 4151 if ( pOutdoorCamera->uNumPolygons >= 1999 )
3973 return; 4152 return;
3974 ++pOutdoorCamera->uNumPolygons; 4153 ++pOutdoorCamera->uNumPolygons;
3975 if ( !sub_481FC9((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) ) 4154 if ( !_481FC9_terrain((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) )
3976 goto LABEL_74; 4155 goto LABEL_74;
3977 v48 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001); 4156 v48 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001);
3978 memcpy(array_50AC10, v104, 0x30u); 4157 memcpy(array_50AC10, v104, 0x30u);
3979 array_50AC10[0]._rhw = v48; 4158 array_50AC10[0]._rhw = v48;
3980 array_50AC10[0].u = 0.0; 4159 array_50AC10[0].u = 0.0;
4060 if ( v17->dimming_level < 0 ) 4239 if ( v17->dimming_level < 0 )
4061 v17->dimming_level = 0; 4240 v17->dimming_level = 0;
4062 if ( pOutdoorCamera->uNumPolygons >= 1999 ) 4241 if ( pOutdoorCamera->uNumPolygons >= 1999 )
4063 return; 4242 return;
4064 ++pOutdoorCamera->uNumPolygons; 4243 ++pOutdoorCamera->uNumPolygons;
4065 if ( !sub_481FC9(v102, v104, v103, v17) ) 4244 if ( !_481FC9_terrain(v102, v104, v103, v17) )
4066 { 4245 {
4067 LABEL_104: 4246 LABEL_104:
4068 --pOutdoorCamera->uNumPolygons; 4247 --pOutdoorCamera->uNumPolygons;
4069 goto LABEL_105; 4248 goto LABEL_105;
4070 } 4249 }
4145 --pOutdoorCamera->uNumPolygons; 4324 --pOutdoorCamera->uNumPolygons;
4146 goto LABEL_75; 4325 goto LABEL_75;
4147 } 4326 }
4148 } 4327 }
4149 4328
4329 //----- (00481FC9) --------------------------------------------------------
4330 int __fastcall _481FC9_terrain(RenderVertexSoft *a1, RenderVertexSoft *a2, RenderVertexSoft *a3, struct Polygon *a4)//Rotate camera
4331 {
4332 float arg_0, arg_4, var_4, var_8, var_c, var_10, var_14;
4333
4334 if (a1->vWorldPosition.y == a2->vWorldPosition.y && a2->vWorldPosition.y == a3->vWorldPosition.y)
4335 a4->flags |= 0x10;
4336 var_c = a1->vWorldViewPosition.x - a2->vWorldViewPosition.x;
4337 var_14 = a1->vWorldViewPosition.y - a2->vWorldViewPosition.y;
4338 arg_0 = a1->vWorldViewPosition.z - a2->vWorldViewPosition.z;
4339 var_10 = a3->vWorldViewPosition.x - a2->vWorldViewPosition.x;
4340 var_8 = a3->vWorldViewPosition.y - a2->vWorldViewPosition.y;
4341 var_4 = a3->vWorldViewPosition.z - a2->vWorldViewPosition.z;
4342 arg_4 = a3->vWorldPosition.y - a2->vWorldPosition.y;
4343 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) +
4344 ((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) +
4345 ((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)
4346 {
4347 arg_4 = var_4 * var_14 - var_8 * arg_0;
4348 a4->v_18.x = floorf(arg_4 + 0.5f);
4349 arg_4 = var_10 * arg_0 - var_4 * var_c;
4350 a4->v_18.y = floorf(arg_4 + 0.5f);
4351 arg_4 = var_8 * var_c - var_10 * var_14;
4352 a4->v_18.z = floorf(arg_4 + 0.5f);
4353 a4->_normalize_v_18();
4354 arg_4 = -(a4->v_18.x * a2->vWorldViewPosition.x) - a4->v_18.y * a2->vWorldViewPosition.y - a4->v_18.z * a2->vWorldViewPosition.z;
4355 a4->field_24 = floorf(arg_4 + 0.5f);
4356 return true;
4357 }
4358 else
4359 return false;
4360 }
4150 //----- (00438250) -------------------------------------------------------- 4361 //----- (00438250) --------------------------------------------------------
4151 void IndoorCameraD3D::sr_Reset_list_0037C() 4362 void IndoorCameraD3D::sr_Reset_list_0037C()
4152 { 4363 {
4153 this->list_0037C_size = 0; 4364 this->list_0037C_size = 0;
4154 } 4365 }
4155
4156 //----- (00438240) -------------------------------------------------------- 4366 //----- (00438240) --------------------------------------------------------
4157 void IndoorCameraD3D::sr_438240_draw_lits() 4367 void IndoorCameraD3D::sr_438240_draw_lits()
4158 { 4368 {
4159 IndoorCameraD3D *v1; // ebp@1 4369 IndoorCameraD3D *v1; // ebp@1
4160 int v2; // edi@2 4370 int v2; // edi@2