From 5b765ba874af4271e78a93f0a9df00d7753c5369 Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Wed, 4 Mar 2020 22:37:10 +0700 Subject: [PATCH] LLETriangle : force flush triangles if tile is changed. Fixed wrong textures is C&C intro. --- src/gDP.cpp | 3 +++ src/gDP.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/gDP.cpp b/src/gDP.cpp index e0e8200c..04f68d2f 100644 --- a/src/gDP.cpp +++ b/src/gDP.cpp @@ -1302,6 +1302,9 @@ void LLETriangle::draw(bool _shade, bool _texture, bool _zbuffer, s32 * _pData) gSP.texture.level = _SHIFTR(_pData[0], 19, 3); const u32 tile = _SHIFTR(_pData[0], 16, 3); + if (tile != m_tile) + flush(0); + m_tile = tile; const int flip = (_pData[0] & 0x800000) >> 23; start(tile); diff --git a/src/gDP.h b/src/gDP.h index 7ae61633..48b62014 100644 --- a/src/gDP.h +++ b/src/gDP.h @@ -277,6 +277,7 @@ private: gDPTile *m_textureTileOrg[2]; f32 m_textureScaleOrg[2]; bool m_flushed{ true }; + u32 m_tile{ 0 }; }; void gDPSetOtherMode( u32 mode0, u32 mode1 );