Skip to content
Permalink
Browse files

gsdx-hw: Disable half screen TS fix for Xenosaga 3.

Xenosaga handles the half bottom as an vertex offset instead of a buffer
offset which does the effect twice.
Half bottom won't trigger a cache miss that skip the draw because it is
still the normal buffer but with a vertices offset.

Issue #3147
  • Loading branch information
lightningterror committed Nov 26, 2019
1 parent f2da7ec commit 2827394f3cbc6a2ea3219583e12412bfa34852ab
Showing with 4 additions and 1 deletion.
  1. +4 −1 plugins/GSdx/Renderers/HW/GSRendererHW.cpp
@@ -463,8 +463,11 @@ void GSRendererHW::ConvertSpriteTextureShuffle(bool& write_ba, bool& read_ba)
// 32bits emulation means we can do the effect once but double the size.
// Test cases: Crash Twinsantiy and DBZ BT3
int height_delta = m_src->m_valid_rect.height() - m_r.height();
// Xenosaga handles the half bottom as an vertex offset instead of a buffer offset which does the effect twice.
// Half bottom won't trigger a cache miss that skip the draw because it is still the normal buffer but with a vertices offset.
const bool cant_handle_half_bottom_fix = m_game.title == CRC::XenosagaE3;
// Test Case: NFS: HP2 splits the effect h:256 and h:192 so 64
bool half_bottom = abs(height_delta) <= 64 && !m_disable_ts_half_bottom;
const bool half_bottom = abs(height_delta) <= 64 && !(m_disable_ts_half_bottom || cant_handle_half_bottom_fix);

if (PRIM->FST) {
GL_INS("First vertex is P: %d => %d T: %d => %d", v[0].XYZ.X, v[1].XYZ.X, v[0].U, v[1].U);

0 comments on commit 2827394

Please sign in to comment.
You can’t perform that action at this time.