diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl index 8122399ef..268ed4f9c 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl @@ -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; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl index 174d98fca..e1a961f1c 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl @@ -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 // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl index 87b2307a2..59fabfa89 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl @@ -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 // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/D3D8.OOVPA.inl index 89f795638..df6495484 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.OOVPA.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.OOVPA.inl @@ -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), diff --git a/src/CxbxKrnl/HLEIntercept.cpp b/src/CxbxKrnl/HLEIntercept.cpp index 88fea6743..3a53ab62a 100644 --- a/src/CxbxKrnl/HLEIntercept.cpp +++ b/src/CxbxKrnl/HLEIntercept.cpp @@ -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;