Improved D3DDevice_SetRenderState_MultiSampleRenderTargetMode OOVPA
Fix Smashing Drive regression.
This commit is contained in:
parent
660c4483b0
commit
7ea73aa763
|
@ -1503,13 +1503,14 @@ OOVPA_END;
|
|||
// ******************************************************************
|
||||
// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode
|
||||
// ******************************************************************
|
||||
// Generic OOVPA as of 4034 and newer.
|
||||
#ifndef WIP_LessVertexPatching
|
||||
OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034, 1+8,
|
||||
OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034, 1+10,
|
||||
|
||||
XRefNoSaveIndex,
|
||||
XRefOne)
|
||||
#else
|
||||
OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034, 2+8,
|
||||
OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034, 2+10,
|
||||
|
||||
XRefNoSaveIndex,
|
||||
XRefTwo)
|
||||
|
@ -1520,25 +1521,25 @@ OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4034, 2+8,
|
|||
XREF_ENTRY( 0x11, XREF_OFFSET_D3DDEVICE_M_RENDERTARGET ), // Derived
|
||||
#endif
|
||||
|
||||
// D3DDevice_SetRenderState_MultiSampleRenderTargetMode+0x0F : mov ecx, [eax+0x21F0]
|
||||
{ 0x00, 0x8B },
|
||||
//{ 0x01, 0x4C },
|
||||
{ 0x02, 0x24 },
|
||||
{ 0x03, 0x04 },
|
||||
|
||||
{ 0x0F, 0x8B },
|
||||
{ 0x10, 0x88 },
|
||||
// { 0x11, 0xF0 }, // disabled. part of an offset
|
||||
// { 0x12, 0x21 },
|
||||
|
||||
// D3DDevice_SetRenderState_MultiSampleRenderTargetMode+0x15 : cmp ecx, [eax+0x21FC]
|
||||
//{ 0x10, 0x88 },
|
||||
//{ 0x11, 0x70 },
|
||||
//{ 0x12, 0x20 },
|
||||
{ 0x13, 0x00 },
|
||||
{ 0x14, 0x00 },
|
||||
{ 0x15, 0x3B },
|
||||
{ 0x16, 0x88 },
|
||||
// { 0x17, 0xFC }, // disabled. part of an offset
|
||||
// { 0x18, 0x21 },
|
||||
|
||||
// D3DDevice_SetRenderState_MultiSampleRenderTargetMode+0x1B : jz +0x0D
|
||||
{ 0x1B, 0x74 },
|
||||
{ 0x1C, 0x0D },
|
||||
|
||||
// D3DDevice_SetRenderState_MultiSampleRenderTargetMode+0x2A : retn 0x04
|
||||
{ 0x2A, 0xC2 },
|
||||
{ 0x2B, 0x04 },
|
||||
//{ 0x16, 0x88 },
|
||||
//{ 0x17, 0x7C },
|
||||
//{ 0x18, 0x20 },
|
||||
{ 0x19, 0x00 },
|
||||
{ 0x1A, 0x00 },
|
||||
{ 0x1B, 0x74 }, // MultiSampleRenderTargetMode 0x74 vs MultiSampleMode 0x75
|
||||
//{ 0x1C, 0x0D },
|
||||
OOVPA_END;
|
||||
|
||||
// ******************************************************************
|
||||
|
|
|
@ -1528,30 +1528,6 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 4627, 8)
|
|||
{ 0x31, 0xC2 },
|
||||
OOVPA_END;
|
||||
|
||||
// ******************************************************************
|
||||
// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode
|
||||
// ******************************************************************
|
||||
OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, 1+10,
|
||||
|
||||
XRefNoSaveIndex,
|
||||
XRefOne)
|
||||
|
||||
XREF_ENTRY( 0x0B, XREF_D3DRS_MULTISAMPLERENDERTARGETMODE ), // Derived
|
||||
|
||||
{ 0x03, 0x04 },
|
||||
|
||||
{ 0x19, 0x00 },
|
||||
{ 0x1A, 0x00 },
|
||||
{ 0x1B, 0x74 },
|
||||
{ 0x1C, 0x14 },
|
||||
{ 0x1D, 0x8D },
|
||||
{ 0x1E, 0x90 },
|
||||
{ 0x1F, 0x90 },
|
||||
{ 0x20, 0x0A },
|
||||
|
||||
{ 0x31, 0xC2 },
|
||||
OOVPA_END;
|
||||
|
||||
// ******************************************************************
|
||||
// * D3DDevice_ApplyStateBlock
|
||||
// ******************************************************************
|
||||
|
|
|
@ -68,25 +68,6 @@ OOVPA_XREF(D3DDevice_SetLight, 5344, 15,
|
|||
{ 0x100, 0x02 },
|
||||
OOVPA_END;
|
||||
|
||||
// ******************************************************************
|
||||
// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode
|
||||
// ******************************************************************
|
||||
OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 5344, 1+7,
|
||||
|
||||
XRefNoSaveIndex,
|
||||
XRefOne)
|
||||
|
||||
XREF_ENTRY( 0x0B, XREF_D3DRS_MULTISAMPLERENDERTARGETMODE ), // Derived
|
||||
|
||||
{ 0x03, 0x04 },
|
||||
{ 0x0F, 0x8B },
|
||||
{ 0x15, 0x3B },
|
||||
{ 0x1C, 0x07 }, // **
|
||||
{ 0x1D, 0x33 }, // **
|
||||
{ 0x1F, 0xE8 }, // **
|
||||
{ 0x25, 0x04 }, // **
|
||||
OOVPA_END;
|
||||
|
||||
// ******************************************************************
|
||||
// * D3DDevice_SetRenderState_TwoSidedLighting
|
||||
// ******************************************************************
|
||||
|
|
|
@ -327,7 +327,7 @@ OOVPATable D3D8_OOVPAV2[] = {
|
|||
REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleAntiAlias, PATCH, 3911, 4034, 4627),
|
||||
REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleMask, PATCH, 3911, 4034, 4627),
|
||||
REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleMode, PATCH, 3925, 4034, 4134, 4627, 5233),
|
||||
REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, PATCH, 4034, 4627, 5344), // Was 5233 (from 5344's comment)
|
||||
REGISTER_OOVPAS(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, PATCH, 4034), // Was 5233 (from 5344's comment)
|
||||
REGISTER_OOVPAS(D3DDevice_SetRenderState_NormalizeNormals, PATCH, 3911, 4034),
|
||||
REGISTER_OOVPAS(D3DDevice_SetRenderState_OcclusionCullEnable, PATCH, 3911, 4034),
|
||||
REGISTER_OOVPAS(D3DDevice_SetRenderState_PSTextureModes, PATCH, 3911, 4034),
|
||||
|
|
|
@ -474,7 +474,7 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
|
|||
patchOffset -= Increment;
|
||||
|
||||
// Derive address of a few other deferred render state slots (to help xref-based function location)
|
||||
XRefDataBase[XREF_D3DRS_MULTISAMPLERENDERTARGETMODE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset - 7*4;
|
||||
XRefDataBase[XREF_D3DRS_MULTISAMPLERENDERTARGETMODE] = (xbaddr)DerivedAddr_D3DRS_CULLMODE + 8*4;
|
||||
XRefDataBase[XREF_D3DRS_STENCILCULLENABLE] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 0*4;
|
||||
XRefDataBase[XREF_D3DRS_ROPZCMPALWAYSREAD] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 1*4;
|
||||
XRefDataBase[XREF_D3DRS_ROPZREAD] = (xbaddr)XTL::EmuD3DDeferredRenderState + patchOffset + 2*4;
|
||||
|
|
Loading…
Reference in New Issue