summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video
diff options
context:
space:
mode:
author ajrhacker <ajrhacker@users.noreply.github.com>2018-05-20 13:07:49 -0400
committer GitHub <noreply@github.com>2018-05-20 13:07:49 -0400
commit67a6fe46852c251a4b292d9f79f9b4b9301b43aa (patch)
tree5f37e09ecb89ee7345e78995b41d6f00cad17243 /src/mame/video
parent2b3de076971c0bf9126f09028c4d87016e4d103d (diff)
parentad71b1124716bc07b90ccf6db12ffa93c431d66e (diff)
Merge pull request #3591 from kazblox/master
Give markham.cpp the C++ makeover and merge with strnskil.cpp, plus other changes
Diffstat (limited to 'src/mame/video')
-rw-r--r--src/mame/video/markham.cpp67
1 files changed, 48 insertions, 19 deletions
diff --git a/src/mame/video/markham.cpp b/src/mame/video/markham.cpp
index 4d943c57bcd..4cb7505cd1e 100644
--- a/src/mame/video/markham.cpp
+++ b/src/mame/video/markham.cpp
@@ -3,11 +3,10 @@
/******************************************************************************
Markham (c) 1983 Sun Electronics
+ Strength & Skill (c) 1984 Sun Electronics
Video hardware driver by Uki
- 17/Jun/2001 -
-
******************************************************************************/
#include "emu.h"
@@ -39,21 +38,12 @@ PALETTE_INIT_MEMBER(markham_state, markham)
}
}
-WRITE8_MEMBER(markham_state::markham_videoram_w)
+WRITE8_MEMBER(markham_state::videoram_w)
{
m_videoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset / 2);
}
-WRITE8_MEMBER(markham_state::markham_flipscreen_w)
-{
- if (flip_screen() != (data & 0x01))
- {
- flip_screen_set(data & 0x01);
- machine().tilemap().mark_all_dirty();
- }
-}
-
TILE_GET_INFO_MEMBER(markham_state::get_bg_tile_info)
{
int attr = m_videoram[tile_index * 2];
@@ -70,6 +60,19 @@ void markham_state::video_start()
m_bg_tilemap->set_scroll_rows(32);
}
+VIDEO_START_MEMBER(markham_state, strnskil)
+{
+ video_start();
+
+ m_bg_tilemap->set_scroll_rows(32);
+ m_irq_scanline_start = 96;
+ m_irq_scanline_end = 240;
+
+ save_item(NAME(m_irq_source));
+ save_item(NAME(m_irq_scanline_start));
+ save_item(NAME(m_irq_scanline_end));
+}
+
void markham_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
uint8_t *spriteram = m_spriteram;
@@ -86,7 +89,7 @@ void markham_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
int x = spriteram[offs + 3];
int y = spriteram[offs + 0];
int px, py;
- col &= 0x3f ;
+ col &= 0x3f;
if (flip_screen() == 0)
{
@@ -115,14 +118,40 @@ void markham_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec
uint32_t markham_state::screen_update_markham(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int i;
+ int row;
- for (i = 0; i < 32; i++)
+ for (row = 0; row < 32; row++)
{
- if ((i > 3) && (i < 16))
- m_bg_tilemap->set_scrollx(i, m_xscroll[0]);
- if (i >= 16)
- m_bg_tilemap->set_scrollx(i, m_xscroll[1]);
+ if ((row > 3) && (row < 16))
+ m_bg_tilemap->set_scrollx(row, m_xscroll[0]);
+ if (row >= 16)
+ m_bg_tilemap->set_scrollx(row, m_xscroll[1]);
+ }
+
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ draw_sprites(bitmap, cliprect);
+ return 0;
+}
+
+uint32_t markham_state::screen_update_strnskil(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ const uint8_t *scroll_data = memregion("scroll_prom")->base();
+
+ int row;
+
+ for (row = 0; row < 32; row++)
+ {
+ if (m_scroll_ctrl != 0x07)
+ {
+ switch (scroll_data[m_scroll_ctrl * 32 + row])
+ {
+ case 2:
+ m_bg_tilemap->set_scrollx(row, -~m_xscroll[1]);
+ case 4:
+ m_bg_tilemap->set_scrollx(row, -~m_xscroll[0]);
+ break;
+ }
+ }
}
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);