From 700787928db66273b96f299e9efdf5d098897864 Mon Sep 17 00:00:00 2001
From: Vicki Pfau <vi@endrift.com>
Date: Sun, 12 May 2019 15:27:14 -0700
Subject: [PATCH] GBA Video: Clean up dead code in sprite rendering loop

---
 CHANGES                          |  1 +
 src/gba/renderers/software-obj.c | 36 +++++++++-----------------------
 2 files changed, 11 insertions(+), 26 deletions(-)

diff --git a/CHANGES b/CHANGES
index 08519a34c..52841450d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -27,6 +27,7 @@ Misc:
  - Qt: Add missing HEVC NVENC option (fixes mgba.io/i/1323)
  - Qt: Improve camera initialization
  - Vita: Improved frame drawing speed
+ - GBA Video: Clean up dead code in sprite rendering loop
 
 0.7.1: (2019-02-24)
 Bugfixes:
diff --git a/src/gba/renderers/software-obj.c b/src/gba/renderers/software-obj.c
index ad846ace0..ac035c42e 100644
--- a/src/gba/renderers/software-obj.c
+++ b/src/gba/renderers/software-obj.c
@@ -62,25 +62,17 @@
 	LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase); \
 	tileData = (tileData >> ((localX & 3) << 2)) & 0xF; \
 	current = renderer->spriteLayer[outX]; \
-	if ((current & FLAG_ORDER_MASK) > flags) { \
-		if (tileData) { \
-			renderer->spriteLayer[outX] = palette[tileData] | flags; \
-		} else if (current != FLAG_UNWRITTEN) { \
-			renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \
-		} \
+	if ((current & FLAG_UNWRITTEN) == FLAG_UNWRITTEN && tileData) { \
+		renderer->spriteLayer[outX] = palette[tileData] | flags; \
 	}
 
 #define SPRITE_DRAW_PIXEL_16_NORMAL_OBJWIN(localX) \
 	LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase); \
 	tileData = (tileData >> ((localX & 3) << 2)) & 0xF; \
 	current = renderer->spriteLayer[outX]; \
-	if ((current & FLAG_ORDER_MASK) > flags) { \
-		if (tileData) { \
-			unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \
-			renderer->spriteLayer[outX] = color | flags; \
-		} else if (current != FLAG_UNWRITTEN) { \
-			renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \
-		} \
+	if ((current & FLAG_UNWRITTEN) == FLAG_UNWRITTEN && tileData) { \
+		unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \
+		renderer->spriteLayer[outX] = color | flags; \
 	}
 
 #define SPRITE_DRAW_PIXEL_16_OBJWIN(localX) \
@@ -97,25 +89,17 @@
 	LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase); \
 	tileData = (tileData >> ((localX & 1) << 3)) & 0xFF; \
 	current = renderer->spriteLayer[outX]; \
-	if ((current & FLAG_ORDER_MASK) > flags) { \
-		if (tileData) { \
-			renderer->spriteLayer[outX] = palette[tileData] | flags; \
-		} else if (current != FLAG_UNWRITTEN) { \
-			renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \
-		} \
+	if ((current & FLAG_UNWRITTEN) == FLAG_UNWRITTEN && tileData) { \
+		renderer->spriteLayer[outX] = palette[tileData] | flags; \
 	}
 
 #define SPRITE_DRAW_PIXEL_256_NORMAL_OBJWIN(localX) \
 	LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase);  \
 	tileData = (tileData >> ((localX & 1) << 3)) & 0xFF; \
 	current = renderer->spriteLayer[outX]; \
-	if ((current & FLAG_ORDER_MASK) > flags) { \
-		if (tileData) { \
-			unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \
-			renderer->spriteLayer[outX] = color | flags; \
-		} else if (current != FLAG_UNWRITTEN) { \
-			renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \
-		} \
+	if ((current & FLAG_UNWRITTEN) == FLAG_UNWRITTEN && tileData) { \
+		unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \
+		renderer->spriteLayer[outX] = color | flags; \
 	}
 
 #define SPRITE_DRAW_PIXEL_256_OBJWIN(localX) \