From 674dd233ee0bd34d9da8d8b111ad41e07d606251 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 3 Sep 2018 21:50:07 +0900 Subject: dreamwld.cpp : Fix rowscroll (#3950) * dreamwld.cpp : Fix rowscroll * dreamwld.cpp : More fixes --- src/mame/drivers/dreamwld.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp index da1deb99172..b3ad315f009 100644 --- a/src/mame/drivers/dreamwld.cpp +++ b/src/mame/drivers/dreamwld.cpp @@ -336,17 +336,20 @@ uint32_t dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_in 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); + for (int i = 0; i < 2; i++) + { + m_tilemap[layer][i]->set_scroll_rows(((64*16) >> i)); + } m_old_linescroll[layer] = (layer_ctrl[layer] & 0x0300); } uint16_t* linebase = &m_lineram16[(layer * 0x200) / 2]; - for (int i = 0; i < (256 >> tile_rowscroll); i++) /* 256 screen lines */ + for (int i = 0; i < 256; i++) /* 256 screen lines */ { /* per-line rowscroll */ - int x0 = linebase[(i+32)&0xff]; + int x0 = linebase[((i+32)&0xff) >> tile_rowscroll]; tmptilemap[layer]->set_scrollx( - (i + scrolly[layer]) & (row_mask >> tile_rowscroll), + (i + scrolly[layer]) & row_mask, scrollx[layer] + x0 ); } } @@ -354,7 +357,10 @@ uint32_t dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_in { if (m_old_linescroll[layer] != (layer_ctrl[layer] & 0x0300)) { - tmptilemap[layer]->set_scroll_rows(1); + for (int i = 0; i < 2; i++) + { + m_tilemap[layer][i]->set_scroll_rows(1); + } m_old_linescroll[layer] = (layer_ctrl[layer] & 0x0300); } -- cgit v1.2.3