mirror of
https://github.com/holub/mame
synced 2025-05-06 14:25:54 +03:00
dreamwld.cpp: Fix crash in VRAM write handler; fix tilemap rowscroll and transparency handling (nw)
This commit is contained in:
parent
0004139941
commit
7079fa8fa6
@ -242,8 +242,11 @@ template<int Layer>
|
|||||||
WRITE32_MEMBER(dreamwld_state::vram_w)
|
WRITE32_MEMBER(dreamwld_state::vram_w)
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&m_vram[Layer][offset]);
|
COMBINE_DATA(&m_vram[Layer][offset]);
|
||||||
m_tilemap[Layer][offset]->mark_tile_dirty(offset * 2);
|
for (int size = 0; size < 2; size++)
|
||||||
m_tilemap[Layer][offset]->mark_tile_dirty(offset * 2 + 1);
|
{
|
||||||
|
m_tilemap[Layer][size]->mark_tile_dirty(offset * 2);
|
||||||
|
m_tilemap[Layer][size]->mark_tile_dirty(offset * 2 + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<int Layer>
|
template<int Layer>
|
||||||
@ -263,6 +266,7 @@ void dreamwld_state::video_start()
|
|||||||
m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS, 16, 16, 64,64);
|
m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS, 16, 16, 64,64);
|
||||||
m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS, 16, 16, 128,32);
|
m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS, 16, 16, 128,32);
|
||||||
m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS, 16, 16, 128,32);
|
m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS, 16, 16, 128,32);
|
||||||
|
m_tilemap[1][0]->set_transparent_pen(0);
|
||||||
m_tilemap[1][1]->set_transparent_pen(0);
|
m_tilemap[1][1]->set_transparent_pen(0);
|
||||||
|
|
||||||
for (int layer = 0; layer < 2; layer++)
|
for (int layer = 0; layer < 2; layer++)
|
||||||
@ -325,7 +329,7 @@ uint32_t dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_in
|
|||||||
|
|
||||||
if (layer_ctrl[layer] & 0x0300)
|
if (layer_ctrl[layer] & 0x0300)
|
||||||
{
|
{
|
||||||
int tile_rowscroll = (layer_ctrl[layer] & 0x0200) >> 5;
|
int tile_rowscroll = (layer_ctrl[layer] & 0x0200) >> 7;
|
||||||
if (m_old_linescroll[layer] != (layer_ctrl[layer] & 0x0300))
|
if (m_old_linescroll[layer] != (layer_ctrl[layer] & 0x0300))
|
||||||
{
|
{
|
||||||
tmptilemap[layer]->set_scroll_rows(((64*16) >> size) >> tile_rowscroll);
|
tmptilemap[layer]->set_scroll_rows(((64*16) >> size) >> tile_rowscroll);
|
||||||
|
Loading…
Reference in New Issue
Block a user