Previous 199869 Revisions Next

r30904 Monday 9th June, 2014 at 01:56:49 UTC by hap
fixed tilemap and 'hvc' ram size
[src/mame/drivers]nitedrvr.c
[src/mame/includes]nitedrvr.h
[src/mame/video]nitedrvr.c

trunk/src/mame/drivers/nitedrvr.c
r30903r30904
4444
4545static ADDRESS_MAP_START( nitedrvr_map, AS_PROGRAM, 8, nitedrvr_state )
4646   AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100) // SCRAM
47   AM_RANGE(0x0200, 0x027f) AM_RAM_WRITE(nitedrvr_videoram_w) AM_MIRROR(0x180) AM_SHARE("videoram") // PFW
48   AM_RANGE(0x0400, 0x05ff) AM_WRITE(nitedrvr_hvc_w) AM_SHARE("hvc") // POSH, POSV, CHAR, Watchdog
47   AM_RANGE(0x0200, 0x027f) AM_WRITE(nitedrvr_videoram_w) AM_MIRROR(0x180) AM_SHARE("videoram") // PFW
48   AM_RANGE(0x0400, 0x042f) AM_WRITEONLY AM_MIRROR(0x1c0) AM_SHARE("hvc") // POSH, POSV, CHAR
49   AM_RANGE(0x0430, 0x043f) AM_WRITE(watchdog_reset_w) AM_MIRROR(0x1c0)
4950   AM_RANGE(0x0600, 0x07ff) AM_READ(nitedrvr_in0_r)
5051   AM_RANGE(0x0800, 0x09ff) AM_READ(nitedrvr_in1_r)
5152   AM_RANGE(0x0a00, 0x0bff) AM_WRITE(nitedrvr_out0_w)
5253   AM_RANGE(0x0c00, 0x0dff) AM_WRITE(nitedrvr_out1_w)
53   AM_RANGE(0x8000, 0x807f) AM_RAM AM_MIRROR(0x380) AM_SHARE("videoram") // PFR
54   AM_RANGE(0x8000, 0x807f) AM_READONLY AM_MIRROR(0x380) AM_SHARE("videoram") // PFR
5455   AM_RANGE(0x8400, 0x87ff) AM_READWRITE(nitedrvr_steering_reset_r, nitedrvr_steering_reset_w)
5556   AM_RANGE(0x9000, 0x9fff) AM_ROM // ROM1-ROM2
5657   AM_RANGE(0xfff0, 0xffff) AM_ROM // ROM2 for 6502 vectors
r30903r30904
130131   GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
131132GFXDECODE_END
132133
133/* Machine Initialization */
134
135134/* Machine Driver */
136135
137136static MACHINE_CONFIG_START( nitedrvr, nitedrvr_state )
r30903r30904
139138   /* basic machine hardware */
140139   MCFG_CPU_ADD("maincpu", M6502, XTAL_12_096MHz/12) // 1 MHz
141140   MCFG_CPU_PROGRAM_MAP(nitedrvr_map)
142   MCFG_CPU_VBLANK_INT_DRIVER("screen", nitedrvr_state, irq0_line_hold)
141   MCFG_CPU_VBLANK_INT_DRIVER("screen", nitedrvr_state, irq0_line_hold)
143142   MCFG_WATCHDOG_VBLANK_INIT(3)
144143
145
146144   MCFG_TIMER_DRIVER_ADD_PERIODIC("crash_timer", nitedrvr_state, nitedrvr_crash_toggle_callback, PERIOD_OF_555_ASTABLE(RES_K(180), 330, CAP_U(1)))
147145
148146   /* video hardware */
trunk/src/mame/includes/nitedrvr.h
r30903r30904
5858   DECLARE_WRITE8_MEMBER(nitedrvr_out0_w);
5959   DECLARE_WRITE8_MEMBER(nitedrvr_out1_w);
6060   DECLARE_WRITE8_MEMBER(nitedrvr_videoram_w);
61   DECLARE_WRITE8_MEMBER(nitedrvr_hvc_w);
6261   TILE_GET_INFO_MEMBER(get_bg_tile_info);
6362   virtual void machine_start();
6463   virtual void machine_reset();
6564   virtual void video_start();
6665   UINT32 screen_update_nitedrvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6766   TIMER_DEVICE_CALLBACK_MEMBER(nitedrvr_crash_toggle_callback);
68   void draw_box( bitmap_ind16 &bitmap, int bx, int by, int ex, int ey );
69   void draw_roadway( bitmap_ind16 &bitmap );
70   int nitedrvr_steering(  );
67   void draw_box(bitmap_ind16 &bitmap, const rectangle &cliprect, int bx, int by, int ex, int ey);
68   void draw_roadway(bitmap_ind16 &bitmap, const rectangle &cliprect);
69   int nitedrvr_steering();
7170};
7271
7372/*----------- defined in audio/nitedrvr.c -----------*/
trunk/src/mame/video/nitedrvr.c
r30903r30904
1313   m_bg_tilemap->mark_tile_dirty(offset);
1414}
1515
16WRITE8_MEMBER(nitedrvr_state::nitedrvr_hvc_w)
17{
18   m_hvc[offset & 0x3f] = data;
1916
20   if ((offset & 0x30) == 0x30)
21      watchdog_reset_w(space, 0, 0);
22}
23
2417TILE_GET_INFO_MEMBER(nitedrvr_state::get_bg_tile_info)
2518{
2619   int code = m_videoram[tile_index] & 0x3f;
r30903r30904
2821   SET_TILE_INFO_MEMBER(0, code, 0, 0);
2922}
3023
31
32
3324void nitedrvr_state::video_start()
3425{
35   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(nitedrvr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
26   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(nitedrvr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 8);
3627}
3728
38void nitedrvr_state::draw_box( bitmap_ind16 &bitmap, int bx, int by, int ex, int ey )
29void nitedrvr_state::draw_box(bitmap_ind16 &bitmap, const rectangle &cliprect, int bx, int by, int ex, int ey)
3930{
40   int x, y;
41
42   for (y = by; y < ey; y++)
31   for (int y = by; y < ey; y++)
4332   {
44      for (x = bx; x < ex; x++)
45         if ((y < 256) && (x < 256))
33      for (int x = bx; x < ex; x++)
34         if (cliprect.contains(x, y))
4635            bitmap.pix16(y, x) = 1;
4736   }
48
49   return;
5037}
5138
52void nitedrvr_state::draw_roadway( bitmap_ind16 &bitmap )
39void nitedrvr_state::draw_roadway(bitmap_ind16 &bitmap, const rectangle &cliprect)
5340{
54   int roadway;
55
56   for (roadway = 0; roadway < 16; roadway++)
41   for (int roadway = 0; roadway < 16; roadway++)
5742   {
58      int bx, by, ex, ey;
43      int bx = m_hvc[roadway];
44      int by = m_hvc[roadway + 16];
45      int ex = bx + ((m_hvc[roadway + 32] & 0xf0) >> 4);
46      int ey = by + (16 - (m_hvc[roadway + 32] & 0x0f));
5947
60      bx = m_hvc[roadway];
61      by = m_hvc[roadway + 16];
62      ex = bx + ((m_hvc[roadway + 32] & 0xf0) >> 4);
63      ey = by + (16 - (m_hvc[roadway + 32] & 0x0f));
64
65      draw_box(bitmap, bx, by, ex, ey);
48      draw_box(bitmap, cliprect, bx, by, ex, ey);
6649   }
6750}
6851
6952UINT32 nitedrvr_state::screen_update_nitedrvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
7053{
71   m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
72   draw_roadway(bitmap);
54   bitmap.fill(0, cliprect);
55   
56   // don't wrap playfield
57   rectangle clip = cliprect;
58   if (clip.max_y > 63) clip.max_y = 63;
59
60   m_bg_tilemap->draw(screen, bitmap, clip, 0, 0);
61   draw_roadway(bitmap, cliprect);
62
7363   return 0;
7464}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team