From 7799b33dfea5bf8c3d816b1ff2f3738cedf2a64e Mon Sep 17 00:00:00 2001 From: StapleButter Date: Tue, 7 Mar 2017 01:36:16 +0100 Subject: [PATCH] horizontal scrolling for 3D layer --- GPU2D.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/GPU2D.cpp b/GPU2D.cpp index 90820257..8c1afd46 100644 --- a/GPU2D.cpp +++ b/GPU2D.cpp @@ -871,12 +871,30 @@ void GPU2D::DrawPixel(u32* dst, u16 color, u32 flag) void GPU2D::DrawBG_3D(u32 line, u32* dst) { - // TODO: scroll, etc + // TODO: window, as for everything + // also check if window can prevent blending from happening u32* src = GPU3D::GetLine(line); - for (int i = 0; i < 256; i++) + + u16 xoff = BGXPos[0]; + int i = 0; + int iend = 256; + + if (xoff & 0x100) { - u32 c = src[i]; + i = (0x100 - (xoff & 0xFF)); + xoff += i; + } + if ((xoff + iend - 1) & 0x100) + { + iend -= (xoff & 0xFF); + } + + for (; i < iend; i++) + { + u32 c = src[xoff]; + xoff++; + if ((c >> 24) == 0) continue; dst[i+256] = dst[i];