segas16a/sega16b tweaks - change when video is updated (for fantzone) - bump quantum time for 16a cases with MCU (for quartet stage 18) (#7987)

This commit is contained in:
David Haywood 2021-04-21 19:13:13 +01:00 committed by GitHub
parent c115cf1c8e
commit 6b8a176ac2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 0 deletions

View File

@ -1995,6 +1995,9 @@ void segas16a_state::system16a(machine_config &config)
m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1); m_screen->set_visarea(0*8, 40*8-1, 0*8, 28*8-1);
m_screen->set_screen_update(FUNC(segas16a_state::screen_update)); m_screen->set_screen_update(FUNC(segas16a_state::screen_update));
m_screen->set_palette(m_palette); m_screen->set_palette(m_palette);
// see MT1852 (glitch in fantzone after stage intro text vanishes)
// this is a hack, but the scroll values must be latched at some point, when is unknown
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
SEGA_SYS16A_SPRITES(config, m_sprites, 0); SEGA_SYS16A_SPRITES(config, m_sprites, 0);
SEGAIC16VID(config, m_segaic16vid, 0, "gfxdecode"); SEGAIC16VID(config, m_segaic16vid, 0, "gfxdecode");
@ -2056,6 +2059,9 @@ void segas16a_state::system16a_i8751(machine_config &config)
m_mcu->port_out_cb<1>().set(FUNC(segas16a_state::mcu_control_w)); m_mcu->port_out_cb<1>().set(FUNC(segas16a_state::mcu_control_w));
m_screen->screen_vblank().set(FUNC(segas16a_state::i8751_main_cpu_vblank_w)); m_screen->screen_vblank().set(FUNC(segas16a_state::i8751_main_cpu_vblank_w));
// prevent glitchy background scroll on quartet stage 18
config.set_maximum_quantum(attotime::from_hz(6000));
} }
void segas16a_state::system16a_no7751(machine_config &config) void segas16a_state::system16a_no7751(machine_config &config)

View File

@ -3974,6 +3974,8 @@ void segas16b_state::system16b(machine_config &config)
m_screen->set_raw(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224); m_screen->set_raw(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224);
m_screen->set_screen_update(FUNC(segas16b_state::screen_update)); m_screen->set_screen_update(FUNC(segas16b_state::screen_update));
m_screen->set_palette(m_palette); m_screen->set_palette(m_palette);
// see note in segas16a.cpp, also used here for consistency
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
SEGAIC16VID(config, m_segaic16vid, 0, m_gfxdecode); SEGAIC16VID(config, m_segaic16vid, 0, m_gfxdecode);
@ -4198,6 +4200,8 @@ void segas16b_state::lockonph(machine_config &config)
m_screen->set_raw(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224); // wrong, other XTAL seems to be 17Mhz? m_screen->set_raw(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224); // wrong, other XTAL seems to be 17Mhz?
m_screen->set_screen_update(FUNC(segas16b_state::screen_update)); m_screen->set_screen_update(FUNC(segas16b_state::screen_update));
m_screen->set_palette(m_palette); m_screen->set_palette(m_palette);
// see note in segas16a.cpp, also used here for consistency
m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
SEGA_SYS16B_SPRITES(config, m_sprites, 0); SEGA_SYS16B_SPRITES(config, m_sprites, 0);
SEGAIC16VID(config, m_segaic16vid, 0, m_gfxdecode); SEGAIC16VID(config, m_segaic16vid, 0, m_gfxdecode);