Fixed a number of issues in Voodoo recompiler, fixes dark rendering in MiG-29 Fulcrum.
This commit is contained in:
parent
65a9d17674
commit
e388086943
1 changed files with 16 additions and 12 deletions
|
|
@ -1129,10 +1129,14 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0xfd);
|
||||
addbyte(0xc8);
|
||||
}
|
||||
addbyte(0x66); /*PACKUSWB XMM3, XMM1*/
|
||||
addbyte(0xf3); /*MOVD XMM3, XMM1*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x7e);
|
||||
addbyte(0xd9);
|
||||
addbyte(0x66); /*PACKUSWB XMM3, XMM3*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x67);
|
||||
addbyte(0xd9);
|
||||
addbyte(0xdb);
|
||||
if (tca_sub_clocal_1)
|
||||
{
|
||||
addbyte(0x66); /*MOVD EBX, XMM3*/
|
||||
|
|
@ -1457,17 +1461,9 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0xff);
|
||||
addbyte(0x66); /*PADDW XMM1, XMM4*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0xfc);
|
||||
addbyte(0xfd);
|
||||
addbyte(0xcc);
|
||||
}
|
||||
if (tc_invert_output)
|
||||
{
|
||||
addbyte(0x66); /*PXOR XMM1, FF*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0xef);
|
||||
addbyte(0x0d);
|
||||
addlong((uint32_t)&xmm_ff_w);
|
||||
}
|
||||
|
||||
addbyte(0x66); /*PACKUSWB XMM0, XMM0*/
|
||||
addbyte(0x0f);
|
||||
|
|
@ -1481,6 +1477,14 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0x0f);
|
||||
addbyte(0x67);
|
||||
addbyte(0xc9);
|
||||
if (tc_invert_output)
|
||||
{
|
||||
addbyte(0x66); /*PXOR XMM1, FF*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0xef);
|
||||
addbyte(0x0d);
|
||||
addlong((uint32_t)&xmm_ff_b);
|
||||
}
|
||||
|
||||
if (tca_zero_other)
|
||||
{
|
||||
|
|
@ -1658,7 +1662,7 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0xc0);
|
||||
}
|
||||
|
||||
if (params->alphaMode & ((1 << 0) | (1 << 4)))
|
||||
if ((params->alphaMode & ((1 << 0) | (1 << 4))) || (!(cc_mselect == 0 && cc_reverse_blend == 0) && (cc_mselect == CC_MSELECT_AOTHER || cc_mselect == CC_MSELECT_ALOCAL)))
|
||||
{
|
||||
/*EBX = a_other*/
|
||||
switch (a_sel)
|
||||
|
|
|
|||
Loading…
Reference in a new issue