diff options
author | hap <happppp@users.noreply.github.com> | 2019-07-13 13:08:47 +0200 |
---|---|---|
committer | hap <happppp@users.noreply.github.com> | 2019-07-13 13:09:02 +0200 |
commit | 289037833174dd27e1ec4c17ed524c70911cfaf7 (patch) | |
tree | 783e033fe1c4a8e71857f6c3b251b0b5ea319503 | |
parent | c267bde2e14b613533a544465bc4f805ef34c58b (diff) |
nitedrvr: draw tiles manually (nw)
-rw-r--r-- | src/mame/drivers/nitedrvr.cpp | 6 | ||||
-rw-r--r-- | src/mame/includes/nitedrvr.h | 7 | ||||
-rw-r--r-- | src/mame/video/nitedrvr.cpp | 39 |
3 files changed, 18 insertions, 34 deletions
diff --git a/src/mame/drivers/nitedrvr.cpp b/src/mame/drivers/nitedrvr.cpp index e0628808593..297c33f45a3 100644 --- a/src/mame/drivers/nitedrvr.cpp +++ b/src/mame/drivers/nitedrvr.cpp @@ -51,14 +51,14 @@ void nitedrvr_state::nitedrvr_map(address_map &map) { map(0x0000, 0x00ff).ram().mirror(0x100); // SCRAM - map(0x0200, 0x027f).nopr().w(FUNC(nitedrvr_state::nitedrvr_videoram_w)).mirror(0x180).share("videoram"); // PFW + map(0x0200, 0x027f).nopr().ram().mirror(0x180).share("videoram"); // PFW map(0x0400, 0x042f).nopr().writeonly().mirror(0x1c0).share("hvc"); // POSH, POSV, CHAR map(0x0430, 0x043f).w("watchdog", FUNC(watchdog_timer_device::reset_w)).mirror(0x1c0); map(0x0600, 0x07ff).r(FUNC(nitedrvr_state::nitedrvr_in0_r)); map(0x0800, 0x09ff).r(FUNC(nitedrvr_state::nitedrvr_in1_r)); map(0x0a00, 0x0bff).w(FUNC(nitedrvr_state::nitedrvr_out0_w)); map(0x0c00, 0x0dff).w(FUNC(nitedrvr_state::nitedrvr_out1_w)); - map(0x8000, 0x807f).readonly().mirror(0x380).share("videoram"); // PFR + map(0x8000, 0x807f).nopw().ram().mirror(0x380).share("videoram"); // PFR map(0x8400, 0x87ff).rw(FUNC(nitedrvr_state::nitedrvr_steering_reset_r), FUNC(nitedrvr_state::nitedrvr_steering_reset_w)); map(0x9000, 0x9fff).rom(); // ROM1-ROM2 map(0xfff0, 0xffff).rom(); // ROM2 for 6502 vectors @@ -123,7 +123,7 @@ INPUT_PORTS_END static const gfx_layout charlayout = { - 8, 16, + 8, 8, 64, 1, { 0 }, diff --git a/src/mame/includes/nitedrvr.h b/src/mame/includes/nitedrvr.h index b5bfa8b4d0a..14a4127b302 100644 --- a/src/mame/includes/nitedrvr.h +++ b/src/mame/includes/nitedrvr.h @@ -46,15 +46,13 @@ private: DECLARE_READ8_MEMBER(nitedrvr_in1_r); DECLARE_WRITE8_MEMBER(nitedrvr_out0_w); DECLARE_WRITE8_MEMBER(nitedrvr_out1_w); - DECLARE_WRITE8_MEMBER(nitedrvr_videoram_w); - TILE_GET_INFO_MEMBER(get_bg_tile_info); virtual void machine_start() override; virtual void machine_reset() override; - virtual void video_start() override; uint32_t screen_update_nitedrvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(nitedrvr_crash_toggle_callback); void draw_box(bitmap_ind16 &bitmap, const rectangle &cliprect, int bx, int by, int ex, int ey); void draw_roadway(bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_tiles(bitmap_ind16 &bitmap, const rectangle &cliprect); int nitedrvr_steering(); void nitedrvr_map(address_map &map); @@ -62,9 +60,6 @@ private: required_shared_ptr<uint8_t> m_videoram; required_shared_ptr<uint8_t> m_hvc; - /* video-related */ - tilemap_t *m_bg_tilemap; - /* input */ uint8_t m_gear; uint8_t m_track; diff --git a/src/mame/video/nitedrvr.cpp b/src/mame/video/nitedrvr.cpp index 6ef13d33553..d33c8472bfa 100644 --- a/src/mame/video/nitedrvr.cpp +++ b/src/mame/video/nitedrvr.cpp @@ -9,25 +9,6 @@ #include "emu.h" #include "includes/nitedrvr.h" -WRITE8_MEMBER(nitedrvr_state::nitedrvr_videoram_w) -{ - m_videoram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset); -} - - -TILE_GET_INFO_MEMBER(nitedrvr_state::get_bg_tile_info) -{ - int code = m_videoram[tile_index] & 0x3f; - - SET_TILE_INFO_MEMBER(0, code, 0, 0); -} - -void nitedrvr_state::video_start() -{ - // note: tile rows ignored on V&8, V&64, V&128 - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nitedrvr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 16, 32, 4); -} void nitedrvr_state::draw_box(bitmap_ind16 &bitmap, const rectangle &cliprect, int bx, int by, int ex, int ey) { @@ -52,15 +33,23 @@ void nitedrvr_state::draw_roadway(bitmap_ind16 &bitmap, const rectangle &cliprec } } -uint32_t nitedrvr_state::screen_update_nitedrvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +void nitedrvr_state::draw_tiles(bitmap_ind16 &bitmap, const rectangle &cliprect) { - bitmap.fill(0, cliprect); + // draw tiles manually, note that tile rows are ignored on V&8, V&64, V&128 + for (int offs = 0; offs < 0x80; offs++) + { + int code = m_videoram[offs]; + int sx = (offs & 0x1f) * 8; + int sy = (offs >> 5) * 2 * 8; - // don't wrap playfield - rectangle clip = cliprect; - if (clip.max_y > 63) clip.max_y = 63; + m_gfxdecode->gfx(0)->opaque(bitmap, cliprect, code, 0, 0, 0, sx, sy); + } +} - m_bg_tilemap->draw(screen, bitmap, clip, 0, 0); +uint32_t nitedrvr_state::screen_update_nitedrvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); + draw_tiles(bitmap, cliprect); draw_roadway(bitmap, cliprect); return 0; |