From fcbd9540ba06e3a4466f9aa661aba40075f46949 Mon Sep 17 00:00:00 2001 From: dinkc64 Date: Thu, 18 Nov 2021 10:12:50 -0500 Subject: [PATCH] ssv, experimental lag fix plus fix pastelis 2p split screen mode --- src/burn/drv/pst90s/d_ssv.cpp | 43 ++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/burn/drv/pst90s/d_ssv.cpp b/src/burn/drv/pst90s/d_ssv.cpp index a7522f755..b6610c2df 100644 --- a/src/burn/drv/pst90s/d_ssv.cpp +++ b/src/burn/drv/pst90s/d_ssv.cpp @@ -3917,11 +3917,33 @@ static INT32 DrvFrame() for (INT32 i = 0; i < nInterleave; i++) { line_cycles = v60TotalCycles(); + + if (i == 0) { // start in vblank (was line 240) for 1frame less input lag + if (use_spritedelay) { + memcpy(DrvScrollRAMDelayed, DrvScrollRAM, 0x80); + memcpy(DrvSprRAMDelayed, DrvSprRAM, 0x40000); + } + vblank = 1; + requested_int |= 1 << 3; + update_irq_state(); + } + + if (i == 22) { // adjusted end-of-vblank + vblank = 0; + no_rasters = 1; + } + CPU_RUN(0, v60); + if (i == 120+22 && pastelis) { + requested_int |= 1 << 2; + update_irq_state(); + draw_next_line = 1; + } + if (draw_next_line != -1) { - no_rasters = 0; - DrvDrawScanline(i - 1); + no_rasters = 0; // we're doing a raster update + DrvDrawScanline(i - 23); draw_next_line = -1; } @@ -3938,23 +3960,8 @@ static INT32 DrvFrame() requested_int |= 1 << 6; update_irq_state(); } - - if (i == 120 && pastelis) { - requested_int |= 1 << 2; - update_irq_state(); - } - - if (i == 240) { - DrvDrawEnd(); - if (use_spritedelay) { - memcpy(DrvScrollRAMDelayed, DrvScrollRAM, 0x80); - memcpy(DrvSprRAMDelayed, DrvSprRAM, 0x40000); - } - vblank = 1; - requested_int |= 1 << 3; - update_irq_state(); - } } + DrvDrawEnd(); v60Close();