From a8886d5949780221386ed623d12039bdc8e78e36 Mon Sep 17 00:00:00 2001
From: Arisotura <thetotalworm@gmail.com>
Date: Wed, 24 Jul 2019 03:30:09 +0200
Subject: [PATCH] GPU2D: add 'prohibited' large BG sizes

---
 src/GPU2D.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/GPU2D.cpp b/src/GPU2D.cpp
index 4bba2354..fbb7fea8 100644
--- a/src/GPU2D.cpp
+++ b/src/GPU2D.cpp
@@ -2069,14 +2069,19 @@ void GPU2D::DrawBG_Large(u32 line) // BG is always BG2
     u32 tilesetaddr, tilemapaddr;
     u16* pal;
 
+    // large BG sizes:
+    // 0: 512x1024
+    // 1: 1024x512
+    // 2: 512x256
+    // 3: 512x512
     u32 xmask, ymask;
     u32 yshift;
     switch (bgcnt & 0xC000)
     {
     case 0x0000: xmask = 0x1FFFF; ymask = 0x3FFFF; yshift = 9; break;
     case 0x4000: xmask = 0x3FFFF; ymask = 0x1FFFF; yshift = 10; break;
-    case 0x8000: // TODO (most likely the second size bit is just ignored)
-    case 0xC000: printf("bad BG size for large BG: %04X\n", bgcnt); return;
+    case 0x8000: xmask = 0x1FFFF; ymask = 0x0FFFF; yshift = 9; break;
+    case 0xC000: xmask = 0x1FFFF; ymask = 0x1FFFF; yshift = 9; break;
     }
 
     u32 ofxmask, ofymask;