Mercurial > might-and-magic-trilogy
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)