From e57d93400e39c70fbfcc37985fde1909d0520e0a Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Sat, 29 Jul 2023 04:27:35 +0000 Subject: [PATCH] main: start vdp1 drawing immediately after updating the command list This appears to reduce position artifacts between vdp1/vdp2 drawings. --- main.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index b644d52..c1150cd 100644 --- a/main.cpp +++ b/main.cpp @@ -463,8 +463,12 @@ void render() render_sprites(offset); + vdp1.reg.PTMR = PTMR__PTM__NOW; + vdp2.reg.SCXIN0 = offset.x; + vdp2.reg.SCXDN0 = 0; vdp2.reg.SCYIN0 = offset.y; + vdp2.reg.SCYDN0 = 0; render_map(); } @@ -480,8 +484,8 @@ void v_blank_in_int() sh2.reg.FRC.L = 0; sh2.reg.FTCSR = 0; // clear flags - update(); render(); + update(); // wait at least 300us, as specified in the SMPC manual. // It appears reading FRC.H is mandatory and *must* occur before FRC.L on real @@ -549,7 +553,7 @@ void init_vdp1() vdp1.vram.cmd[2].CTRL = CTRL__END; // start drawing (execute the command list) on every frame - vdp1.reg.PTMR = PTMR__PTM__FRAME_CHANGE; + //vdp1.reg.PTMR = PTMR__PTM__FRAME_CHANGE; } void init_vdp2()