From e607fa4ee88723117a9f68f7ac5e5416983eb056 Mon Sep 17 00:00:00 2001 From: refraction Date: Fri, 21 Jan 2011 15:58:55 +0000 Subject: [PATCH] Fixed long standing bug with Syphon Filter - The Omega Strain involved in the handing of Filling Writes git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4240 96395faa-99c1-11dd-bbfe-3dabce05a288 --- pcsx2/x86/newVif_Dynarec.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pcsx2/x86/newVif_Dynarec.cpp b/pcsx2/x86/newVif_Dynarec.cpp index 6ec2f4a24d..1c0f8912f8 100644 --- a/pcsx2/x86/newVif_Dynarec.cpp +++ b/pcsx2/x86/newVif_Dynarec.cpp @@ -182,12 +182,18 @@ void VifUnpackSSE_Dynarec::CompileRoutine() { if (++vCL == blockSize) vCL = 0; } else if (isFill) { + //Filling doesn't need anything fancy, it's pretty much a normal write, just doesnt increment the source. //DevCon.WriteLn("filling mode!"); - VifUnpackSSE_Dynarec fill( VifUnpackSSE_Dynarec::FillingWrite( *this ) ); - fill.xUnpack(upkNum); - fill.xMovDest(); + xUnpack(upkNum); + xMovDest(); dstIndirect += 16; + + if( IsUnmaskedOp() ) { + ++destReg; + ++workReg; + } + vNum--; if (++vCL == blockSize) vCL = 0; }