From e11462b92ccf4e72d197ec49570727bb89604954 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sun, 11 Dec 2022 00:53:55 +0100 Subject: video/upd3301.cpp: skip lines also skip strips, fix sorcer (pc8801) text layer not syncing drawing --- src/devices/video/upd3301.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/devices/video/upd3301.cpp b/src/devices/video/upd3301.cpp index 9e213a6c292..e12f667e4b4 100644 --- a/src/devices/video/upd3301.cpp +++ b/src/devices/video/upd3301.cpp @@ -550,7 +550,7 @@ void upd3301_device::dack_w(uint8_t data) draw_scanline(); - if (m_y == (m_l * m_r)) + if (m_y >= (m_l * m_r)) { // end DMA transfer set_drq(0); @@ -664,7 +664,10 @@ void upd3301_device::draw_scanline() } } - m_y += m_r; + // sorcer (pc8801) enables the "skip line" then sets up DMA for 12 rows (start address 0xf9e8, do the math). + // Other than applying pseudo-interlace effect over the graphic layer this also seems to skip strips, + // sorcer wants the very last row (0xff88) to be used as a mask over bottom-most 16 lines. + m_y += m_r << m_s; } -- cgit v1.2.3