diff --git a/Ryujinx.Graphics/NvGpuEngine3d.cs b/Ryujinx.Graphics/NvGpuEngine3d.cs index a4243c7178..bb109a9083 100644 --- a/Ryujinx.Graphics/NvGpuEngine3d.cs +++ b/Ryujinx.Graphics/NvGpuEngine3d.cs @@ -205,6 +205,15 @@ namespace Ryujinx.Graphics State.FlipX = GetFlipSign(NvGpuEngine3dReg.ViewportNScaleX); State.FlipY = GetFlipSign(NvGpuEngine3dReg.ViewportNScaleY); + + int ScreenYControl = ReadRegister(NvGpuEngine3dReg.ScreenYControl); + + bool NegateY = (ScreenYControl & 1) != 0; + + if (NegateY) + { + State.FlipY = -State.FlipY; + } } private void SetZeta(NvGpuVmm Vmm) diff --git a/Ryujinx.Graphics/NvGpuEngine3dReg.cs b/Ryujinx.Graphics/NvGpuEngine3dReg.cs index 52090cf62b..c229e6c290 100644 --- a/Ryujinx.Graphics/NvGpuEngine3dReg.cs +++ b/Ryujinx.Graphics/NvGpuEngine3dReg.cs @@ -58,6 +58,7 @@ namespace Ryujinx.Graphics StencilFrontFuncRef = 0x4e5, StencilFrontFuncMask = 0x4e6, StencilFrontMask = 0x4e7, + ScreenYControl = 0x4eb, VertexArrayElemBase = 0x50d, VertexArrayInstBase = 0x50e, ZetaEnable = 0x54e,