changeset 1032:679137a0e78e

Fix bug in vflip implementation when in double resolution interlace mode
author Michael Pavone <pavone@retrodev.com>
date Sun, 15 May 2016 16:22:45 -0700
parents 219de1d64aa1
children 4db1a2e5d8e6
files vdp.c
diffstat 1 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/vdp.c	Sun May 15 12:10:49 2016 -0700
+++ b/vdp.c	Sun May 15 16:22:45 2016 -0700
@@ -826,20 +826,18 @@
 void render_map(uint16_t col, uint8_t * tmp_buf, uint8_t offset, vdp_context * context)
 {
 	uint16_t address;
-	uint8_t shift, add;
+	uint16_t vflip_base;
 	if (context->double_res) {
 		address = ((col & 0x3FF) << 6);
-		shift = 1;
-		add = context->framebuf != context->oddbuf ? 1 : 0;
+		vflip_base = 60;
 	} else {
 		address = ((col & 0x7FF) << 5);
-		shift = 0;
-		add = 0;
+		vflip_base = 28;
 	}
 	if (col & MAP_BIT_V_FLIP) {
-		address +=  28 - 4 * context->v_offset/*((context->v_offset << shift) + add)*/;
+		address +=  vflip_base - 4 * context->v_offset;
 	} else {
-		address += 4 * context->v_offset/*((context->v_offset << shift) + add)*/;
+		address += 4 * context->v_offset;
 	}
 	uint16_t pal_priority = (col >> 9) & 0x70;
 	int32_t dir;