some infos
Code:
class RenderContext;
class RenderData;
class RenderContext
{
public:
RenderData* pRenderData; //0x0000
char unknown4[1076]; //0x0004
D3DXVECTOR4 bone;
D3DXVECTOR4 bone1;
D3DXVECTOR4 bone2;
};
class RenderData
{
public:
char unknown0[2400]; //0x0000
D3DXMATRIX ViewMatrix; //0x0960
D3DXMATRIX ProjMatrix; //0x09A0
D3DXMATRIX World;
D3DXMATRIX WorldView[80]; //0x0A20 is DisShizz Billboarded??????
};
D3DXVECTOR3 W2S(LPDIRECT3DDEVICE9 pDevice, D3DXVECTOR3 in, D3DXMATRIX ViewMatrix , D3DXMATRIX Proj )
{
D3DXVECTOR4 temp,out;
D3DXVECTOR3 temp1;
D3DXMATRIX vpm;
D3DVIEWPORT9 vp;
pDevice->GetViewport(&vp);
::D3DXMatrixMultiply(&vpm,&ViewMatrix,&Proj);
D3DXVec4Transform(&temp,&D3DXVECTOR4(in.x,in.y,in.z,1),&vpm);
float tempInvW2 = 1.0f/temp.w;
out.x = (1.0f + (temp.x*tempInvW2)) * vp.Width /2;
out.y = (1.0f - (temp.y*tempInvW2)) * vp.Height /2;
out.z = temp.z;
return out;
}
D3DXVECTOR3 GetCamera(D3DXMATRIX ViewMatrix)
{
D3DXVECTOR3 out;
D3DXMATRIX iViewMat;
::D3DXMatrixInverse(&iViewMat,0,&ViewMatrix);
out.x = iViewMat._41;
out.y = iViewMat._42;
out.z = iViewMat._43;
return out;
}
D3DXMATRIX CreateFourByFourTranspose(D3DXVECTOR4 r1, D3DXVECTOR4 r2, D3DXVECTOR4 r3)
{
D3DXMATRIX pout,out;
pout._11 = r1.x; pout._12 = r1.y; pout._13 = r1.z; pout._14 = r1.w;
pout._21 = r2.x; pout._22 = r2.y; pout._23 = r2.z; pout._24 = r2.w;
pout._31 = r3.x; pout._32 = r3.y; pout._33 = r3.z; pout._34 = r3.w;
pout._41 = 1 ; pout._42 = 1 ; pout._43 = 1 ; pout._44 = 1 ;
::D3DXMatrixTranspose(&out,&pout);
return out;
}
Rendercontext:
Code:
&i3SceneDx.dll+0x169834//render context 008C963C A1 34989800 MOV EAX,DWORD PTR DS:[<&i3GfxDx.?g_pRenderContext@@3PAVi3RenderContext@@A>] 008C9641 8B08 MOV ECX,DWORD PTR DS:[EAX] 008C9643 FF15 F8959800 CALL DWORD PTR DS:[<&i3GfxDx.?IsReady@i3RenderContext@@QAEHXZ>] ; i3GfxDx.?IsReady@i3RenderContext@@QAEHXZ 008C9649 85C0 TEST EAX,EAX 008C964B 0F84 D9000000 JE i3SceneD.008C972A 008C9651 8B4E 2C MOV ECX,DWORD PTR DS:[ESI+2C] 008C9654 55 PUSH EBP 008C9655 8D2C0F LEA EBP,DWORD PTR DS:[EDI+ECX] 008C9658 3B6E 30 CMP EBP,DWORD PTR DS:[ESI+30] 008C965B 0F8F C8000000 JG i3SceneD.008C9729 008C9661 896E 2C MOV DWORD PTR DS:[ESI+2C],EBP 008C9664 2BEF SUB EBP,EDI 008C9666 896C24 28 MOV DWORD PTR SS:[ESP+28],EBP 008C966A 83FD FF CMP EBP,-1 008C966D 0F84 B6000000 JE i3SceneD.008C9729 008C9673 807E 4C 00 CMP BYTE PTR DS:[ESI+4C],0 008C9677 75 13 JNZ SHORT i3SceneD.008C968C 008C9679 8B16 MOV EDX,DWORD PTR DS:[ESI] 008C967B 8B42 14 MOV EAX,DWORD PTR DS:[EDX+14] 008C967E 8BCE MOV ECX,ESI 008C9680 FFD0 CALL EAX 008C9682 807E 4C 00 CMP BYTE PTR DS:[ESI+4C],0 008C9686 0F84 9D000000 JE i3SceneD.008C9729 008C968C 33FF XOR EDI,EDI 008C968E 807B 12 00 CMP BYTE PTR DS:[EBX+12],0 008C9692 76 45 JBE SHORT i3SceneD.008C96D9 008C9694 8B4424 28 MOV EAX,DWORD PTR SS:[ESP+28] 008C9698 8D0C40 LEA ECX,DWORD PTR DS:[EAX+EAX*2] 008C969B 8D6B 14 LEA EBP,DWORD PTR DS:[EBX+14] 008C969E 894C24 10 MOV DWORD PTR SS:[ESP+10],ECX 008C96A2 8D86 80000000 LEA EAX,DWORD PTR DS:[ESI+80] 008C96A8 50 PUSH EAX 008C96A9 55 PUSH EBP 008C96AA 8D5424 20 LEA EDX,DWORD PTR SS:[ESP+20]
I got Some really ghetto shit going:
Code:
DWORD SceneBase = (DWORD)GetModuleHandleA("i3SceneDx.dll");
if(SceneBase != 0 ){
RenderContext * pRC = *(RenderContext** (SceneBase+0x169834);
for ( int i = 0; i < 80; i++ )
{
Vector2D = W2S(pDevice,D3DXVECTOR3(0,0,0),pRC->pRenderData->WorldView[i],pRC->pRenderData->ProjMatrix);
if(Vector2D.z > 0){
sprintf(szDebug,"%i",i);
//draw string


