Mercurial > mm7
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 |