mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
cps1.cpp, segas16b.cpp: Fix some unsafe bitmap usage in video update routines causing tilemap asserts in debug builds and segmentation faults in some non-debug builds
This commit is contained in:
parent
ee76056937
commit
854469730f
@ -2306,6 +2306,8 @@ void cps_state::video_start()
|
||||
cps1_get_video_base(); /* Calculate base pointers */
|
||||
cps1_get_video_base(); /* Calculate old base pointers */
|
||||
|
||||
m_screen->register_screen_bitmap(m_dummy_bitmap);
|
||||
|
||||
/* state save register */
|
||||
save_item(NAME(m_scanline1));
|
||||
save_item(NAME(m_scanline2));
|
||||
@ -2930,7 +2932,6 @@ void cps_state::cps1_render_layer( screen_device &screen, bitmap_ind16 &bitmap,
|
||||
|
||||
void cps_state::cps1_render_high_layer( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
|
||||
{
|
||||
bitmap_ind16 dummy_bitmap;
|
||||
switch (layer)
|
||||
{
|
||||
case 0:
|
||||
@ -2939,7 +2940,7 @@ void cps_state::cps1_render_high_layer( screen_device &screen, bitmap_ind16 &bit
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
m_bg_tilemap[layer - 1]->draw(screen, dummy_bitmap, cliprect, TILEMAP_DRAW_LAYER0, 1);
|
||||
m_bg_tilemap[layer - 1]->draw(screen, m_dummy_bitmap, cliprect, TILEMAP_DRAW_LAYER0, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -47,9 +47,8 @@ uint32_t segas16b_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
|
||||
m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1 | TILEMAP_DRAW_OPAQUE, 0x00);
|
||||
|
||||
// draw background again, just to set the priorities on non-transparent pixels
|
||||
bitmap_ind16 dummy_bitmap;
|
||||
m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01);
|
||||
m_segaic16vid->tilemap_draw( screen, dummy_bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02);
|
||||
m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 0, 0x01);
|
||||
m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_BACKGROUND, 1, 0x02);
|
||||
|
||||
// draw foreground
|
||||
m_segaic16vid->tilemap_draw( screen, bitmap, cliprect, 0, segaic16_video_device::TILEMAP_FOREGROUND, 0, 0x02);
|
||||
|
Loading…
Reference in New Issue
Block a user