From 7079fa8fa60f741d4aa277598ff2ff61b1fd54f2 Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 1 Apr 2018 23:25:45 -0400 Subject: [PATCH] dreamwld.cpp: Fix crash in VRAM write handler; fix tilemap rowscroll and transparency handling (nw) --- src/mame/drivers/dreamwld.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp index 2e1334b35f4..b848b2ac7a4 100644 --- a/src/mame/drivers/dreamwld.cpp +++ b/src/mame/drivers/dreamwld.cpp @@ -242,8 +242,11 @@ template WRITE32_MEMBER(dreamwld_state::vram_w) { COMBINE_DATA(&m_vram[Layer][offset]); - m_tilemap[Layer][offset]->mark_tile_dirty(offset * 2); - m_tilemap[Layer][offset]->mark_tile_dirty(offset * 2 + 1); + for (int size = 0; size < 2; size++) + { + m_tilemap[Layer][size]->mark_tile_dirty(offset * 2); + m_tilemap[Layer][size]->mark_tile_dirty(offset * 2 + 1); + } } template @@ -263,8 +266,9 @@ 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[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][0]->set_transparent_pen(0); m_tilemap[1][1]->set_transparent_pen(0); - + for (int layer = 0; layer < 2; layer++) { for (int size = 0; size < 2; size++) @@ -325,7 +329,7 @@ uint32_t dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_in 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)) { tmptilemap[layer]->set_scroll_rows(((64*16) >> size) >> tile_rowscroll);