EndPush, etc

This commit is contained in:
Aaron Robinson 2004-05-15 22:59:27 +00:00
parent c761bfd6b8
commit d6613887db
8 changed files with 72 additions and 5 deletions

BIN
Cxbx.opt

Binary file not shown.

View File

@ -63,10 +63,10 @@ typedef signed long sint32;
//#define _DEBUG_ALLOC
// define this to trace intercepted function calls
//#define _DEBUG_TRACE
#define _DEBUG_TRACE
// define this to trace warnings
//#define _DEBUG_WARNINGS
#define _DEBUG_WARNINGS
// version information
#ifndef _DEBUG_TRACE

View File

@ -98,6 +98,11 @@ VOID WINAPI EmuIDirect3DDevice8_GetDeviceCaps
// ******************************************************************
PDWORD WINAPI EmuIDirect3DDevice8_BeginPush(DWORD Count);
// ******************************************************************
// * func: EmuIDirect3DDevice8_EndPush
// ******************************************************************
VOID WINAPI EmuIDirect3DDevice8_EndPush(DWORD *pPush);
// ******************************************************************
// * func: EmuIDirect3DDevice8_BeginVisibilityTest
// ******************************************************************

View File

@ -101,7 +101,8 @@ extern bool bXRefFirstPass;
// ******************************************************************
enum XRefDataBaseOffset
{
XREF_DXSRSCULLMODE=0,
XREF_D3DDEVICE=0,
XREF_DXSRSCULLMODE,
XREF_D3DRS_ROPZCMPALWAYSREAD,
XREF_D3DRS_ROPZREAD,
XREF_D3DRS_DONOTCULLUNCOMPRESSED,

View File

@ -516,6 +516,7 @@ extern "C" CXBXKRNL_API void NTAPI EmuInit
patchOffset = 162*4 - 92*4;
}
XRefDataBase[XREF_D3DDEVICE] = *(DWORD*)((DWORD)pFunc + 0x03);
XRefDataBase[XREF_D3DRS_STENCILCULLENABLE] = (uint32)XTL::EmuD3DDeferredRenderState + patchOffset + 0*4;
XRefDataBase[XREF_D3DRS_ROPZCMPALWAYSREAD] = (uint32)XTL::EmuD3DDeferredRenderState + patchOffset + 1*4;
XRefDataBase[XREF_D3DRS_ROPZREAD] = (uint32)XTL::EmuD3DDeferredRenderState + patchOffset + 2*4;

View File

@ -1123,13 +1123,34 @@ PDWORD WINAPI XTL::EmuIDirect3DDevice8_BeginPush(DWORD Count)
DbgPrintf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_BeginPush(%d);\n", GetCurrentThreadId(), Count);
EmuCleanup("_BeginPush(...) is not yet implemented\n");
DWORD *pRet = new DWORD[Count];
EmuSwapFS(); // XBox FS
return NULL;
return pRet;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_EndPush
// ******************************************************************
VOID WINAPI XTL::EmuIDirect3DDevice8_EndPush(DWORD *pPush)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_EndPush(0x%.08X);\n", GetCurrentThreadId(), pPush);
// TODO: Delete push buffer??
EmuSwapFS(); // XBox FS
return;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_EndPush
// ******************************************************************
VOID WINAPI EmuIDirect3DDevice8_EndPush(DWORD *pPush);
// ******************************************************************
// * func: EmuIDirect3DDevice8_BeginVisibilityTest
// ******************************************************************

View File

@ -258,6 +258,7 @@ extern uint32 HLEDataBaseSize = sizeof(HLEDataBase);
// ******************************************************************
extern uint32 XRefDataBase[] =
{
-1, // XREF_D3DDEVICE
-1, // XREF_DXSRSCULLMODE
-1, // XREF_D3DRS_ROPZCMPALWAYSREAD
-1, // XREF_D3DRS_ROPZREAD

View File

@ -91,6 +91,34 @@ SOOVPA<10> IDirect3DDevice8_BeginPush_1_0_5558 =
}
};
// ******************************************************************
// * IDirect3DDevice8_EndPush
// ******************************************************************
SOOVPA<12> IDirect3DDevice8_EndPush_1_0_5558 =
{
0, // Large == 0
12, // Count == 10
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x06, XREF_D3DDEVICE }, // 1
{ 0x00, 0x8B }, // 2
{ 0x01, 0x44 }, // 3
{ 0x02, 0x24 }, // 4
{ 0x03, 0x04 }, // 5
{ 0x04, 0x8B }, // 6
{ 0x05, 0x0D }, // 7
{ 0x0A, 0x89 }, // 8
{ 0x0B, 0x01 }, // 9
{ 0x0C, 0xC2 }, // 10
{ 0x0D, 0x04 }, // 11
{ 0x0E, 0x00 }, // 12
}
};
// ******************************************************************
// * IDirect3DDevice8_LoadVertexShader
// ******************************************************************
@ -748,6 +776,16 @@ OOVPATable D3D8_1_0_5558[] =
"EmuIDirect3DDevice8_BeginPush"
#endif
},
// IDirect3DDevice8::EndPush
{
(OOVPA*)&IDirect3DDevice8_EndPush_1_0_5558,
XTL::EmuIDirect3DDevice8_EndPush,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_EndPush"
#endif
},
// D3DDevice_RunVertexStateShader (* unchanged since 4627 *)
{
(OOVPA*)&X_D3DDevice_RunVertexStateShader_1_0_4627,