Skip to content

Commit caf8924

Browse files
committed
d3d8ltcg: update D3DDevice_SetTextureState_ColorKeyColor signatures
Updated: - 1036 to 4432 - 1024 to 5788
1 parent c12659d commit caf8924

3 files changed

Lines changed: 46 additions & 20 deletions

File tree

src/OOVPADatabase/D3D8LTCG/4432.inl

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -287,19 +287,32 @@ OOVPA_SIG_MATCH(
287287
// ******************************************************************
288288
// * D3DDevice_SetTextureState_ColorKeyColor
289289
// ******************************************************************
290-
//E00A040089
291290
OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor,
292-
1036)
291+
4432)
293292
OOVPA_SIG_MATCH(
293+
// push esi
294+
OV_MATCH(0x00, 0x56),
294295

295-
{ 0x01, 0x8B },
296-
{ 0x1D, 0x4C },
296+
// mov eax, [e??]
297+
OV_MATCH(0x07, 0x8B),
298+
// cmp eax, [esi + 0x04]
299+
// jne +0x0E
300+
OV_MATCH(0x09, 0x3B, 0x46, 0x04, 0x72, 0x0E),
301+
302+
// mov e??, [esp + param_1]
303+
OV_MATCH(0x1C, 0x8B),
304+
OV_MATCH(0x1E, 0x24, 0x08),
305+
// lea e??, [e?? * 0x04 + 0x40AE0] // 0x40AE0 is a reliable hardcoded value across all builds.
306+
OV_MATCH(0x20, 0x8D),
307+
OV_MATCH(0x23, 0xE0, 0x0A, 0x04, 0x00),
308+
309+
// mov e??, [esp + param_2]
310+
OV_MATCH(0x29, 0x8B),
311+
OV_MATCH(0x2B, 0x24, 0x0C),
297312

298-
{ 0x23, 0xE0 },
299-
{ 0x24, 0x0A },
300-
{ 0x25, 0x04 },
301-
{ 0x26, 0x00 },
302-
{ 0x27, 0x89 },
313+
// This is an optional OV pair to tell the difference from the (symbol)_(LTCG variant) signature.
314+
// retn 0x08
315+
OV_MATCH(0x3F, 0xC2, 0x08),
303316
//
304317
);
305318

src/OOVPADatabase/D3D8LTCG/5788.inl

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -462,20 +462,33 @@ OOVPA_SIG_MATCH(
462462
// ******************************************************************
463463
// * D3DDevice_SetTextureState_ColorKeyColor
464464
// ******************************************************************
465-
//E00A040089
465+
// Generic OOVPA as of 5788 and newer
466466
OOVPA_SIG_HEADER_NO_XREF(D3DDevice_SetTextureState_ColorKeyColor,
467-
1024)
467+
5788)
468468
OOVPA_SIG_MATCH(
469+
// push esi
470+
OV_MATCH(0x00, 0x56),
469471

470-
{ 0x01, 0x8B },
471-
{ 0x18, 0xE8 },
472-
{ 0x1E, 0x4C },
472+
// mov eax, [e??]
473+
OV_MATCH(0x07, 0x8B),
474+
// cmp eax, [esi + 0x04]
475+
// jne +0x0F
476+
OV_MATCH(0x09, 0x3B, 0x46, 0x04, 0x72, 0x0F),
477+
478+
// mov e??, [esp + param_1]
479+
OV_MATCH(0x1D, 0x8B),
480+
OV_MATCH(0x1F, 0x24, 0x08),
481+
// lea e??, [e?? * 0x04 + 0x40AE0] // 0x40AE0 is a reliable hardcoded value across all builds.
482+
OV_MATCH(0x21, 0x8D),
483+
OV_MATCH(0x24, 0xE0, 0x0A, 0x04, 0x00),
484+
485+
// mov e??, [esp + param_2]
486+
OV_MATCH(0x2A, 0x8B),
487+
OV_MATCH(0x2C, 0x24, 0x0C),
473488

474-
{ 0x24, 0xE0 },
475-
{ 0x25, 0x0A },
476-
{ 0x26, 0x04 },
477-
{ 0x27, 0x00 },
478-
{ 0x28, 0x89 },
489+
// This is an optional OV pair to tell the difference from the (symbol)_(LTCG variant) signature.
490+
// retn 0x08
491+
OV_MATCH(0x40, 0xC2, 0x08),
479492
//
480493
);
481494

src/OOVPADatabase/D3D8LTCG_OOVPA.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ static OOVPATable D3D8LTCG_OOVPA_Table[] = {
339339
REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_BumpEnv, CALL(unk), STACK(8), PARAMS(PARAM(eax, Stage), PARAM(psh, Type), PARAM(psh, Value))),
340340
SYM_SIG(2024)),
341341
REGISTER_OOVPAS(SYM_FUN(D3DDevice_SetTextureState_ColorKeyColor, CALL(std), STACK(/*default*/), PARAMS(PARAM(psh, Stage), PARAM(psh, Value))),
342-
SYM_SIG(1024, 1036)),
342+
SYM_SIG(4432, 5788)),
343343
REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_ColorKeyColor, CALL(unk), STACK(0), PARAMS(PARAM(eax, Stage), PARAM(ebx, Value))),
344344
SYM_SIG(3911, 5233, 5788)),
345345
REGISTER_OOVPAS(SYM_FUN_LTCG(D3DDevice_SetTextureState_ColorKeyColor, CALL(unk), STACK(4), PARAMS(PARAM(eax, Stage), PARAM(psh, Value))),

0 commit comments

Comments
 (0)