From b85cedc7186178d6b61b77efd888491a0ae85022 Mon Sep 17 00:00:00 2001 From: angelosa Date: Mon, 19 Feb 2018 14:23:48 +0100 Subject: [PATCH] model2.cpp: added 30 Hz renderer mode, fixes Virtua Striker timings [Angelo Salese] --- src/mame/drivers/model2.cpp | 15 +++++++++++++-- src/mame/includes/model2.h | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index 8abeeb98212..b51c7b006a0 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -550,7 +550,14 @@ READ32_MEMBER(model2_state::fifoctl_r) READ32_MEMBER(model2_state::videoctl_r) { - return ((m_screen->frame_number() & 1) << 2) | (m_videocontrol & 3); + uint8_t framenum; + + if(m_render_mode == false) + framenum = (m_screen->frame_number() & 2) << 1; + else + framenum = (m_screen->frame_number() & 1) << 2; + + return (framenum) | (m_videocontrol & 3); } WRITE32_MEMBER(model2_state::videoctl_w) @@ -1387,7 +1394,11 @@ WRITE32_MEMBER(model2_state::copro_w) WRITE32_MEMBER(model2_state::mode_w) { - osd_printf_debug("Mode = %08X\n", data); + // ---- -x-- (1) 60 Hz mode + // (0) 30 Hz mode - skytargt, desert, vstriker, vcop + // ---- ---x Test Mode (Host can "access memories that are always being reloaded") + m_render_mode = bool(BIT(data,2)); +// osd_printf_debug("Mode = %08X\n", data); } WRITE32_MEMBER(model2_state::model2o_tex_w0) diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h index 76f89d6e205..84887e734b5 100644 --- a/src/mame/includes/model2.h +++ b/src/mame/includes/model2.h @@ -292,6 +292,9 @@ public: protected: virtual void video_start() override; + +private: + bool m_render_mode; };