From a927bfbe50139e2305aa675a638d57bf2ce4e83e Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Wed, 20 Jan 2021 01:08:31 +1000 Subject: [PATCH] GPU/HW: Flush after each primitive for B-F transparency Slow, but necessary for some games such as Suikoden II, where it draws multiple polygons to the same area on screen with different transparency modes. --- src/core/gpu_hw.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/gpu_hw.cpp b/src/core/gpu_hw.cpp index bdd693270..30dc2561d 100644 --- a/src/core/gpu_hw.cpp +++ b/src/core/gpu_hw.cpp @@ -1089,8 +1089,8 @@ void GPU_HW::DispatchRenderCommand() const GPUTransparencyMode transparency_mode = rc.transparency_enable ? m_draw_mode.mode_reg.transparency_mode : GPUTransparencyMode::Disabled; const bool dithering_enable = (!m_true_color && rc.IsDitheringEnabled()) ? m_GPUSTAT.dither_enable : false; - if (m_batch.texture_mode != texture_mode || m_batch.transparency_mode != transparency_mode || - dithering_enable != m_batch.dithering) + if (texture_mode != m_batch.texture_mode || transparency_mode != m_batch.transparency_mode || + transparency_mode == GPUTransparencyMode::BackgroundMinusForeground || dithering_enable != m_batch.dithering) { FlushRender(); }