diff --git a/pcsx2/Gif.cpp b/pcsx2/Gif.cpp index 4249b52575..695c70d289 100644 --- a/pcsx2/Gif.cpp +++ b/pcsx2/Gif.cpp @@ -112,7 +112,7 @@ __fi void gifInterrupt() } static u32 WRITERING_DMA(u32 *pMem, u32 qwc) { - //qwc = min(qwc, 1024u); + if(gifRegs.stat.IMT) qwc = std::min(qwc, 1024u); uint size = gifUnit.TransferGSPacketData(GIF_TRANS_DMA, (u8*)pMem, qwc*16) / 16; incGifChAddr(size); return size; diff --git a/pcsx2/Vif_Codes.cpp b/pcsx2/Vif_Codes.cpp index dbb0507058..02c6d7f1c8 100644 --- a/pcsx2/Vif_Codes.cpp +++ b/pcsx2/Vif_Codes.cpp @@ -432,6 +432,14 @@ vifOp(vifCode_Nop) { GetVifX.cmd = 0; GetVifX.pass = 0; vifExecQueue(idx); + if(GetVifX.vifpacketsize > 1) + { + if(((data[1] >> 24) & 0x7f) == 0x6) //is mskpath3 next + { + GetVifX.vifstalled.enabled = true; + GetVifX.vifstalled.value = VIF_TIMING_BREAK; + } + } } pass3 { VifCodeLog("Nop"); } return 1;