summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2025-06-30 18:06:21 +0200
committer hap <happppp@users.noreply.github.com>2025-06-30 18:06:21 +0200
commit84bcd5740174076029537e324a3666680046172d (patch)
treef87f16c139863b68ba7e17a3b09e27c2688a8145
parentf00e30bc1f55bcd29eac2d8af763447d8fe2ba6c (diff)
model2: do geo_parse even if frame was skipped
-rw-r--r--src/mame/sega/model2.cpp2
-rw-r--r--src/mame/sega/model2_v.cpp11
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 );
-
}