From e9436b7136fd9f98b5b9a893c6557263efd0e297 Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Wed, 12 Apr 2017 15:32:01 +0700 Subject: [PATCH] FrameBufferList::renderBuffer() : correct Y offset in source buffer. Fixed screen shake in Lode Runner 3D #301 The game uses weird way to work in interlaced mode. --- src/FrameBuffer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/FrameBuffer.cpp b/src/FrameBuffer.cpp index 38ed33df..19f4fc73 100644 --- a/src/FrameBuffer.cpp +++ b/src/FrameBuffer.cpp @@ -1021,6 +1021,8 @@ void FrameBufferList::renderBuffer() const u32 addrOffset = ((rdpRes.vi_origin - pBuffer->m_startAddress) << 1 >> pBuffer->m_size); srcY0 = addrOffset / pBuffer->m_width; + if ((addrOffset != 0) && (pBuffer->m_width == addrOffset * 2)) + srcY0 = 1; if ((rdpRes.vi_width != addrOffset * 2) && (addrOffset % rdpRes.vi_width != 0)) Xoffset = rdpRes.vi_width - addrOffset % rdpRes.vi_width;