diff --git a/pcsx2/GS/GSState.cpp b/pcsx2/GS/GSState.cpp index 17acb57ae8..443a028334 100644 --- a/pcsx2/GS/GSState.cpp +++ b/pcsx2/GS/GSState.cpp @@ -1749,7 +1749,7 @@ void GSState::FlushPrim() GSVector4i* RESTRICT vert_ptr = (GSVector4i*)&m_vertex.buff[i]; GSVector4i v = vert_ptr[1]; v = v.xxxx().u16to32().sub32(m_xyof); - v = v.blend32<12>(v.sra32(4)); + v = v.blend32<12>(v.sra32<4>()); m_vertex.xy[i & 3] = v; m_vertex.xy_tail = unused; } diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index f265afef7b..b0e7d0b09e 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -429,7 +429,7 @@ void GSRendererHW::ConvertSpriteTextureShuffle(u32& process_rg, u32& process_ba, // So, halve it ourselves. const GSVector4i dr = m_r; - const GSVector4i r = half_bottom_vert ? dr.blend32<0xA>(dr.sra32(1)) : dr.blend32<5>(dr.sra32(1)); // Half Y : Half X + const GSVector4i r = half_bottom_vert ? dr.blend32<0xA>(dr.sra32<1>()) : dr.blend32<5>(dr.sra32<1>()); // Half Y : Half X GL_CACHE("ConvertSpriteTextureShuffle: Rewrite from %d,%d => %d,%d to %d,%d => %d,%d", static_cast(m_vt.m_min.p.x), static_cast(m_vt.m_min.p.y), static_cast(m_vt.m_min.p.z), static_cast(m_vt.m_min.p.w), r.x, r.y, r.z, r.w); @@ -1746,10 +1746,10 @@ void GSRendererHW::SwSpriteRender() const GSVector4i A = alpha_a == 0 ? sc : alpha_a == 1 ? dc0 : GSVector4i::zero(); const GSVector4i B = alpha_b == 0 ? sc : alpha_b == 1 ? dc0 : GSVector4i::zero(); const GSVector4i C = alpha_c == 2 ? GSVector4i(alpha_fix).xxxx().ps32() - : (alpha_c == 0 ? sc : dc0).yyww() // 0x00AA00BB00AA00BB00aa00bb00aa00bb - .srl32(16) // 0x000000AA000000AA000000aa000000aa - .ps32() // 0x00AA00AA00aa00aa00AA00AA00aa00aa - .xxyy(); // 0x00AA00AA00AA00AA00aa00aa00aa00aa + : (alpha_c == 0 ? sc : dc0).yyww() // 0x00AA00BB00AA00BB00aa00bb00aa00bb + .srl32<16>() // 0x000000AA000000AA000000aa000000aa + .ps32() // 0x00AA00AA00aa00aa00AA00AA00aa00aa + .xxyy(); // 0x00AA00AA00AA00AA00aa00aa00aa00aa const GSVector4i D = alpha_d == 0 ? sc : alpha_d == 1 ? dc0 : GSVector4i::zero(); dc = A.sub16(B).mul16l(C).sra16<7>().add16(D); // (((A - B) * C) >> 7) + D, must use sra16 due to signed 16 bit values. // dc alpha channels (dc.u16[3], dc.u16[7]) dirty