From 9903683f5702cd56c0a098bc222f6e01c4e4bb38 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sun, 15 Sep 2024 17:27:28 +0200 Subject: funtech/supracan.cpp: add overscan mode --- hash/supracan.xml | 8 ++++---- src/mame/funtech/supracan.cpp | 14 +++++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/hash/supracan.xml b/hash/supracan.xml index 433d1c7944a..93672bda29f 100644 --- a/hash/supracan.xml +++ b/hash/supracan.xml @@ -83,7 +83,7 @@ Broken [video] during intro, uses bitmap mode with ROZ layer - + Super Taiwanese Baseball League ~ Chao Ji Zhong Hua Zhi Bang Lian Meng 1995 @@ -192,9 +192,9 @@ few [video] missing/glitched tiles in gameplay, likely related to above. diff --git a/src/mame/funtech/supracan.cpp b/src/mame/funtech/supracan.cpp index 0090357d112..14142b4e257 100644 --- a/src/mame/funtech/supracan.cpp +++ b/src/mame/funtech/supracan.cpp @@ -2060,16 +2060,24 @@ void supracan_state::video_w(offs_t offset, uint16_t data, uint16_t mem_mask) { LOGMASKED(LOG_VIDEO, "video_flags = %04x\n", data); - const int h320_mode = BIT(data, 8); + if (data & 0xc00) + popmessage("Interlace enable %04x", data & 0xc00); // TODO: verify if this support midframe switching - if (h320_mode != BIT(m_video_flags, 8)) + if ((data & 0x300) != (m_video_flags & 0x300)) { rectangle visarea = m_screen->visible_area(); + const int h320_mode = BIT(data, 8); + // enabled by sangofgt (224 + 16 borders), magipool wants (240) + const int overscan_mode = BIT(data, 9); + const int htotal = h320_mode ? 455 : 342; const int divider = h320_mode ? 8 : 10; - visarea.set(0, (h320_mode ? 320 : 256) - 1, 8, 232 - 1); + const int vdisplay_start = overscan_mode ? 8 : 0; + const int vdisplay_end = overscan_mode ? 232 : 240; + + visarea.set(0, (h320_mode ? 320 : 256) - 1, vdisplay_start, vdisplay_end - 1); m_screen->configure(htotal, 262, visarea, attotime::from_ticks(htotal * 262, U13_CLOCK / divider).as_attoseconds()); //m_screen->reset_origin(0, 0); } -- cgit v1.2.3