# HG changeset patch # User Nomad # Date 1363854913 -7200 # Node ID af5771589d22559462caec48f4143e57ca1d9f98 # Parent 436ae1842e92542a3db6f2a7a6c10aea4fb33f3b Dropped items in blv diff -r 436ae1842e92 -r af5771589d22 mm7_3.cpp --- a/mm7_3.cpp Thu Mar 21 10:21:46 2013 +0200 +++ b/mm7_3.cpp Thu Mar 21 10:35:13 2013 +0200 @@ -11370,15 +11370,15 @@ int v9; // ecx@12 unsigned __int16 v10; // ax@12 int *v11; // eax@20 - char v12; // zf@26 - int v18; // ST5C_4@27 + //char v12; // zf@26 + __int64 v18; // ST5C_4@27 signed __int64 v19; // qtt@28 int v20; // ST5C_4@28 - int v21; // edx@29 + //int v21; // edx@29 __int16 v22; // ax@29 - int v23; // eax@29 + //int v23; // eax@29 SpriteFrame *v24; // [sp+1Ch] [bp-40h]@12 - __int16 a5; // [sp+28h] [bp-34h]@12 + //__int16 a5; // [sp+28h] [bp-34h]@12 int a6; // [sp+2Ch] [bp-30h]@12 int a2; // [sp+30h] [bp-2Ch]@12 int a1; // [sp+34h] [bp-28h]@12 @@ -11405,7 +11405,7 @@ && (v2 < 811 || v2 >= 815) || pGame->pStru6Instance->_4A81CA(p)) { - a5 = p->uSectorID; + //a5 = p->uSectorID; a1 = p->vPosition.x; a2 = p->vPosition.y; a3 = p->vPosition.z; @@ -11444,7 +11444,7 @@ a1, a2, a3, - a5, + p->uSectorID, a6, v1->uParticleTrailColorR, v1->uParticleTrailColorG, @@ -11461,15 +11461,27 @@ 1) ) { pGame->pIndoorCameraD3D->Project(x, y, z, &v36, &v35); - if ( (signed int)uNumBillboardsToDraw >= 500 ) - return; + + assert(uNumBillboardsToDraw < 500); + //if ( (signed int)uNumBillboardsToDraw >= 500 ) + // return; ++uNumBillboardsToDraw; ++uNumSpritesDrawnThisFrame; p->uAttributes |= 1u; - v12 = pRenderer->pRenderD3D == 0; + //v12 = pRenderer->pRenderD3D == 0; v3->uPalette = v24->uPaletteIndex; - v3->uIndoorSectorID = a5; - if ( v12 ) + v3->uIndoorSectorID = p->uSectorID; + if ( pRenderer->pRenderD3D ) + { + v3->fov_x = pGame->pIndoorCameraD3D->fov_x; + v3->fov_y = pGame->pIndoorCameraD3D->fov_y; + LODWORD(v18) = 0; + HIDWORD(v18) = (int)floorf(v3->fov_x + 0.5f); + v18 = v18 / x; + v3->_screenspace_x_scaler_packedfloat = (unsigned __int64)(v24->scale * v18) >> 16; + v31 = (unsigned __int64)(v24->scale * v18) >> 16; + } + else { LODWORD(v19) = pBLVRenderParams->field_40 << 16; HIDWORD(v19) = pBLVRenderParams->field_40 >> 16; @@ -11477,15 +11489,8 @@ v3->_screenspace_x_scaler_packedfloat = (unsigned __int64)(v24->scale * v19 / x) >> 16; v31 = (unsigned __int64)(v24->scale * (signed __int64)v20) >> 16; } - else - { - v3->fov_x = pGame->pIndoorCameraD3D->fov_x; - v3->fov_y = pGame->pIndoorCameraD3D->fov_y; - v18 = (int)floorf(v3->fov_x + 0.5f) / x; - v3->_screenspace_x_scaler_packedfloat = (unsigned __int64)(v24->scale * (__int64)v18) >> 16; - v31 = (unsigned __int64)(v24->scale * (__int64)v18) >> 16; - } - HIWORD(v21) = HIWORD(x); + //HIWORD(v21) = HIWORD(x); + //LOWORD(v21) = 0; v3->_screenspace_y_scaler_packedfloat = v31; v3->field_1E = v34; v3->world_x = a1; @@ -11495,13 +11500,14 @@ v22 = v35; v3->uTintColor = 0; v3->uScreenSpaceY = v22; - LOWORD(v21) = 0; - v23 = 8 * i; - LOBYTE(v23) = 8 * i | OBJECT_Item; + //v23 = 8 * i; + //LOBYTE(v23) = 8 * i | OBJECT_Item; v3->pSpriteFrame = v24; - v12 = (p->uAttributes & 0x20) == 0; - v3->sZValue = v21 + v23; - if ( !v12 ) + //v12 = (p->uAttributes & 0x20) == 0; + //v3->sZValue = v21 + v23; + v3->actual_z = HIWORD(x); + v3->object_pid = 8 * i | OBJECT_Item; + if (p->uAttributes & 0x20) { if ( !pRenderer->pRenderD3D ) v3->sZValue = 0;