aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2020-12-10 19:34:31 +0100
committerArisotura <thetotalworm@gmail.com>2020-12-10 19:34:31 +0100
commit8530c099bca52e95a3ee5da12c43fc57b944bf5e (patch)
treef2b3301a5d1b0fca559275f46ceb406260652f00 /src
parent66cec85a9a1e95c8fa76ac6ebf9f718cfafdf5bf (diff)
GPU: make sure to always pass BG0HOFS to the 3D engine, even if the 2D engine is disabled.
Diffstat (limited to 'src')
-rw-r--r--src/GPU2D.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/GPU2D.cpp b/src/GPU2D.cpp
index eb160d8..fa05e79 100644
--- a/src/GPU2D.cpp
+++ b/src/GPU2D.cpp
@@ -288,6 +288,13 @@ void GPU2D::Write8(u32 addr, u8 val)
DispCnt = (DispCnt & 0x00FFFFFF) | (val << 24);
if (Num) DispCnt &= 0xC0B1FFF7;
return;
+
+ case 0x10:
+ if (!Num) GPU3D::SetRenderXPos((GPU3D::RenderXPos & 0xFF00) | val);
+ break;
+ case 0x11:
+ if (!Num) GPU3D::SetRenderXPos((GPU3D::RenderXPos & 0x00FF) | (val << 8));
+ break;
}
if (!Enabled) return;
@@ -303,14 +310,8 @@ void GPU2D::Write8(u32 addr, u8 val)
case 0x00E: BGCnt[3] = (BGCnt[3] & 0xFF00) | val; return;
case 0x00F: BGCnt[3] = (BGCnt[3] & 0x00FF) | (val << 8); return;
- case 0x010:
- BGXPos[0] = (BGXPos[0] & 0xFF00) | val;
- if (Num == 0) GPU3D::SetRenderXPos(BGXPos[0]);
- return;
- case 0x011:
- BGXPos[0] = (BGXPos[0] & 0x00FF) | (val << 8);
- if (Num == 0) GPU3D::SetRenderXPos(BGXPos[0]);
- return;
+ case 0x010: BGXPos[0] = (BGXPos[0] & 0xFF00) | val; return;
+ case 0x011: BGXPos[0] = (BGXPos[0] & 0x00FF) | (val << 8); return;
case 0x012: BGYPos[0] = (BGYPos[0] & 0xFF00) | val; return;
case 0x013: BGYPos[0] = (BGYPos[0] & 0x00FF) | (val << 8); return;
case 0x014: BGXPos[1] = (BGXPos[1] & 0xFF00) | val; return;
@@ -386,6 +387,10 @@ void GPU2D::Write16(u32 addr, u16 val)
if (Num) DispCnt &= 0xC0B1FFF7;
return;
+ case 0x010:
+ if (!Num) GPU3D::SetRenderXPos(val);
+ break;
+
case 0x068:
DispFIFO[DispFIFOWritePtr] = val;
return;
@@ -407,10 +412,7 @@ void GPU2D::Write16(u32 addr, u16 val)
case 0x00C: BGCnt[2] = val; return;
case 0x00E: BGCnt[3] = val; return;
- case 0x010:
- BGXPos[0] = val;
- if (Num == 0) GPU3D::SetRenderXPos(BGXPos[0]);
- return;
+ case 0x010: BGXPos[0] = val; return;
case 0x012: BGYPos[0] = val; return;
case 0x014: BGXPos[1] = val; return;
case 0x016: BGYPos[1] = val; return;