summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit289037833174dd27e1ec4c17ed524c70911cfaf7 (patch)
tree783e033fe1c4a8e71857f6c3b251b0b5ea319503
parentc267bde2e14b613533a544465bc4f805ef34c58b (diff)
nitedrvr: draw tiles manually (nw)
-rw-r--r--src/mame/drivers/nitedrvr.cpp6
-rw-r--r--src/mame/includes/nitedrvr.h7
-rw-r--r--src/mame/video/nitedrvr.cpp39
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;