summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-04-01 23:25:45 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-04-01 23:45:56 -0400
commit7079fa8fa60f741d4aa277598ff2ff61b1fd54f2 (patch)
treed7dbf51af9ac09b827c370334f690ca58f218cbd
parent0004139941f873eeb4f698ef29e6913f34dbd17a (diff)
dreamwld.cpp: Fix crash in VRAM write handler; fix tilemap rowscroll and transparency handling (nw)
-rw-r--r--src/mame/drivers/dreamwld.cpp12
1 files 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<int Layer>
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<int Layer>
@@ -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);