Reversed from Halo CE 1.08 using OllyDbg, IDA Pro, Hexrays, and msdn.
Returns the size of a vertex for a flexible vertex format (FVF).
Code://----- (0058751A) -------------------------------------------------------- DWORD GetFVFVertexSize(DWORD fvf) { DWORD Size; switch(fvf & D3DFVF_POSITION_MASK) { case D3DFVF_XYZ: Size = 12; break; case D3DFVF_XYZRHW: case D3DFVF_XYZB1: Size = 16; break; case D3DFVF_XYZB2: Size = 20; break; case D3DFVF_XYZB3: Size = 24; break; case D3DFVF_XYZB4: Size = 28; break; case D3DFVF_XYZB5: Size = 32; break; default: Size = 0; break; } if(fvf & D3DFVF_NORMAL) Size += 12; if(fvf & D3DFVF_PSIZE) Size += 4; if(fvf & D3DFVF_DIFFUSE) Size += 4; if(fvf < 0) Size += 4; DWORD TexCount = (fvf & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT; DWORD TexCoords = (fvf >> D3DFVF_TEXCOUNT_SHIFT) >> D3DFVF_TEXCOUNT_SHIFT; if(TexCoords) { if(TexCount >= 0) { for(TexCoords; TexCoords > 0; TexCoords--) { switch(TexCoords & 3) { case D3DFVF_TEXTUREFORMAT1: Size += 4; break; case D3DFVF_TEXTUREFORMAT2: Size += 8; break; case D3DFVF_TEXTUREFORMAT3: Size += 12; break; case D3DFVF_TEXTUREFORMAT4: Size += 16; break; } TexCoords = TexCoords >> 2; } } } else Size += TexCount * 8; return Size; }






Bookmarks