changeset 1629:079e5b9d59ce

Forcefully update the display when entering the 68K debugger so you can see it update in realtime as you step through the code
author Michael Pavone <pavone@retrodev.com>
date Thu, 01 Nov 2018 20:14:56 -0700
parents 3c1661305219
children 5aa0c3c43b97
files debug.c vdp.c vdp.h
diffstat 3 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/debug.c	Wed Oct 31 21:58:59 2018 -0700
+++ b/debug.c	Thu Nov 01 20:14:56 2018 -0700
@@ -900,6 +900,8 @@
 	init_terminal();
 
 	sync_components(context, 0);
+	genesis_context *gen = context->system;
+	vdp_force_update_framebuffer(gen->vdp);
 	//probably not necessary, but let's play it safe
 	address &= 0xFFFFFF;
 	if (address == branch_t) {
--- a/vdp.c	Wed Oct 31 21:58:59 2018 -0700
+++ b/vdp.c	Thu Nov 01 20:14:56 2018 -0700
@@ -1720,6 +1720,22 @@
 	}
 }
 
+void vdp_force_update_framebuffer(vdp_context *context)
+{
+	uint16_t lines_max = (context->flags2 & FLAG2_REGION_PAL) 
+			? 240 + BORDER_TOP_V30_PAL + BORDER_BOT_V30_PAL 
+			: 224 + BORDER_TOP_V28 + BORDER_BOT_V28;
+			
+	uint16_t to_fill = lines_max - context->output_lines;
+	memset(
+		((char *)context->fb) + context->output_pitch * context->output_lines,
+		0,
+		to_fill * context->output_pitch
+	);
+	render_framebuffer_updated(context->cur_buffer, context->h40_lines > context->output_lines / 2 ? LINEBUF_SIZE : (256+HORIZ_BORDER));
+	context->fb = render_get_framebuffer(context->cur_buffer, &context->output_pitch);
+}
+
 static void advance_output_line(vdp_context *context)
 {
 	if (headless) {
--- a/vdp.h	Wed Oct 31 21:58:59 2018 -0700
+++ b/vdp.h	Thu Nov 01 20:14:56 2018 -0700
@@ -252,5 +252,6 @@
 void vdp_reacquire_framebuffer(vdp_context *context);
 void vdp_serialize(vdp_context *context, serialize_buffer *buf);
 void vdp_deserialize(deserialize_buffer *buf, void *vcontext);
+void vdp_force_update_framebuffer(vdp_context *context);
 
 #endif //VDP_H_