diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs
index 33f5823160..24a61c0c26 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMem.cs
@@ -68,9 +68,9 @@ namespace Ryujinx.Graphics.Gal.Shader
         private static void EmitTex(ShaderIrBlock Block, long OpCode, ShaderIrInst Inst)
         {
             //TODO: Support other formats.
-            ShaderIrNode OperA  = GetOperGpr8    (OpCode);
-            ShaderIrNode OperB  = GetOperGpr20   (OpCode);
-            ShaderIrNode OperC  = GetOperImm13_36(OpCode);
+            ShaderIrNode OperA = GetOperGpr8    (OpCode);
+            ShaderIrNode OperB = GetOperGpr20   (OpCode);
+            ShaderIrNode OperC = GetOperImm13_36(OpCode);
 
             for (int Ch = 0; Ch < 4; Ch++)
             {
@@ -95,6 +95,11 @@ namespace Ryujinx.Graphics.Gal.Shader
 
                 Dst.Index += Ch & 1;
 
+                if (Dst.Index >= ShaderIrOperGpr.ZRIndex)
+                {
+                    continue;
+                }
+
                 Block.AddNode(GetPredNode(new ShaderIrAsg(Dst, Src), OpCode));
             }
         }