diff options
Diffstat (limited to 'src/mame/konami/rungun.cpp')
| -rw-r--r-- | src/mame/konami/rungun.cpp | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/src/mame/konami/rungun.cpp b/src/mame/konami/rungun.cpp index a8cbb391550..2b015b06cdf 100644 --- a/src/mame/konami/rungun.cpp +++ b/src/mame/konami/rungun.cpp @@ -181,7 +181,7 @@ uint16_t rungun_state::sysregs_r(offs_t offset, uint16_t mem_mask) bit9 : screen output select */ { - uint8_t field_bit = m_screen->frame_number() & 1; + uint8_t field_bit = ~m_screen->frame_number() & 1; if (m_single_screen_mode) field_bit = 1; return (m_system->read() & 0xfdff) | (field_bit << 9); @@ -418,6 +418,7 @@ uint32_t rungun_state::screen_update_rng(screen_device &screen, bitmap_ind16 &bi { bitmap.fill(m_palette->black_pen(), cliprect); screen.priority().fill(0, cliprect); + m_current_display_bank = m_screen->frame_number() & 1; if (m_single_screen_mode) m_current_display_bank = 0; @@ -441,21 +442,21 @@ uint32_t rungun_state::screen_update_rng(screen_device &screen, bitmap_ind16 &bi // the 60hz signal gets split between 2 screens uint32_t rungun_state::screen_update_rng_dual_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int m_current_display_bank = m_screen->frame_number() & 1; + int current_display_bank = m_screen->frame_number() & 1; - if (!m_current_display_bank) + if (!current_display_bank) screen_update_rng(screen, m_rng_dual_demultiplex_left_temp, cliprect); else screen_update_rng(screen, m_rng_dual_demultiplex_right_temp, cliprect); - copybitmap( bitmap, m_rng_dual_demultiplex_left_temp, 0, 0, 0, 0, cliprect); + copybitmap(bitmap, m_rng_dual_demultiplex_left_temp, 0, 0, 0, 0, cliprect); return 0; } // this depends upon the first screen being updated, and the bitmap being copied to the temp bitmap uint32_t rungun_state::screen_update_rng_dual_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - copybitmap( bitmap, m_rng_dual_demultiplex_right_temp, 0, 0, 0, 0, cliprect); + copybitmap(bitmap, m_rng_dual_demultiplex_right_temp, 0, 0, 0, 0, cliprect); return 0; } @@ -655,7 +656,6 @@ void rungun_state::rng(machine_config &config) /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); m_screen->set_raw(32_MHz_XTAL / 4, 512, 88, 88+416, 264, 24, 24+224); m_screen->set_screen_update(FUNC(rungun_state::screen_update_rng)); m_screen->set_palette(m_palette); @@ -708,19 +708,10 @@ void rungun_state::rng_dual(machine_config &config) { rng(config); - // FIXME: raw parameters cause graphics to desync in dual configuration - m_screen->set_refresh_hz(59.185606); - m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); - m_screen->set_size(64*8, 32*8); - m_screen->set_visarea(88, 88+416-1, 24, 24+224-1); m_screen->set_screen_update(FUNC(rungun_state::screen_update_rng_dual_left)); screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER)); - screen2.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); - screen2.set_refresh_hz(59.185606); - screen2.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen2.set_size(64*8, 32*8); - screen2.set_visarea(88, 88+416-1, 24, 24+224-1); + screen2.set_raw(32_MHz_XTAL / 4, 512, 88, 88+416, 264, 24, 24+224); screen2.set_screen_update(FUNC(rungun_state::screen_update_rng_dual_right)); screen2.set_palette(m_palette2); |
