@@ -5003,30 +5003,24 @@ OOVPA_SIG_MATCH(
50035003// ******************************************************************
50045004// * D3DDevice_Reset
50055005// ******************************************************************
5006- OOVPA_SIG_HEADER_NO_XREF (D3DDevice_Reset,
5007- 3911 )
5006+ // Generic OOVPA as of 3911 and newer
5007+ OOVPA_SIG_HEADER_XREF (D3DDevice_Reset,
5008+ 3911 ,
5009+ XRefOne)
50085010OOVPA_SIG_MATCH (
5011+ // call CDevice::FreeFrameBuffers
5012+ XREF_ENTRY (0x23 , XREF_D3D_CDevice_FreeFrameBuffers),
50095013
5010- // D3DDevice_Reset+0x00 : push ebx
5011- { 0x00 , 0x53 },
5012-
5013- // D3DDevice_Reset+0x15 : mov ecx, ebp
5014- { 0x15 , 0x8B },
5015- { 0x16 , 0xCD },
5016-
5017- // D3DDevice_Reset+0x1E : jnz +0xF5
5018- { 0x1E , 0x75 },
5019- { 0x1F , 0xF5 },
5014+ // push ebx
5015+ OV_MATCH (0x00 , 0x53 ),
50205016
5021- // D3DDevice_Reset+0x27 : mov esi, [esp+0x14]
5022- { 0x27 , 0x8B },
5023- { 0x28 , 0x74 },
5024- { 0x29 , 0x24 },
5025- { 0x2A , 0x14 },
5017+ // jnz +0xF5
5018+ OV_MATCH (0x1E , 0x75 , 0xF5 ),
50265019
5027- // D3DDevice_Reset+0x37 : jge +0x10
5028- { 0x37 , 0x7D },
5029- { 0x38 , 0x10 },
5020+ // call CDevice::FreeFrameBuffers
5021+ OV_MATCH (0x22 , 0xE8 ),
5022+ // mov esi, [esp + param_1]
5023+ OV_MATCH (0x27 , 0x8B , 0x74 , 0x24 , 0x14 ),
50305024 //
50315025);
50325026
@@ -5944,3 +5938,62 @@ OOVPA_SIG_MATCH(
59445938 OV_MATCH (0x0D , 0xC3 ),
59455939 //
59465940);
5941+
5942+ // ******************************************************************
5943+ // * D3D::CDevice::FreeFrameBuffers
5944+ // ******************************************************************
5945+ OOVPA_SIG_HEADER_XREF (CDevice_FreeFrameBuffers,
5946+ 3911 ,
5947+ XRefTwo)
5948+ OOVPA_SIG_MATCH (
5949+ // call [AvGetSavedDataAddress]
5950+ XREF_ENTRY (0x08 , XREF_KT_FUNC_AvGetSavedDataAddress),
5951+ // call [AvSendTVEncoderOption]
5952+ XREF_ENTRY (0x20 , XREF_KT_FUNC_AvSendTVEncoderOption),
5953+
5954+ // push ebx
5955+ // push ebp
5956+ // push esi
5957+ // push edi
5958+ OV_MATCH (0x00 , 0x53 , 0x55 , 0x56 , 0x57 ),
5959+ // mov esi, ecx
5960+ // call [AvGetSavedDataAddress]
5961+ OV_MATCH (0x04 , 0x8B , 0xF1 , 0xFF , 0x15 ),
5962+
5963+ // call [AvSendTVEncoderOption]
5964+ OV_MATCH (0x1E , 0xFF , 0x15 ),
5965+
5966+ // push edx
5967+ // call ????
5968+ OV_MATCH (0x6E , 0x52 , 0xE8 ),
5969+ // mov [esi + 0x????], ebp
5970+ OV_MATCH (0x74 , 0x89 , 0xAE ),
5971+
5972+ // cmp [esi + 0x????], ebp
5973+ OV_MATCH (0x7A , 0x39 , 0xAE ),
5974+ //
5975+ );
5976+
5977+ // ******************************************************************
5978+ // * D3D::CDevice::InitializeFrameBuffers
5979+ // ******************************************************************
5980+ // Generic OOVPA as of 3911 and newer.
5981+ OOVPA_SIG_HEADER_NO_XREF (CDevice_InitializeFrameBuffers,
5982+ 3911 )
5983+ OOVPA_SIG_MATCH (
5984+ // sub esp, 0x??
5985+ OV_MATCH (0x00 , 0x83 , 0xEC ),
5986+
5987+ // jc +4
5988+ // mov [esp + 0x??], eax
5989+ OV_MATCH (0x1B , 0x72 , 0x04 , 0x89 , 0x44 , 0x24 ),
5990+
5991+ // push eax
5992+ // call ????
5993+ OV_MATCH (0x24 , 0x50 , 0xE8 ),
5994+
5995+ // mov e??, [e?? + 0x24]
5996+ OV_MATCH (0x2A , 0x8B ),
5997+ OV_MATCH (0x2C , 0x24 ),
5998+ //
5999+ );
0 commit comments