@@ -4239,15 +4239,23 @@ OOVPA_SIG_MATCH(
42394239OOVPA_SIG_HEADER_NO_XREF (D3DDevice_SetTextureState_ColorKeyColor,
42404240 3911 )
42414241OOVPA_SIG_MATCH (
4242+ // push esi
4243+ OV_MATCH (0x00 , 0x56 ),
42424244
4243- { 0x00 , 0x56 },
4244- { 0x07 , 0x56 },
4245- { 0x0D , 0x8B },
4246- { 0x13 , 0x8D },
4247- { 0x1A , 0x8B },
4248- { 0x21 , 0x83 },
4249- { 0x28 , 0x07 },
4250- { 0x2F , 0x5E },
4245+ // mov e??, [esp + param_1]
4246+ OV_MATCH (0x0D , 0x8B ),
4247+ OV_MATCH (0x0F , 0x24 , 0x08 ),
4248+ // lea e??, [e?? * 0x04 + 0x40AE0] // 0x40AE0 is a reliable hardcoded value across all builds.
4249+ OV_MATCH (0x11 , 0x8D ),
4250+ OV_MATCH (0x14 , 0xE0 , 0x0A , 0x04 , 0x00 ),
4251+
4252+ // mov e??, [esp + param_2]
4253+ OV_MATCH (0x1A , 0x8B ),
4254+ OV_MATCH (0x1C , 0x24 , 0x0C ),
4255+
4256+ // This is an optional OV pair to tell the difference from the (symbol)_(LTCG variant) signature.
4257+ // retn 0x08
4258+ OV_MATCH (0x30 , 0xC2 , 0x08 ),
42514259 //
42524260);
42534261
@@ -5174,17 +5182,16 @@ OOVPA_SIG_MATCH(
51745182OOVPA_SIG_HEADER_NO_XREF (D3D_BlockOnResource,
51755183 3911 )
51765184OOVPA_SIG_MATCH (
5185+ // mov eax, [D3D_g_pDevice]
5186+ OV_MATCH (0x00 , 0xA1 ),
51775187
5178- { 0x00 , 0xA1 },
5179- { 0x34 , 0x8B }, // mov edx, [ecx+0x1C]
5180- { 0x35 , 0x51 },
5181- { 0x36 , 0x1C },
5182- { 0x41 , 0xC2 }, // retn 4
5183- { 0x42 , 0x04 },
5184- { 0x43 , 0x00 },
5185- { 0x7E , 0xC2 }, // retn 4
5186- { 0x7F , 0x04 },
5187- { 0x80 , 0x00 },
5188+ // mov esi, [esp + param_1]
5189+ OV_MATCH (0x0A , 0x8B , 0x74 , 0x24 , 0x08 ),
5190+
5191+ // and eax, 0x70000
5192+ OV_MATCH (0x10 , 0x25 , 0x00 , 0x00 , 0x07 , 0x00 ),
5193+ // cmp eax, 0x50000
5194+ OV_MATCH (0x15 , 0x3D , 0x00 , 0x00 , 0x05 , 0x00 ),
51885195 //
51895196);
51905197
@@ -6028,3 +6035,29 @@ OOVPA_SIG_MATCH(
60286035 OV_MATCH (0x2C , 0x24 ),
60296036 //
60306037);
6038+
6039+ // ******************************************************************
6040+ // * D3DDevice_SetTextureState_Deferred
6041+ // ******************************************************************
6042+ // Generic OOVPA as of 3911 and newer.
6043+ OOVPA_SIG_HEADER_XREF (D3DDevice_SetTextureState_Deferred,
6044+ 3911 ,
6045+ XRefOne)
6046+ OOVPA_SIG_MATCH (
6047+ // mov [ecx * 0x04 + D3D_g_DeferredTextureState],edx
6048+ XREF_ENTRY (0x22 , XREF_D3D_g_DeferredTextureState),
6049+
6050+ // mov eax, [edx * 0x04 + ????]
6051+ OV_MATCH (0x00 , 0x8B , 0x04 , 0x95 ),
6052+
6053+ // shl param_1, 0x05
6054+ OV_MATCH (0x0E , 0xC1 , 0xE1 , 0x05 ),
6055+
6056+ // add param_1, param_2
6057+ // mov edx, [esp + param_3]
6058+ OV_MATCH (0x13 , 0x03 , 0xCA , 0x8B , 0x54 , 0x24 , 0x08 ),
6059+
6060+ // mov [ecx * 0x04 + D3D_g_DeferredTextureState], edx
6061+ OV_MATCH (0x1F , 0x89 , 0x14 , 0x8D ),
6062+ //
6063+ );
0 commit comments