diff options
Diffstat (limited to 'src/mame/video/seta2.cpp')
-rw-r--r-- | src/mame/video/seta2.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mame/video/seta2.cpp b/src/mame/video/seta2.cpp index be5f59e7009..520022e8a37 100644 --- a/src/mame/video/seta2.cpp +++ b/src/mame/video/seta2.cpp @@ -247,6 +247,11 @@ WRITE16_MEMBER(seta2_state::vregs_w) } } +READ16_MEMBER(seta2_state::spriteram_r) +{ + return m_spriteram[offset]; +} + WRITE16_MEMBER(seta2_state::spriteram_w) { COMBINE_DATA(&m_spriteram[offset]); @@ -343,11 +348,11 @@ void seta2_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) global_yoffset += 1; - uint16_t *s1 = m_private_spriteram; + uint16_t *s1 = m_private_spriteram.get(); // for ( ; s1 < end; s1+=4 ) - for (; s1 < m_private_spriteram + 0x1000 / 2; s1 += 4) // more reasonable (and it cures MAME lockup in e.g. funcube3 boot) + for (; s1 < &m_private_spriteram[0x1000 / 2]; s1 += 4) // more reasonable (and it cures MAME lockup in e.g. funcube3 boot) { int num = s1[0]; @@ -558,6 +563,7 @@ void seta2_state::video_start() m_gfxdecode->gfx(i)->set_granularity(16); m_buffered_spriteram = std::make_unique<uint16_t[]>(m_spriteram.bytes()/2); + m_private_spriteram = make_unique_clear<uint16_t[]>(0x1000 / 2); m_xoffset = 0; @@ -571,7 +577,7 @@ void seta2_state::video_start() m_raster_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seta2_state::raster_timer_done), this)); - save_item(NAME(m_private_spriteram)); + save_pointer(NAME(m_private_spriteram), 0x1000 / 2); } VIDEO_START_MEMBER(seta2_state,xoffset) |