VideoCommon: Always update pixel shader constants when tevregs change

This time, it doesn't break the games i tested, and still fixes
Metroid Prime 3 texts/colors.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7668 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
pierre
2011-07-04 13:49:40 +00:00
parent 951e20ae73
commit 1f2adf0563
3 changed files with 20 additions and 12 deletions

View File

@ -553,11 +553,16 @@ void BPWritten(const BPCmd& bp)
case BPMEM_TEV_REGISTER_H+4:
case BPMEM_TEV_REGISTER_L+6: // Reg 4
case BPMEM_TEV_REGISTER_H+6:
if (bp.address & 1) // only run this code for the _H! is this right? what if L is set independently?
// some games only send the _L part, so always update
// there actually are 2 register behind each of these
// addresses, selected by the type bit.
{
// don't compare with changes!
int num = (bp.address >> 1) & 0x3;
PixelShaderManager::SetColorChanged(bpmem.tevregs[num].high.type, num);
if ((bp.address & 1) == 0)
PixelShaderManager::SetColorChanged(bpmem.tevregs[num].low.type, num, false);
else
PixelShaderManager::SetColorChanged(bpmem.tevregs[num].high.type, num, true);
}
break;