diff --git a/Source/Core/VideoBackends/Software/Tev.cpp b/Source/Core/VideoBackends/Software/Tev.cpp index 674c545759..17ddd5dcc5 100644 --- a/Source/Core/VideoBackends/Software/Tev.cpp +++ b/Source/Core/VideoBackends/Software/Tev.cpp @@ -467,6 +467,11 @@ void Tev::Draw() std::memset(texel, 0, 4); } + RawTexColor.r = texel[u32(ColorChannel::Red)]; + RawTexColor.g = texel[u32(ColorChannel::Green)]; + RawTexColor.b = texel[u32(ColorChannel::Blue)]; + RawTexColor.a = texel[u32(ColorChannel::Alpha)]; + const auto& swap = bpmem.tevksel.GetSwapTable(ac.tswap); TexColor.r = texel[u32(swap[ColorChannel::Red])]; TexColor.g = texel[u32(swap[ColorChannel::Green])]; @@ -551,13 +556,13 @@ void Tev::Draw() switch (bpmem.ztex2.type) { case ZTexFormat::U8: - ztex += TexColor[ALP_C]; + ztex += RawTexColor[ALP_C]; break; case ZTexFormat::U16: - ztex += TexColor[ALP_C] << 8 | TexColor[RED_C]; + ztex += RawTexColor[ALP_C] << 8 | RawTexColor[RED_C]; break; case ZTexFormat::U24: - ztex += TexColor[RED_C] << 16 | TexColor[GRN_C] << 8 | TexColor[BLU_C]; + ztex += RawTexColor[RED_C] << 16 | RawTexColor[GRN_C] << 8 | RawTexColor[BLU_C]; break; default: PanicAlertFmt("Invalid ztex format {}", bpmem.ztex2.type); diff --git a/Source/Core/VideoBackends/Software/Tev.h b/Source/Core/VideoBackends/Software/Tev.h index 5b48f60346..c6b6f87851 100644 --- a/Source/Core/VideoBackends/Software/Tev.h +++ b/Source/Core/VideoBackends/Software/Tev.h @@ -107,6 +107,7 @@ class Tev // color order: ABGR Common::EnumMap Reg; std::array KonstantColors; + TevColor RawTexColor; TevColor TexColor; TevColor RasColor; TevColor StageKonst;