Mercurial > mm7
diff Render.cpp @ 989:bb37d33934b0
Слияние
author | Ritor1 |
---|---|
date | Mon, 13 May 2013 09:39:58 +0600 |
parents | af2472c5842e 062788391c88 |
children | 087a9af8e0ec |
line wrap: on
line diff
--- a/Render.cpp Mon May 13 09:39:49 2013 +0600 +++ b/Render.cpp Mon May 13 09:39:58 2013 +0600 @@ -208,7 +208,7 @@ } //----- (00487389) -------------------------------------------------------- -__int16 Render::ExecOutdoorDrawSW() +void Render::ExecOutdoorDrawSW() { unsigned __int16 *v0; // ebx@1 unsigned int v1; // esi@1 @@ -227,7 +227,7 @@ int v14; // ecx@37 int v15; // eax@40 Texture *v16; // ebp@51 - unsigned int v17; // eax@51 + //unsigned int v17; // eax@51 int v18; // eax@54 char v19; // al@56 unsigned int v20; // eax@57 @@ -315,8 +315,7 @@ while ( 1 ) { v16 = v4->pTexture; - v17 = pBitmaps_LOD->LoadTexture("wtrtyl"); - v4->pTexture = (Texture *)(v17 != -1 ? (int)&pBitmaps_LOD->pTextures[v17] : 0); + v4->pTexture = pBitmaps_LOD->LoadTexturePtr("wtrtyl"); if ( pOutdoorCamera->outdoor_no_wavy_water ) sr_sub_48408A_prolly_odm_water_no_waves(v3); else @@ -549,12 +548,19 @@ } v9 = pOutdoorCamera->uNumSpans; unnamed_6BE060[0] = pOutdoorCamera->uNumSpans; - if ( pOutdoorCamera->numStru148s >= 1999 - || (array_77EC08[1999]._48607B(&stru_8019C8), - array_77EC08[1999].ptr_38->_48694B(), - v2 = (stru148 *)&pBitmaps_LOD->pTextures[pOutdoor->uMainTile_BitmapID], - (array_77EC08[1999].pTexture = (Texture *)(pOutdoor->uMainTile_BitmapID != -1 ? (int)v2 : 0)) == 0) ) - return (signed __int16)v2; + if (pOutdoorCamera->numStru148s >= 1999) + return; + + array_77EC08[1999]._48607B(&stru_8019C8); + array_77EC08[1999].ptr_38->_48694B(); + + if (pOutdoor->uMainTile_BitmapID == -1) + { + array_77EC08[1999].pTexture = nullptr; + return; + } + else + array_77EC08[1999].pTexture = pBitmaps_LOD->GetTexture(pOutdoor->uMainTile_BitmapID); array_77EC08[1999].dimming_level = 23 - (-20 * pOutdoor->vSunlight.z >> 16); if ( array_77EC08[1999].dimming_level > 20 ) array_77EC08[1999].dimming_level = 20; @@ -570,10 +576,14 @@ sin((double)pIndoorCamera->sRotationX * 0.0030664064); array_77EC08[1999]._48607B(&stru_8019C8); array_77EC08[1999].ptr_38->_48694B(); - v2 = (stru148 *)&pBitmaps_LOD->pTextures[pOutdoor->uSky_TextureID]; - array_77EC08[1999].pTexture = (Texture *)(pOutdoor->uSky_TextureID != -1 ? (int)v2 : 0); - if ( !(pOutdoor->uSky_TextureID != -1 ? (int)v2 : 0) ) - return (signed __int16)v2; + + if (pOutdoor->uSky_TextureID == -1) + { + array_77EC08[1999].pTexture = nullptr; + return; + } + else + array_77EC08[1999].pTexture = pBitmaps_LOD->GetTexture(pOutdoor->uSky_TextureID); array_77EC08[1999].dimming_level = 0; v11 = stru_5C6E00->Sin(pIndoorCamera->sRotationX + 16); array_77EC08[1999].v_18.y = 0; @@ -591,7 +601,7 @@ v2 = (stru148 *)*(short *)PaletteManager::Get_Mist_or_Red_LUT(array_77EC08[1999].pTexture->palette_id2, 31, 1); a1b = (unsigned int)v2; if ( (signed int)v9 <= 0 ) - return (signed __int16)v2; + return; v29 = v9; while ( 1 ) { @@ -630,7 +640,7 @@ --v29; --v9; if ( !v9 ) - return (signed __int16)v2; + return; } } if ( (signed int)v9 > 0 ) @@ -675,7 +685,6 @@ } while ( v9 ); } - return (signed __int16)v2; } //----- (00485044) -------------------------------------------------------- @@ -865,8 +874,8 @@ int v8; // eax@4 unsigned int v9; // eax@6 int v10; // eax@7 - int v11; // ebx@9 - int v12; // edi@9 + //int v11; // ebx@9 + //int v12; // edi@9 int v13; // eax@21 int v14; // eax@31 int v15; // edi@33 @@ -876,7 +885,7 @@ int v19; // eax@36 int v20; // eax@39 int v21; // ecx@43 - char v22; // zf@44 + //char v22; // zf@44 int v23; // ecx@47 int v24; // edi@52 int v25; // eax@54 @@ -925,32 +934,32 @@ int v68; // ecx@167 int v69; // eax@173 int v70; // edi@178 - int v71; // eax@178 - int v72; // ecx@178 - int x; // ebx@180 - int v74; // eax@182 + //int v71; // eax@178 + //int v72; // ecx@178 + //int x; // ebx@180 + //int v74; // eax@182 int v75; // eax@184 IndoorCameraD3D *pIndoorCameraD3D_3; // ecx@184 int uStartZ; // ecx@184 int v79; // ebx@185 int v127; // esi@185 int v86; // edi@196 - int v87; // eax@196 - int v88; // ecx@196 - int v89; // eax@198 - int v90; // ecx@200 + //int v87; // eax@196 + //int v88; // ecx@196 + //int v89; // eax@198 + //int v90; // ecx@200 int v92; // ebx@203 - int v93; // ST08_4@204 + //int v93; // ST08_4@204 int v97; // ST08_4@204 float result; // eax@212 - struct - { - char v102[4]; // [sp+Ch] [bp-68h]@191 - __int16 v103; // [sp+10h] [bp-64h]@190 - __int16 v104; // [sp+12h] [bp-62h]@190 - } v102; + //struct + //{ + int v106; // [sp+Ch] [bp-68h]@191 + int v103; // [sp+10h] [bp-64h]@190 + int v104; // [sp+12h] [bp-62h]@190 + //} v102; int v105; // [sp+1Ch] [bp-58h]@1 - int v106; // [sp+20h] [bp-54h]@3 + int v107; // [sp+20h] [bp-54h]@3 int uEndZ; // [sp+24h] [bp-50h]@3 int v108; // [sp+28h] [bp-4Ch]@9 int v109; // [sp+2Ch] [bp-48h]@9 @@ -961,7 +970,7 @@ int v114; // [sp+40h] [bp-34h]@9 int v115; // [sp+44h] [bp-30h]@9 int v116; // [sp+48h] [bp-2Ch]@9 - int v117; // [sp+4Ch] [bp-28h]@9 + //int v117; // [sp+4Ch] [bp-28h]@9 int v118; // [sp+50h] [bp-24h]@9 int v119; // [sp+54h] [bp-20h]@1 int v120; // [sp+58h] [bp-1Ch]@1 @@ -1005,8 +1014,8 @@ else v10 = stru_5C6E00->pTanTable[v9]; v108 = abs(v10); - v11 = v124; - v12 = v123; + //v11 = v124; + //v12 = v123; v114 = 0; v115 = 0; pIndoorCameraD3D_4 = 0; @@ -1017,13 +1026,13 @@ v109 = (uEndZ >= 0 ? 1: -1);//2 * (v107 >= 0) - 1; uEndZ = (v111 >= 0 ? 1: -1);//2 * (v111 >= 0) - 1; terrain_76E1C8[0] = 65535; - //v116 = 1; + uint _i = 1; v106 = (v6 >= 0 ? 1: -1);//2 * (v6 >= 0) - 1; - //v117 = 1; + uint j = 1; terrain_76E3C8[0] = 65535; terrain_76DDC8[0] = 65535; terrain_76DFC8[0] = 65535; - for( v116=1; v116 < 128; v116++) + for( _i = 1; _i < 128; _i++) { if ( v112 >= 0x10000 ) { @@ -1039,22 +1048,22 @@ } else { - v11 += v110; + v124 += v110; v115 += v112; if ( v112 + v115 >= 65536 ) { - v12 += v109; + v123 += v109; v115 = (unsigned __int16)v115; } } - if ( v11 < i || v11 > v120 || v12 < v122 || v12 > v119 ) + if ( v124 < _i || v124 > v120 || v123 < v122 || v123 > v119 ) break; //v13 = v116++; - terrain_76E3C8[v116] = v11; - terrain_76E1C8[v116] = v12; - } - - for( v117=1; v117 < 128; v117++ ) + terrain_76E3C8[_i] = v124; + terrain_76E1C8[_i] = v123; + } + + for( j = 1; j < 128; j++ ) { if ( v108 >= 65536 ) { @@ -1079,7 +1088,7 @@ } //if ( v117 >= 128 ) //break; - if ( v126 < i ) + if ( v126 < _i ) break; if ( v126 > v120 ) break; @@ -1088,27 +1097,27 @@ break; if ( v118 > v119 ) break; - terrain_76DFC8[v117] = v126; - terrain_76DDC8[v117] = v14; + terrain_76DFC8[j] = v126; + terrain_76DDC8[j] = v14; } v16 = 0; v126 = 0; - v17 = v117 - 1; - v18 = v116 - 1; + v17 = j - 1; + v18 = _i - 1; switch ( v105 ) { case 0: case 7: { - v116 = terrain_76DFC8[v17]; - if ( v120 > v116 ) + //v116 = terrain_76DFC8[v17]; + if ( v120 > terrain_76DFC8[v17] ) { v125 = v120; - memset32(terrain_76D9C8, v119 + 1, 4 * (v120 - v116 + 1)); + memset32(terrain_76D9C8, v119 + 1, 4 * (v120 - terrain_76DFC8[v17] + 1)); v19 = v120; do terrain_76DBC8[v126++] = v19--; - while ( v19 >= v116 ); + while ( v19 >= terrain_76DFC8[v17] ); if ( terrain_76DFC8[v17] == terrain_76DDC8[v17 + 127] ) { do @@ -1127,9 +1136,9 @@ if ( v21 < v124 ) break; terrain_76DBC8[v16] = v21; - v22 = terrain_76DDC8[v17] == 65535; + //v22 = terrain_76DDC8[v17] == 65535; terrain_76D9C8[v16] = terrain_76DDC8[v17] + 1; - if ( v22 ) + if ( terrain_76DDC8[v17] == 65535 ) { terrain_76D9C8[v16] = v123 + 1; break; @@ -1201,18 +1210,18 @@ case 1: case 2: { - v116 = terrain_76DDC8[v17]; - if ( v122 < v116 ) + //v116 = terrain_76DDC8[v17]; + if ( v122 < terrain_76DDC8[v17] ) { v106 = v122; - memset32(terrain_76DBC8, v120 + 1, 4 * (v116 - v122 + 1)); + memset32(terrain_76DBC8, v120 + 1, 4 * (terrain_76DDC8[v17] - v122 + 1)); v32 = v122; do { v33 = v126++; terrain_76D9C8[v33] = v32++; } - while ( v32 <= v116 ); + while ( v32 <= terrain_76DDC8[v17] ); if ( terrain_76DDC8[v17] == terrain_76DBC8[v17 -1] ) { do @@ -1228,10 +1237,10 @@ v125 = terrain_76DDC8[v17]; while ( v35 <= v123 ) { - v22 = terrain_76DFC8[v17] == 65535; + //v22 = terrain_76DFC8[v17] == 65535; terrain_76DBC8[v16] = terrain_76DFC8[v17] + 1; terrain_76D9C8[v16] = v125; - if ( v22 ) + if ( terrain_76DFC8[v17] == 65535 ) { terrain_76DBC8[v16] = v124 + 1; break; @@ -1304,15 +1313,15 @@ case 5: case 6: { - v116 = terrain_76DDC8[v17]; - if ( v119 > v116 ) + //v116 = terrain_76DDC8[v17]; + if ( v119 > terrain_76DDC8[v17] ) { v106 = v119; - memset32(terrain_76DBC8, i, 4 * (v119 - v116 + 1)); + memset32(terrain_76DBC8, i, 4 * (v119 - terrain_76DDC8[v17] + 1)); v45 = v119; do terrain_76D9C8[v126++] = v45--; - while ( v45 >= v116 ); + while ( v45 >= terrain_76DDC8[v17] ); if ( terrain_76DDC8[v17] == terrain_76DBC8[v17 -1] ) { do @@ -1328,10 +1337,10 @@ v125 = terrain_76DDC8[v17]; while ( v47 >= v123 ) { - v22 = terrain_76DFC8[v17] == 65535; + //v22 = terrain_76DFC8[v17] == 65535; terrain_76DBC8[v16] = terrain_76DFC8[v17]; terrain_76D9C8[v16] = v125; - if ( v22 ) + if ( terrain_76DFC8[v17] == 65535 ) { terrain_76DBC8[v16] = v124; break; @@ -1403,18 +1412,18 @@ case 3: case 4: { - v116 = terrain_76DFC8[v17]; - if ( i < v116 ) + //v116 = terrain_76DFC8[v17]; + if ( i < terrain_76DFC8[v17] ) { v106 = i; - memset32(terrain_76D9C8, v122, 4 * (v116 - i + 1)); + memset32(terrain_76D9C8, v122, 4 * (terrain_76DFC8[v17] - i + 1)); v56 = i; do { v57 = v126++; terrain_76DBC8[v57] = v56++; } - while ( v56 <= v116 ); + while ( v56 <= terrain_76DFC8[v17] ); if ( terrain_76DFC8[v17] == terrain_76DDC8[v17 -1] ) { do @@ -1485,7 +1494,7 @@ v67 = terrain_76E1C8[v18]; terrain_76D7C8[v16] = v66; terrain_76D5C8[v16] = v67 + 1; - if ( v67 == 65535 ) + if ( terrain_76E1C8[v18] == 65535 ) { v31 = v123 + 1; terrain_76D5C8[v16] = v31; @@ -1517,26 +1526,26 @@ for ( i = v69; i >= 1; --i ) { //v70 = i; - v71 = terrain_76D7C8[i];//88 - v72 = terrain_76DBC8[i];//0 - if ( v71 < v72 )//swap - { - terrain_76DBC8[i] = v71; - terrain_76D7C8[i] = v72; - } - x = terrain_76DBC8[i];//0 + //v71 = terrain_76D7C8[i];//88 + //v72 = terrain_76DBC8[i];//0 + if ( terrain_76D7C8[i] < terrain_76DBC8[i] )//swap + { + terrain_76DBC8[i] = terrain_76D7C8[i]; + terrain_76D7C8[i] = terrain_76DBC8[i]; + } + //x = terrain_76DBC8[i];//0 v111 = 0; - if ( x <= 0 ) - x = -x; - v74 = terrain_76D7C8[i]; - if ( v74 <= 0 ) - v74 = -v74; - v75 = v74 + 2; + if ( terrain_76DBC8[i] <= 0 ) + terrain_76DBC8[i] = -terrain_76DBC8[i]; + //v74 = terrain_76D7C8[i]; + if ( terrain_76D7C8[i] <= 0 ) + terrain_76D7C8[i] = -terrain_76D7C8[i]; + v75 = terrain_76D7C8[i] + 2; //pIndoorCameraD3D_3 = pGame->pIndoorCameraD3D; uEndZ = v75; //pIndoorCameraD3D_4 = pIndoorCameraD3D_3; - uStartZ = x - 2; - if ( x - 2 < v75 ) + uStartZ = terrain_76DBC8[i] - 2; + if ( terrain_76DBC8[i] - 2 < v75 ) { v127 = 0; //v79 = (v73 - 66) << 9; @@ -1545,10 +1554,10 @@ v111 = v75 - uStartZ; for (int z = uStartZ; z < uEndZ; ++z) { - ptr_801A08[v127].vWorldPosition.x = (-64 + x) * 512;//pTerrainVertices[z * 128 + x].vWorldPosition.x = (-64 + (signed)x) * 512; + ptr_801A08[v127].vWorldPosition.x = (-64 + terrain_76DBC8[i]) * 512;//pTerrainVertices[z * 128 + x].vWorldPosition.x = (-64 + (signed)x) * 512; ptr_801A08[v127].vWorldPosition.y = (64 - terrain_76D9C8[i]) * 512; ptr_801A08[v127].vWorldPosition.z = pOutdoor->GetHeightOnTerrain( z, terrain_76D9C8[i]); - ptr_801A04[v127].vWorldPosition.x = (-64 + x) * 512; + ptr_801A04[v127].vWorldPosition.x = (-64 + terrain_76DBC8[i]) * 512; ptr_801A04[v127].vWorldPosition.y = (63 - terrain_76D9C8[i]) * 512; ptr_801A04[v127].vWorldPosition.z = pOutdoor->GetHeightOnTerrain( z, terrain_76D9C8[i] + 1); if ( !byte_4D864C || !(pGame->uFlags & 0x80) ) @@ -1565,57 +1574,58 @@ } //while ( v116 < v107 ); } - v102.v103 = abs((int)pIndoorCamera->uMapGridCellZ - terrain_76D9C8[i]); - v102.v104 = abs((int)pIndoorCamera->uMapGridCellX - terrain_76DBC8[i]); + v103 = abs((int)pIndoorCamera->uMapGridCellZ - terrain_76D9C8[i]); + v104 = abs((int)pIndoorCamera->uMapGridCellX - terrain_76DBC8[i]); if ( pRenderer->pRenderD3D )//Ritor1: do comment to test - Render::RenderTerrainD3D();//Render::DrawTerrainD3D(v111, 0, (int)&v102); + Render::DrawTerrainD3D(v111, 0, v103, v104);//Render::RenderTerrainD3D(); else - Render::DrawTerrainSW(v111, 0, (int)&v102); - } - } -/* else + Render::DrawTerrainSW(v111, 0, v103, v104); + } + } + else { for ( i = v69; i >= 1; --i ) { - v86 = i; - v87 = terrain_76D5C8[i]; - v88 = terrain_76D9C8[i]; - if ( v87 < v88 ) - { - terrain_76D9C8[v86] = v87; - terrain_76D5C8[v86] = v88; - } - v89 = terrain_76D9C8[v86]; + //v86 = i; + //v87 = terrain_76D5C8[i]; + //v88 = terrain_76D9C8[i]; + if ( terrain_76D5C8[i] < terrain_76D9C8[i] ) + { + terrain_76D9C8[i] = terrain_76D5C8[i]; + terrain_76D5C8[i] = terrain_76D9C8[i]; + } + //v89 = terrain_76D9C8[i]; v111 = 0; - if ( v89 <= 0 ) - v89 = -v89; - v90 = terrain_76D5C8[v86]; - if ( v90 <= 0 ) - v90 = -v90; + if ( terrain_76D9C8[i] <= 0 ) + terrain_76D9C8[i] = -terrain_76D9C8[i]; + //v90 = terrain_76D5C8[i]; + if ( terrain_76D5C8[i] <= 0 ) + terrain_76D5C8[i] = -terrain_76D5C8[i]; pIndoorCameraD3D_4 = pGame->pIndoorCameraD3D; - v107 = v90 + 2; - if ( v89 - 2 < v90 + 2 ) + v107 = terrain_76D5C8[i] + 2; + if ( terrain_76D9C8[i] - 2 < terrain_76D5C8[i] + 2 ) { v86 = 0; - v116 = v89 - 2; - v92 = (66 - v89) << 9; - pHeight = (66 - v89) << 9; - v111 = v90 + 2 - (v89 - 2); - do - { - v93 = v116; - v106 = (*(int *)((char *)terrain_76DBC8 + v86) - 64) << 9; - *(float *)((char *)&ptr_801A08->vWorldPosition.x + v86) = (double)v106; - *(float *)&pHeight = (double)pHeight; - *(float *)((char *)&ptr_801A08->vWorldPosition.y + v86) = *(float *)&pHeight; - v106 = pOutdoor->GetHeightOnTerrain(*(int *)((char *)terrain_76DBC8 + v86), v93); - v97 = v116; - *(float *)((char *)&ptr_801A08->vWorldPosition.z + v86) = (double)v106; - v106 = (*(int *)((char *)terrain_76DBC8 + v86) - 63) << 9; - *(float *)((char *)&ptr_801A04->vWorldPosition.x + v86) = (double)v106; - *(float *)((char *)&ptr_801A04->vWorldPosition.y + v86) = *(float *)&pHeight; - pHeight = pOutdoor->GetHeightOnTerrain(*(int *)((char *)terrain_76DBC8 + v86) + 1, v97); - *(float *)((char *)&ptr_801A04->vWorldPosition.z + v86) = (double)pHeight; + //v116 = terrain_76D9C8[i] - 2; + v92 = (66 - terrain_76D9C8[i]) << 9; + //pHeight = (66 - terrain_76D9C8[i]) << 9; + v111 = terrain_76D5C8[i] + 2 - (terrain_76D9C8[i] - 2); + //do + for ( v116 = terrain_76D9C8[i] - 2; v116 < v107; ++v116 ) + { + //v93 = v116; + //v106 = (*(int *)((char *)terrain_76DBC8 + v86) - 64) << 9; + ptr_801A08[v86].vWorldPosition.x = terrain_76DBC8[v86] - 64 << 9; + //*(float *)&pHeight = (double)pHeight; + ptr_801A08[v86].vWorldPosition.y = v92; + //v106 = ; + //v97 = v116; + ptr_801A08[v86].vWorldPosition.z = pOutdoor->GetHeightOnTerrain(terrain_76DBC8[v86], v116); + //v106 = (*(int *)((char *)terrain_76DBC8 + v86) - 63) << 9; + ptr_801A04[v86].vWorldPosition.x = terrain_76DBC8[v86] - 63 << 9; + ptr_801A04[v86].vWorldPosition.y = v92; + //pHeight = pOutdoor->GetHeightOnTerrain(*(int *)((char *)terrain_76DBC8 + v86) + 1, v97); + ptr_801A04[v86].vWorldPosition.z = pOutdoor->GetHeightOnTerrain(terrain_76DBC8[v86] + 1, v116); if ( !byte_4D864C || !(pGame->uFlags & 0x80) ) { pIndoorCameraD3D_4->ViewTransform((RenderVertexSoft *)(char *)ptr_801A08 + v86, 1); @@ -1625,19 +1635,19 @@ } v92 -= 512; v86 += 48; - ++v116; - pHeight = v92; - } - while ( v116 < v107 ); + //++v116; + //pHeight = v92; + } + //while ( v116 < v107 ); } v103 = abs((int)pIndoorCamera->uMapGridCellX - terrain_76DBC8[v86]); v104 = abs((int)pIndoorCamera->uMapGridCellZ - terrain_76D9C8[v86]); if ( pRenderer->pRenderD3D ) - Render::DrawTerrainD3D(v111, 1, (int)&v102); + Render::DrawTerrainD3D(v111, 1, v103, v104); else - Render::DrawTerrainSW(v111, 1, (int)&v102); - } - }*/ + Render::DrawTerrainSW(v111, 1, v103, v104); + } + } result = v126; pOutdoorCamera->field_40 = v126; return result; @@ -1830,9 +1840,9 @@ } //----- (0048034E) -------------------------------------------------------- -void Render::DrawTerrainD3D(int a1, int a2, int a3) -{ - int v3; // esi@1 +void Render::DrawTerrainD3D(int a1, int a2, int a3, int unk4) +{ + //int v3; // esi@1 int v4; // edi@1 int v5; // ebx@2 int v6; // eax@2 @@ -1906,10 +1916,10 @@ unsigned int v73; // eax@150 int v74; // eax@154 unsigned int v75; // eax@158 - unsigned int v76; // [sp-10h] [bp-E0h]@61 + //unsigned int v76; // [sp-10h] [bp-E0h]@61 int v77; // [sp-Ch] [bp-DCh]@61 IDirect3DTexture2 *v78; // [sp-8h] [bp-D8h]@61 - int v79; // [sp-4h] [bp-D4h]@61 + //int v79; // [sp-4h] [bp-D4h]@61 int v80; // [sp+0h] [bp-D0h]@59 int v81; // [sp+0h] [bp-D0h]@109 int v82; // [sp+54h] [bp-7Ch]@1 @@ -1953,24 +1963,24 @@ static stru154 static_sub_0048034E_stru_154; static stru154 stru_76D5A8; - v3 = a1; + //v3 = a1; v82 = a2; - v83 = *(/*short **/_WORD *)(a3 + 4); - X = abs(*(/*short **/_WORD *)(a3 + 6)); + v83 = a3; + X = abs(unk4); v4 = 0; v88 = 0; - v84 = v3 - 1; + v84 = a1 - 1; v90 = (float)pOutdoor->vSunlight.x / 65536.0; v91 = (float)pOutdoor->vSunlight.y / 65536.0; v92 = (float)pOutdoor->vSunlight.z / 65536.0; - if ( v3 - 1 > 0 ) + if ( a1 - 1 > 0 ) { while ( 1 ) { v5 = abs(X);//v5 = 13108 v6 = abs(v83);//v6 = 13108 --X; - __debugbreak(); // uncoment & refactor following large if + //__debugbreak(); // uncoment & refactor following large if v93 = (int)&stru_76E5C8[(v5 << 7) + v6]; /*if ( !v93->field_0 || ((v7 = 48 * v4, v8 = &pVerticesSR_806210[v4], a2 = v8, !v82) ? (v9 = (RenderVertexSoft *)((char *)&pVerticesSR_801A10 + v7), v10 = &pVerticesSR_806210[1] + v7) : (v9 = &pVerticesSR_806210[1] + v7, v10 = (RenderVertexSoft *)((char *)&pVerticesSR_801A10 + v7)), @@ -2403,12 +2413,12 @@ v80 = true; } //v79 = 0; - //v78 = pBitmaps_LOD->pHardwareTextures[v75]; + v78 = pBitmaps_LOD->pHardwareTextures[v75]; v71->pTexture = (Texture *)&pBitmaps_LOD->pHardwareTextures[v75];// Ritor1: It's temporary //v77 = (int)v71; //v76 = v71->uNumVertices; //goto LABEL_161; - pRenderer->DrawTerrainPolygon(v76, (stru148 *)v71, v78, v79, v80); + pRenderer->DrawTerrainPolygon(v71->uNumVertices, (stru148 *)v71, v78, 0, v80); goto LABEL_162; } v38 = (stru148 *)v71; @@ -2427,7 +2437,7 @@ // 76D5C0: using guessed type char static_sub_0048034E_byte_76D5C0__init_flag; //----- (00481212) -------------------------------------------------------- -void Render::DrawTerrainSW(int a1, int a2, int a3) +void Render::DrawTerrainSW(int a1, int a2, int a3, int a4) { int v3; // esi@1 int v4; // ecx@1 @@ -2541,8 +2551,8 @@ //v4 = *(short *)(a3 + 4); //v5 = *(short *)(a3 + 6); v85 = a2; - v86 = *(_WORD *)(a3 + 4); //v4; - X = abs(*(_WORD *)(a3 + 6)); //v5 + v86 = a3; //v4; + X = abs(a4); //v5 v6 = 0; v90 = 0; v81 = v3 - 1;