changeset 2385:ce9f5a42c481

Ensure VDP double_res flag is updated when loading a save state
author Michael Pavone <pavone@retrodev.com>
date Tue, 21 Nov 2023 21:01:16 -0800
parents 03e6ac327ba0
children 9f178feb3cb0
files vdp.c
diffstat 1 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/vdp.c	Tue Nov 21 20:47:11 2023 -0800
+++ b/vdp.c	Tue Nov 21 21:01:16 2023 -0800
@@ -144,6 +144,10 @@
 	}
 	context->border_top = calc_crop(top_crop, border_top);
 	context->top_offset = border_top - context->border_top;
+	context->double_res = (context->regs[REG_MODE_4] & (BIT_INTERLACE | BIT_DOUBLE_RES)) == (BIT_INTERLACE | BIT_DOUBLE_RES);
+	if (!context->double_res) {
+		context->flags2 &= ~FLAG2_EVEN_FIELD;
+	}
 }
 
 static uint8_t static_table_init_done;
@@ -4646,12 +4650,6 @@
 		uint8_t buffer[2] = {reg, value};
 		event_log(EVENT_VDP_REG, context->cycles, sizeof(buffer), buffer);
 		context->regs[reg] = value;
-		if (reg == REG_MODE_4) {
-			context->double_res = (value & (BIT_INTERLACE | BIT_DOUBLE_RES)) == (BIT_INTERLACE | BIT_DOUBLE_RES);
-			if (!context->double_res) {
-				context->flags2 &= ~FLAG2_EVEN_FIELD;
-			}
-		}
 		if (reg == REG_MODE_1 || reg == REG_MODE_2 || reg == REG_MODE_4) {
 			update_video_params(context);
 		}