summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/tilemap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/tilemap.cpp')
-rw-r--r--src/emu/tilemap.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/emu/tilemap.cpp b/src/emu/tilemap.cpp
index fcafd93c56f..39575ed5bc8 100644
--- a/src/emu/tilemap.cpp
+++ b/src/emu/tilemap.cpp
@@ -1012,27 +1012,35 @@ void tilemap_t::draw_common(screen_device &screen, _BitmapClass &dest, const rec
u32 const yextent = visarea.bottom() + visarea.top() + 1; // y0 + y1 + 1 for calculating vertical centre as (y0 + y1 + 1) >> 1
// cache row/colscroll
- std::vector<s32> rowscroll(m_scrollrows);
- std::vector<s32> colscroll(m_scrollcols);
-
bool skip_rowscroll = true;
- bool skip_colscroll = true;
+ std::vector<s32> rowscroll;
+ rowscroll.reserve(m_scrollrows);
+
+ s32 scroll0 = effective_rowscroll(0, xextent);
+ rowscroll.push_back(scroll0);
- for (int i = 0, scroll = 0; i < m_scrollrows; i++)
+ for (int i = 1; i < m_scrollrows; i++)
{
- s32 prev = scroll;
- scroll = rowscroll[i] = effective_rowscroll(i, xextent);
+ s32 scroll = effective_rowscroll(i, xextent);
+ rowscroll.push_back(scroll);
- if (i > 0 && scroll != prev)
+ if (scroll != scroll0)
skip_rowscroll = false;
}
- for (int i = 0, scroll = 0; i < m_scrollcols; i++)
+ bool skip_colscroll = true;
+ std::vector<s32> colscroll;
+ colscroll.reserve(m_scrollcols);
+
+ scroll0 = effective_colscroll(0, yextent);
+ colscroll.push_back(scroll0);
+
+ for (int i = 1; i < m_scrollcols; i++)
{
- s32 prev = scroll;
- scroll = colscroll[i] = effective_colscroll(i, yextent);
+ s32 scroll = effective_colscroll(i, yextent);
+ colscroll.push_back(scroll);
- if (i > 0 && scroll != prev)
+ if (scroll != scroll0)
skip_colscroll = false;
}