mirror of https://github.com/PCSX2/pcsx2.git
Fixed a bug in partial DIRECT/HL transfers, Fixes Ape Escape hang going ingame.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4057 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
b9a3649df0
commit
5f1ccc767e
|
@ -192,18 +192,21 @@ template<int idx> __fi int _vifCode_Direct(int pass, const u8* data, bool isDire
|
|||
static __aligned16 u32 partial_write[4];
|
||||
static uint partial_count = 0;
|
||||
|
||||
ret = 0;
|
||||
for( uint i=0; i<(minSize & 3); ++i)
|
||||
{
|
||||
partial_write[partial_count++] = ((u32*)data)[i];
|
||||
ret++;
|
||||
}
|
||||
|
||||
pxAssume( partial_count <= 4 );
|
||||
ret = 0;
|
||||
|
||||
if (partial_count == 4)
|
||||
{
|
||||
GetMTGS().PrepDataPacket(GIF_PATH_2, 1);
|
||||
GIFPath_CopyTag(GIF_PATH_2, (u128*)partial_write, 1);
|
||||
GetMTGS().SendDataPacket();
|
||||
partial_count = 0;
|
||||
ret = 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -146,13 +146,21 @@ _vifT static __fi bool vifTransfer(u32 *data, int size, bool TTE) {
|
|||
vifXch.madr +=(transferred << 4);
|
||||
vifXch.qwc -= transferred;
|
||||
if(vifXch.chcr.STR)hwDmacSrcTadrInc(vifXch);
|
||||
}
|
||||
|
||||
if (!vifXch.qwc && !vifX.irqoffset)
|
||||
if (!vifXch.qwc)
|
||||
{
|
||||
vifX.inprogress &= ~0x1;
|
||||
vifX.vifstalled = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if(!vifX.irqoffset)
|
||||
{
|
||||
vifX.vifstalled = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (vifX.irq && vifX.cmd == 0) {
|
||||
//DevCon.WriteLn("Vif IRQ!");
|
||||
|
|
Loading…
Reference in New Issue