COP2: Fix reg allocation issue

Really fixes Devil May Cry which was a bug hidden by clamping hidden by a bug, yeah i think that covers it all...
This commit is contained in:
refractionpcsx2 2021-10-07 23:28:53 +01:00
parent 296911bef9
commit ae1f1599f6
2 changed files with 5 additions and 13 deletions

View File

@ -7667,8 +7667,6 @@ SLES-50358:
name: "Devil May Cry"
region: "PAL-M5"
compat: 5
clampModes:
vuClampMode: 3 # Fixes out of place polys (COP2).
SLES-50362:
name: "Jonny Moseley Mad Trix"
region: "PAL-E"
@ -21440,8 +21438,6 @@ SLPM-65038:
name: "Devil May Cry"
region: "NTSC-J"
compat: 5
clampModes:
vuClampMode: 3 # Fixes out of place polys (COP2).
SLPM-65039:
name: "Densha de Go! Shinkansen"
region: "NTSC-J"
@ -27445,8 +27441,6 @@ SLPM-67502:
name: "Devil May Cry"
region: "NTSC-K"
compat: 5
clampModes:
vuClampMode: 3 # Fixes out of place polys (COP2).
SLPM-67507:
name: "Onimusha Warlords"
region: "NTSC-K"
@ -33051,8 +33045,6 @@ SLUS-20216:
name: "Devil May Cry"
region: "NTSC-U"
compat: 5
clampModes:
vuClampMode: 3 # Fixes out of place polys (COP2).
patches:
79B8A95F:
content: |-
@ -40601,8 +40593,6 @@ SLUS-29008:
SLUS-29009:
name: "Devil May Cry [Demo]"
region: "NTSC-U"
clampModes:
vuClampMode: 3 # Fixes out of place polys (COP2).
SLUS-29010:
name: "Crash Bandicoot - The Wrath of Cortex [Demo]"
region: "NTSC-U"

View File

@ -114,9 +114,11 @@ __fi void mVUallocCFLAGb(mV, const x32& reg, int fInstance)
// On COP2 modifying the CLIP flag we need to update the microVU version for when it's restored on new program
if (fInstance == 0xff)
{
xMOVDZX(xmmT1, reg);
xSHUF.PS(xmmT1, xmmT1, 0);
xMOVAPS(ptr128[&mVU.regs().micro_clipflags], xmmT1);
int t0reg = _allocTempXMMreg(XMMT_INT, -1);
xMOVDZX(xRegisterSSE(t0reg), reg);
xPSHUF.D(xRegisterSSE(t0reg), xRegisterSSE(t0reg), 0);
xMOVDQA(ptr128[&mVU.regs().micro_clipflags], xRegisterSSE(t0reg));
_freeXMMreg(t0reg);
}
}