Previous 199869 Revisions Next

r17664 Wednesday 5th September, 2012 at 21:42:51 UTC by Aaron Giles
Converted Namco C40 road chip to a device. Updated users.

Added support for tilemaps to be passed a gfx pointer
instead of a gfxnum.
[src/emu]device.h tilemap.h
[src/mame/drivers]namcoic.c namcos2.c tceptor.c
[src/mame/includes]namcoic.h namcos2.h tceptor.h
[src/mame/video]namcos2.c tceptor.c

trunk/src/mame/video/tceptor.c
r17663r17664
393393   /* allocate temp bitmaps */
394394   machine.primary_screen->register_screen_bitmap(state->m_temp_bitmap);
395395
396   namco_road_init(machine, gfx_index);
396   state->m_c45_road->set_transparent_color(colortable_entry_get_value(machine.colortable, 0xfff));
397397
398   namco_road_set_transparent_color(colortable_entry_get_value(machine.colortable, 0xfff));
399
400398   state->m_tx_tilemap = tilemap_create(machine, get_tx_tile_info, TILEMAP_SCAN_COLS,  8, 8, 34, 28);
401399
402400   state->m_tx_tilemap->set_scrollx(0, -2*8);
r17663r17664
540538
541539   for (pri = 0; pri < 8; pri++)
542540   {
543      namco_road_draw(screen.machine(), bitmap, cliprect, pri * 2);
544      namco_road_draw(screen.machine(), bitmap, cliprect, pri * 2 + 1);
541      state->m_c45_road->draw(bitmap, cliprect, pri * 2);
542      state->m_c45_road->draw(bitmap, cliprect, pri * 2 + 1);
545543      draw_sprites(screen.machine(), bitmap, cliprect, pri);
546544   }
547545
trunk/src/mame/video/namcos2.c
r17663r17664
448448{
449449   namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
450450   draw_sprite_init();
451   namco_road_init(machine(), 3);
452451}
453452
454453UINT32 namcos2_state::screen_update_finallap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
r17663r17664
466465      {
467466         namco_tilemap_draw( bitmap, clip, pri/2 );
468467      }
469      namco_road_draw(machine(), bitmap,clip,pri );
468      m_c45_road->draw(bitmap,clip,pri);
470469      draw_sprites(bitmap,clip,pri,m_gfx_ctrl );
471470   }
472471   return 0;
r17663r17664
482481   {
483482      c169_roz_init(1, "gfx5");
484483   }
485   if( m_gametype!=NAMCOS2_STEEL_GUNNER_2 )
486   {
487      namco_road_init(machine(), 3);
488   }
489484} /* luckywld */
490485
491486UINT32 namcos2_state::screen_update_luckywld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
r17663r17664
503498      {
504499         namco_tilemap_draw( bitmap, clip, pri/2 );
505500      }
506      namco_road_draw(machine(), bitmap,clip,pri );
501      m_c45_road->draw(bitmap,clip,pri);
507502      if( m_gametype==NAMCOS2_LUCKY_AND_WILD )
508503      {
509504         c169_roz_draw(bitmap, clip, pri);
trunk/src/mame/includes/tceptor.h
r17663r17664
1#include "namcos2.h"
2
13class tceptor_state : public driver_device
24{
35public:
r17663r17664
79      m_tile_attr(*this, "tile_attr"),
810      m_bg_ram(*this, "bg_ram"),
911      m_m68k_shared_ram(*this, "m68k_shared_ram"),
10      m_sprite_ram(*this, "sprite_ram"){ }
12      m_sprite_ram(*this, "sprite_ram"),
13      m_c45_road(*this, "c45_road") { }
1114
1215   UINT8 m_m6809_irq_enable;
1316   UINT8 m_m68k_irq_enable;
r17663r17664
4851   DECLARE_WRITE8_MEMBER(tceptor_bg_scroll_w);
4952   void tile_mark_dirty(int offset);
5053   DECLARE_WRITE8_MEMBER(voice_w);
54
55   optional_device<namco_c45_road_device> m_c45_road;
5156};
5257
5358
trunk/src/mame/includes/namcos2.h
r17663r17664
66
77***************************************************************************/
88
9#include "namcoic.h"
10
911/* CPU reference numbers */
1012
1113#define CPU_MASTER   0
r17663r17664
8587   NAMCOFL_FINAL_LAP_R
8688};
8789
90
8891// fix me -- most of this should be devices eventually
8992class namcos2_shared_state : public driver_device
9093{
r17663r17664
165168   int m_c355_obj_palxor;
166169   UINT16 m_c355_obj_position[4];
167170
168
169171public:
170172   // general
171173   void zdrawgfxzoom(bitmap_ind16 &dest_bmp, const rectangle &clip, const gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy, int scalex, int scaley, int zpos);
r17663r17664
181183        m_paletteram(*this, "paletteram"),
182184        m_spriteram(*this, "spriteram"),
183185        m_rozram(*this, "rozram"),
184        m_roz_ctrl(*this, "rozctrl")
186        m_roz_ctrl(*this, "rozctrl"),
187        m_c45_road(*this, "c45_road")
185188   { }
186189   DECLARE_READ16_MEMBER(dpram_word_r);
187190   DECLARE_WRITE16_MEMBER(dpram_word_w);
r17663r17664
260263   tilemap_t *m_tilemap_roz;
261264   UINT16 m_gfx_ctrl;
262265
266   optional_device<namco_c45_road_device> m_c45_road;
263267};
264268
265269/*----------- defined in video/namcos2.c -----------*/
trunk/src/mame/includes/namcoic.h
r17663r17664
8888
8989/***********************************************************************************/
9090
91#pragma once
92
93#ifndef __NAMCOIC_H__
94#define __NAMCOIC_H__
95
96
97//**************************************************************************
98//  INTERFACE CONFIGURATION MACROS
99//**************************************************************************
100
101#define MCFG_NAMCO_C45_ROAD_ADD(_tag) \
102   MCFG_DEVICE_ADD(_tag, NAMCO_C45_ROAD, 0) \
103
104
105
106//**************************************************************************
107//  TYPE DEFINITIONS
108//**************************************************************************
109
110
111// ======================> namco_c45_road_device
112
113class namco_c45_road_device : public device_t
114{
115   // constants
116   static const int ROAD_COLS = 64;
117   static const int ROAD_ROWS = 512;
118   static const int ROAD_TILE_SIZE = 16;
119   static const int ROAD_TILEMAP_WIDTH = ROAD_TILE_SIZE * ROAD_COLS;
120   static const int ROAD_TILEMAP_HEIGHT = ROAD_TILE_SIZE * ROAD_ROWS;
121   static const int ROAD_TILE_COUNT_MAX = 0xfa00 / 0x40; // 0x3e8
122   static const int WORDS_PER_ROAD_TILE = 0x40/2;
123
124public:
125   // construction/destruction
126   namco_c45_road_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
127
128   // read/write handlers
129   DECLARE_READ16_MEMBER( read );
130   DECLARE_WRITE16_MEMBER( write );
131
132   // C45 Land (Road) Emulation
133   void set_transparent_color(pen_t pen) { m_transparent_color = pen; }
134   void draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri);
135
136protected:
137   // device-level overrides
138   virtual void device_start();
139   virtual void device_stop();
140
141   // internal helpers
142   TILE_GET_INFO_MEMBER( get_road_info );
143
144   // internal state
145   pen_t          m_transparent_color;
146   gfx_element *   m_gfx;
147   tilemap_t *      m_tilemap;
148   UINT16         m_ram[0x20000/2]; // at 0x880000 in Final Lap; at 0xa00000 in Lucky&Wild
149
150   static const gfx_layout s_tile_layout;
151};
152
153
154// device type definition
155extern const device_type NAMCO_C45_ROAD;
156
157
158
91159/*----------- defined in drivers/namcoic.c -----------*/
92160
93161void namco_tilemap_init(
r17663r17664
112180
113181/***********************************************************************************/
114182
115/***********************************************************************************/
116/* C45 Land (Road) Emulation */
117
118void namco_road_init( running_machine &machine, int gfxbank );
119void namco_road_set_transparent_color(pen_t pen);
120void namco_road_draw( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
121
122READ16_HANDLER( namco_road16_r );
123WRITE16_HANDLER( namco_road16_w );
124
125/***********************************************************************************/
183#endif
trunk/src/mame/drivers/tceptor.c
r17663r17664
204204   AM_RANGE(0x200000, 0x203fff) AM_RAM         // M68K ERROR 0
205205   AM_RANGE(0x300000, 0x300001) AM_WRITEONLY
206206   AM_RANGE(0x400000, 0x4001ff) AM_WRITEONLY AM_SHARE("sprite_ram")
207   AM_RANGE(0x500000, 0x51ffff) AM_WRITE_LEGACY(namco_road16_w)
207   AM_RANGE(0x500000, 0x51ffff) AM_DEVWRITE("c45_road", namco_c45_road_device, write)
208208   AM_RANGE(0x600000, 0x600001) AM_WRITE(m68k_irq_enable_w)   // not sure
209209   AM_RANGE(0x700000, 0x703fff) AM_READWRITE(m68k_shared_word_r, m68k_shared_word_w) AM_SHARE("m68k_shared_ram")
210210ADDRESS_MAP_END
r17663r17664
395395   MCFG_PALETTE_LENGTH(4096)
396396   MCFG_DEFAULT_LAYOUT(layout_horizont)
397397
398   MCFG_NAMCO_C45_ROAD_ADD("c45_road")
399
398400   MCFG_SCREEN_ADD("2dscreen", RASTER)
399401   MCFG_SCREEN_REFRESH_RATE(60.606060)
400402   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
trunk/src/mame/drivers/namcoic.c
r17663r17664
22#include "includes/namcos2.h" /* for game-specific hacks */
33#include "includes/namcoic.h"
44
5
6//****************************************************************************
7//  CONSTANTS
8//****************************************************************************
9
10// device type definition
11const device_type NAMCO_C45_ROAD = &device_creator<namco_c45_road_device>;
12
13
514/**************************************************************************************/
615static struct
716{
r17663r17664
12781287 *      0x1fe00..0x1ffdf    ---- --xx xxxx xxxx     zoomx
12791288 *      0x1fffd             always 0xffff 0xffff?
12801289 */
1281static UINT16 *mpRoadRAM; /* at 0x880000 in Final Lap; at 0xa00000 in Lucky&Wild */
1282static int mRoadGfxBank;
1283static tilemap_t *mpRoadTilemap;
1284static pen_t mRoadTransparentColor;
1285static int mbRoadNeedTransparent;
12861290
1287#define ROAD_COLS         64
1288#define ROAD_ROWS         512
1289#define ROAD_TILE_SIZE      16
1290#define ROAD_TILEMAP_WIDTH   (ROAD_TILE_SIZE*ROAD_COLS)
1291#define ROAD_TILEMAP_HEIGHT (ROAD_TILE_SIZE*ROAD_ROWS)
1292
1293#define ROAD_TILE_COUNT_MAX   (0xfa00/0x40) /* 0x3e8 */
1294#define WORDS_PER_ROAD_TILE (0x40/2)
1295
1296static const gfx_layout RoadTileLayout =
1291const gfx_layout namco_c45_road_device::s_tile_layout =
12971292{
12981293   ROAD_TILE_SIZE,   ROAD_TILE_SIZE,
12991294   ROAD_TILE_COUNT_MAX,
13001295   2,
13011296   { NATIVE_ENDIAN_VALUE_LE_BE(8,0), NATIVE_ENDIAN_VALUE_LE_BE(0,8) },
1302   {/* x offset */
1297   {// x offset
13031298      0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
13041299      0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17
13051300   },
1306   {/* y offset */
1301   {// y offset
13071302      0x000,0x020,0x040,0x060,0x080,0x0a0,0x0c0,0x0e0,
13081303      0x100,0x120,0x140,0x160,0x180,0x1a0,0x1c0,0x1e0
13091304   },
1310   0x200, /* offset to next tile */
1305   0x200 // offset to next tile
13111306};
13121307
1313static TILE_GET_INFO( get_road_info )
1308//-------------------------------------------------
1309//  namco_c45_road_device -- constructor
1310//-------------------------------------------------
1311
1312namco_c45_road_device::namco_c45_road_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1313   : device_t(mconfig, NAMCO_C45_ROAD, "Namco C45 Road", tag, owner, clock),
1314     m_transparent_color(~0),
1315     m_gfx(NULL),
1316     m_tilemap(NULL)
13141317{
1315   UINT16 data = mpRoadRAM[tile_index];
1316   /* ------xx xxxxxxxx tile number
1317     * xxxxxx-- -------- palette select
1318     */
1319   int tile = (data&0x3ff);
1320   int color = (data>>10);
1318}
13211319
1322   SET_TILE_INFO( mRoadGfxBank, tile, color , 0 );
1323} /* get_road_info */
13241320
1325READ16_HANDLER( namco_road16_r )
1321//-------------------------------------------------
1322//  read -- read from RAM
1323//-------------------------------------------------
1324
1325READ16_MEMBER( namco_c45_road_device::read )
13261326{
1327   return mpRoadRAM[offset];
1327   return m_ram[offset];
13281328}
13291329
1330WRITE16_HANDLER( namco_road16_w )
1330
1331//-------------------------------------------------
1332//  write -- write to RAM
1333//-------------------------------------------------
1334
1335WRITE16_MEMBER( namco_c45_road_device::write )
13311336{
1332   COMBINE_DATA( &mpRoadRAM[offset] );
1333   if( offset<0x10000/2 )
1334   {
1335      mpRoadTilemap->mark_tile_dirty( offset );
1336   }
1337   COMBINE_DATA(&m_ram[offset]);
1338   
1339   // first half maps to the tilemap
1340   if (offset < 0x10000/2)
1341      m_tilemap->mark_tile_dirty(offset);
1342   
1343   // second half maps to the gfx elements
13371344   else
13381345   {
13391346      offset -= 0x10000/2;
1340      gfx_element_mark_dirty(space->machine().gfx[mRoadGfxBank], offset/WORDS_PER_ROAD_TILE);
1347      gfx_element_mark_dirty(m_gfx, offset / WORDS_PER_ROAD_TILE);
13411348   }
13421349}
13431350
1344void
1345namco_road_init(running_machine &machine, int gfxbank )
1351
1352//-------------------------------------------------
1353//  draw -- render to the target bitmap
1354//-------------------------------------------------
1355
1356void namco_c45_road_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri)
13461357{
1347   gfx_element *pGfx;
1358   const UINT8 *clut = (const UINT8 *)memregion("clut")->base();
1359   bitmap_ind16 &source_bitmap = m_tilemap->pixmap();
1360   unsigned yscroll = m_ram[0x1fdfe/2];
13481361
1349   mbRoadNeedTransparent = 0;
1350   mRoadGfxBank = gfxbank;
1362   // loop over scanlines
1363   for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
1364   {
1365      // skip if we are not the right priority
1366      int screenx   = m_ram[0x1fa00/2 + y + 15];
1367      if (pri != ((screenx & 0xf000) >> 12))
1368         continue;
13511369
1352   mpRoadRAM = auto_alloc_array(machine, UINT16, 0x20000/2);
1370      // skip if we don't have a valid zoom factor
1371      unsigned zoomx = m_ram[0x1fe00/2 + y + 15] & 0x3ff;
1372      if (zoomx == 0)
1373         continue;
13531374
1354   pGfx = gfx_element_alloc( machine, &RoadTileLayout, 0x10000+(UINT8 *)mpRoadRAM, 0x3f, 0xf00);
1375      // skip if we don't have a valid source increment
1376      unsigned sourcey = m_ram[0x1fc00/2 + y + 15] + yscroll;
1377      const UINT16 *source_gfx = &source_bitmap.pix(sourcey & (ROAD_TILEMAP_HEIGHT - 1));
1378      unsigned dsourcex = (ROAD_TILEMAP_WIDTH << 16) / zoomx;
1379      if (dsourcex == 0)
1380         continue;
13551381
1356   machine.gfx[gfxbank] = pGfx;
1357   mpRoadTilemap = tilemap_create(machine,
1358      get_road_info,TILEMAP_SCAN_ROWS,
1359      ROAD_TILE_SIZE,ROAD_TILE_SIZE,
1360      ROAD_COLS,ROAD_ROWS);
1382      // mask off priority bits and sign-extend
1383      screenx &= 0x0fff;
1384      if (screenx & 0x0800)
1385         screenx |= ~0x7ff;
13611386
1362   state_save_register_global_pointer(machine, mpRoadRAM,   0x20000 / 2);
1363} /* namco_road_init */
1387      // adjust the horizontal placement
1388      screenx -= 64; // needs adjustment to left
13641389
1365void
1366namco_road_set_transparent_color(pen_t pen)
1367{
1368   mbRoadNeedTransparent = 1;
1369   mRoadTransparentColor = pen;
1370}
1390      int numpixels = (44 * ROAD_TILE_SIZE << 16) / dsourcex;
1391      unsigned sourcex = 0;
1392     
1393      // crop left
1394      int clip_pixels = cliprect.min_x - screenx;
1395      if (clip_pixels > 0)
1396      {
1397         numpixels -= clip_pixels;
1398         sourcex += dsourcex*clip_pixels;
1399         screenx = cliprect.min_x;
1400      }
13711401
1372void
1373namco_road_draw(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri )
1374{
1375   const UINT8 *clut = (const UINT8 *)machine.root_device().memregion("user3")->base();
1376   unsigned yscroll;
1377   int i;
1402      // crop right
1403      clip_pixels = (screenx + numpixels) - (cliprect.max_x + 1);
1404      if (clip_pixels > 0)
1405         numpixels -= clip_pixels;
13781406
1379   bitmap_ind16 &SourceBitmap = mpRoadTilemap->pixmap();
1380   yscroll = mpRoadRAM[0x1fdfe/2];
1407      // TBA: work out palette mapping for Final Lap, Suzuka
13811408
1382   for( i=cliprect.min_y; i<=cliprect.max_y; i++ )
1383   {
1384      int screenx   = mpRoadRAM[0x1fa00/2+i+15];
1385      if( pri == ((screenx&0xf000)>>12) )
1409      // BUT: support transparent color for Thunder Ceptor
1410      UINT16 *dest = &bitmap.pix(y);
1411      if (m_transparent_color != ~0)
13861412      {
1387         unsigned zoomx   = mpRoadRAM[0x1fe00/2+i+15]&0x3ff;
1388         if( zoomx )
1413         while (numpixels-- > 0)
13891414         {
1390            unsigned sourcey = mpRoadRAM[0x1fc00/2+i+15]+yscroll;
1391            const UINT16 *pSourceGfx = &SourceBitmap.pix16(sourcey&(ROAD_TILEMAP_HEIGHT-1));
1392            unsigned dsourcex = (ROAD_TILEMAP_WIDTH<<16)/zoomx;
1393            if( dsourcex )
1415            int pen = source_gfx[sourcex >> 16];
1416            if (colortable_entry_get_value(machine().colortable, pen) != m_transparent_color)
13941417            {
1395               UINT16 *pDest = &bitmap.pix16(i);
1396               unsigned sourcex = 0;
1397               int numpixels = (44*ROAD_TILE_SIZE<<16)/dsourcex;
1398               int clipPixels;
1418               if (clut != NULL)
1419                  pen = (pen & ~0xff) | clut[pen & 0xff];
1420               dest[screenx] = pen;
1421            }
1422            screenx++;
1423            sourcex += dsourcex;
1424         }
1425      }
1426      else
1427      {
1428         while (numpixels-- > 0)
1429         {
1430            int pen = source_gfx[sourcex >> 16];
1431            if (clut != NULL)
1432               pen = (pen & ~0xff) | clut[pen & 0xff];
1433            dest[screenx++] = pen;
1434            sourcex += dsourcex;
1435         }
1436      }
1437   }
1438}
13991439
1400               screenx &= 0x0fff; /* mask off priority bits */
1401               if( screenx&0x0800 )
1402               {
1403                  /* sign extend */
1404                  screenx |= ~0x7ff;
1405               }
14061440
1407               /* adjust the horizontal placement */
1408               screenx -= 64; /*needs adjustment to left*/
1441//-------------------------------------------------
1442//  device_start -- device startup
1443//-------------------------------------------------
14091444
1410               clipPixels = cliprect.min_x - screenx;
1411               if( clipPixels>0 )
1412               { /* crop left */
1413                  numpixels -= clipPixels;
1414                  sourcex += dsourcex*clipPixels;
1415                  screenx = cliprect.min_x;
1416               }
1445void namco_c45_road_device::device_start()
1446{
1447   // create a gfx_element describing the road graphics
1448   m_gfx = gfx_element_alloc(machine(), &s_tile_layout, 0x10000 + (UINT8 *)&m_ram[0], 0x3f, 0xf00);
14171449
1418               clipPixels = (screenx+numpixels) - (cliprect.max_x+1);
1419               if( clipPixels>0 )
1420               { /* crop right */
1421                  numpixels -= clipPixels;
1422               }
1450   // create a tilemap for the road
1451   m_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namco_c45_road_device::get_road_info), this),
1452      TILEMAP_SCAN_ROWS, ROAD_TILE_SIZE, ROAD_TILE_SIZE, ROAD_COLS, ROAD_ROWS);
1453}
14231454
1424               /* TBA: work out palette mapping for Final Lap, Suzuka */
14251455
1426               /* BUT: support transparent color for Thunder Ceptor */
1427               if( mbRoadNeedTransparent )
1428               {
1429                  while( numpixels-- > 0 )
1430                  {
1431                     int pen = pSourceGfx[sourcex>>16];
1456//-------------------------------------------------
1457//  device_stop -- device shutdown
1458//-------------------------------------------------
14321459
1433                     if(colortable_entry_get_value(machine.colortable, pen) != mRoadTransparentColor)
1434                     {
1435                        if( clut )
1436                        {
1437                           pen = (pen&~0xff)|clut[pen&0xff];
1438                        }
1439                        pDest[screenx] = pen;
1440                     }
1441                     screenx++;
1442                     sourcex += dsourcex;
1443                  }
1444               }
1445               else
1446               {
1447                  while( numpixels-- > 0 )
1448                  {
1449                     int pen = pSourceGfx[sourcex>>16];
1450                     if( clut )
1451                     {
1452                        pen = (pen&~0xff)|clut[pen&0xff];
1453                     }
1454                     pDest[screenx++] = pen;
1455                     sourcex += dsourcex;
1456                  }
1457               }
1458            } /* dsourcex!=0 */
1459         } /* zoomx!=0 */
1460      } /* priority */
1461   } /* next scanline */
1462} /* namco_road_draw */
1460void namco_c45_road_device::device_stop()
1461{
1462   gfx_element_free(m_gfx);
1463}
1464
1465
1466//-------------------------------------------------
1467//  get_road_info -- tilemap callback
1468//-------------------------------------------------
1469
1470TILE_GET_INFO_MEMBER( namco_c45_road_device::get_road_info )
1471{
1472   // ------xx xxxxxxxx tile number
1473    // xxxxxx-- -------- palette select
1474   UINT16 data = m_ram[tile_index];
1475   int tile = data & 0x3ff;
1476   int color = data >> 10;
1477   SET_TILE_INFO_MEMBER(*m_gfx, tile, color, 0);
1478}
1479
trunk/src/mame/drivers/namcos2.c
r17663r17664
631631   AM_RANGE(0x300000, 0x33ffff) AM_READ_LEGACY(namcos2_flap_prot_r)
632632   AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram")
633633   AM_RANGE(0x840000, 0x840001) AM_READWRITE(gfx_ctrl_r, gfx_ctrl_w)
634   AM_RANGE(0x880000, 0x89ffff) AM_READ_LEGACY(namco_road16_r) AM_WRITE_LEGACY(namco_road16_w)
634   AM_RANGE(0x880000, 0x89ffff) AM_DEVREADWRITE("c45_road", namco_c45_road_device, read, write)
635635   AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP
636636   AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am )
637637ADDRESS_MAP_END
r17663r17664
708708   AM_RANGE(0x81a000, 0x81a001) AM_WRITENOP /* enable? */
709709   AM_RANGE(0x840000, 0x840001) AM_READNOP
710710   AM_RANGE(0x900000, 0x900007) AM_READWRITE(c355_obj_position_r,c355_obj_position_w)
711   AM_RANGE(0xa00000, 0xa1ffff) AM_READWRITE_LEGACY(namco_road16_r,namco_road16_w)
711   AM_RANGE(0xa00000, 0xa1ffff) AM_DEVREADWRITE("c45_road", namco_c45_road_device, read, write)
712712   AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(c169_roz_videoram_r,c169_roz_videoram_w) AM_SHARE("rozvideoram")
713713   AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE(c169_roz_control_r,c169_roz_control_w)
714714   AM_RANGE(0xf00000, 0xf00007) AM_READWRITE_LEGACY(namcos2_68k_key_r,namcos2_68k_key_w)
r17663r17664
17601760   MCFG_PALETTE_LENGTH(0x2000)
17611761
17621762   MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_finallap)
1763   
1764   MCFG_NAMCO_C45_ROAD_ADD("c45_road")
17631765
17641766   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
17651767
r17663r17664
18591861
18601862   MCFG_VIDEO_START_OVERRIDE(namcos2_state, video_start_luckywld)
18611863
1864   MCFG_NAMCO_C45_ROAD_ADD("c45_road")
1865
18621866   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
18631867
18641868   MCFG_SOUND_ADD("c140", C140, C140_SOUND_CLOCK) /* 21.333kHz */
r17663r17664
25092513   ROM_REGION16_BE( 0x200000, "user1", ROMREGION_ERASEFF ) /* Shared data roms */
25102514   /* No DAT files present in ZIP archive */
25112515
2512   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2516   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
25132517   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
25142518
25152519   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
25642568   ROM_REGION16_BE( 0x200000, "user1", ROMREGION_ERASEFF ) /* Shared data roms */
25652569   /* No DAT files present in ZIP archive */
25662570
2567   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2571   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
25682572   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
25692573
25702574   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
26192623   ROM_REGION16_BE( 0x200000, "user1", ROMREGION_ERASEFF ) /* Shared data roms */
26202624   /* No DAT files present in ZIP archive */
26212625
2622   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2626   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
26232627   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
26242628
26252629   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
26742678   ROM_REGION16_BE( 0x200000, "user1", ROMREGION_ERASEFF ) /* Shared data roms */
26752679   /* No DAT files present in ZIP archive */
26762680
2677   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2681   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
26782682   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
26792683
26802684   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
27292733   ROM_REGION16_BE( 0x200000, "user1", ROMREGION_ERASEFF ) /* Shared data roms */
27302734   /* No DAT files present in ZIP archive */
27312735
2732   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2736   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
27332737   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
27342738
27352739   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
27882792   NAMCOS2_DATA_LOAD_E_256K( "fls2dat0",  0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
27892793   NAMCOS2_DATA_LOAD_O_256K( "fls2dat1",  0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
27902794
2791   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2795   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
27922796   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
27932797
27942798   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
28452849   NAMCOS2_DATA_LOAD_E_256K( "fls2dat0",  0x000000, CRC(f1af432c) SHA1(c514261a49ceb5c3ba0246519ba5d02e9a20d950) )
28462850   NAMCOS2_DATA_LOAD_O_256K( "fls2dat1",  0x000000, CRC(8719533e) SHA1(98d2767da6f7f67da7af15e8cfed95adb04b7427) )
28472851
2848   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2852   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
28492853   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
28502854
28512855   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
29022906   NAMCOS2_DATA_LOAD_E_128K( "flt1d0",  0x000000, CRC(80004966) SHA1(112b2a9b0ea792d5dbff1b9cf904da788aeede29) )
29032907   NAMCOS2_DATA_LOAD_O_128K( "flt1d1",  0x000000, CRC(a2e93e8c) SHA1(9c8a5431a79153a70eb6939d16e0a5a6be235e75) )
29042908
2905   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2909   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
29062910   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
29072911
29082912   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
29632967   NAMCOS2_DATA_LOAD_E_128K( "flt1d0",  0x000000, CRC(80004966) SHA1(112b2a9b0ea792d5dbff1b9cf904da788aeede29) )
29642968   NAMCOS2_DATA_LOAD_O_128K( "flt1d1",  0x000000, CRC(a2e93e8c) SHA1(9c8a5431a79153a70eb6939d16e0a5a6be235e75) )
29652969
2966   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
2970   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
29672971   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
29682972
29692973   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
30273031   NAMCOS2_DATA_LOAD_E_128K( "flt1d0",  0x000000, CRC(80004966) SHA1(112b2a9b0ea792d5dbff1b9cf904da788aeede29) )
30283032   NAMCOS2_DATA_LOAD_O_128K( "flt1d1",  0x000000, CRC(a2e93e8c) SHA1(9c8a5431a79153a70eb6939d16e0a5a6be235e75) )
30293033
3030   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
3034   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
30313035   ROM_LOAD( "fl1-3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
30323036
30333037   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
30893093   NAMCOS2_DATA_LOAD_E_128K( "flt1_d0.13s",  0x000000, CRC(80004966) SHA1(112b2a9b0ea792d5dbff1b9cf904da788aeede29) )
30903094   NAMCOS2_DATA_LOAD_O_128K( "flt1_d1.13p",  0x000000, CRC(a2e93e8c) SHA1(9c8a5431a79153a70eb6939d16e0a5a6be235e75) )
30913095
3092   ROM_REGION( 0x100, "user3", 0 ) /* PROM for road colors */
3096   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* PROM for road colors */
30933097   ROM_LOAD( "fl1_3.5b", 0, 0x100, CRC(d179d99a) SHA1(4e64f284c74d2b77f893bd28aaa6489084056aa2) )
30943098
30953099   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
33763380   NAMCOS2_DATA_LOAD_E_256K( "fx_dat2.13p", 0x100000, CRC(71e4a5a0) SHA1(a0188c920a43c5e69e25464627094b6b6ed26a59) )
33773381   NAMCOS2_DATA_LOAD_O_256K( "fx_dat3.13n", 0x100000, CRC(605725f7) SHA1(b94ce0ec37f879a5e46a097058cb2dd57e2281f1) )
33783382
3379   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
3383   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
33803384   ROM_LOAD( "fx1_1.5b", 0, 0x100, CRC(85ffd753) SHA1(7dbc8c295204877f41289141a146aa4f5f9f9c96) )
33813385
33823386   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
43834387   NAMCOS2_DATA_LOAD_O_256K( "eh1-d1.bin",  0x000000, CRC(9825D5BF) SHA1(720F0E90C69A2E0C48889D510A15102768226A67) )
43844388   NAMCOS2_DATA_LOAD_O_256K( "eh1-d3.bin",  0x100000, CRC(F46D301F) SHA1(70797FD584735844539553EFCAD53E11239EC10E) )
43854389
4386   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
4390   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
43874391   ROM_LOAD( "ehs1_landdt.10w", 0, 0x100,             CRC(cde7e8a6) SHA1(860273daf2e649418746adf50a67ae33f9f3740c) )
43884392
43894393   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
44354439   NAMCOS2_DATA_LOAD_O_256K( "eh1-d1.bin",  0x000000, CRC(9825d5bf) SHA1(720f0e90c69a2e0c48889d510a15102768226a67) )
44364440   NAMCOS2_DATA_LOAD_O_256K( "eh1-d3.bin",  0x100000, CRC(f46d301f) SHA1(70797fd584735844539553efcad53e11239ec10e) )
44374441
4438   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
4442   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
44394443   ROM_LOAD( "ehs1_landdt.10w", 0, 0x100,             CRC(cde7e8a6) SHA1(860273daf2e649418746adf50a67ae33f9f3740c) )
44404444
44414445   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
44954499   NAMCOS2_DATA_LOAD_E_512K( "ehs1-dat2.13p",  0x100000, CRC(087da1f3) SHA1(e9c4ba0383e883502c0f45ae6e6d5daba4eccb01) )
44964500   NAMCOS2_DATA_LOAD_O_512K( "ehs1-dat3.13n",  0x100000, CRC(85aecb3f) SHA1(00ab6104dee0cd0fbdb0235b88b41e4d26794f98) )
44974501
4498   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
4502   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
44994503   ROM_LOAD( "ehs1-landdt.10w", 0, 0x100,             CRC(cde7e8a6) SHA1(860273daf2e649418746adf50a67ae33f9f3740c) )
45004504
45014505   ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */
r17663r17664
49284932   ROM_LOAD( "lw1voi1.3m",  0x000000, 0x080000, CRC(b3e57993) SHA1(ff7071fc2e2c00f0cf819860c2a9be353474920a) )
49294933   ROM_LOAD( "lw1voi2.3l",  0x080000, 0x080000, CRC(cd8b86a2) SHA1(54bbc91e995ea0c33874ce6fe5c3f014e173da07) )
49304934
4931   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
4935   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
49324936   ROM_LOAD( "lw1ld8.10w", 0, 0x100, CRC(29058c73) SHA1(4916d6bdb7f78e6803698cab32d1586ea457dfc8) )
49334937
49344938   ROM_REGION( 0x2000, "nvram", 0 ) /* default settings, including calibration - see notes with inputs */
r17663r17664
49944998   ROM_LOAD( "lw1voi1.3m",  0x000000, 0x080000, CRC(b3e57993) SHA1(ff7071fc2e2c00f0cf819860c2a9be353474920a) )
49954999   ROM_LOAD( "lw1voi2.3l",  0x080000, 0x080000, CRC(cd8b86a2) SHA1(54bbc91e995ea0c33874ce6fe5c3f014e173da07) )
49965000
4997   ROM_REGION( 0x100, "user3", 0 ) /* prom for road colors */
5001   ROM_REGION( 0x100, "c45_road:clut", 0 ) /* prom for road colors */
49985002   ROM_LOAD( "lw1ld8.10w", 0, 0x100, CRC(29058c73) SHA1(4916d6bdb7f78e6803698cab32d1586ea457dfc8) )
49995003
50005004   ROM_REGION( 0x2000, "nvram", 0 ) /* default settings, including calibration - see notes with inputs */
trunk/src/emu/tilemap.h
r17663r17664
415415      flags = _flags;
416416      gfxnum = _gfxnum;
417417   }
418
419   void set(running_machine &machine, const gfx_element &gfx, int rawcode, int rawcolor, int _flags)
420   {
421      int code = rawcode % gfx.total_elements;
422      pen_data = gfx_element_get_data(&gfx, code);
423      palette_base = gfx.color_base + gfx.color_granularity * rawcolor;
424      flags = _flags;
425   }
418426};
419427
420428
trunk/src/emu/device.h
r17663r17664
233233
234234   void set_default_bios(UINT8 bios) { m_default_bios = bios; }
235235   void set_system_bios(UINT8 bios) { m_system_bios = bios; }
236
236237protected:
237238   // internal helper classes (defined below)
238239   class finder_base;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team