changeset 1278:34d3cb05014d

Fix VDP buffer overrun that was causing sprite flickering in some games
author Michael Pavone <pavone@retrodev.com>
date Mon, 13 Mar 2017 23:13:24 -0700
parents 78416556ae02
children 996eb76d6da1
files vdp.c
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/vdp.c	Mon Mar 13 00:23:58 2017 -0700
+++ b/vdp.c	Mon Mar 13 23:13:24 2017 -0700
@@ -2272,6 +2272,7 @@
 	} else {
 		bg_end_slot = BG_START_SLOT + (256+HORIZ_BORDER)/2;
 		max_draws = MAX_DRAWS_H32_MODE4;
+		max_sprites = 8;
 		buf_clear_slot = 136;
 		index_reset_slot = 253;
 		index_reset_value = 0;
@@ -2312,7 +2313,7 @@
 			memset(context->linebuf, 0, LINEBUF_SIZE);
 		} else if (context->hslot == index_reset_slot) {
 			context->sprite_index = index_reset_value;
-			context->slot_counter = max_draws;
+			context->slot_counter = max_sprites;
 		} else if (context->vcounter == vint_line && context->hslot == vint_slot) {
 			context->flags2 |= FLAG2_VINT_PENDING;
 			context->pending_vint_start = context->cycles;