main: start vdp1 drawing immediately after updating the command list

This appears to reduce position artifacts between vdp1/vdp2 drawings.
This commit is contained in:
Zack Buhman 2023-07-29 04:27:35 +00:00
parent a443d09b3d
commit e57d93400e

View File

@ -463,8 +463,12 @@ void render()
render_sprites(offset); render_sprites(offset);
vdp1.reg.PTMR = PTMR__PTM__NOW;
vdp2.reg.SCXIN0 = offset.x; vdp2.reg.SCXIN0 = offset.x;
vdp2.reg.SCXDN0 = 0;
vdp2.reg.SCYIN0 = offset.y; vdp2.reg.SCYIN0 = offset.y;
vdp2.reg.SCYDN0 = 0;
render_map(); render_map();
} }
@ -480,8 +484,8 @@ void v_blank_in_int()
sh2.reg.FRC.L = 0; sh2.reg.FRC.L = 0;
sh2.reg.FTCSR = 0; // clear flags sh2.reg.FTCSR = 0; // clear flags
update();
render(); render();
update();
// wait at least 300us, as specified in the SMPC manual. // 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 // 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; vdp1.vram.cmd[2].CTRL = CTRL__END;
// start drawing (execute the command list) on every frame // 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() void init_vdp2()