Super VU:

- Implemented setting of GIF status regs for PATH1 transfers at execution time instead of at recompile time on XGkick instructions.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1435 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
cottonvibes 2009-06-26 02:44:42 +00:00
parent b75e504fba
commit ac7f3bc19d
2 changed files with 9 additions and 17 deletions

View File

@ -1983,7 +1983,7 @@ void VU1XGKICK_MTGSTransfer(u32 *pMem, u32 addr)
// Chances are this should be a "loops around memory" situation, and the packet
// should be continued starting at addr zero (0).
size = mtgsThread->PrepDataPacket( GIF_PATH_1, data, (0x4000-(addr&0x3fff)) >> 4);
size = mtgsThread->PrepDataPacket(GIF_PATH_1, data, (0x4000-(addr&0x3fff)) >> 4);
jASSUME( size > 0 );
//if( size > 0 )

View File

@ -4376,18 +4376,15 @@ void recVUMI_XGKICK_(VURegs *VU)
_freeX86regs();
_freeXMMregs();
OR32ItoM((uptr)&psHu32(GIF_STAT), (GIF_STAT_APATH1 | GIF_STAT_OPH)); // Set PATH1 GIF Status Flags
PUSH32R(s_XGKICKReg);
PUSH32I((uptr)VU->Mem);
//CALLFunc((u32)countfn);
if (mtgsThread != NULL)
{
if (mtgsThread) {
CALLFunc((uptr)VU1XGKICK_MTGSTransfer);
ADD32ItoR(ESP, 8);
}
else
{
else {
#ifdef PCSX2_DEVBUILD
CALLFunc((uptr)vu1xgkick);
ADD32ItoR(ESP, 8);
@ -4395,14 +4392,13 @@ void recVUMI_XGKICK_(VURegs *VU)
CALLFunc((uptr)GSgifTransfer1);
#endif
}
psHu32(GIF_STAT) &= ~(GIF_STAT_APATH1 | GIF_STAT_OPH); //Probably should be in the recompilation but im a rec nab :( (Refraction)
AND32ItoM((uptr)&psHu32(GIF_STAT), ~(GIF_STAT_APATH1 | GIF_STAT_OPH)); // Clear PATH1 GIF Status Flags
s_ScheduleXGKICK = 0;
}
void recVUMI_XGKICK(VURegs *VU, int info)
{
if (s_ScheduleXGKICK)
{
if (s_ScheduleXGKICK) {
// second xgkick, so launch the first
recVUMI_XGKICK_(VU);
}
@ -4416,15 +4412,11 @@ void recVUMI_XGKICK(VURegs *VU, int info)
SHL32ItoR(isreg, 4);
AND32ItoR(isreg, 0x3fff);
s_XGKICKReg = isreg;
psHu32(GIF_STAT) |= (GIF_STAT_APATH1 | GIF_STAT_OPH); //Probably should be in the recompilation but im a rec nab :( (Refraction)
if (!SUPERVU_XGKICKDELAY || pc == s_pCurBlock->endpc)
{
if (!SUPERVU_XGKICKDELAY || pc == s_pCurBlock->endpc) {
recVUMI_XGKICK_(VU);
}
else
{
else {
// Erementar Gerad hack.
// Corrects the color of some graphics on a game that has somewhat scrambled graphics either way, and only works with ZeroGS. Not even ZZOgl. :)
if (g_VUGameFixes & VUFIX_XGKICKDELAY2)