diff options
| author | 2025-06-30 18:06:21 +0200 | |
|---|---|---|
| committer | 2025-06-30 18:06:21 +0200 | |
| commit | 84bcd5740174076029537e324a3666680046172d (patch) | |
| tree | f87f16c139863b68ba7e17a3b09e27c2688a8145 | |
| parent | f00e30bc1f55bcd29eac2d8af763447d8fe2ba6c (diff) | |
model2: do geo_parse even if frame was skipped
| -rw-r--r-- | src/mame/sega/model2.cpp | 2 | ||||
| -rw-r--r-- | src/mame/sega/model2_v.cpp | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/mame/sega/model2.cpp b/src/mame/sega/model2.cpp index 1dcb4d11dd5..395e909b38e 100644 --- a/src/mame/sega/model2.cpp +++ b/src/mame/sega/model2.cpp @@ -2537,7 +2537,7 @@ void model2_state::model2_screen(machine_config &config) m_tiles->xvout_write_callback().set(FUNC(model2_state::vertical_sync_w)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); + m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK | VIDEO_ALWAYS_UPDATE); // TODO: from System 24, might not be accurate for Model 2 m_screen->set_raw(VIDEO_CLOCK/2, 656, 0/*+69*/, 496/*+69*/, 424, 0/*+25*/, 384/*+25*/); m_screen->set_screen_update(FUNC(model2_state::screen_update_model2)); diff --git a/src/mame/sega/model2_v.cpp b/src/mame/sega/model2_v.cpp index 57937d2e536..a8ed99c1e30 100644 --- a/src/mame/sega/model2_v.cpp +++ b/src/mame/sega/model2_v.cpp @@ -2551,7 +2551,7 @@ u32 *model2_state::geo_process_command( geo_state *geo, u32 opcode, u32 *input, return input; } -void model2_state::geo_parse( void ) +void model2_state::geo_parse() { u32 address = (m_geo_read_start_address & 0x1ffff)/4; u32 *input = &m_bufferram[address]; @@ -2630,6 +2630,14 @@ void model2_state::video_start() u32 model2_state::screen_update_model2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { //logerror("--- frame ---\n"); + if (machine().video().skip_this_frame()) + { + model2_3d_frame_start(); + geo_parse(); + + return UPDATE_HAS_NOT_CHANGED; + } + bitmap.fill(m_palette->pen(0), cliprect); m_sys24_bitmap.fill(0, cliprect); @@ -2694,5 +2702,4 @@ void model2_state::tri_list_dump(FILE *dst) fprintf( dst, "min_z = %04x, max_z = %04x\n", m_raster->min_z, m_raster->max_z ); fclose( dst ); - } |
