comparison mm7_5.cpp @ 1616:de6e646822a6

mul <> sub0 difference
author zipi
date Sat, 14 Sep 2013 22:43:45 +0100
parents 89dec2be255f
children 2c71fa8913d2
comparison
equal deleted inserted replaced
1615:89dec2be255f 1616:de6e646822a6
4484 || higher_z < v29->pBounding.z1 ) 4484 || higher_z < v29->pBounding.z1 )
4485 { 4485 {
4486 continue; 4486 continue;
4487 } 4487 }
4488 4488
4489 v32 = fixpoint_mul(v29->pFacePlane_old.vNormal.x,v49); 4489 v32 = fixpoint_sub0(v29->pFacePlane_old.vNormal.x,v49);
4490 v33 = fixpoint_mul(v29->pFacePlane_old.vNormal.z,v47); 4490 v33 = fixpoint_sub0(v29->pFacePlane_old.vNormal.z,v47);
4491 v34 = fixpoint_mul(v29->pFacePlane_old.vNormal.y,v48); 4491 v34 = fixpoint_sub0(v29->pFacePlane_old.vNormal.y,v48);
4492 v59 = v32 + v33 + v34; 4492 v59 = v32 + v33 + v34;
4493 if ( v59 ) 4493 if ( v59 )
4494 { 4494 {
4495 v70 = v29->pFacePlane_old.dist 4495 v70 = v29->pFacePlane_old.dist
4496 + obj1_z * v29->pFacePlane_old.vNormal.z 4496 + obj1_z * v29->pFacePlane_old.vNormal.z
4516 4516
4517 v58 = fixpoint_sub2(v38,v59); 4517 v58 = fixpoint_sub2(v38,v59);
4518 4518
4519 if( v58 < 0 ) 4519 if( v58 < 0 )
4520 { 4520 {
4521 //TEMPORARY 4521 continue;
4522 //continue;
4523 } 4522 }
4524 4523
4525 if(!sub_4075DB( 4524 if(!sub_4075DB(
4526 obj1_x + ((fixpoint_mul(v49,v58) + 32768) >> 16), 4525 obj1_x + ((fixpoint_sub0(v49,v58) + 32768) >> 16),
4527 obj1_y + ((fixpoint_mul(v48,v58) + 32768) >> 16), 4526 obj1_y + ((fixpoint_sub0(v48,v58) + 32768) >> 16),
4528 obj1_z + ((fixpoint_mul(v47,v58) + 32768) >> 16), 4527 obj1_z + ((fixpoint_sub0(v47,v58) + 32768) >> 16),
4529 v29) ) 4528 v29) )
4530 { 4529 {
4531 //TEMPORARY 4530 continue;
4532 //continue;
4533 } 4531 }
4534 4532
4535 //if there is no next sector turn back 4533 //if there is no next sector turn back
4536 if ( v29->uSectorID == current_sector ) 4534 if ( v29->uSectorID == current_sector )
4537 next_sector = v29->uBackSectorID; 4535 next_sector = v29->uBackSectorID;
4569 return 0; 4567 return 0;
4570 return 1; 4568 return 1;
4571 } 4569 }
4572 4570
4573 //----- (004075DB) -------------------------------------------------------- 4571 //----- (004075DB) --------------------------------------------------------
4574 bool __fastcall sub_4075DB(int a1, int a2, int a3, BLVFace *a4) 4572 bool __fastcall sub_4075DB(int x, int y, int z, BLVFace *a4)
4575 { 4573 {
4576 unsigned int v5; // esi@1 4574 unsigned int v5; // esi@1
4577 char v7; // zf@2 4575 char v7; // zf@2
4578 int v8; // edi@2 4576 int v8; // edi@2
4579 Vec3_short_ *v9; // ecx@3 4577 Vec3_short_ *v9; // ecx@3
4600 4598
4601 v5 = a4->uAttributes; 4599 v5 = a4->uAttributes;
4602 v9 = pIndoor->pVertices; 4600 v9 = pIndoor->pVertices;
4603 if ( v5 & FACE_XY_PLANE ) 4601 if ( v5 & FACE_XY_PLANE )
4604 { 4602 {
4605 a4a = a1; 4603 a4a = x;
4606 v8 = a2; 4604 v8 = y;
4607 for(int i = 0; i < a4->uNumVertices; i++) 4605 for(int i = 0; i < a4->uNumVertices; i++)
4608 { 4606 {
4609 dword_4F5D98_xs[i] = v9[a4->pVertexIDs[i]].x; 4607 dword_4F5D98_xs[i] = v9[a4->pVertexIDs[i]].x;
4610 dword_4F5CC8_ys[i] = v9[a4->pVertexIDs[i]].y; 4608 dword_4F5CC8_ys[i] = v9[a4->pVertexIDs[i]].y;
4611 } 4609 }
4612 } 4610 }
4613 else 4611 else
4614 { 4612 {
4615 v8 = a3; 4613 v8 = z;
4616 if ( v5 & FACE_XY_PLANE ) 4614 if ( v5 & FACE_XZ_PLANE )
4617 { 4615 {
4618 a4a = a1; 4616 a4a = x;
4619 for(int i = 0; i < a4->uNumVertices; i++) 4617 for(int i = 0; i < a4->uNumVertices; i++)
4620 { 4618 {
4621 dword_4F5D98_xs[i] = v9[a4->pVertexIDs[i]].x; 4619 dword_4F5D98_xs[i] = v9[a4->pVertexIDs[i]].x;
4622 dword_4F5CC8_ys[i] = v9[a4->pVertexIDs[i]].z; 4620 dword_4F5CC8_ys[i] = v9[a4->pVertexIDs[i]].z;
4623 } 4621 }
4624 } 4622 }
4625 else 4623 else
4626 { 4624 {
4627 a4a = a2; 4625 a4a = y;
4628 for(int i = 0; i < a4->uNumVertices; i++) 4626 for(int i = 0; i < a4->uNumVertices; i++)
4629 { 4627 {
4630 dword_4F5D98_xs[i] = v9[a4->pVertexIDs[i]].y; 4628 dword_4F5D98_xs[i] = v9[a4->pVertexIDs[i]].y;
4631 dword_4F5CC8_ys[i] = v9[a4->pVertexIDs[i]].z; 4629 dword_4F5CC8_ys[i] = v9[a4->pVertexIDs[i]].z;
4632 } 4630 }
4648 //dword_4F5D98_xs[i] + ((signed int)(((unsigned __int64)(v26 / (dword_4F5CC4_ys[i + 2] - dword_4F5CC4_ys[i + 1])* ((v8 - dword_4F5CC4_ys[i + 1]) << 16)) >> 16) 4646 //dword_4F5D98_xs[i] + ((signed int)(((unsigned __int64)(v26 / (dword_4F5CC4_ys[i + 2] - dword_4F5CC4_ys[i + 1])* ((v8 - dword_4F5CC4_ys[i + 1]) << 16)) >> 16)
4649 // + 32768) >> 16) >= a4a) ) 4647 // + 32768) >> 16) >= a4a) )
4650 else 4648 else
4651 { 4649 {
4652 v25 = fixpoint_sub2(dword_4F5D98_xs[i + 1] - dword_4F5D98_xs[i], dword_4F5CC8_ys[i + 1] - dword_4F5CC8_ys[i]); 4650 v25 = fixpoint_sub2(dword_4F5D98_xs[i + 1] - dword_4F5D98_xs[i], dword_4F5CC8_ys[i + 1] - dword_4F5CC8_ys[i]);
4653 if( dword_4F5D98_xs[i] + (fixpoint_mul(v25, (v8 - dword_4F5CC8_ys[i]) << 16) + 32768 >> 16) >= a4a) 4651 if( dword_4F5D98_xs[i] + (fixpoint_sub0(v25, (v8 - dword_4F5CC8_ys[i]) << 16) + 32768 >> 16) >= a4a)
4654 ++a3a; 4652 ++a3a;
4655 } 4653 }
4656 } 4654 }
4657 } 4655 }
4658 } 4656 }