From c4fef0256e52eb023cb05adade8d52f72fe4b297 Mon Sep 17 00:00:00 2001 From: Gregory Hainaut Date: Sun, 12 Apr 2015 10:23:55 +0200 Subject: [PATCH] gsdx hack: Better rounding fix letter in ace combat and line in tekken Tekken is broken with setting UserHacks_round_sprite_offset = 2 use 1 instead. => game use upscaling internaly so my rounding of coordinate break everything Yakuza uses float coordinate but this hack only correct the integer coordinate => the solution will be to add a dedicated hack for this game. Colin3 got a regression but I don't know when... --- plugins/GSdx/GSRendererHW.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/GSdx/GSRendererHW.cpp b/plugins/GSdx/GSRendererHW.cpp index c0b2b50bdc..410659e7dd 100644 --- a/plugins/GSdx/GSRendererHW.cpp +++ b/plugins/GSdx/GSRendererHW.cpp @@ -352,7 +352,7 @@ void GSRendererHW::Draw() context->ZBUF.ZMSK = zm != 0; // A couple of hack to avoid upscaling issue. So far it seems to impacts only sprite without linear filtering - if ((m_upscale_multiplier > 1) && (m_vt.m_primclass == GS_SPRITE_CLASS) /*&& !m_vt.IsLinear()*/) { + if ((m_upscale_multiplier > 1) && (m_vt.m_primclass == GS_SPRITE_CLASS) && (PRIM->FST)) { // TODO: It could be a good idea to check context->CLAMP.WMS/WMT values on the following hack size_t count = m_vertex.next; @@ -446,7 +446,7 @@ void GSRendererHW::Draw() // Minus half for t1 case might be too much if (tx0 <= tx1) { v[i].U = tx0 + half + 1; - v[i+1].U = tx1 - half + 1 + 16; + v[i+1].U = tx1 - half + 1 + 15; } else { v[i].U = tx0 + 15; v[i+1].U = tx1 + 15 + 16; @@ -455,7 +455,7 @@ void GSRendererHW::Draw() #if 1 if (ty0 <= ty1) { v[i].V = ty0 + half + 1; - v[i+1].V = ty1 - half + 1 + 16; + v[i+1].V = ty1 - half + 1 + 15; } else { v[i].V = ty0 + 15; v[i+1].V = ty1 + 15 + 16;