diff --git a/plugins/GSdx/GSRendererHW.cpp b/plugins/GSdx/GSRendererHW.cpp index 3087cb5e25..3f00a4ccc3 100644 --- a/plugins/GSdx/GSRendererHW.cpp +++ b/plugins/GSdx/GSRendererHW.cpp @@ -379,8 +379,8 @@ void GSRendererHW::Draw() if (m_vertex.next == 4) { // Note potentially we could also check the content of vertex (2nd // sprite must be half of the first one) - m_double_downscale = true; GL_INS("Double downscale effect detected"); + m_double_downscale = true; } else if ((m_context->TEX0.PSM == PSM_PSMT8) && (delta_p.x <= 64.0f) && (delta_p.y <= 32.0f)) { //fprintf(stderr, "delta_p %f %f\n", delta_p.x, delta_p.y); if (m_channel_shuffle) { diff --git a/plugins/GSdx/GSRendererOGL.cpp b/plugins/GSdx/GSRendererOGL.cpp index 3d29e72df2..9ce7044eb3 100644 --- a/plugins/GSdx/GSRendererOGL.cpp +++ b/plugins/GSdx/GSRendererOGL.cpp @@ -746,6 +746,23 @@ void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sour } } + // Special Draw Call + if (m_channel_shuffle) { + + if (m_context->CLAMP.WMS == 3 && ((m_context->CLAMP.MAXU & 0x8) == 8)) { + // Read either blue or Alpha. Let's go for Blue ;) + // MGS3/Kill Zone + GL_INS("Blue channel"); + } else if (m_context->CLAMP.WMS == 3 && ((m_context->CLAMP.MINU & 0x8) == 0)) { + // Read either Red or Green. Let's go for Red ;) + // Pop + GL_INS("Red channel"); + } else { + GL_INS("channel not supported"); + ASSERT(0); + } + } + // dev->BeginScene();