Mercurial > mm7
diff Indoor.cpp @ 1074:d6bea22f8b53
sub_440BED() cleaned
author | zipi |
---|---|
date | Sat, 25 May 2013 13:30:58 +0100 |
parents | bcebd491e8fa |
children | b44dee7e70e8 |
line wrap: on
line diff
--- a/Indoor.cpp Sat May 25 12:24:35 2013 +0100 +++ b/Indoor.cpp Sat May 25 13:30:58 2013 +0100 @@ -315,12 +315,13 @@ void __fastcall sub_440BED(IndoorLocation_drawstru *_this) { unsigned __int16 *v1; // edi@7 - char *v2; // esi@8 + BspRenderer_stru0 *v2; // esi@8 int v3; // ecx@9 unsigned int v4; // edx@9 - char *v5; // eax@10 + short *v5; // eax@10 signed int v6; // [sp+8h] [bp-8h]@7 int v7; // [sp+Ch] [bp-4h]@8 + short *v8; PrepareDrawLists_BLV(_this); if (pBLVRenderParams->uPartySectorID) @@ -334,34 +335,28 @@ if (pBLVRenderParams->uFlags & INDOOR_CAMERA_DRAW_SW_OUTLINES) { v1 = pBLVRenderParams->pRenderTarget; - v6 = 0; - if ( (signed int)pBspRenderer->num_nodes > 0 ) - { - v7 = 0; - v2 = (char *)&pBspRenderer->nodes[0].field_C._viewport_space_w; - do - { - v3 = *((int *)v2 - 1); - v4 = pRenderer->uTargetSurfacePitch * *((int *)v2 - 1); - if ( v3 <= *(int *)v2 ) - { - v5 = (char *)&pBspRenderer->nodes[0].field_C.array_3D8[v3 + v7]; - do - { - v1[v4 + *((short *)v5 - 480)] = 255; - ++v3; - v1[v4 + *(short *)v5] = 255; - v4 += pRenderer->uTargetSurfacePitch; - v5 += 2; - } - while ( v3 <= *(int *)v2 ); - } - ++v6; - v7 += 1126; - v2 += 2252; - } - while ( v6 < (signed int)pBspRenderer->num_nodes ); - } + v7 = 0; + for(int i=0; i < pBspRenderer->num_nodes; i++) + { + BspRenderer_stru0 *pNode = &pBspRenderer->nodes[i]; + v4 = pRenderer->uTargetSurfacePitch * pNode->field_C._viewport_space_y; + if ( pNode->field_C._viewport_space_y <= pNode->field_C._viewport_space_w ) + { + //v5 = (char *)&pBspRenderer->nodes[0].field_C.array_3D8[pNode->field_C._viewport_space_y + v7]; + v5 = &pNode->field_C.array_3D8[pNode->field_C._viewport_space_y]; + v8 = &pNode->field_C.array_18[pNode->field_C._viewport_space_y]; + do + { + v1[v4 + *v8] = 255; + ++pNode->field_C._viewport_space_y; + v1[v4 + *v5] = 255; + v4 += pRenderer->uTargetSurfacePitch; + ++v5; + ++v8; + } + while ( pNode->field_C._viewport_space_y <= pNode->field_C._viewport_space_w ); + } + } } } }