From ad42ec54734ba7f35252824ad4f55d6ce49442cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sat, 17 Mar 2018 23:57:50 +0100 Subject: [PATCH] Inner interpreter: Add support for the Gran Turismo hack. --- GPU/GPUCommon.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/GPU/GPUCommon.cpp b/GPU/GPUCommon.cpp index b14d11ae01f0..c94dac991861 100644 --- a/GPU/GPUCommon.cpp +++ b/GPU/GPUCommon.cpp @@ -1391,8 +1391,9 @@ void GPUCommon::Execute_End(u32 op, u32 diff) { } void GPUCommon::Execute_TexLevel(u32 op, u32 diff) { - if (diff == 0xFFFFFFFF) return; - + // TODO: If you change the rules here, don't forget to update the inner interpreter in Execute_Prim. + if (diff == 0xFFFFFFFF) + return; gstate.texlevel ^= diff; if (gstate.getTexLevelMode() != GE_TEXLEVEL_MODE_AUTO && (0x00FF0000 & gstate.texlevel) != 0) { Flush(); @@ -1581,6 +1582,13 @@ void GPUCommon::Execute_Prim(u32 op, u32 diff) { gstate.cmdmem[GE_CMD_TEXSCALEV] = data; gstate_c.uv.vScale = getFloat24(data); break; + case GE_CMD_TEXLEVEL: + // Same Gran Turismo hack from Execute_TexLevel + if ((data & 3) != GE_TEXLEVEL_MODE_AUTO && (0x00FF0000 & data) != 0) { + goto bail; + } + gstate.cmdmem[GE_CMD_TEXLEVEL] = data; + break; case GE_CMD_CALL: { // A bone matrix probably. If not we bail.