_Begin/_End etc work
This commit is contained in:
parent
c1669099c3
commit
03813735fd
|
@ -124,10 +124,12 @@ class VertexPatcher
|
|||
// inline vertex buffer emulation
|
||||
extern DWORD *g_pIVBVertexBuffer;
|
||||
extern X_D3DPRIMITIVETYPE g_IVBPrimitiveType;
|
||||
extern DWORD g_IVBFVF;
|
||||
|
||||
extern struct _D3DIVB
|
||||
{
|
||||
XTL::D3DXVECTOR3 Position; // Position
|
||||
FLOAT Rhw; // Rhw
|
||||
XTL::DWORD dwSpecular; // Specular
|
||||
XTL::DWORD dwDiffuse; // Diffuse
|
||||
XTL::D3DXVECTOR3 Normal; // Normal
|
||||
|
|
|
@ -1628,6 +1628,17 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_CopyRects
|
|||
GetCurrentThreadId(), pSourceSurface, pSourceRectsArray, cRects,
|
||||
pDestinationSurface, pDestPointsArray);
|
||||
|
||||
pSourceSurface->EmuSurface8->UnlockRect();
|
||||
|
||||
/*
|
||||
static int kthx = 0;
|
||||
char fileName[255];
|
||||
|
||||
sprintf(fileName, "C:\\Aaron\\Textures\\SourceSurface-%d.bmp", kthx++);
|
||||
|
||||
D3DXSaveSurfaceToFile(fileName, D3DXIFF_BMP, pSourceSurface->EmuSurface8, NULL, NULL);
|
||||
//*/
|
||||
|
||||
HRESULT hRet = g_pD3DDevice8->CopyRects
|
||||
(
|
||||
pSourceSurface->EmuSurface8,
|
||||
|
@ -3137,31 +3148,10 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_Begin
|
|||
// allocate a max of 32 entries
|
||||
g_IVBTable = (struct XTL::_D3DIVB*)CxbxMalloc(sizeof(XTL::_D3DIVB)*32);
|
||||
g_IVBTblOffs = 0;
|
||||
g_IVBFVF = 0;
|
||||
|
||||
// default values
|
||||
for(int v=0;v<32;v++)
|
||||
{
|
||||
g_IVBTable[v].Position.x = 0;
|
||||
g_IVBTable[v].Position.y = 0;
|
||||
g_IVBTable[v].Position.z = 0;
|
||||
g_IVBTable[v].Normal.x = 0;
|
||||
g_IVBTable[v].Normal.y = 0;
|
||||
g_IVBTable[v].Normal.z = 0;
|
||||
g_IVBTable[v].dwDiffuse = 0x00000000;
|
||||
g_IVBTable[v].dwSpecular = 0x00000000;
|
||||
g_IVBTable[v].TexCoord1.x = 0;
|
||||
g_IVBTable[v].TexCoord1.y = 0;
|
||||
g_IVBTable[v].TexCoord2.x = 0;
|
||||
g_IVBTable[v].TexCoord2.y = 0;
|
||||
g_IVBTable[v].TexCoord3.x = 0;
|
||||
g_IVBTable[v].TexCoord3.y = 0;
|
||||
g_IVBTable[v].TexCoord4.x = 0;
|
||||
g_IVBTable[v].TexCoord4.y = 0;
|
||||
}
|
||||
|
||||
DWORD dwShader = -1;
|
||||
|
||||
g_pD3DDevice8->GetVertexShader(&dwShader);
|
||||
ZeroMemory(g_IVBTable, sizeof(XTL::_D3DIVB)*32);
|
||||
|
||||
g_pIVBVertexBuffer = (DWORD*)CxbxMalloc(sizeof(struct XTL::_D3DIVB)*32);
|
||||
|
||||
|
@ -3198,6 +3188,9 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetVertexData2f
|
|||
return EmuIDirect3DDevice8_SetVertexData4f(Register, a, b, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
static inline DWORD FtoDW(FLOAT f) { return *((DWORD*)&f); }
|
||||
static inline FLOAT DWtoF(DWORD f) { return *((FLOAT*)&f); }
|
||||
|
||||
// ******************************************************************
|
||||
// * func: EmuIDirect3DDevice8_SetVertexData4f
|
||||
// ******************************************************************
|
||||
|
@ -3226,7 +3219,22 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetVertexData4f
|
|||
|
||||
switch(Register)
|
||||
{
|
||||
case 9:
|
||||
case 3: // D3DVSDE_DIFFUSE
|
||||
{
|
||||
int o = g_IVBTblOffs;
|
||||
|
||||
DWORD ca = FtoDW(d) << 24;
|
||||
DWORD cr = FtoDW(a) << 16;
|
||||
DWORD cg = FtoDW(b) << 8;
|
||||
DWORD cb = FtoDW(c) << 0;
|
||||
|
||||
g_IVBTable[o].dwDiffuse = ca | cr | cg | cb;
|
||||
|
||||
g_IVBFVF |= D3DFVF_DIFFUSE;
|
||||
}
|
||||
break;
|
||||
|
||||
case 9: // D3DVSDE_TEXCOORD0
|
||||
{
|
||||
int o = g_IVBTblOffs;
|
||||
|
||||
|
@ -3238,6 +3246,11 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetVertexData4f
|
|||
|
||||
g_IVBTable[o].TexCoord1.x = a;
|
||||
g_IVBTable[o].TexCoord1.y = b;
|
||||
|
||||
if( (g_IVBFVF & D3DFVF_TEXCOUNT_MASK) < D3DFVF_TEX1)
|
||||
{
|
||||
g_IVBFVF |= D3DFVF_TEX1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -3245,8 +3258,8 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetVertexData4f
|
|||
{
|
||||
int o = g_IVBTblOffs;
|
||||
|
||||
// a = (a/320.0f) - 1.0f;
|
||||
// b = (b/240.0f) - 1.0f;
|
||||
a = (a/320.0f) - 1.0f;
|
||||
b = (b/240.0f) - 1.0f;
|
||||
|
||||
g_IVBTable[o].Position.x = a;
|
||||
g_IVBTable[o].Position.y = b;
|
||||
|
@ -3254,6 +3267,8 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetVertexData4f
|
|||
|
||||
g_IVBTblOffs++;
|
||||
|
||||
g_IVBFVF |= D3DFVF_XYZ;
|
||||
|
||||
EmuFlushIVB();
|
||||
}
|
||||
break;
|
||||
|
@ -3267,9 +3282,6 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetVertexData4f
|
|||
return hRet;
|
||||
}
|
||||
|
||||
static inline DWORD FtoDW(FLOAT f) { return *((DWORD*)&f); }
|
||||
static inline FLOAT DWtoF(DWORD f) { return *((FLOAT*)&f); }
|
||||
|
||||
// ******************************************************************
|
||||
// * func: EmuIDirect3DDevice8_SetVertexDataColor
|
||||
// ******************************************************************
|
||||
|
|
|
@ -385,38 +385,12 @@ void XTL::EmuExecutePushBuffer
|
|||
{
|
||||
#endif
|
||||
|
||||
if(!g_bPBSkipPusher)
|
||||
if(!g_bPBSkipPusher && IsValidCurrentShader())
|
||||
{
|
||||
if(IsValidCurrentShader())
|
||||
{
|
||||
//g_pD3DDevice8->SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX0);
|
||||
|
||||
/* these don't help the turok lighting problems :[
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_LIGHTING, FALSE);
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_FOGENABLE, FALSE);
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_NONE);
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_SPECULARENABLE, FALSE);
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_ZVISIBLE, FALSE);
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_RANGEFOGENABLE, FALSE);
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_AMBIENT, RGB(255,125,125));
|
||||
g_pD3DDevice8->SetRenderState(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1);
|
||||
|
||||
D3DMATERIAL8 mtrl;
|
||||
|
||||
ZeroMemory( &mtrl, sizeof(D3DMATERIAL8) );
|
||||
|
||||
mtrl.Diffuse.r = mtrl.Ambient.r = mtrl.Specular.r = 1.0f;
|
||||
mtrl.Diffuse.g = mtrl.Ambient.g = mtrl.Specular.r = 0.0f;
|
||||
mtrl.Diffuse.b = mtrl.Ambient.b = mtrl.Specular.r = 0.0f;
|
||||
mtrl.Diffuse.a = mtrl.Ambient.a = mtrl.Specular.r = 1.0f;
|
||||
|
||||
g_pD3DDevice8->SetMaterial(&mtrl);
|
||||
//*/
|
||||
g_pD3DDevice8->DrawIndexedPrimitive
|
||||
(
|
||||
PCPrimitiveType, 0, /*dwCount*2*/8*1024*1024, 0, PrimitiveCount
|
||||
);
|
||||
}
|
||||
g_pD3DDevice8->DrawIndexedPrimitive
|
||||
(
|
||||
PCPrimitiveType, 0, /*dwCount*2*/8*1024*1024, 0, PrimitiveCount
|
||||
);
|
||||
}
|
||||
|
||||
#ifdef _DEBUG_TRACK_PB
|
||||
|
|
|
@ -49,6 +49,7 @@ XTL::DWORD *XTL::g_pIVBVertexBuffer = 0;
|
|||
XTL::X_D3DPRIMITIVETYPE XTL::g_IVBPrimitiveType = XTL::X_D3DPT_INVALID;
|
||||
UINT XTL::g_IVBTblOffs = 0;
|
||||
struct XTL::_D3DIVB *XTL::g_IVBTable = 0;
|
||||
extern DWORD XTL::g_IVBFVF = 0;
|
||||
|
||||
static unsigned int crctab[256];
|
||||
|
||||
|
@ -937,146 +938,90 @@ bool XTL::VertexPatcher::Restore()
|
|||
|
||||
VOID XTL::EmuFlushIVB()
|
||||
{
|
||||
if((g_IVBPrimitiveType == X_D3DPT_QUADSTRIP) && (g_IVBTblOffs == 4))
|
||||
if((g_IVBPrimitiveType == X_D3DPT_QUADLIST) && (g_IVBTblOffs == 4))
|
||||
{
|
||||
DWORD dwShader = -1;
|
||||
DWORD *pdwVB = g_pIVBVertexBuffer;
|
||||
XTL::EmuUpdateDeferredStates();
|
||||
|
||||
g_pD3DDevice8->GetVertexShader(&dwShader);
|
||||
DWORD *pdwVB = (DWORD*)g_IVBTable;
|
||||
|
||||
UINT uiStride = 0;
|
||||
|
||||
for(int v=0;v<4;v++)
|
||||
{
|
||||
DWORD dwPos = dwShader & D3DFVF_POSITION_MASK;
|
||||
DWORD dwPos = g_IVBFVF & D3DFVF_POSITION_MASK;
|
||||
|
||||
if(dwPos == D3DFVF_XYZRHW)
|
||||
if(dwPos == D3DFVF_XYZ)
|
||||
{
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].Position.x;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].Position.y;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].Position.z;
|
||||
|
||||
uiStride += (sizeof(FLOAT)*3);
|
||||
if(v == 0)
|
||||
{
|
||||
uiStride += (sizeof(FLOAT)*3);
|
||||
}
|
||||
|
||||
DbgPrintf("IVB Position := {%f, %f, %f}\n", g_IVBTable[v].Position.x, g_IVBTable[v].Position.y, g_IVBTable[v].Position.z);
|
||||
}
|
||||
else
|
||||
{
|
||||
EmuCleanup("Unsupported Position Mask (FVF := 0x%.08X)", dwShader);
|
||||
EmuCleanup("Unsupported Position Mask (FVF := 0x%.08X)", g_IVBFVF);
|
||||
}
|
||||
|
||||
if(dwShader & D3DFVF_NORMAL)
|
||||
{
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].Normal.x;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].Normal.y;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].Normal.z;
|
||||
|
||||
uiStride += sizeof(FLOAT)*3;
|
||||
|
||||
DbgPrintf("IVB Normal := {%f, %f, %f}\n", g_IVBTable[v].Normal.x, g_IVBTable[v].Normal.y, g_IVBTable[v].Normal.z);
|
||||
}
|
||||
|
||||
if(dwShader & D3DFVF_DIFFUSE)
|
||||
if(g_IVBFVF & D3DFVF_DIFFUSE)
|
||||
{
|
||||
*(DWORD*)pdwVB++ = g_IVBTable[v].dwDiffuse;
|
||||
|
||||
if(v == 0)
|
||||
{
|
||||
uiStride += sizeof(DWORD);
|
||||
}
|
||||
|
||||
DbgPrintf("IVB Diffuse := 0x%.08X\n", g_IVBTable[v].dwDiffuse);
|
||||
}
|
||||
|
||||
if(dwShader & D3DFVF_SPECULAR)
|
||||
{
|
||||
*(DWORD*)pdwVB++ = g_IVBTable[v].dwSpecular;
|
||||
|
||||
uiStride += sizeof(DWORD);
|
||||
|
||||
DbgPrintf("IVB Specular := 0x%.08X\n", g_IVBTable[v].dwSpecular);
|
||||
}
|
||||
|
||||
DWORD dwTexN = (dwShader & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT;
|
||||
DWORD dwTexN = (g_IVBFVF & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT;
|
||||
|
||||
if(dwTexN >= 1)
|
||||
{
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord1.x;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord1.y;
|
||||
|
||||
uiStride += sizeof(FLOAT)*2;
|
||||
if(v == 0)
|
||||
{
|
||||
uiStride += sizeof(FLOAT)*2;
|
||||
}
|
||||
|
||||
DbgPrintf("IVB TexCoord1 := {%f, %f}\n", g_IVBTable[v].TexCoord1.x, g_IVBTable[v].TexCoord1.y);
|
||||
}
|
||||
|
||||
if(dwTexN >= 2)
|
||||
{
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord2.x;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord2.y;
|
||||
|
||||
uiStride += sizeof(FLOAT)*2;
|
||||
|
||||
DbgPrintf("IVB TexCoord2 := {%f, %f}\n", g_IVBTable[v].TexCoord2.x, g_IVBTable[v].TexCoord2.y);
|
||||
}
|
||||
|
||||
if(dwTexN >= 3)
|
||||
{
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord3.x;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord3.y;
|
||||
|
||||
uiStride += sizeof(FLOAT)*2;
|
||||
|
||||
DbgPrintf("IVB TexCoord3 := {%f, %f}\n", g_IVBTable[v].TexCoord3.x, g_IVBTable[v].TexCoord3.y);
|
||||
}
|
||||
|
||||
if(dwTexN >= 4)
|
||||
{
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord4.x;
|
||||
*(FLOAT*)pdwVB++ = g_IVBTable[v].TexCoord4.y;
|
||||
|
||||
uiStride += sizeof(FLOAT)*2;
|
||||
|
||||
DbgPrintf("IVB TexCoord4 := {%f, %f}\n", g_IVBTable[v].TexCoord4.x, g_IVBTable[v].TexCoord4.y);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
static XTL::IDirect3DTexture8 *pTexture = 0;
|
||||
g_pD3DDevice8->SetVertexShader(g_IVBFVF);
|
||||
g_pD3DDevice8->SetPixelShader(NULL);
|
||||
|
||||
if(pTexture == 0)
|
||||
{
|
||||
g_pD3DDevice8->CreateTexture(512, 512, 1, 0, D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, &pTexture);
|
||||
// patch buffer
|
||||
UINT PrimitiveCount = EmuD3DVertex2PrimitiveCount(g_IVBPrimitiveType, 4);
|
||||
|
||||
IDirect3DSurface8 *pSurface = 0;;
|
||||
VertexPatchDesc VPDesc;
|
||||
|
||||
pTexture->GetSurfaceLevel(0, &pSurface);
|
||||
VPDesc.dwVertexCount = 4;
|
||||
VPDesc.PrimitiveType = g_IVBPrimitiveType;
|
||||
VPDesc.dwPrimitiveCount = PrimitiveCount;
|
||||
VPDesc.dwOffset = 0;
|
||||
VPDesc.pVertexStreamZeroData = g_IVBTable;
|
||||
VPDesc.uiVertexStreamZeroStride = uiStride;
|
||||
// TODO: Set the current shader and let the patcher handle it..
|
||||
VPDesc.hVertexShader = g_IVBFVF;
|
||||
|
||||
D3DXLoadSurfaceFromFileA(pSurface, NULL, NULL, "C:\\texture.bmp", NULL, D3DX_FILTER_NONE, 0, NULL);
|
||||
VertexPatcher VertPatch;
|
||||
|
||||
pSurface->Release();
|
||||
}
|
||||
bool bPatched = VertPatch.Apply(&VPDesc);
|
||||
|
||||
g_pD3DDevice8->SetTexture(0, pTexture);
|
||||
//*/
|
||||
g_pD3DDevice8->DrawPrimitiveUP(D3DPT_TRIANGLELIST, VPDesc.dwPrimitiveCount, VPDesc.pVertexStreamZeroData, VPDesc.uiVertexStreamZeroStride);
|
||||
|
||||
/*
|
||||
IDirect3DBaseTexture8 *pTexture = 0;
|
||||
|
||||
g_pD3DDevice8->GetTexture(0, &pTexture);
|
||||
|
||||
if(pTexture != NULL)
|
||||
{
|
||||
static int dwDumpTexture = 0;
|
||||
|
||||
char szBuffer[255];
|
||||
|
||||
sprintf(szBuffer, "C:\\Aaron\\Textures\\Texture-Active%.03d.bmp", dwDumpTexture++);
|
||||
|
||||
D3DXSaveTextureToFile(szBuffer, D3DXIFF_BMP, pTexture, NULL);
|
||||
}
|
||||
//*/
|
||||
|
||||
XTL::EmuUpdateDeferredStates();
|
||||
|
||||
g_pD3DDevice8->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, g_pIVBVertexBuffer, uiStride);
|
||||
|
||||
g_pD3DDevice8->Present(0,0,0,0);
|
||||
VertPatch.Restore();
|
||||
|
||||
// ignore
|
||||
g_IVBTblOffs = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -726,6 +726,9 @@ BOOL WINAPI XTL::EmuSetThreadPriority
|
|||
if(bRet == FALSE)
|
||||
EmuWarning("SetThreadPriority Failed!");
|
||||
|
||||
// HACK!
|
||||
Sleep(10);
|
||||
|
||||
EmuSwapFS(); // XBox FS
|
||||
|
||||
return bRet;
|
||||
|
|
|
@ -493,6 +493,29 @@ SOOVPA<12> IDirect3DDevice8_SetShaderConstantMode_1_0_4627 =
|
|||
}
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * IDirect3DDevice8_CopyRects
|
||||
// ******************************************************************
|
||||
SOOVPA<8> IDirect3DDevice8_CopyRects_1_0_4627 =
|
||||
{
|
||||
0, // Large == 0
|
||||
8, // Count == 8
|
||||
|
||||
-1, // XRef Not Saved
|
||||
0, // XRef Not Used
|
||||
|
||||
{
|
||||
{ 0x1E, 0x57 },
|
||||
{ 0x3E, 0xF6 },
|
||||
{ 0x5E, 0x00 },
|
||||
{ 0x7E, 0x01 },
|
||||
{ 0x9E, 0x00 },
|
||||
{ 0xBE, 0x0C },
|
||||
{ 0xDE, 0xF7 },
|
||||
{ 0xFE, 0x00 },
|
||||
}
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * IDirect3DDevice8_GetBackBuffer2
|
||||
// ******************************************************************
|
||||
|
@ -3013,6 +3036,16 @@ OOVPATable D3D8_1_0_4627[] =
|
|||
"EmuIDirect3D8_KickOffAndWaitForIdle2"
|
||||
#endif
|
||||
},
|
||||
// IDirect3DDevice8::CopyRects
|
||||
{
|
||||
(OOVPA*)&IDirect3DDevice8_CopyRects_1_0_4627,
|
||||
|
||||
XTL::EmuIDirect3DDevice8_CopyRects,
|
||||
|
||||
#ifdef _DEBUG_TRACE
|
||||
"EmuIDirect3DDevice8_CopyRects"
|
||||
#endif
|
||||
},
|
||||
// IDirect3DDevice8::GetBackBuffer2
|
||||
{
|
||||
(OOVPA*)&IDirect3DDevice8_GetBackBuffer2_1_0_4627,
|
||||
|
|
|
@ -237,6 +237,72 @@ SOOVPA<7> IDirect3DDevice8_SetPixelShader_1_0_5849 =
|
|||
}
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * IDirect3DDevice8_SetVertexData4f
|
||||
// ******************************************************************
|
||||
SOOVPA<17> IDirect3DDevice8_SetVertexData4f_1_0_5849 =
|
||||
{
|
||||
0, // Large == 0
|
||||
7, // Count == 7
|
||||
|
||||
-1, // XRef Not Saved
|
||||
0, // XRef Not Used
|
||||
|
||||
{
|
||||
{ 0x0A, 0x46 },
|
||||
{ 0x16, 0x08 },
|
||||
{ 0x22, 0x09 },
|
||||
{ 0x2E, 0x24 },
|
||||
{ 0x3A, 0x24 },
|
||||
{ 0x46, 0x8B },
|
||||
{ 0x52, 0x14 },
|
||||
}
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * IDirect3DDevice8_SetVertexDataColor
|
||||
// ******************************************************************
|
||||
SOOVPA<17> IDirect3DDevice8_SetVertexDataColor_1_0_5849 =
|
||||
{
|
||||
0, // Large == 0
|
||||
7, // Count == 7
|
||||
|
||||
-1, // XRef Not Saved
|
||||
0, // XRef Not Used
|
||||
|
||||
{
|
||||
{ 0x08, 0x06 },
|
||||
{ 0x14, 0x8B },
|
||||
{ 0x1C, 0x19 },
|
||||
{ 0x26, 0xB6 },
|
||||
{ 0x30, 0x00 },
|
||||
{ 0x3A, 0xFF },
|
||||
{ 0x44, 0x08 },
|
||||
}
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * IDirect3DDevice8_End
|
||||
// ******************************************************************
|
||||
SOOVPA<17> IDirect3DDevice8_End_1_0_5849 =
|
||||
{
|
||||
0, // Large == 0
|
||||
7, // Count == 7
|
||||
|
||||
-1, // XRef Not Saved
|
||||
0, // XRef Not Used
|
||||
|
||||
{
|
||||
{ 0x07, 0x8B },
|
||||
{ 0x13, 0xC7 },
|
||||
{ 0x19, 0xC7 },
|
||||
{ 0x22, 0x08 },
|
||||
{ 0x2B, 0xE1 },
|
||||
{ 0x34, 0x4E },
|
||||
{ 0x40, 0xC3 },
|
||||
}
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * IDirect3DDevice8_SetRenderState_CullMode
|
||||
// ******************************************************************
|
||||
|
@ -646,9 +712,9 @@ OOVPATable D3D8_1_0_5849[] =
|
|||
"EmuIDirect3DDevice8_SetVertexData2f"
|
||||
#endif
|
||||
},
|
||||
// IDirect3DDevice8::SetVertexData4f (* unchanged since 4627 *)
|
||||
// IDirect3DDevice8::SetVertexData4f
|
||||
{
|
||||
(OOVPA*)&IDirect3DDevice8_SetVertexData4f_1_0_4627,
|
||||
(OOVPA*)&IDirect3DDevice8_SetVertexData4f_1_0_5849,
|
||||
|
||||
XTL::EmuIDirect3DDevice8_SetVertexData4f,
|
||||
|
||||
|
@ -656,6 +722,26 @@ OOVPATable D3D8_1_0_5849[] =
|
|||
"EmuIDirect3DDevice8_SetVertexData4f"
|
||||
#endif
|
||||
},
|
||||
// IDirect3DDevice8::SetVertexDataColor
|
||||
{
|
||||
(OOVPA*)&IDirect3DDevice8_SetVertexDataColor_1_0_5849,
|
||||
|
||||
XTL::EmuIDirect3DDevice8_SetVertexDataColor,
|
||||
|
||||
#ifdef _DEBUG_TRACE
|
||||
"EmuIDirect3DDevice8_SetVertexDataColor"
|
||||
#endif
|
||||
},
|
||||
// IDirect3DDevice8::End
|
||||
{
|
||||
(OOVPA*)&IDirect3DDevice8_End_1_0_5849,
|
||||
|
||||
XTL::EmuIDirect3DDevice8_End,
|
||||
|
||||
#ifdef _DEBUG_TRACE
|
||||
"EmuIDirect3DDevice8_End"
|
||||
#endif
|
||||
},
|
||||
// IDirect3DDevice8::SetTextureState_TexCoordIndex (* unchanged since 4627 *)
|
||||
{
|
||||
(OOVPA*)&IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4627,
|
||||
|
|
Loading…
Reference in New Issue