summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Src/BPStructs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/Src/BPStructs.cpp')
-rw-r--r--Source/Core/VideoCommon/Src/BPStructs.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/Src/BPStructs.cpp b/Source/Core/VideoCommon/Src/BPStructs.cpp
index bd9e9ac5f7..42b5b2212a 100644
--- a/Source/Core/VideoCommon/Src/BPStructs.cpp
+++ b/Source/Core/VideoCommon/Src/BPStructs.cpp
@@ -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;