Fallback to the old render target read for games that do block level reads (Gust titles).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4643 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2011-05-10 16:02:52 +00:00
parent 827dcfaf6f
commit 47aeca4c75
1 changed files with 6 additions and 3 deletions

View File

@ -433,7 +433,7 @@ void GSTextureCache::InvalidateLocalMem(const GSOffset* o, const GSVector4i& r)
// This is a shorter but potentially slower version of the below, commented out code.
// It works for all the games mentioned below and fixes a couple of other ones as well
// (Japanese Wizardry and Chaos Legion).
// (Busen0: Wizardry and Chaos Legion).
// Also in a few games the below code ran the Grandia3 case when it shouldn't :p
for(list<Target*>::iterator i = m_dst[RenderTarget].begin(); i != m_dst[RenderTarget].end(); )
{
@ -445,9 +445,12 @@ void GSTextureCache::InvalidateLocalMem(const GSOffset* o, const GSVector4i& r)
{
if(GSUtil::HasSharedBits(bp, psm, t->m_TEX0.TBP0, t->m_TEX0.PSM))
{
//printf("Read rect: %d %d %d %d\n", t->m_valid.x, t->m_valid.y, t->m_valid.z, t->m_valid.w);
// note: r.rintersect breaks Wizardry and Chaos Legion
Read(t, t->m_valid);
// Read(t, t->m_valid) works in all tested games but is very slow in GUST titles ><
if (r.x == 0 && r.y == 0) // Full screen read?
Read(t, t->m_valid);
else // Block level read?
Read(t, r.rintersect(t->m_valid));
}
}
}