From 78f45ef832d8d783b258098e193aaa02e6fcfda4 Mon Sep 17 00:00:00 2001 From: refraction Date: Tue, 20 Apr 2010 01:39:22 +0000 Subject: [PATCH] Onimusha 2 fix, Trying to do a divide with an uninitialized variable = bad! git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2876 96395faa-99c1-11dd-bbfe-3dabce05a288 --- pcsx2/ps2/GIFpath.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pcsx2/ps2/GIFpath.cpp b/pcsx2/ps2/GIFpath.cpp index fed3419229..0e55439776 100644 --- a/pcsx2/ps2/GIFpath.cpp +++ b/pcsx2/ps2/GIFpath.cpp @@ -309,7 +309,10 @@ static __forceinline void gsHandler(const u8* pMem) { const u16* pMem16 = (const u16*)pMem; VIF_LOG("TRX REG = %x_%x_%x_%x", pMem16[0], pMem16[1], pMem16[2], pMem16[3]); - vif1.GSLastTRXPOS = (pMem16[0] * pMem16[2]) / (u8)vif1.TRXPOS.BLTDIVIDE; + + //Onimusha does TRXREG without BLTDIVIDE first, so we "assume" 32bit for this equasion, probably isnt important. + if(vif1.TRXPOS.BLTDIVIDE) vif1.GSLastTRXPOS = (pMem16[0] * pMem16[2]) / (u8)vif1.TRXPOS.BLTDIVIDE; + else vif1.GSLastTRXPOS = (pMem16[0] * pMem16[2]) / 4; } if (handler >= 0x60)