Handle BP mask register better to avoid useless BP writes (causing flushes)

Patch from konpie: http://forums.dolphin-emulator.com/showthread.php?tid=24658
This commit is contained in:
Pierre Bourdon 2012-08-05 05:19:52 +02:00 committed by degasus
parent cdc27e46f1
commit 954be9e2d9
1 changed files with 8 additions and 5 deletions

View File

@ -19,15 +19,18 @@ void LoadBPReg(u32 value0)
int opcode = value0 >> 24;
int oldval = ((u32*)&bpmem)[opcode];
int newval = (oldval & ~bpmem.bpMask) | (value0 & bpmem.bpMask);
int changes = (oldval ^ newval) & 0xFFFFFF;
BPCmd bp = {opcode, changes, newval};
//reset the mask register
if (opcode != 0xFE)
{
//reset the mask register
bpmem.bpMask = 0xFFFFFF;
BPWritten(bp);
int changes = (oldval ^ newval) & 0xFFFFFF;
BPCmd bp = {opcode, changes, newval};
BPWritten(bp);
}
else
bpmem.bpMask = newval;
}
void GetBPRegInfo(const u8* data, char* name, size_t name_size, char* desc, size_t desc_size)