Previous 199869 Revisions Next

r35158 Friday 20th February, 2015 at 09:16:29 UTC by Vasantha Crabb
Make return type match value being returned
[3rdparty/sqlite3]sqlite3.c
[src/emu]input.c input.h ioport.c
[src/emu/debug]dvmemory.h
[src/lib]lib.mak
[src/mame/audio]skydiver.c
[src/mame/drivers]bnstars.c ms32.c raiden2.c skyarmy.c skydiver.c st_mp100.c tecmo.c tecmo16.c vball.c
[src/mame/includes]skydiver.h tecmo.h tecmo16.h vball.h
[src/mame/video]skydiver.c tecmo.c tecmo16.c vball.c
[src/mess/drivers]edracula.c pc9801.c tb303.c zorba.c
[src/mess/layout]tc4.lay
[src/osd/sdl]sdl.mak
[src/osd/windows]drawdd.c vconv.c windows.mak

trunk/3rdparty/sqlite3/sqlite3.c
r243669r243670
86418641** -DSQLITE_RUNTIME_BYTEORDER=1 is set, then byte-order is determined
86428642** at run-time.
86438643*/
8644#ifdef SQLITE_AMALGAMATION
8645SQLITE_PRIVATE const int sqlite3one = 1;
8646#else
8647SQLITE_PRIVATE const int sqlite3one;
8648#endif
86448649#if (defined(i386)     || defined(__i386__)   || defined(_M_IX86) ||    \
86458650     defined(__x86_64) || defined(__x86_64__) || defined(_M_X64)  ||    \
86468651     defined(_M_AMD64) || defined(_M_ARM)     || defined(__x86)   ||    \
r243669r243670
86588663# define SQLITE_UTF16NATIVE  SQLITE_UTF16BE
86598664#endif
86608665#if !defined(SQLITE_BYTEORDER)
8661#ifdef SQLITE_AMALGAMATION
8662SQLITE_PRIVATE const int sqlite3one = 1;
8663#else
8664SQLITE_PRIVATE const int sqlite3one;
8665#endif
86668666# define SQLITE_BYTEORDER    0     /* 0 means "unknown at compile-time" */
86678667# define SQLITE_BIGENDIAN    (*(char *)(&sqlite3one)==0)
86688668# define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
r243669r243670
1085610856*/
1085710857#define FUNCTION(zName, nArg, iArg, bNC, xFunc) \
1085810858  {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
10859   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, (char*)#zName, 0, 0}
10859   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0, 0}
1086010860#define VFUNCTION(zName, nArg, iArg, bNC, xFunc) \
1086110861  {nArg, SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
10862   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, (char*)#zName, 0, 0}
10862   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0, 0}
1086310863#define FUNCTION2(zName, nArg, iArg, bNC, xFunc, extraFlags) \
1086410864  {nArg,SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
10865   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, (char*)#zName, 0, 0}
10865   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0, 0}
1086610866#define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \
1086710867  {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
10868   pArg, 0, xFunc, 0, 0, (char*)#zName, 0, 0}
10868   pArg, 0, xFunc, 0, 0, #zName, 0, 0}
1086910869#define LIKEFUNC(zName, nArg, arg, flags) \
1087010870  {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
10871   (void *)arg, 0, likeFunc, 0, 0, (char*)#zName, 0, 0}
10871   (void *)arg, 0, likeFunc, 0, 0, #zName, 0, 0}
1087210872#define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal) \
1087310873  {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL), \
10874   SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,(char*)#zName,0,0}
10874   SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0,0}
1087510875#define AGGREGATE2(zName, nArg, arg, nc, xStep, xFinal, extraFlags) \
1087610876  {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|extraFlags, \
10877   SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,(char*)#zName,0,0}
10877   SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0,0}
1087810878
1087910879/*
1088010880** All current savepoints are stored in a linked list starting at
r243669r243670
2120221202        /* Normalize realvalue to within 10.0 > realvalue >= 1.0 */
2120321203        exp = 0;
2120421204        if( sqlite3IsNaN((double)realvalue) ){
21205          bufpt = (char *)"NaN";
21205          bufpt = "NaN";
2120621206          length = 3;
2120721207          break;
2120821208        }
r243669r243670
2121721217          while( realvalue<1.0 ){ realvalue *= 10.0; exp--; }
2121821218          if( exp>350 ){
2121921219            if( prefix=='-' ){
21220              bufpt = (char *)"-Inf";
21220              bufpt = "-Inf";
2122121221            }else if( prefix=='+' ){
21222              bufpt =(char *) "+Inf";
21222              bufpt = "+Inf";
2122321223            }else{
21224              bufpt = (char *)"Inf";
21224              bufpt = "Inf";
2122521225            }
2122621226            length = sqlite3Strlen30(bufpt);
2122721227            break;
r243669r243670
2137521375          bufpt = va_arg(ap,char*);
2137621376        }
2137721377        if( bufpt==0 ){
21378          bufpt = (char *)"";
21378          bufpt = "";
2137921379        }else if( xtype==etDYNSTRING && !bArgList ){
2138021380          zExtra = bufpt;
2138121381        }
r243669r243670
2140021400          escarg = va_arg(ap,char*);
2140121401        }
2140221402        isnull = escarg==0;
21403        if( isnull ) escarg = (char *)(xtype==etSQLESCAPE2 ? "NULL" : "(NULL)");
21403        if( isnull ) escarg = (xtype==etSQLESCAPE2 ? "NULL" : "(NULL)");
2140421404        k = precision;
2140521405        for(i=n=0; k!=0 && (ch=escarg[i])!=0; i++, k--){
2140621406          if( ch==q )  n++;
r243669r243670
2218222182    assert( rc!=WAIT_IO_COMPLETION );
2218322183    bRc = CloseHandle((HANDLE)p->tid);
2218422184    assert( bRc );
22185   (void)bRc;
2218622185  }
2218722186  if( rc==WAIT_OBJECT_0 ) *ppOut = p->pResult;
2218822187  sqlite3_free(p);
r243669r243670
2230322302** The following constant value is used by the SQLITE_BIGENDIAN and
2230422303** SQLITE_LITTLEENDIAN macros.
2230522304*/
22306//SQLITE_PRIVATE const int sqlite3one = 1;
22305SQLITE_PRIVATE const int sqlite3one = 1;
2230722306#endif /* SQLITE_AMALGAMATION */
2230822307
2230922308/*
r243669r243670
2592025919  const char *zPath,              /* File path associated with error */
2592125920  int iLine                       /* Source line number where error occurred */
2592225921){
25923  const char *zErr;                     /* Message from strerror() or equivalent */
25922  char *zErr;                     /* Message from strerror() or equivalent */
2592425923  int iErrno = errno;             /* Saved syscall error number */
2592525924
2592625925  /* If this is not a threadsafe build (SQLITE_THREADSAFE==0), then use
r243669r243670
6431364312        sqlite3_snprintf(nTemp, zTemp, "NULL");
6431464313      }else{
6431564314        assert( pMem->flags & MEM_Blob );
64316        zP4 = (char *)"(blob)";
64315        zP4 = "(blob)";
6431764316      }
6431864317      break;
6431964318    }
r243669r243670
8631286311  statInit,        /* xFunc */
8631386312  0,               /* xStep */
8631486313  0,               /* xFinalize */
86315  (char*)"stat_init",     /* zName */
86314  "stat_init",     /* zName */
8631686315  0,               /* pHash */
8631786316  0                /* pDestructor */
8631886317};
r243669r243670
8661386612  statPush,        /* xFunc */
8661486613  0,               /* xStep */
8661586614  0,               /* xFinalize */
86616  (char*)"stat_push",     /* zName */
86615  "stat_push",     /* zName */
8661786616  0,               /* pHash */
8661886617  0                /* pDestructor */
8661986618};
r243669r243670
8676086759  statGet,         /* xFunc */
8676186760  0,               /* xStep */
8676286761  0,               /* xFinalize */
86763  (char*)"stat_get",      /* zName */
86762  "stat_get",      /* zName */
8676486763  0,               /* pHash */
8676586764  0                /* pDestructor */
8676686765};
r243669r243670
8810688105    detachFunc,       /* xFunc */
8810788106    0,                /* xStep */
8810888107    0,                /* xFinalize */
88109    (char*)"sqlite_detach",  /* zName */
88108    "sqlite_detach",  /* zName */
8811088109    0,                /* pHash */
8811188110    0                 /* pDestructor */
8811288111  };
r243669r243670
8812788126    attachFunc,       /* xFunc */
8812888127    0,                /* xStep */
8812988128    0,                /* xFinalize */
88130    (char*)"sqlite_attach",  /* zName */
88129    "sqlite_attach",  /* zName */
8813188130    0,                /* pHash */
8813288131    0                 /* pDestructor */
8813388132  };
r243669r243670
9008390082static char *createTableStmt(sqlite3 *db, Table *p){
9008490083  int i, k, n;
9008590084  char *zStmt;
90086  const char *zSep, *zSep2, *zEnd;
90085  char *zSep, *zSep2, *zEnd;
9008790086  Column *pCol;
9008890087  n = 0;
9008990088  for(pCol = p->aCol, i=0; i<p->nCol; i++, pCol++){
r243669r243670
9031890317      if( !hasColumn(pPk->aiColumn, j, i) ){
9031990318        assert( j<pPk->nColumn );
9032090319        pPk->aiColumn[j] = i;
90321        pPk->azColl[j] = (char *)"BINARY";
90320        pPk->azColl[j] = "BINARY";
9032290321        j++;
9032390322      }
9032490323    }
r243669r243670
9041990418  if( !db->init.busy ){
9042090419    int n;
9042190420    Vdbe *v;
90422    const char *zType;    /* "view" or "table" */
90423    const char *zType2;   /* "VIEW" or "TABLE" */
90421    char *zType;    /* "view" or "table" */
90422    char *zType2;   /* "VIEW" or "TABLE" */
9042490423    char *zStmt;    /* Text of the CREATE TABLE or CREATE VIEW statement */
9042590424
9042690425    v = sqlite3GetVdbe(pParse);
r243669r243670
9164391642      nExtra -= nColl;
9164491643    }else{
9164591644      zColl = pTab->aCol[j].zColl;
91646      if( !zColl ) zColl = (char *)"BINARY";
91645      if( !zColl ) zColl = "BINARY";
9164791646    }
9164891647    if( !db->init.busy && !sqlite3LocateCollSeq(pParse, zColl) ){
9164991648      goto exit_create_index;
r243669r243670
9166891667    assert( i==pIndex->nColumn );
9166991668  }else{
9167091669    pIndex->aiColumn[i] = -1;
91671    pIndex->azColl[i] = (char *)"BINARY";
91670    pIndex->azColl[i] = "BINARY";
9167291671  }
9167391672  sqlite3DefaultRowEst(pIndex);
9167491673  if( pParse->pNewTable==0 ) estimateIndexWidth(pIndex);
r243669r243670
9622096219          ** unusable. Bail out early in this case.  */
9622196220          zDfltColl = pParent->aCol[iCol].zColl;
9622296221          if( !zDfltColl ){
96223            zDfltColl = (char *)"BINARY";
96222            zDfltColl = "BINARY";
9622496223          }
9622596224          if( sqlite3StrICmp(pIdx->azColl[i], zDfltColl) ) break;
9622696225
r243669r243670
101463101462** journal-mode name.
101464101463*/
101465101464SQLITE_PRIVATE const char *sqlite3JournalModename(int eMode){
101466  static const char * azModeName[] = {
101465  static char * const azModeName[] = {
101467101466    "delete", "persist", "off", "truncate", "memory"
101468101467#ifndef SQLITE_OMIT_WAL
101469101468     , "wal"
r243669r243670
102833102832  */
102834102833  case PragTyp_ENCODING: {
102835102834    static const struct EncName {
102836      const char *zName;
102835      char *zName;
102837102836      u8 enc;
102838102837    } encnames[] = {
102839102838      { "UTF8",     SQLITE_UTF8        },
r243669r243670
105141105140** Name of the connection operator, used for error messages.
105142105141*/
105143105142static const char *selectOpName(int id){
105144  const char *z;
105143  char *z;
105145105144  switch( id ){
105146105145    case TK_ALL:       z = "UNION ALL";   break;
105147105146    case TK_INTERSECT: z = "INTERSECT";   break;
r243669r243670
105608105607      if( iCol<0 ) iCol = pTab->iPKey;
105609105608      assert( iCol==-1 || (iCol>=0 && iCol<pTab->nCol) );
105610105609      if( iCol<0 ){
105611        zCol = (char*)"rowid";
105610        zCol = "rowid";
105612105611      }else{
105613105612        zCol = pTab->aCol[iCol].zName;
105614105613      }
r243669r243670
111849111848  */
111850111849  nDb = db->nDb;
111851111850  if( sqlite3TempInMemory(db) ){
111852    zSql = (char*)"ATTACH ':memory:' AS vacuum_db;";
111851    zSql = "ATTACH ':memory:' AS vacuum_db;";
111853111852  }else{
111854    zSql = (char*)"ATTACH '' AS vacuum_db;";
111853    zSql = "ATTACH '' AS vacuum_db;";
111855111854  }
111856111855  rc = execSql(db, pzErrMsg, zSql);
111857111856  if( db->nDb>nDb ){
r243669r243670
115271115270  pIdx = sqlite3AllocateIndexObject(pParse->db, nKeyCol+1, 0, &zNotUsed);
115272115271  if( pIdx==0 ) return;
115273115272  pLoop->u.btree.pIndex = pIdx;
115274  pIdx->zName = (char*)"auto-index";
115273  pIdx->zName = "auto-index";
115275115274  pIdx->pTable = pTable;
115276115275  n = 0;
115277115276  idxCols = 0;
r243669r243670
115286115285        idxCols |= cMask;
115287115286        pIdx->aiColumn[n] = pTerm->u.leftColumn;
115288115287        pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight);
115289        pIdx->azColl[n] = ALWAYS(pColl) ? pColl->zName : (char*)"BINARY";
115288        pIdx->azColl[n] = ALWAYS(pColl) ? pColl->zName : "BINARY";
115290115289        n++;
115291115290      }
115292115291    }
r243669r243670
115298115297  for(i=0; i<mxBitCol; i++){
115299115298    if( extraCols & MASKBIT(i) ){
115300115299      pIdx->aiColumn[n] = i;
115301      pIdx->azColl[n] = (char*)"BINARY";
115300      pIdx->azColl[n] = "BINARY";
115302115301      n++;
115303115302    }
115304115303  }
115305115304  if( pSrc->colUsed & MASKBIT(BMS-1) ){
115306115305    for(i=BMS-1; i<pTable->nCol; i++){
115307115306      pIdx->aiColumn[n] = i;
115308      pIdx->azColl[n] = (char*)"BINARY";
115307      pIdx->azColl[n] = "BINARY";
115309115308      n++;
115310115309    }
115311115310  }
115312115311  assert( n==nKeyCol );
115313115312  pIdx->aiColumn[n] = -1;
115314  pIdx->azColl[n] = (char*)"BINARY";
115313  pIdx->azColl[n] = "BINARY";
115315115314
115316115315  /* Create the automatic index */
115317115316  assert( pLevel->iIdxCur>=0 );
r243669r243670
116378116377  if( nEq==0 && (pLoop->wsFlags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ) return;
116379116378  sqlite3StrAccumAppend(pStr, " (", 2);
116380116379  for(i=0; i<nEq; i++){
116381    char *z = aiColumn[i] < 0 ? (char*)"rowid" : aCol[aiColumn[i]].zName;
116380    char *z = aiColumn[i] < 0 ? "rowid" : aCol[aiColumn[i]].zName;
116382116381    if( i>=nSkip ){
116383116382      explainAppendTerm(pStr, i, z, "=");
116384116383    }else{
r243669r243670
116389116388
116390116389  j = i;
116391116390  if( pLoop->wsFlags&WHERE_BTM_LIMIT ){
116392    char *z = aiColumn[j] < 0 ? (char*)"rowid" : aCol[aiColumn[j]].zName;
116391    char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName;
116393116392    explainAppendTerm(pStr, i++, z, ">");
116394116393  }
116395116394  if( pLoop->wsFlags&WHERE_TOP_LIMIT ){
116396    char *z = aiColumn[j] < 0 ? (char*)"rowid" : aCol[aiColumn[j]].zName;
116395    char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName;
116397116396    explainAppendTerm(pStr, i, z, "<");
116398116397  }
116399116398  sqlite3StrAccumAppend(pStr, ")", 1);
r243669r243670
127316127315          mask = SQLITE_OPEN_SHAREDCACHE|SQLITE_OPEN_PRIVATECACHE;
127317127316          aMode = aCacheMode;
127318127317          limit = mask;
127319          zModeType = (char*)"cache";
127318          zModeType = "cache";
127320127319        }
127321127320        if( nOpt==4 && memcmp("mode", zOpt, 4)==0 ){
127322127321          static struct OpenMode aOpenMode[] = {
r243669r243670
127331127330                   | SQLITE_OPEN_CREATE | SQLITE_OPEN_MEMORY;
127332127331          aMode = aOpenMode;
127333127332          limit = mask & flags;
127334          zModeType = (char*)"access";
127333          zModeType = "access";
127335127334        }
127336127335
127337127336        if( aMode ){
r243669r243670
127560127559  /* The default safety_level for the main database is 'full'; for the temp
127561127560  ** database it is 'NONE'. This matches the pager layer defaults. 
127562127561  */
127563  db->aDb[0].zName = (char*)"main";
127562  db->aDb[0].zName = "main";
127564127563  db->aDb[0].safety_level = 3;
127565  db->aDb[1].zName = (char*)"temp";
127564  db->aDb[1].zName = "temp";
127566127565  db->aDb[1].safety_level = 1;
127567127566
127568127567  db->magic = SQLITE_MAGIC_OPEN;
trunk/src/emu/debug/dvmemory.h
r243669r243670
5454   // getters
5555   const char *expression() { return m_expression.string(); }
5656   UINT8 bytes_per_chunk() { flush_updates(); return m_bytes_per_chunk; }
57   UINT8 chunks_per_row() { flush_updates(); return m_chunks_per_row; }
57   UINT32 chunks_per_row() { flush_updates(); return m_chunks_per_row; }
5858   bool reverse() const { return m_reverse_view; }
5959   bool ascii() const { return m_ascii_view; }
6060   bool physical() const { return m_no_translation; }
trunk/src/emu/input.c
r243669r243670
422422
423423// standard joystick mappings
424424const char          joystick_map_8way[] = "7778...4445";
425const char          joystick_map_4way_sticky[] = "s8.4s8.44s8.4445";
425426const char          joystick_map_4way_diagonal[] = "4444s8888..444458888.444555888.ss5.222555666.222256666.2222s6666.2222s6666";
426// const char          joystick_map_4way_sticky[] = "s8.4s8.44s8.4445";
427427
428428
429
429430//**************************************************************************
430431//  JOYSTICK MAP
431432//**************************************************************************
trunk/src/emu/input.h
r243669r243670
11351135
11361136// joystick maps
11371137extern const char joystick_map_8way[];
1138extern const char joystick_map_4way_sticky[];
11381139extern const char joystick_map_4way_diagonal[];
11391140
11401141
trunk/src/emu/ioport.c
r243669r243670
785785      //
786786      //  If joystick is pointing at a diagonal, acknowledge that the player moved
787787      //  the joystick by favoring a direction change.  This minimizes frustration
788      //  and maximizes responsiveness.
788      //  when using a keyboard for input, and maximizes responsiveness.
789789      //
790790      //  For example, if you are holding "left" then switch to "up" (where both left
791791      //  and up are briefly pressed at the same time), we'll transition immediately
r243669r243670
25192519   init_autoselect_devices(IPT_TRACKBALL_X, IPT_TRACKBALL_Y,  0,              OPTION_TRACKBALL_DEVICE,  "trackball");
25202520   init_autoselect_devices(IPT_MOUSE_X,     IPT_MOUSE_Y,      0,              OPTION_MOUSE_DEVICE,      "mouse");
25212521
2522   // look for 4-way diagonal joysticks and change the default map if we find any
2522   // look for 4-way joysticks and change the default map if we find any
25232523   const char *joystick_map_default = machine().options().joystick_map();
25242524   if (joystick_map_default[0] == 0 || strcmp(joystick_map_default, "auto") == 0)
25252525      for (ioport_port *port = first_port(); port != NULL; port = port->next())
25262526         for (ioport_field *field = port->first_field(); field != NULL; field = field->next())
2527            if (field->live().joystick != NULL && field->rotated())
2527            if (field->live().joystick != NULL && field->way() == 4)
25282528            {
2529               machine().input().set_global_joystick_map(joystick_map_4way_diagonal);
2529               machine().input().set_global_joystick_map(field->rotated() ? joystick_map_4way_diagonal : joystick_map_4way_sticky);
25302530               break;
25312531            }
25322532
trunk/src/lib/lib.mak
r243669r243670
598598
599599$(LIBOBJ)/sqlite3/sqlite3.o: $(3RDPARTY)/sqlite3/sqlite3.c | $(OSPREBUILD)
600600   @echo Compiling $<...
601   $(CC) $(CDEFS) $(CCOMFLAGS) $(CONLYFLAGS) -Wno-bad-function-cast -Wno-undef -I$(3RDPARTY)/sqlite3 $(SQLITE3_FLAGS) -c $< -o $@
601   $(CC) $(CDEFS) $(CONLYFLAGS) -Wno-bad-function-cast -I$(3RDPARTY)/sqlite3 $(SQLITE3_FLAGS) -c $< -o $@
602602
603603#-------------------------------------------------
604604# BGFX library objects
trunk/src/mame/audio/skydiver.c
r243669r243670
4343
4444DISCRETE_SOUND_START(skydiver)
4545   /************************************************/
46   /* skydiver  Effects Relative Gain Table        */
46   /* skydiver  Effects Relataive Gain Table       */
4747   /*                                              */
4848   /* Effect  V-ampIn  Gain ratio        Relative  */
4949   /* Note     3.8     3.8/260.5          1000.0   */
trunk/src/mame/drivers/bnstars.c
r243669r243670
106106         m_ms32_bg1_ram(*this, "bg1_ram"),
107107         m_ms32_roz0_ram(*this, "roz0_ram"),
108108         m_ms32_roz1_ram(*this, "roz1_ram"),
109         m_ms32_pal_ram(*this, "pal_ram"),
109110         m_ms32_roz_ctrl(*this, "roz_ctrl"),
110111         m_ms32_spram(*this, "spram"),
111112         m_ms32_tx0_scroll(*this, "tx0_scroll"),
112113         m_ms32_bg0_scroll(*this, "bg0_scroll"),
113114         m_ms32_tx1_scroll(*this, "tx1_scroll"),
114         m_ms32_bg1_scroll(*this, "bg1_scroll"),
115         m_p1_keys(*this, "P1KEY"),
116         m_p2_keys(*this, "P2KEY") { }
115         m_ms32_bg1_scroll(*this, "bg1_scroll")  { }
117116
118117   tilemap_t *m_ms32_tx_tilemap[2];
119118   tilemap_t *m_ms32_bg_tilemap[2];
r243669r243670
124123   required_shared_ptr<UINT32> m_ms32_bg1_ram;
125124   required_shared_ptr<UINT32> m_ms32_roz0_ram;
126125   required_shared_ptr<UINT32> m_ms32_roz1_ram;
126   required_shared_ptr_array<UINT32, 2> m_ms32_pal_ram;
127127   required_shared_ptr_array<UINT32, 2> m_ms32_roz_ctrl;
128128   required_shared_ptr<UINT32> m_ms32_spram;
129129   required_shared_ptr<UINT32> m_ms32_tx0_scroll;
130130   required_shared_ptr<UINT32> m_ms32_bg0_scroll;
131131   required_shared_ptr<UINT32> m_ms32_tx1_scroll;
132132   required_shared_ptr<UINT32> m_ms32_bg1_scroll;
133
134   required_ioport_array<4> m_p1_keys;
135   required_ioport_array<4> m_p2_keys;
136
137133   UINT32 m_bnstars1_mahjong_select;
138134   DECLARE_WRITE32_MEMBER(ms32_tx0_ram_w);
139135   DECLARE_WRITE32_MEMBER(ms32_tx1_ram_w);
r243669r243670
141137   DECLARE_WRITE32_MEMBER(ms32_bg1_ram_w);
142138   DECLARE_WRITE32_MEMBER(ms32_roz0_ram_w);
143139   DECLARE_WRITE32_MEMBER(ms32_roz1_ram_w);
140   DECLARE_WRITE32_MEMBER(ms32_pal0_ram_w);
141   DECLARE_WRITE32_MEMBER(ms32_pal1_ram_w);
142   DECLARE_READ32_MEMBER(bnstars1_r);
144143   DECLARE_WRITE32_MEMBER(bnstars1_mahjong_select_w);
145   DECLARE_CUSTOM_INPUT_MEMBER(mahjong_ctrl_r);
146144   DECLARE_DRIVER_INIT(bnstars);
147145   TILE_GET_INFO_MEMBER(get_ms32_tx0_tile_info);
148146   TILE_GET_INFO_MEMBER(get_ms32_tx1_tile_info);
r243669r243670
155153   UINT32 screen_update_bnstars_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
156154   UINT32 screen_update_bnstars_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
157155   void draw_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int chip);
158   void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size);
156   void update_color(int color, int screen);
157   void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region);
159158};
160159
161160
r243669r243670
177176   tileno = m_ms32_tx1_ram[tile_index *2+0] & 0x0000ffff;
178177   colour = m_ms32_tx1_ram[tile_index *2+1] & 0x0000000f;
179178
180   SET_TILE_INFO_MEMBER(6,tileno,colour,0);
179   SET_TILE_INFO_MEMBER(7,tileno,colour,0);
181180}
182181
183182WRITE32_MEMBER(bnstars_state::ms32_tx0_ram_w)
r243669r243670
211210   tileno = m_ms32_bg1_ram[tile_index *2+0] & 0x0000ffff;
212211   colour = m_ms32_bg1_ram[tile_index *2+1] & 0x0000000f;
213212
214   SET_TILE_INFO_MEMBER(5,tileno,colour,0);
213   SET_TILE_INFO_MEMBER(6,tileno,colour,0);
215214}
216215
217216WRITE32_MEMBER(bnstars_state::ms32_bg0_ram_w)
r243669r243670
330329   tileno = m_ms32_roz1_ram[tile_index *2+0] & 0x0000ffff;
331330   colour = m_ms32_roz1_ram[tile_index *2+1] & 0x0000000f;
332331
333   SET_TILE_INFO_MEMBER(4,tileno,colour,0);
332   SET_TILE_INFO_MEMBER(5,tileno,colour,0);
334333}
335334
336335WRITE32_MEMBER(bnstars_state::ms32_roz0_ram_w)
r243669r243670
346345}
347346
348347
348void bnstars_state::update_color(int color, int screen)
349{
350   int r,g,b;
351
352   r = ((m_ms32_pal_ram[screen][color*2] & 0xff00) >>8 );
353   g = ((m_ms32_pal_ram[screen][color*2] & 0x00ff) >>0 );
354   b = ((m_ms32_pal_ram[screen][color*2+1] & 0x00ff) >>0 );
355
356   m_palette->set_pen_color(color+screen*0x8000,rgb_t(r,g,b));
357}
358
359WRITE32_MEMBER(bnstars_state::ms32_pal0_ram_w)
360{
361   COMBINE_DATA(&m_ms32_pal_ram[0][offset]);
362   update_color(offset/2, 0);
363}
364
365WRITE32_MEMBER(bnstars_state::ms32_pal1_ram_w)
366{
367   COMBINE_DATA(&m_ms32_pal_ram[1][offset]);
368   update_color(offset/2, 1);
369}
370
371
349372/* SPRITES based on tetrisp2 for now, readd priority bits later */
350void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size)
373void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region)
351374{
352375/***************************************************************************
353376
r243669r243670
389412   int tx, ty, sx, sy, flipx, flipy;
390413   int xsize, ysize, xzoom, yzoom;
391414   int code, attr, color, size, pri, pri_mask;
392   gfx_element *gfx = m_gfxdecode->gfx(0);
415   gfx_element *gfx = m_gfxdecode->gfx(region);
393416
394417   UINT32      *source = sprram_top;
395418   const UINT32    *finish = sprram_top + (sprram_size - 0x10) / 4;
r243669r243670
515538   m_ms32_tx_tilemap[0]->draw(screen, bitmap, cliprect, 0,4);
516539
517540
518   draw_sprites(screen,bitmap,cliprect, m_ms32_spram, 0x20000);
541   draw_sprites(screen,bitmap,cliprect, m_ms32_spram, 0x20000, 0);
519542
520543   return 0;
521544}
r243669r243670
524547{
525548   screen.priority().fill(0, cliprect);
526549
527   bitmap.fill(0, cliprect);    /* bg color */
550   bitmap.fill(0x8000+0, cliprect);    /* bg color */
528551
529552
530553   m_ms32_bg_tilemap[1]->set_scrollx(0, m_ms32_bg1_scroll[0x00/4] + m_ms32_bg1_scroll[0x08/4] + 0x10 );
r243669r243670
537560   m_ms32_tx_tilemap[1]->set_scrolly(0, m_ms32_tx1_scroll[0x0c/4] + m_ms32_tx1_scroll[0x14/4]);
538561   m_ms32_tx_tilemap[1]->draw(screen, bitmap, cliprect, 0,4);
539562
540   draw_sprites(screen,bitmap,cliprect, m_ms32_spram+(0x20000/4), 0x20000);
563   draw_sprites(screen,bitmap,cliprect, m_ms32_spram+(0x20000/4), 0x20000, 4);
541564
542565   return 0;
543566}
544567
545568static INPUT_PORTS_START( bnstars )
546   PORT_START("P1")
547   PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bnstars_state, mahjong_ctrl_r, (void *)0)
548   PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
549   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 )
550   PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN )
551   PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE1 )
552   PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Test?") PORT_CODE(KEYCODE_F1)
553
554   PORT_START("P1KEY.0")
555   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
569   PORT_START("IN0")
570   PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 )
556571   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_A )
557572   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_E )
558573   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
559574   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_I )
560575   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
561   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
576   PORT_DIPNAME(     0x00000040, 0x00000040, DEF_STR( Unknown ) )
577   PORT_DIPSETTING(  0x00000040, DEF_STR( Off ) )
578   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
579   PORT_DIPNAME(     0x00000080, 0x00000080, DEF_STR( Unknown ) )
580   PORT_DIPSETTING(  0x00000080, DEF_STR( Off ) )
581   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
582   PORT_DIPNAME(     0x00000100, 0x00000100, DEF_STR( Unknown ) )
583   PORT_DIPSETTING(  0x00000100, DEF_STR( Off ) )
584   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
585   PORT_DIPNAME(     0x00000200, 0x00000200, DEF_STR( Unknown ) )
586   PORT_DIPSETTING(  0x00000200, DEF_STR( Off ) )
587   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
588   PORT_DIPNAME(     0x00000400, 0x00000400, DEF_STR( Unknown ) )
589   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
590   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
591   PORT_DIPNAME(     0x00000800, 0x00000800, DEF_STR( Unknown ) )
592   PORT_DIPSETTING(  0x00000800, DEF_STR( Off ) )
593   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
594   PORT_DIPNAME(     0x00001000, 0x00001000, DEF_STR( Unknown ) )
595   PORT_DIPSETTING(  0x00001000, DEF_STR( Off ) )
596   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
597   PORT_DIPNAME(     0x00002000, 0x00002000, DEF_STR( Unknown ) )
598   PORT_DIPSETTING(  0x00002000, DEF_STR( Off ) )
599   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
600   PORT_DIPNAME(     0x00004000, 0x00004000, DEF_STR( Unknown ) )
601   PORT_DIPSETTING(  0x00004000, DEF_STR( Off ) )
602   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
603   PORT_DIPNAME(     0x00008000, 0x00008000, DEF_STR( Unknown ) )
604   PORT_DIPSETTING(  0x00008000, DEF_STR( Off ) )
605   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
606   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 )
607   PORT_DIPNAME(     0x00020000, 0x00020000, "MAH1" )
608   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
609   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
610   PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE1 )
611   PORT_DIPNAME(     0x00080000, 0x00080000, "Service Mode ? 1" )
612   PORT_DIPSETTING(  0x00080000, DEF_STR( Off ) )
613   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
614   PORT_DIPNAME(     0x00100000, 0x00100000, DEF_STR( Unknown ) )
615   PORT_DIPSETTING(  0x00100000, DEF_STR( Off ) )
616   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
617   PORT_DIPNAME(     0x00200000, 0x00200000, DEF_STR( Unknown ) )
618   PORT_DIPSETTING(  0x00200000, DEF_STR( Off ) )
619   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
620   PORT_DIPNAME(     0x00400000, 0x00400000, DEF_STR( Unknown ) )
621   PORT_DIPSETTING(  0x00400000, DEF_STR( Off ) )
622   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
623   PORT_DIPNAME(     0x00800000, 0x00800000, DEF_STR( Unknown ) )
624   PORT_DIPSETTING(  0x00800000, DEF_STR( Off ) )
625   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
626   PORT_DIPNAME(     0x01000000, 0x01000000, DEF_STR( Unknown ) )
627   PORT_DIPSETTING(  0x01000000, DEF_STR( Off ) )
628   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
629   PORT_DIPNAME(     0x02000000, 0x02000000, DEF_STR( Unknown ) )
630   PORT_DIPSETTING(  0x02000000, DEF_STR( Off ) )
631   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
632   PORT_DIPNAME(     0x04000000, 0x04000000, DEF_STR( Unknown ) )
633   PORT_DIPSETTING(  0x04000000, DEF_STR( Off ) )
634   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
635   PORT_DIPNAME(     0x08000000, 0x08000000, DEF_STR( Unknown ) )
636   PORT_DIPSETTING(  0x08000000, DEF_STR( Off ) )
637   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
638   PORT_DIPNAME(     0x10000000, 0x10000000, DEF_STR( Unknown ) )
639   PORT_DIPSETTING(  0x10000000, DEF_STR( Off ) )
640   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
641   PORT_DIPNAME(     0x20000000, 0x20000000, DEF_STR( Unknown ) )
642   PORT_DIPSETTING(  0x20000000, DEF_STR( Off ) )
643   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
644   PORT_DIPNAME(     0x40000000, 0x40000000, DEF_STR( Unknown ) )
645   PORT_DIPSETTING(  0x40000000, DEF_STR( Off ) )
646   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
647   PORT_DIPNAME(     0x80000000, 0x80000000, DEF_STR( Unknown ) )
648   PORT_DIPSETTING(  0x80000000, DEF_STR( Off ) )
649   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
562650
563   PORT_START("P1KEY.1")
564   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
565   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B )
566   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_F )
567   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
568   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_J )
569   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
570   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
651   PORT_START("IN1")
652   PORT_DIPNAME(     0x00000001, 0x00000001, "MAH2" )
653   PORT_DIPSETTING(  0x00000001, DEF_STR( Off ) )
654   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
655   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_B )
656   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_F )
657   PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_N )
658   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_J )
659   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
660   PORT_DIPNAME(     0x00000040, 0x00000040, DEF_STR( Unknown ) )
661   PORT_DIPSETTING(  0x00000040, DEF_STR( Off ) )
662   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
663   PORT_DIPNAME(     0x00000080, 0x00000080, DEF_STR( Unknown ) )
664   PORT_DIPSETTING(  0x00000080, DEF_STR( Off ) )
665   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
666   PORT_DIPNAME(     0x00000100, 0x00000100, DEF_STR( Unknown ) )
667   PORT_DIPSETTING(  0x00000100, DEF_STR( Off ) )
668   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
669   PORT_DIPNAME(     0x00000200, 0x00000200, DEF_STR( Unknown ) )
670   PORT_DIPSETTING(  0x00000200, DEF_STR( Off ) )
671   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
672   PORT_DIPNAME(     0x00000400, 0x00000400, DEF_STR( Unknown ) )
673   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
674   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
675   PORT_DIPNAME(     0x00000800, 0x00000800, DEF_STR( Unknown ) )
676   PORT_DIPSETTING(  0x00000800, DEF_STR( Off ) )
677   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
678   PORT_DIPNAME(     0x00001000, 0x00001000, DEF_STR( Unknown ) )
679   PORT_DIPSETTING(  0x00001000, DEF_STR( Off ) )
680   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
681   PORT_DIPNAME(     0x00002000, 0x00002000, DEF_STR( Unknown ) )
682   PORT_DIPSETTING(  0x00002000, DEF_STR( Off ) )
683   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
684   PORT_DIPNAME(     0x00004000, 0x00004000, DEF_STR( Unknown ) )
685   PORT_DIPSETTING(  0x00004000, DEF_STR( Off ) )
686   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
687   PORT_DIPNAME(     0x00008000, 0x00008000, DEF_STR( Unknown ) )
688   PORT_DIPSETTING(  0x00008000, DEF_STR( Off ) )
689   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
690   PORT_DIPNAME(     0x00010000, 0x00010000, "MAH3" )
691   PORT_DIPSETTING(  0x00010000, DEF_STR( Off ) )
692   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
693   PORT_DIPNAME(     0x00020000, 0x00020000, DEF_STR( Unknown ) )
694   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
695   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
696   PORT_DIPNAME(     0x00040000, 0x00040000, DEF_STR( Unknown ) )
697   PORT_DIPSETTING(  0x00040000, DEF_STR( Off ) )
698   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
699   PORT_DIPNAME(     0x00080000, 0x00080000, DEF_STR( Unknown ) )
700   PORT_DIPSETTING(  0x00080000, DEF_STR( Off ) )
701   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
702   PORT_DIPNAME(     0x00100000, 0x00100000, DEF_STR( Unknown ) )
703   PORT_DIPSETTING(  0x00100000, DEF_STR( Off ) )
704   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
705   PORT_DIPNAME(     0x00200000, 0x00200000, DEF_STR( Unknown ) )
706   PORT_DIPSETTING(  0x00200000, DEF_STR( Off ) )
707   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
708   PORT_DIPNAME(     0x00400000, 0x00400000, DEF_STR( Unknown ) )
709   PORT_DIPSETTING(  0x00400000, DEF_STR( Off ) )
710   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
711   PORT_DIPNAME(     0x00800000, 0x00800000, DEF_STR( Unknown ) )
712   PORT_DIPSETTING(  0x00800000, DEF_STR( Off ) )
713   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
714   PORT_DIPNAME(     0x01000000, 0x01000000, DEF_STR( Unknown ) )
715   PORT_DIPSETTING(  0x01000000, DEF_STR( Off ) )
716   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
717   PORT_DIPNAME(     0x02000000, 0x02000000, DEF_STR( Unknown ) )
718   PORT_DIPSETTING(  0x02000000, DEF_STR( Off ) )
719   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
720   PORT_DIPNAME(     0x04000000, 0x04000000, DEF_STR( Unknown ) )
721   PORT_DIPSETTING(  0x04000000, DEF_STR( Off ) )
722   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
723   PORT_DIPNAME(     0x08000000, 0x08000000, DEF_STR( Unknown ) )
724   PORT_DIPSETTING(  0x08000000, DEF_STR( Off ) )
725   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
726   PORT_DIPNAME(     0x10000000, 0x10000000, DEF_STR( Unknown ) )
727   PORT_DIPSETTING(  0x10000000, DEF_STR( Off ) )
728   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
729   PORT_DIPNAME(     0x20000000, 0x20000000, DEF_STR( Unknown ) )
730   PORT_DIPSETTING(  0x20000000, DEF_STR( Off ) )
731   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
732   PORT_DIPNAME(     0x40000000, 0x40000000, DEF_STR( Unknown ) )
733   PORT_DIPSETTING(  0x40000000, DEF_STR( Off ) )
734   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
735   PORT_DIPNAME(     0x80000000, 0x80000000, DEF_STR( Unknown ) )
736   PORT_DIPSETTING(  0x80000000, DEF_STR( Off ) )
737   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
571738
572   PORT_START("P1KEY.2")
573   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
574   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_C )
575   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G )
576   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
577   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_K )
578   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
579   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
739   PORT_START("IN2")
740   PORT_DIPNAME(     0x00000001, 0x00000001, "MAH4" )
741   PORT_DIPSETTING(  0x00000001, DEF_STR( Off ) )
742   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
743   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_C )
744   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_G )
745   PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
746   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_K )
747   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
748   PORT_DIPNAME(     0x00000040, 0x00000040, DEF_STR( Unknown ) )
749   PORT_DIPSETTING(  0x00000040, DEF_STR( Off ) )
750   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
751   PORT_DIPNAME(     0x00000080, 0x00000080, DEF_STR( Unknown ) )
752   PORT_DIPSETTING(  0x00000080, DEF_STR( Off ) )
753   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
754   PORT_DIPNAME(     0x00000100, 0x00000100, DEF_STR( Unknown ) )
755   PORT_DIPSETTING(  0x00000100, DEF_STR( Off ) )
756   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
757   PORT_DIPNAME(     0x00000200, 0x00000200, DEF_STR( Unknown ) )
758   PORT_DIPSETTING(  0x00000200, DEF_STR( Off ) )
759   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
760   PORT_DIPNAME(     0x00000400, 0x00000400, DEF_STR( Unknown ) )
761   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
762   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
763   PORT_DIPNAME(     0x00000800, 0x00000800, DEF_STR( Unknown ) )
764   PORT_DIPSETTING(  0x00000800, DEF_STR( Off ) )
765   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
766   PORT_DIPNAME(     0x00001000, 0x00001000, DEF_STR( Unknown ) )
767   PORT_DIPSETTING(  0x00001000, DEF_STR( Off ) )
768   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
769   PORT_DIPNAME(     0x00002000, 0x00002000, DEF_STR( Unknown ) )
770   PORT_DIPSETTING(  0x00002000, DEF_STR( Off ) )
771   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
772   PORT_DIPNAME(     0x00004000, 0x00004000, DEF_STR( Unknown ) )
773   PORT_DIPSETTING(  0x00004000, DEF_STR( Off ) )
774   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
775   PORT_DIPNAME(     0x00008000, 0x00008000, DEF_STR( Unknown ) )
776   PORT_DIPSETTING(  0x00008000, DEF_STR( Off ) )
777   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
778   PORT_DIPNAME(     0x00010000, 0x00010000, "MAH5" )
779   PORT_DIPSETTING(  0x00010000, DEF_STR( Off ) )
780   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
781   PORT_DIPNAME(     0x00020000, 0x00020000, DEF_STR( Unknown ) )
782   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
783   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
784   PORT_DIPNAME(     0x00040000, 0x00040000, DEF_STR( Unknown ) )
785   PORT_DIPSETTING(  0x00040000, DEF_STR( Off ) )
786   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
787   PORT_DIPNAME(     0x00080000, 0x00080000, DEF_STR( Unknown ) )
788   PORT_DIPSETTING(  0x00080000, DEF_STR( Off ) )
789   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
790   PORT_DIPNAME(     0x00100000, 0x00100000, DEF_STR( Unknown ) )
791   PORT_DIPSETTING(  0x00100000, DEF_STR( Off ) )
792   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
793   PORT_DIPNAME(     0x00200000, 0x00200000, DEF_STR( Unknown ) )
794   PORT_DIPSETTING(  0x00200000, DEF_STR( Off ) )
795   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
796   PORT_DIPNAME(     0x00400000, 0x00400000, DEF_STR( Unknown ) )
797   PORT_DIPSETTING(  0x00400000, DEF_STR( Off ) )
798   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
799   PORT_DIPNAME(     0x00800000, 0x00800000, DEF_STR( Unknown ) )
800   PORT_DIPSETTING(  0x00800000, DEF_STR( Off ) )
801   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
802   PORT_DIPNAME(     0x01000000, 0x01000000, DEF_STR( Unknown ) )
803   PORT_DIPSETTING(  0x01000000, DEF_STR( Off ) )
804   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
805   PORT_DIPNAME(     0x02000000, 0x02000000, DEF_STR( Unknown ) )
806   PORT_DIPSETTING(  0x02000000, DEF_STR( Off ) )
807   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
808   PORT_DIPNAME(     0x04000000, 0x04000000, DEF_STR( Unknown ) )
809   PORT_DIPSETTING(  0x04000000, DEF_STR( Off ) )
810   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
811   PORT_DIPNAME(     0x08000000, 0x08000000, DEF_STR( Unknown ) )
812   PORT_DIPSETTING(  0x08000000, DEF_STR( Off ) )
813   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
814   PORT_DIPNAME(     0x10000000, 0x10000000, DEF_STR( Unknown ) )
815   PORT_DIPSETTING(  0x10000000, DEF_STR( Off ) )
816   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
817   PORT_DIPNAME(     0x20000000, 0x20000000, DEF_STR( Unknown ) )
818   PORT_DIPSETTING(  0x20000000, DEF_STR( Off ) )
819   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
820   PORT_DIPNAME(     0x40000000, 0x40000000, DEF_STR( Unknown ) )
821   PORT_DIPSETTING(  0x40000000, DEF_STR( Off ) )
822   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
823   PORT_DIPNAME(     0x80000000, 0x80000000, DEF_STR( Unknown ) )
824   PORT_DIPSETTING(  0x80000000, DEF_STR( Off ) )
825   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
580826
581   PORT_START("P1KEY.3")
582   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
583   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_D )
584   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_H )
585   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
586   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L )
587   PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
827   PORT_START("IN3")
828   PORT_DIPNAME(     0x00000001, 0x00000001, "MAH6" )
829   PORT_DIPSETTING(  0x00000001, DEF_STR( Off ) )
830   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
831   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_D )
832   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_H )
833   PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
834   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_L )
835   PORT_DIPNAME(     0x00000020, 0x00000020, DEF_STR( Unknown ) )
836   PORT_DIPSETTING(  0x00000020, DEF_STR( Off ) )
837   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
838   PORT_DIPNAME(     0x00000040, 0x00000040, DEF_STR( Unknown ) )
839   PORT_DIPSETTING(  0x00000040, DEF_STR( Off ) )
840   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
841   PORT_DIPNAME(     0x00000080, 0x00000080, DEF_STR( Unknown ) )
842   PORT_DIPSETTING(  0x00000080, DEF_STR( Off ) )
843   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
844   PORT_DIPNAME(     0x00000100, 0x00000100, DEF_STR( Unknown ) )
845   PORT_DIPSETTING(  0x00000100, DEF_STR( Off ) )
846   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
847   PORT_DIPNAME(     0x00000200, 0x00000200, DEF_STR( Unknown ) )
848   PORT_DIPSETTING(  0x00000200, DEF_STR( Off ) )
849   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
850   PORT_DIPNAME(     0x00000400, 0x00000400, DEF_STR( Unknown ) )
851   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
852   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
853   PORT_DIPNAME(     0x00000800, 0x00000800, DEF_STR( Unknown ) )
854   PORT_DIPSETTING(  0x00000800, DEF_STR( Off ) )
855   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
856   PORT_DIPNAME(     0x00001000, 0x00001000, DEF_STR( Unknown ) )
857   PORT_DIPSETTING(  0x00001000, DEF_STR( Off ) )
858   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
859   PORT_DIPNAME(     0x00002000, 0x00002000, DEF_STR( Unknown ) )
860   PORT_DIPSETTING(  0x00002000, DEF_STR( Off ) )
861   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
862   PORT_DIPNAME(     0x00004000, 0x00004000, DEF_STR( Unknown ) )
863   PORT_DIPSETTING(  0x00004000, DEF_STR( Off ) )
864   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
865   PORT_DIPNAME(     0x00008000, 0x00008000, DEF_STR( Unknown ) )
866   PORT_DIPSETTING(  0x00008000, DEF_STR( Off ) )
867   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
868   PORT_DIPNAME(     0x00010000, 0x00010000, "MAH7" )
869   PORT_DIPSETTING(  0x00010000, DEF_STR( Off ) )
870   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
871   PORT_DIPNAME(     0x00020000, 0x00020000, DEF_STR( Unknown ) )
872   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
873   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
874   PORT_DIPNAME(     0x00040000, 0x00040000, DEF_STR( Unknown ) )
875   PORT_DIPSETTING(  0x00040000, DEF_STR( Off ) )
876   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
877   PORT_DIPNAME(     0x00080000, 0x00080000, DEF_STR( Unknown ) )
878   PORT_DIPSETTING(  0x00080000, DEF_STR( Off ) )
879   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
880   PORT_DIPNAME(     0x00100000, 0x00100000, DEF_STR( Unknown ) )
881   PORT_DIPSETTING(  0x00100000, DEF_STR( Off ) )
882   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
883   PORT_DIPNAME(     0x00200000, 0x00200000, DEF_STR( Unknown ) )
884   PORT_DIPSETTING(  0x00200000, DEF_STR( Off ) )
885   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
886   PORT_DIPNAME(     0x00400000, 0x00400000, DEF_STR( Unknown ) )
887   PORT_DIPSETTING(  0x00400000, DEF_STR( Off ) )
888   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
889   PORT_DIPNAME(     0x00800000, 0x00800000, DEF_STR( Unknown ) )
890   PORT_DIPSETTING(  0x00800000, DEF_STR( Off ) )
891   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
892   PORT_DIPNAME(     0x01000000, 0x01000000, DEF_STR( Unknown ) )
893   PORT_DIPSETTING(  0x01000000, DEF_STR( Off ) )
894   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
895   PORT_DIPNAME(     0x02000000, 0x02000000, DEF_STR( Unknown ) )
896   PORT_DIPSETTING(  0x02000000, DEF_STR( Off ) )
897   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
898   PORT_DIPNAME(     0x04000000, 0x04000000, DEF_STR( Unknown ) )
899   PORT_DIPSETTING(  0x04000000, DEF_STR( Off ) )
900   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
901   PORT_DIPNAME(     0x08000000, 0x08000000, DEF_STR( Unknown ) )
902   PORT_DIPSETTING(  0x08000000, DEF_STR( Off ) )
903   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
904   PORT_DIPNAME(     0x10000000, 0x10000000, DEF_STR( Unknown ) )
905   PORT_DIPSETTING(  0x10000000, DEF_STR( Off ) )
906   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
907   PORT_DIPNAME(     0x20000000, 0x20000000, DEF_STR( Unknown ) )
908   PORT_DIPSETTING(  0x20000000, DEF_STR( Off ) )
909   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
910   PORT_DIPNAME(     0x40000000, 0x40000000, DEF_STR( Unknown ) )
911   PORT_DIPSETTING(  0x40000000, DEF_STR( Off ) )
912   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
913   PORT_DIPNAME(     0x80000000, 0x80000000, DEF_STR( Unknown ) )
914   PORT_DIPSETTING(  0x80000000, DEF_STR( Off ) )
915   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
588916
589   PORT_START("P2")
590   PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bnstars_state, mahjong_ctrl_r, (void *)1)
591   PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
917   PORT_START("IN4")
918   PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START2 )
919   /* The follow 4 bits active 4 button each one for the second player */
920   PORT_DIPNAME(     0x00000002, 0x00000002, "P2: A,B,C,D" )
921   PORT_DIPSETTING(  0x00000002, DEF_STR( Off ) )
922   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
923   PORT_DIPNAME(     0x00000004, 0x00000004, "P2: E,F,G,H" )
924   PORT_DIPSETTING(  0x00000004, DEF_STR( Off ) )
925   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
926   PORT_DIPNAME(     0x00000008, 0x00000008, "P2: M,N,Pon,Chie" )
927   PORT_DIPSETTING(  0x00000008, DEF_STR( Off ) )
928   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
929   PORT_DIPNAME(     0x00000010, 0x00000010, "P2: I,J,K,L" )
930   PORT_DIPSETTING(  0x00000010, DEF_STR( Off ) )
931   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
932   PORT_DIPNAME(     0x00000020, 0x00000020, "P2: Kan,Reach,Ron" )
933   PORT_DIPSETTING(  0x00000020, DEF_STR( Off ) )
934   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
935   PORT_DIPNAME(     0x00000040, 0x00000040, DEF_STR( Unknown ) )
936   PORT_DIPSETTING(  0x00000040, DEF_STR( Off ) )
937   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
938   PORT_DIPNAME(     0x00000080, 0x00000080, DEF_STR( Unknown ) )
939   PORT_DIPSETTING(  0x00000080, DEF_STR( Off ) )
940   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
941   PORT_DIPNAME(     0x00000100, 0x00000100, DEF_STR( Unknown ) )
942   PORT_DIPSETTING(  0x00000100, DEF_STR( Off ) )
943   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
944   PORT_DIPNAME(     0x00000200, 0x00000200, DEF_STR( Unknown ) )
945   PORT_DIPSETTING(  0x00000200, DEF_STR( Off ) )
946   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
947   PORT_DIPNAME(     0x00000400, 0x00000400, DEF_STR( Unknown ) )
948   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
949   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
950   PORT_DIPNAME(     0x00000800, 0x00000800, DEF_STR( Unknown ) )
951   PORT_DIPSETTING(  0x00000800, DEF_STR( Off ) )
952   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
953   PORT_DIPNAME(     0x00001000, 0x00001000, DEF_STR( Unknown ) )
954   PORT_DIPSETTING(  0x00001000, DEF_STR( Off ) )
955   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
956   PORT_DIPNAME(     0x00002000, 0x00002000, DEF_STR( Unknown ) )
957   PORT_DIPSETTING(  0x00002000, DEF_STR( Off ) )
958   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
959   PORT_DIPNAME(     0x00004000, 0x00004000, DEF_STR( Unknown ) )
960   PORT_DIPSETTING(  0x00004000, DEF_STR( Off ) )
961   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
962   PORT_DIPNAME(     0x00008000, 0x00008000, DEF_STR( Unknown ) )
963   PORT_DIPSETTING(  0x00008000, DEF_STR( Off ) )
964   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
592965   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN2 )
593   PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN )
966   PORT_DIPNAME(     0x00020000, 0x00020000, "MAH9" )
967   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
968   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
594969   PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE2 )
595   PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test?") PORT_CODE(KEYCODE_F2)
970   PORT_DIPNAME(     0x00080000, 0x00080000, "Service Mode ? 2" )
971   PORT_DIPSETTING(  0x00080000, DEF_STR( Off ) )
972   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
973   PORT_DIPNAME(     0x00100000, 0x00100000, DEF_STR( Unknown ) )
974   PORT_DIPSETTING(  0x00100000, DEF_STR( Off ) )
975   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
976   PORT_DIPNAME(     0x00200000, 0x00200000, DEF_STR( Unknown ) )
977   PORT_DIPSETTING(  0x00200000, DEF_STR( Off ) )
978   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
979   PORT_DIPNAME(     0x00400000, 0x00400000, DEF_STR( Unknown ) )
980   PORT_DIPSETTING(  0x00400000, DEF_STR( Off ) )
981   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
982   PORT_DIPNAME(     0x00800000, 0x00800000, DEF_STR( Unknown ) )
983   PORT_DIPSETTING(  0x00800000, DEF_STR( Off ) )
984   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
985   PORT_DIPNAME(     0x01000000, 0x01000000, DEF_STR( Unknown ) )
986   PORT_DIPSETTING(  0x01000000, DEF_STR( Off ) )
987   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
988   PORT_DIPNAME(     0x02000000, 0x02000000, DEF_STR( Unknown ) )
989   PORT_DIPSETTING(  0x02000000, DEF_STR( Off ) )
990   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
991   PORT_DIPNAME(     0x04000000, 0x04000000, DEF_STR( Unknown ) )
992   PORT_DIPSETTING(  0x04000000, DEF_STR( Off ) )
993   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
994   PORT_DIPNAME(     0x08000000, 0x08000000, DEF_STR( Unknown ) )
995   PORT_DIPSETTING(  0x08000000, DEF_STR( Off ) )
996   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
997   PORT_DIPNAME(     0x10000000, 0x10000000, DEF_STR( Unknown ) )
998   PORT_DIPSETTING(  0x10000000, DEF_STR( Off ) )
999   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1000   PORT_DIPNAME(     0x20000000, 0x20000000, DEF_STR( Unknown ) )
1001   PORT_DIPSETTING(  0x20000000, DEF_STR( Off ) )
1002   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1003   PORT_DIPNAME(     0x40000000, 0x40000000, DEF_STR( Unknown ) )
1004   PORT_DIPSETTING(  0x40000000, DEF_STR( Off ) )
1005   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1006   PORT_DIPNAME(     0x80000000, 0x80000000, DEF_STR( Unknown ) )
1007   PORT_DIPSETTING(  0x80000000, DEF_STR( Off ) )
1008   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
5961009
597   PORT_START("P2KEY.0")
598   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
599   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)
600   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)
601   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
602   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
603   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
604   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
605
606   PORT_START("P2KEY.1")
607   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
608   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)
609   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)
610   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
611   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
612   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
613   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
614
615   PORT_START("P2KEY.2")
616   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
617   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)
618   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)
619   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)
620   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)
621   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)
622   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
623
624   PORT_START("P2KEY.3")
625   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
626   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)
627   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)
628   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)
629   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)
630   PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
631
632   PORT_START("DSW")
1010   PORT_START("IN5")
6331011   PORT_DIPNAME(     0x00000001, 0x00000001, "Test Mode" ) PORT_DIPLOCATION("SW1:8")
6341012   PORT_DIPSETTING(  0x00000001, DEF_STR( Off ) )
6351013   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
r243669r243670
6541032   PORT_DIPSETTING(  0x00000060, DEF_STR( 1C_2C ) )
6551033   PORT_DIPSETTING(  0x000000a0, DEF_STR( 1C_3C ) )
6561034   PORT_DIPSETTING(  0x00000020, DEF_STR( 1C_4C ) )
657
658   PORT_DIPUNUSED_DIPLOC( 0x00000100, 0x00000100, "SW2:8" )
659   PORT_DIPUNUSED_DIPLOC( 0x00000200, 0x00000200, "SW2:7" )
1035   PORT_DIPNAME(     0x00000100, 0x00000100, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:8")
1036   PORT_DIPSETTING(  0x00000100, DEF_STR( Off ) )
1037   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1038   PORT_DIPNAME(     0x00000200, 0x00000200, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7")
1039   PORT_DIPSETTING(  0x00000200, DEF_STR( Off ) )
1040   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
6601041   PORT_DIPNAME(     0x00000400, 0x00000400, "Taisen Only" ) PORT_DIPLOCATION("SW2:6")
6611042   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
6621043   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
r243669r243670
6761057   PORT_DIPSETTING(  0x0000a000, DEF_STR( Harder ) )
6771058   PORT_DIPSETTING(  0x00002000, DEF_STR( Hardest ) )
6781059
679   PORT_DIPUNUSED_DIPLOC( 0x00010000, 0x00010000, "SW3:8" )
680   PORT_DIPUNUSED_DIPLOC( 0x00020000, 0x00020000, "SW3:7" )
681   PORT_DIPUNUSED_DIPLOC( 0x00040000, 0x00040000, "SW3:6" )
682   PORT_DIPUNUSED_DIPLOC( 0x00080000, 0x00080000, "SW3:5" )
683   PORT_DIPUNUSED_DIPLOC( 0x00100000, 0x00100000, "SW3:4" )
684   PORT_DIPUNUSED_DIPLOC( 0x00200000, 0x00200000, "SW3:3" )
685   PORT_DIPUNUSED_DIPLOC( 0x00400000, 0x00400000, "SW3:2" )
686   PORT_DIPUNUSED_DIPLOC( 0x00800000, 0x00800000, "SW3:1" )
687   PORT_BIT( 0xff000000, IP_ACTIVE_LOW, IPT_UNUSED )   // Unused?
1060   PORT_DIPNAME(     0x00010000, 0x00010000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:8")
1061   PORT_DIPSETTING(  0x00010000, DEF_STR( Off ) )
1062   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1063   PORT_DIPNAME(     0x00020000, 0x00020000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:7")
1064   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
1065   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1066   PORT_DIPNAME(     0x00040000, 0x00040000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:6")
1067   PORT_DIPSETTING(  0x00040000, DEF_STR( Off ) )
1068   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1069   PORT_DIPNAME(     0x00080000, 0x00080000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:5")
1070   PORT_DIPSETTING(  0x00080000, DEF_STR( Off ) )
1071   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1072   PORT_DIPNAME(     0x00100000, 0x00100000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:4")
1073   PORT_DIPSETTING(  0x00100000, DEF_STR( Off ) )
1074   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1075   PORT_DIPNAME(     0x00200000, 0x00200000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:3")
1076   PORT_DIPSETTING(  0x00200000, DEF_STR( Off ) )
1077   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1078   PORT_DIPNAME(     0x00400000, 0x00400000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:2")
1079   PORT_DIPSETTING(  0x00400000, DEF_STR( Off ) )
1080   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1081   PORT_DIPNAME(     0x00800000, 0x00800000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:1")
1082   PORT_DIPSETTING(  0x00800000, DEF_STR( Off ) )
1083   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1084   PORT_DIPNAME(     0x01000000, 0x01000000, DEF_STR( Unknown ) )
1085   PORT_DIPSETTING(  0x01000000, DEF_STR( Off ) )
1086   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1087   PORT_DIPNAME(     0x02000000, 0x02000000, DEF_STR( Unknown ) )
1088   PORT_DIPSETTING(  0x02000000, DEF_STR( Off ) )
1089   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1090   PORT_DIPNAME(     0x04000000, 0x04000000, DEF_STR( Unknown ) )
1091   PORT_DIPSETTING(  0x04000000, DEF_STR( Off ) )
1092   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1093   PORT_DIPNAME(     0x08000000, 0x08000000, DEF_STR( Unknown ) )
1094   PORT_DIPSETTING(  0x08000000, DEF_STR( Off ) )
1095   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1096   PORT_DIPNAME(     0x10000000, 0x10000000, DEF_STR( Unknown ) )
1097   PORT_DIPSETTING(  0x10000000, DEF_STR( Off ) )
1098   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1099   PORT_DIPNAME(     0x20000000, 0x20000000, DEF_STR( Unknown ) )
1100   PORT_DIPSETTING(  0x20000000, DEF_STR( Off ) )
1101   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1102   PORT_DIPNAME(     0x40000000, 0x40000000, DEF_STR( Unknown ) )
1103   PORT_DIPSETTING(  0x40000000, DEF_STR( Off ) )
1104   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1105   PORT_DIPNAME(     0x80000000, 0x80000000, DEF_STR( Unknown ) )
1106   PORT_DIPSETTING(  0x80000000, DEF_STR( Off ) )
1107   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1108
1109   PORT_START("IN6")
1110   PORT_DIPNAME(     0x00000001, 0x00000001, "4" )
1111   PORT_DIPSETTING(  0x00000001, DEF_STR( Off ) )
1112   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1113   PORT_DIPNAME(     0x00000002, 0x00000002, DEF_STR( Unknown ) )
1114   PORT_DIPSETTING(  0x00000002, DEF_STR( Off ) )
1115   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1116   PORT_DIPNAME(     0x00000004, 0x00000004, DEF_STR( Unknown ) )
1117   PORT_DIPSETTING(  0x00000004, DEF_STR( Off ) )
1118   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1119   PORT_DIPNAME(     0x00000008, 0x00000008, DEF_STR( Unknown ) )
1120   PORT_DIPSETTING(  0x00000008, DEF_STR( Off ) )
1121   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1122   PORT_DIPNAME(     0x00000010, 0x00000010, DEF_STR( Unknown ) )
1123   PORT_DIPSETTING(  0x00000010, DEF_STR( Off ) )
1124   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1125   PORT_DIPNAME(     0x00000020, 0x00000020, DEF_STR( Unknown ) )
1126   PORT_DIPSETTING(  0x00000020, DEF_STR( Off ) )
1127   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1128   PORT_DIPNAME(     0x00000040, 0x00000040, DEF_STR( Unknown ) )
1129   PORT_DIPSETTING(  0x00000040, DEF_STR( Off ) )
1130   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1131   PORT_DIPNAME(     0x00000080, 0x00000080, DEF_STR( Unknown ) )
1132   PORT_DIPSETTING(  0x00000080, DEF_STR( Off ) )
1133   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1134   PORT_DIPNAME(     0x00000100, 0x00000100, DEF_STR( Unknown ) )
1135   PORT_DIPSETTING(  0x00000100, DEF_STR( Off ) )
1136   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1137   PORT_DIPNAME(     0x00000200, 0x00000200, DEF_STR( Unknown ) )
1138   PORT_DIPSETTING(  0x00000200, DEF_STR( Off ) )
1139   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1140   PORT_DIPNAME(     0x00000400, 0x00000400, DEF_STR( Unknown ) )
1141   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
1142   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1143   PORT_DIPNAME(     0x00000800, 0x00000800, DEF_STR( Unknown ) )
1144   PORT_DIPSETTING(  0x00000800, DEF_STR( Off ) )
1145   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1146   PORT_DIPNAME(     0x00001000, 0x00001000, DEF_STR( Unknown ) )
1147   PORT_DIPSETTING(  0x00001000, DEF_STR( Off ) )
1148   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1149   PORT_DIPNAME(     0x00002000, 0x00002000, DEF_STR( Unknown ) )
1150   PORT_DIPSETTING(  0x00002000, DEF_STR( Off ) )
1151   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1152   PORT_DIPNAME(     0x00004000, 0x00004000, DEF_STR( Unknown ) )
1153   PORT_DIPSETTING(  0x00004000, DEF_STR( Off ) )
1154   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1155   PORT_DIPNAME(     0x00008000, 0x00008000, DEF_STR( Unknown ) )
1156   PORT_DIPSETTING(  0x00008000, DEF_STR( Off ) )
1157   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1158   PORT_DIPNAME(     0x00010000, 0x00010000, "5" )
1159   PORT_DIPSETTING(  0x00010000, DEF_STR( Off ) )
1160   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1161   PORT_DIPNAME(     0x00020000, 0x00020000, DEF_STR( Unknown ) )
1162   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
1163   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1164   PORT_DIPNAME(     0x00040000, 0x00040000, DEF_STR( Unknown ) )
1165   PORT_DIPSETTING(  0x00040000, DEF_STR( Off ) )
1166   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1167   PORT_DIPNAME(     0x00080000, 0x00080000, DEF_STR( Unknown ) )
1168   PORT_DIPSETTING(  0x00080000, DEF_STR( Off ) )
1169   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1170   PORT_DIPNAME(     0x00100000, 0x00100000, DEF_STR( Unknown ) )
1171   PORT_DIPSETTING(  0x00100000, DEF_STR( Off ) )
1172   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1173   PORT_DIPNAME(     0x00200000, 0x00200000, DEF_STR( Unknown ) )
1174   PORT_DIPSETTING(  0x00200000, DEF_STR( Off ) )
1175   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1176   PORT_DIPNAME(     0x00400000, 0x00400000, DEF_STR( Unknown ) )
1177   PORT_DIPSETTING(  0x00400000, DEF_STR( Off ) )
1178   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1179   PORT_DIPNAME(     0x00800000, 0x00800000, DEF_STR( Unknown ) )
1180   PORT_DIPSETTING(  0x00800000, DEF_STR( Off ) )
1181   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1182   PORT_DIPNAME(     0x01000000, 0x01000000, DEF_STR( Unknown ) )
1183   PORT_DIPSETTING(  0x01000000, DEF_STR( Off ) )
1184   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1185   PORT_DIPNAME(     0x02000000, 0x02000000, DEF_STR( Unknown ) )
1186   PORT_DIPSETTING(  0x02000000, DEF_STR( Off ) )
1187   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1188   PORT_DIPNAME(     0x04000000, 0x04000000, DEF_STR( Unknown ) )
1189   PORT_DIPSETTING(  0x04000000, DEF_STR( Off ) )
1190   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1191   PORT_DIPNAME(     0x08000000, 0x08000000, DEF_STR( Unknown ) )
1192   PORT_DIPSETTING(  0x08000000, DEF_STR( Off ) )
1193   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1194   PORT_DIPNAME(     0x10000000, 0x10000000, DEF_STR( Unknown ) )
1195   PORT_DIPSETTING(  0x10000000, DEF_STR( Off ) )
1196   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1197   PORT_DIPNAME(     0x20000000, 0x20000000, DEF_STR( Unknown ) )
1198   PORT_DIPSETTING(  0x20000000, DEF_STR( Off ) )
1199   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1200   PORT_DIPNAME(     0x40000000, 0x40000000, DEF_STR( Unknown ) )
1201   PORT_DIPSETTING(  0x40000000, DEF_STR( Off ) )
1202   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
1203   PORT_DIPNAME(     0x80000000, 0x80000000, DEF_STR( Unknown ) )
1204   PORT_DIPSETTING(  0x80000000, DEF_STR( Off ) )
1205   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
6881206INPUT_PORTS_END
6891207
6901208
1209
6911210/* sprites are contained in 256x256 "tiles" */
6921211static GFXLAYOUT_RAW( spritelayout, 256, 256, 256*8, 256*256*8 )
6931212static GFXLAYOUT_RAW( bglayout, 16, 16, 16*8, 16*16*8 )
r243669r243670
6991218   GFXDECODE_ENTRY( "gfx4", 0, bglayout,     0x1000, 0x10 ) /* Bg scr1 */
7001219   GFXDECODE_ENTRY( "gfx5", 0, txlayout,     0x6000, 0x10 ) /* Tx scr1 */
7011220
702   GFXDECODE_ENTRY( "gfx3", 0, bglayout,     0x5000, 0x10 ) /* Roz scr2 */
703   GFXDECODE_ENTRY( "gfx6", 0, bglayout,     0x1000, 0x10 ) /* Bg scr2 */
704   GFXDECODE_ENTRY( "gfx7", 0, txlayout,     0x6000, 0x10 ) /* Tx scr2 */
1221   GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0x8000+0x0000, 0x10 )
1222   GFXDECODE_ENTRY( "gfx3", 0, bglayout,     0x8000+0x5000, 0x10 ) /* Roz scr2 */
1223   GFXDECODE_ENTRY( "gfx6", 0, bglayout,     0x8000+0x1000, 0x10 ) /* Bg scr2 */
1224   GFXDECODE_ENTRY( "gfx7", 0, txlayout,     0x8000+0x6000, 0x10 ) /* Tx scr2 */
1225
7051226GFXDECODE_END
7061227
707CUSTOM_INPUT_MEMBER(bnstars_state::mahjong_ctrl_r)
1228READ32_MEMBER(bnstars_state::bnstars1_r)
7081229{
709   required_ioport_array<4> &keys = (param == 0) ? m_p1_keys : m_p2_keys;
710   
7111230   switch (m_bnstars1_mahjong_select & 0x2080)
7121231   {
7131232      default:
7141233         printf("unk bnstars1_r %08x\n",m_bnstars1_mahjong_select);
715         return 0xff;
1234         return 0xffffffff;
7161235
7171236      case 0x0000:
718         return keys[0]->read();
1237         return ioport("IN0")->read();
7191238
7201239      case 0x0080:
721         return keys[1]->read();
1240         return ioport("IN1")->read();
7221241
7231242      case 0x2000:
724         return keys[2]->read();
1243         return ioport("IN2")->read();
7251244
7261245      case 0x2080:
727         return keys[3]->read();
1246         return ioport("IN3")->read();
1247
7281248   }
7291249}
7301250
r243669r243670
7401260
7411261   AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w)
7421262
743   AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("P1")
744   AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ_PORT("P2")
745   AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW")
1263   AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ(bnstars1_r )
1264   AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ_PORT("IN4")
1265   AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("IN5")
7461266
7471267   AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP
7481268   AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w)
r243669r243670
7661286   /* wrote together */
7671287   AM_RANGE(0xfd040000, 0xfd047fff) AM_RAM // priority ram
7681288   AM_RANGE(0xfd080000, 0xfd087fff) AM_RAM
769   AM_RANGE(0xfd200000, 0xfd237fff) AM_DEVREADWRITE16("palette2", palette_device, read, write, 0x0000ffff) AM_SHARE("palette2")
770   AM_RANGE(0xfd400000, 0xfd437fff) AM_DEVREADWRITE16("palette", palette_device, read, write, 0x0000ffff) AM_SHARE("palette")
1289   AM_RANGE(0xfd200000, 0xfd237fff) AM_RAM_WRITE(ms32_pal1_ram_w) AM_SHARE("pal_ram.1")
1290   AM_RANGE(0xfd400000, 0xfd437fff) AM_RAM_WRITE(ms32_pal0_ram_w) AM_SHARE("pal_ram.0")
7711291   AM_RANGE(0xfe000000, 0xfe01ffff) AM_RAM_WRITE(ms32_roz1_ram_w) AM_SHARE("roz1_ram")
7721292   AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM_WRITE(ms32_roz0_ram_w) AM_SHARE("roz0_ram")
7731293   AM_RANGE(0xfe800000, 0xfe83ffff) AM_RAM AM_SHARE("spram")
r243669r243670
7771297   AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE(ms32_bg0_ram_w) AM_SHARE("bg0_ram")
7781298
7791299   AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM
780   AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
1300   AM_RANGE(0xffe00000, 0xffffffff) AM_ROMBANK("bank1")
7811301ADDRESS_MAP_END
7821302
7831303static ADDRESS_MAP_START( bnstars_sound_map, AS_PROGRAM, 8, bnstars_state )
r243669r243670
8151335
8161336   MCFG_QUANTUM_TIME(attotime::from_hz(60000))
8171337
1338
8181339   MCFG_GFXDECODE_ADD("gfxdecode", "palette", bnstars)
1340   MCFG_PALETTE_ADD("palette", 0x8000*2)
8191341
820   MCFG_PALETTE_ADD("palette", 0x8000)
821   MCFG_PALETTE_FORMAT(XBRG)
822   MCFG_PALETTE_MEMBITS(16)
823
824   MCFG_PALETTE_ADD("palette2", 0x8000)
825   MCFG_PALETTE_FORMAT(XBRG)
826   MCFG_PALETTE_MEMBITS(16)
827
8281342   MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
8291343
8301344   MCFG_SCREEN_ADD("lscreen", RASTER)
r243669r243670
8411355   MCFG_SCREEN_SIZE(40*8, 32*8)
8421356   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
8431357   MCFG_SCREEN_UPDATE_DRIVER(bnstars_state, screen_update_bnstars_right)
844   MCFG_SCREEN_PALETTE("palette2")
1358   MCFG_SCREEN_PALETTE("palette")
8451359
8461360
8471361   /* sound hardware */
r243669r243670
9011415   ROM_LOAD( "vsjanshi5.6", 0x000000, 0x080000, CRC(fdbbac21) SHA1(c77d852e53126cc8ebfe1e79d1134e42b54d1aab) )
9021416
9031417   /* Sound Program (one, driving both screen sound) */
904   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1418   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
9051419   ROM_LOAD( "sb93145.5",  0x000000, 0x040000, CRC(0424e899) SHA1(fbcdebfa3d5f52b10cf30f7e416f5f53994e4d55) )
1420   ROM_RELOAD(              0x010000, 0x40000 )
9061421
9071422   /* Samples #1 (Screen 1?) */
9081423   ROM_REGION( 0x400000, "ymf1", 0 ) /* samples - 8-bit signed PCM */
r243669r243670
9241439   decrypt_ms32_tx(machine(), 0x00020,0x7e, "gfx7");
9251440   decrypt_ms32_bg(machine(), 0x00001,0x9b, "gfx6");
9261441
1442   membank("bank1")->set_base(memregion("maincpu")->base());
9271443   configure_banks();
9281444}
9291445
trunk/src/mame/drivers/ms32.c
r243669r243670
353353   AM_RANGE(0xc2c08000, 0xc2c0ffff) AM_READWRITE16(ms32_bgram_r16,  ms32_bgram_w16,  0x0000ffff) AM_MIRROR(0x3c1f0000) AM_SHARE("bgram") /* bgram is 16-bit wide, 0x4000 in size */
354354/*  AM_RANGE(0xc2c10000, 0xc2dfffff) // mirrors of txram / bg, handled above */
355355   AM_RANGE(0xc2e00000, 0xc2e1ffff) AM_RAM AM_SHARE("mainram")                                AM_MIRROR(0x3c0e0000) /* mainram is 32-bit wide, 0x20000 in size */
356   AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROM AM_REGION("maincpu", 0)                            AM_MIRROR(0x3c000000) // ROM is 32-bit wide, 0x200000 in size */
356   AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROMBANK("bank1")                                                AM_MIRROR(0x3c000000) // ROM is 32-bit wide, 0x200000 in size */
357357
358358   /* todo: clean up the mapping of these */
359359   AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP /* sound? */
r243669r243670
13751375
13761376void ms32_state::machine_reset()
13771377{
1378   membank("bank1")->set_base(memregion("maincpu")->base());
13781379   membank("bank4")->set_entry(0);
13791380   membank("bank5")->set_entry(1);
13801381   irq_init();
r243669r243670
14591460   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
14601461   ROM_LOAD( "bbbx32-2.bin",0x000000, 0x080000, CRC(3ffdae75) SHA1(2b837d28f7ecdd49e8525bd5c249e83021d5fe9f) )
14611462
1462   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1463   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
14631464   ROM_LOAD( "bbbx21.bin",  0x000000, 0x040000, CRC(5f3ea01f) SHA1(761f6a5852312d2b12de009f3cf0476f5b2e906c) )
1465   ROM_RELOAD(              0x010000, 0x40000 )
14641466
14651467   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
14661468   ROM_LOAD( "bbbx22.bin",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243669r243670
14961498   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
14971499   ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) )
14981500
1499   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1501   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
15001502   ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) )
1503   ROM_RELOAD(              0x010000, 0x40000 )
15011504
15021505   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
15031506   ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) )
r243669r243670
15331536   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
15341537   ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) )
15351538
1536   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1539   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
15371540   ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) )
1541   ROM_RELOAD(              0x010000, 0x40000 )
15381542
15391543   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
15401544   ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) )
r243669r243670
15721576   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
15731577   ROM_LOAD( "93166-30.41", 0x000000, 0x080000, CRC(980ab89c) SHA1(8468fc13a5988e25750e8d99ff464f46e86ab412) )
15741578
1575   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1579   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
15761580   ROM_LOAD( "93166-21.30", 0x000000, 0x040000, CRC(9300be4c) SHA1(a8e9c1704abf26545aeb9a5d28fd0cafd38f2d84) )
1581   ROM_RELOAD(              0x010000, 0x40000 )
15771582
15781583   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
15791584   ROM_LOAD( "92042-01.33", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243669r243670
16261631   ROM_LOAD( "f1sb4b.bin", 0x400000, 0x200000, CRC(077180c5) SHA1(ab16739da709ecdbbb1264beba349ef6ecf3f8b1) )
16271632   ROM_LOAD( "f1sb5b.bin", 0x600000, 0x200000, CRC(efabc47d) SHA1(195afde8a1f45da4fc04c3080a3cf5fdfff7be5e) )
16281633
1629   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1634   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
16301635   ROM_LOAD( "f1sb21.bin", 0x000000, 0x040000, CRC(e131e1c7) SHA1(33f95a074930c49548069518d8c6dcde7fa25627) )
1636   ROM_RELOAD(              0x010000, 0x40000 )
16311637
16321638   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
16331639   ROM_LOAD( "f1sb24.bin", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243669r243670
16621668   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
16631669   ROM_LOAD( "94019_2.030",0x000000, 0x080000, CRC(f9543fcf) SHA1(8466c7893bc6c43e2a80b8f91a776fd0a345ea6c) )
16641670
1665   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1671   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
16661672   ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) )
1673   ROM_RELOAD(              0x010000, 0x40000 )
16671674
16681675   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
16691676   ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common rom?
r243669r243670
16981705   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
16991706   ROM_LOAD( "94019.030",0x000000, 0x080000, CRC(026b5379) SHA1(b9237477f1bf8ae83174e8231492fe667e6d6a13) )
17001707
1701   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1708   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
17021709   ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) )
1710   ROM_RELOAD(              0x010000, 0x40000 )
17031711
17041712   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
17051713   ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common rom?
r243669r243670
17371745   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
17381746   ROM_LOAD( "mr94041.30", 0x000000, 0x080000, CRC(c0f27b7f) SHA1(874fe80aa4b46520f844ef6efa61f28eabccbc4f) )
17391747
1740   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1748   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
17411749   ROM_LOAD( "mr94041.21", 0x000000, 0x040000, CRC(38dcb837) SHA1(29fdde54e52dec4ee39a6f2db8e0d67774320d15) )
1750   ROM_RELOAD(              0x010000, 0x40000 )
17421751
17431752   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
17441753   ROM_LOAD( "mr94041.13", 0x000000, 0x200000, CRC(fba84caf) SHA1(318270dbf825a8e0f315992c49a2dc34dd1df7c1) )
r243669r243670
17721781   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
17731782   ROM_LOAD( "mb93138a.32", 0x000000, 0x080000, CRC(f563a144) SHA1(14d86e4992329811857e1faf282cd9ec530a364c) )
17741783
1775   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1784   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
17761785   ROM_LOAD( "mb93138a.21", 0x000000, 0x040000, CRC(8e8048b0) SHA1(93285a0570ed829b36f4e8c57d133a7dd14f123d) )
1786   ROM_RELOAD(              0x010000, 0x40000 )
17771787
17781788   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
17791789   ROM_LOAD( "mr92042.01",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243669r243670
18761886   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
18771887   ROM_LOAD( "mb93138.32", 0x000000, 0x080000, CRC(df5d00b4) SHA1(2bbbcd546d5b5170d81bf33b37b46b70b417c9c7) )
18781888
1879   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1889   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
18801890   ROM_LOAD( "mb93138.21", 0x000000, 0x040000, CRC(008bc217) SHA1(eec66a86f285ccbc47eba17a4bb83cc1f8a5f425) )
1891   ROM_RELOAD(              0x010000, 0x40000 )
18811892
18821893   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
18831894   ROM_LOAD( "mr92042.01",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243669r243670
19141925   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
19151926   ROM_LOAD( "mr95025.30",  0x000000, 0x080000, CRC(aee6e0c2) SHA1(dee985f7a9773ba7a4d31a3833a7775d778bbe5a) )
19161927
1917   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1928   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
19181929   ROM_LOAD( "mr95025.21",  0x000000, 0x040000, CRC(a6c70c7f) SHA1(fe2108f3e8d46ed53d8c5c98e8d0fdb19b77075d) )
1930   ROM_RELOAD(              0x010000, 0x40000 )
19191931
19201932   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
19211933   ROM_LOAD( "mr95025.12",  0x000000, 0x200000, CRC(1dd4f766) SHA1(455befd3a216f2197cd2e7e4899d4f1af7d20bf7) )
r243669r243670
19511963   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
19521964   ROM_LOAD( "93166.30",  0x000000, 0x080000, CRC(1807c1ea) SHA1(94696b8319c4982cb5d33423f56e2348f210cdb5) )
19531965
1954   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1966   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
19551967   ROM_LOAD( "93166.21",  0x000000, 0x040000, CRC(01a03687) SHA1(2340c4ed19f434e8c23709edfc93259313aefaf9))
1968   ROM_RELOAD(              0x010000, 0x40000 )
19561969
19571970   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
19581971   ROM_LOAD( "95008-11.22",  0x000000, 0x200000, CRC(23b9af76) SHA1(98b4087c142500dc759bda94d71c77634452a7ad))
r243669r243670
19902003   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
19912004   ROM_LOAD( "p47-30.bin",  0x000000, 0x080000, CRC(7ba90fad) SHA1(c0a3d4458816f00b8f5eb4b6d4531d1abeaccbe5) )
19922005
1993   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
2006   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
19942007   ROM_LOAD( "p47-21.bin",  0x000000, 0x040000, CRC(f2d43927) SHA1(69ac20f339a515d58cafbcd6f7d7982ca5cda681) )
2008   ROM_RELOAD(              0x010000, 0x40000 )
19952009
19962010   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
19972011   ROM_LOAD( "p47-22.bin",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) )
r243669r243670
20212035   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
20222036   ROM_LOAD( "mr95024.30", 0x000000, 0x080000, CRC(cea7002d) SHA1(5462edaeb9339790b95ed15a4bfaab8fae655b12) )
20232037
2024   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
2038   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
20252039   ROM_LOAD( "mr95024.21", 0x000000, 0x040000, CRC(5c565e3b) SHA1(d349a8ca50d03c06d8978e6d3632b624f019dee4) )
2040   ROM_RELOAD(              0x010000, 0x40000 )
20262041
20272042   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
20282043   ROM_LOAD( "mr95024.22", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243669r243670
20522067   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
20532068   ROM_LOAD( "tp2m3230.30", 0x000000, 0x080000, CRC(6845e476) SHA1(61c33714db2e2b5ccdcef0e0d3efdc391fe6aba2) )
20542069
2055   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
2070   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
20562071   ROM_LOAD( "tp2m3221.21", 0x000000, 0x040000, CRC(2bcc4176) SHA1(74740fa13ab81b9819b4cfbe9d34a0749ba23b8f) )
2072   ROM_RELOAD(              0x010000, 0x40000 )
20572073
20582074   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
20592075   ROM_LOAD( "tp2m3205.22", 0x000000, 0x200000, CRC(74aa5c31) SHA1(7e3f86198fb678244fab76bee9c72bbdfc818118) )
r243669r243670
20902106   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
20912107   ROM_LOAD( "vsjanshi30.41",  0x000000, 0x080000, CRC(fdbbac21) SHA1(c77d852e53126cc8ebfe1e79d1134e42b54d1aab) )
20922108
2093   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
2109   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
20942110   ROM_LOAD( "vsjanshi21.30",  0x000000, 0x040000, CRC(d622bce1) SHA1(059fcc3c7216d3ea4f3a4226a06219375ce8c2bf) )
2111   ROM_RELOAD(              0x010000, 0x40000 )
20952112
20962113   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
20972114   ROM_LOAD( "mr96004-10.22",  0x000000, 0x400000, CRC(83f4303a) SHA1(90ee010591afe1d35744925ef0e8d9a7e2ef3378) )
r243669r243670
21622179   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
21632180   ROM_LOAD( "32", 0x000000, 0x080000, CRC(becc25c2) SHA1(4ae7665cd45ebd9586068e99327145194ba216fc) )
21642181
2165   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
2182   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
21662183   ROM_LOAD( "ws-21", 0x000000, 0x040000, CRC(bdeff5d6) SHA1(920a6fc983d53f09510887e4e81ee89ccd5079e6) )
2184   ROM_RELOAD(              0x010000, 0x40000 )
21672185
21682186   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
21692187   ROM_LOAD( "mr92042-01.22", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) )
r243669r243670
21772195void ms32_state::configure_banks()
21782196{
21792197   save_item(NAME(m_to_main));
2180   membank("bank4")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000);
2181   membank("bank5")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000);
2198   membank("bank4")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x14000, 0x4000);
2199   membank("bank5")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x14000, 0x4000);
21822200}
21832201
21842202DRIVER_INIT_MEMBER(ms32_state,ms32_common)
trunk/src/mame/drivers/raiden2.c
r243669r243670
1// license:? (pending decision)
1// license:?
22// copyright-holders:Olivier Galibert, Angelo Salese, David Haywood, Tomasz Slanina
33/********************************************************************************************************
44
55    Seibu Protected 1993-94 era hardware, V30 based (sequel to the 68k based hardware)
6    TODO: figure out the rest of the protection
7    TODO: Zero Team presumably needs additive blending on the character screen
68
7   TODO:
8   * zeroteam - sort-DMA doesn't seem to work too well, sprite-sprite priorities are broken as per now
9    TODO:
10    - Zero Team currently crashes due of an unknown check with collision detection.
11    Additionally:
12    8E377: C7 06 00 05 80 A9         mov     word ptr [500h],0A980h
13    8E37D: C7 06 00 05 00 B9         mov     word ptr [500h],0B900h
14    8E383: F7 06 88 05 FF FF         test    word ptr [588h],0FFFFh ;checks unknown collision detection port with 0xffff?
15    8E389: 75 0A                     bne     8E395h
916
10   * xsedae - it does an "8-liner"-style scroll during attract, doesn't work too well.
11
12   * sprite chip is the same as seibuspi.c and feversoc.c, needs device-ification and merging.
13
14   * sprite chip also uses first entry for "something" that isn't sprite, some of them looks clipping
15     regions (150 - ff in zeroteam, 150 - 0 and 150 - 80 in raiden2). Latter probably do double buffering
16     on odd/even frames, by updating only top or bottom part of screen.
17
1817===========================================================================================================
1918
2019raiden 2 board test note 17/04/08 (based on test by dox)
r243669r243670
2524  value of 0x80 puts 0x00000-0x1ffff at 0x20000 - 0x3ffff
2625  value of 0x00 puts 0x20000-0x3ffff at 0x20000 - 0x3ffff
2726
27===
2828
2929===========================================================================================================
3030
r243669r243670
130130
131131 The games in legionna.c use (almost?) the same protection chips.
132132
133Current Problem(s) - in order of priority
134
135 High Priority
136
137 Protection
138 - zeroteam has bogus collision detection;
139 - raiden2 has a weird movement after that the ship completes animation from the aircraft. Probably 42c2 should be floating point rounded ...
140 - (and probably more)
141
142 Unemulated 0-0x3ffff ROM banking for raidendx, but it's unknown if/where it's used (hopefully NOT on getting perfect on Alpha course).
143
144 zeroteam - sort-DMA doesn't seem to work too well, sprite-sprite priorities are broken as per now
145
146 xsedae - do an "8-liner"-style scroll during attract, doesn't work too well.
147
148 sprite chip is the same as seibuspi.c and feversoc.c, needs device-ification and merging.
149
150 sprite chip also uses first entry for "something" that isn't sprite, some of them looks clipping
151 regions (150 - ff in zeroteam, 150 - 0 and 150 - 80 in raiden2). Latter probably do double buffering
152 on odd/even frames, by updating only top or bottom part of screen.
153
154 Low Priority
155
133156********************************************************************************************************/
134157
135158#include "emu.h"
r243669r243670
13441367
13451368   /* video hardware */
13461369   MCFG_SCREEN_ADD("screen", RASTER)
1347   MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
1370   MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
1371#if 1
1372   MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */
1373   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(500) /* not accurate */)
1374   MCFG_SCREEN_SIZE(44*8, 34*8)
1375   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 30*8-1)
1376#else // this should be correct but currently causes sprite flickering, visible from the very start of the intro
13481377   MCFG_SCREEN_RAW_PARAMS(XTAL_32MHz/4,512,0,40*8,282,0,30*8) /* hand-tuned to match ~55.47 */
1378#endif
13491379   MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2)
13501380
13511381   MCFG_GFXDECODE_ADD("gfxdecode", "palette", raiden2)
trunk/src/mame/drivers/skyarmy.c
r243669r243670
3434public:
3535   skyarmy_state(const machine_config &mconfig, device_type type, const char *tag)
3636      : driver_device(mconfig, type, tag),
37      m_maincpu(*this, "maincpu"),
38      m_gfxdecode(*this, "gfxdecode"),
39      m_palette(*this, "palette"),
4037      m_videoram(*this, "videoram"),
4138      m_colorram(*this, "colorram"),
4239      m_spriteram(*this, "spriteram"),
43      m_scrollram(*this, "scrollram") { }
40      m_scrollram(*this, "scrollram"),
41      m_maincpu(*this, "maincpu"),
42      m_gfxdecode(*this, "gfxdecode"),
43      m_palette(*this, "palette")  { }
4444
45   required_device<cpu_device> m_maincpu;
46   required_device<gfxdecode_device> m_gfxdecode;
47   required_device<palette_device> m_palette;
48
4945   required_shared_ptr<UINT8> m_videoram;
5046   required_shared_ptr<UINT8> m_colorram;
5147   required_shared_ptr<UINT8> m_spriteram;
5248   required_shared_ptr<UINT8> m_scrollram;
53   
5449   tilemap_t* m_tilemap;
5550   int m_nmi;
56   
57   DECLARE_WRITE8_MEMBER(flip_screen_x_w);
58   DECLARE_WRITE8_MEMBER(flip_screen_y_w);
59   DECLARE_WRITE8_MEMBER(videoram_w);
60   DECLARE_WRITE8_MEMBER(colorram_w);
51   DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_x_w);
52   DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_y_w);
53   DECLARE_WRITE8_MEMBER(skyarmy_videoram_w);
54   DECLARE_WRITE8_MEMBER(skyarmy_colorram_w);
6155   DECLARE_WRITE8_MEMBER(nmi_enable_w);
62   
63   TILE_GET_INFO_MEMBER(get_tile_info);
64   
65   virtual void machine_start();
56   TILE_GET_INFO_MEMBER(get_skyarmy_tile_info);
6657   virtual void video_start();
6758   DECLARE_PALETTE_INIT(skyarmy);
68   
69   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
70   
71   INTERRUPT_GEN_MEMBER(nmi_source);
59   UINT32 screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
60   INTERRUPT_GEN_MEMBER(skyarmy_nmi_source);
61   required_device<cpu_device> m_maincpu;
62   required_device<gfxdecode_device> m_gfxdecode;
63   required_device<palette_device> m_palette;
7264};
7365
74void skyarmy_state::machine_start()
66WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_x_w)
7567{
76   save_item(NAME(m_nmi));
77}
78
79WRITE8_MEMBER(skyarmy_state::flip_screen_x_w)
80{
8168   flip_screen_x_set(data & 0x01);
8269}
8370
84WRITE8_MEMBER(skyarmy_state::flip_screen_y_w)
71WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_y_w)
8572{
8673   flip_screen_y_set(data & 0x01);
8774}
8875
89TILE_GET_INFO_MEMBER(skyarmy_state::get_tile_info)
76TILE_GET_INFO_MEMBER(skyarmy_state::get_skyarmy_tile_info)
9077{
9178   int code = m_videoram[tile_index];
9279   int attr = BITSWAP8(m_colorram[tile_index], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
r243669r243670
9481   SET_TILE_INFO_MEMBER(0, code, attr, 0);
9582}
9683
97WRITE8_MEMBER(skyarmy_state::videoram_w)
84WRITE8_MEMBER(skyarmy_state::skyarmy_videoram_w)
9885{
9986   m_videoram[offset] = data;
10087   m_tilemap->mark_tile_dirty(offset);
10188}
10289
103WRITE8_MEMBER(skyarmy_state::colorram_w)
90WRITE8_MEMBER(skyarmy_state::skyarmy_colorram_w)
10491{
10592   m_colorram[offset] = data;
10693   m_tilemap->mark_tile_dirty(offset);
r243669r243670
137124
138125void skyarmy_state::video_start()
139126{
140   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skyarmy_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
127   m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skyarmy_state::get_skyarmy_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
141128   m_tilemap->set_scroll_cols(32);
142129}
143130
144131
145UINT32 skyarmy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
132UINT32 skyarmy_state::screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
146133{
134   UINT8 *spriteram = m_spriteram;
147135   int sx, sy, flipx, flipy, offs,pal;
148136   int i;
149137
r243669r243670
154142
155143   for (offs = 0 ; offs < 0x40; offs+=4)
156144   {
157      pal = BITSWAP8(m_spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
145      pal = BITSWAP8(spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
158146
159      sx = m_spriteram[offs+3];
160      sy = 240-(m_spriteram[offs]+1);
161      flipy = (m_spriteram[offs+1]&0x80)>>7;
162      flipx = (m_spriteram[offs+1]&0x40)>>6;
147      sx = spriteram[offs+3];
148      sy = 240-(spriteram[offs]+1);
149      flipy = (spriteram[offs+1]&0x80)>>7;
150      flipx = (spriteram[offs+1]&0x40)>>6;
163151
164152      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
165         m_spriteram[offs+1]&0x3f,
153         spriteram[offs+1]&0x3f,
166154         pal,
167155         flipx,flipy,
168156         sx,sy,0);
r243669r243670
171159   return 0;
172160}
173161
174INTERRUPT_GEN_MEMBER(skyarmy_state::nmi_source)
162INTERRUPT_GEN_MEMBER(skyarmy_state::skyarmy_nmi_source)
175163{
176164   if(m_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
177165}
r243669r243670
186174static ADDRESS_MAP_START( skyarmy_map, AS_PROGRAM, 8, skyarmy_state )
187175   AM_RANGE(0x0000, 0x7fff) AM_ROM
188176   AM_RANGE(0x8000, 0x87ff) AM_RAM
189   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* Video RAM */
190   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* Color RAM */
177   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skyarmy_videoram_w) AM_SHARE("videoram") /* Video RAM */
178   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(skyarmy_colorram_w) AM_SHARE("colorram") /* Color RAM */
191179   AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram") /* Sprites */
192180   AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scrollram")  /* Scroll RAM */
193181   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW")
r243669r243670
195183   AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2")
196184   AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM")
197185   AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_w) // ???
198   AM_RANGE(0xa005, 0xa005) AM_WRITE(flip_screen_x_w)
199   AM_RANGE(0xa006, 0xa006) AM_WRITE(flip_screen_y_w)
186   AM_RANGE(0xa005, 0xa005) AM_WRITE(skyarmy_flip_screen_x_w)
187   AM_RANGE(0xa006, 0xa006) AM_WRITE(skyarmy_flip_screen_y_w)
200188   AM_RANGE(0xa007, 0xa007) AM_WRITENOP
201189ADDRESS_MAP_END
202190
r243669r243670
298286   MCFG_CPU_PROGRAM_MAP(skyarmy_map)
299287   MCFG_CPU_IO_MAP(skyarmy_io_map)
300288   MCFG_CPU_VBLANK_INT_DRIVER("screen", skyarmy_state,  irq0_line_hold)
301   MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, nmi_source, 650)    /* Hz */
289   MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, skyarmy_nmi_source, 650)    /* Hz */
302290
303291   /* video hardware */
304292   MCFG_SCREEN_ADD("screen", RASTER)
r243669r243670
306294   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
307295   MCFG_SCREEN_SIZE(32*8,32*8)
308296   MCFG_SCREEN_VISIBLE_AREA(0*8,32*8-1,1*8,31*8-1)
309   MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update)
297   MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update_skyarmy)
310298   MCFG_SCREEN_PALETTE("palette")
311299
312300   MCFG_GFXDECODE_ADD("gfxdecode", "palette", skyarmy)
r243669r243670
339327   ROM_LOAD( "a6.bin",  0x0000, 0x0020, CRC(c721220b) SHA1(61b3320fb616c0600d56840cb6438616c7e0c6eb) )
340328ROM_END
341329
342GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
330GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL )
trunk/src/mame/drivers/skydiver.c
r243669r243670
1111        * There is a problem with coin input not starting when in demo mode.
1212        * The NMI interrupt needs to be more accurate, to do 32V, adjusted
1313          to VBLANK.  This also affects sound.
14        * The current value of 5 interrupts per frame, works pretty good,
14        * The cuurent value of 5 interrupts per frame, works pretty good,
1515          but is not 100% accurate timing wise.
1616
1717****************************************************************************
r243669r243670
139139 *
140140 *************************************/
141141
142WRITE8_MEMBER(skydiver_state::nmion_w)
142WRITE8_MEMBER(skydiver_state::skydiver_nmion_w)
143143{
144144   m_nmion = offset;
145145}
146146
147147
148INTERRUPT_GEN_MEMBER(skydiver_state::interrupt)
148INTERRUPT_GEN_MEMBER(skydiver_state::skydiver_interrupt)
149149{
150150   /* Convert range data to divide value and write to sound */
151151   address_space &space = m_maincpu->space(AS_PROGRAM);
r243669r243670
167167 *
168168 *************************************/
169169
170WRITE8_MEMBER(skydiver_state::sound_enable_w)
170WRITE8_MEMBER(skydiver_state::skydiver_sound_enable_w)
171171{
172172   m_discrete->write(space, SKYDIVER_SOUND_EN, offset);
173173}
174174
175WRITE8_MEMBER(skydiver_state::whistle_w)
175WRITE8_MEMBER(skydiver_state::skydiver_whistle_w)
176176{
177177   m_discrete->write(space, NODE_RELATIVE(SKYDIVER_WHISTLE1_EN, (offset >> 1)), offset & 0x01);
178178}
r243669r243670
187187
188188static ADDRESS_MAP_START( skydiver_map, AS_PROGRAM, 8, skydiver_state )
189189   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
190   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(wram_r, wram_w)
190   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(skydiver_wram_r, skydiver_wram_w)
191191   AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x4000) AM_RAM       /* RAM B1 */
192   AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")       /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */
193   AM_RANGE(0x0800, 0x0801) AM_MIRROR(0x47f0) AM_WRITE(lamp_s_w)
194   AM_RANGE(0x0802, 0x0803) AM_MIRROR(0x47f0) AM_WRITE(lamp_k_w)
195   AM_RANGE(0x0804, 0x0805) AM_MIRROR(0x47f0) AM_WRITE(start_lamp_1_w)
196   AM_RANGE(0x0806, 0x0807) AM_MIRROR(0x47f0) AM_WRITE(start_lamp_2_w)
197   AM_RANGE(0x0808, 0x0809) AM_MIRROR(0x47f0) AM_WRITE(lamp_y_w)
198   AM_RANGE(0x080a, 0x080b) AM_MIRROR(0x47f0) AM_WRITE(lamp_d_w)
199   AM_RANGE(0x080c, 0x080d) AM_MIRROR(0x47f0) AM_WRITE(sound_enable_w)
200   // AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x47f0) AM_WRITE(jump1_lamps_w)
201   AM_RANGE(0x1002, 0x1003) AM_MIRROR(0x47f0) AM_WRITE(coin_lockout_w)
202   // AM_RANGE(0x1006, 0x1007) AM_MIRROR(0x47f0) AM_WRITE(jump2_lamps_w)
203   AM_RANGE(0x1008, 0x100b) AM_MIRROR(0x47f0) AM_WRITE(whistle_w)
204   AM_RANGE(0x100c, 0x100d) AM_MIRROR(0x47f0) AM_WRITE(nmion_w)
205   AM_RANGE(0x100e, 0x100f) AM_MIRROR(0x47f0) AM_WRITE(width_w)
192   AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(skydiver_videoram_w) AM_SHARE("videoram")       /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */
193   AM_RANGE(0x0800, 0x0801) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_s_w)
194   AM_RANGE(0x0802, 0x0803) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_k_w)
195   AM_RANGE(0x0804, 0x0805) AM_MIRROR(0x47f0) AM_WRITE(skydiver_start_lamp_1_w)
196   AM_RANGE(0x0806, 0x0807) AM_MIRROR(0x47f0) AM_WRITE(skydiver_start_lamp_2_w)
197   AM_RANGE(0x0808, 0x0809) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_y_w)
198   AM_RANGE(0x080a, 0x080b) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_d_w)
199   AM_RANGE(0x080c, 0x080d) AM_MIRROR(0x47f0) AM_WRITE(skydiver_sound_enable_w)
200   // AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x47f0) AM_WRITE(skydiver_jump1_lamps_w)
201   AM_RANGE(0x1002, 0x1003) AM_MIRROR(0x47f0) AM_WRITE(skydiver_coin_lockout_w)
202   // AM_RANGE(0x1006, 0x1007) AM_MIRROR(0x47f0) AM_WRITE(skydiver_jump2_lamps_w)
203   AM_RANGE(0x1008, 0x100b) AM_MIRROR(0x47f0) AM_WRITE(skydiver_whistle_w)
204   AM_RANGE(0x100c, 0x100d) AM_MIRROR(0x47f0) AM_WRITE(skydiver_nmion_w)
205   AM_RANGE(0x100e, 0x100f) AM_MIRROR(0x47f0) AM_WRITE(skydiver_width_w)
206206   AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x47e0) AM_READ_PORT("IN0")
207207   AM_RANGE(0x1801, 0x1801) AM_MIRROR(0x47e0) AM_READ_PORT("IN1")
208208   AM_RANGE(0x1802, 0x1802) AM_MIRROR(0x47e0) AM_READ_PORT("IN2")
r243669r243670
217217   AM_RANGE(0x180b, 0x180b) AM_MIRROR(0x47e4) AM_READ_PORT("IN11")
218218   AM_RANGE(0x1810, 0x1810) AM_MIRROR(0x47e4) AM_READ_PORT("IN12")
219219   AM_RANGE(0x1811, 0x1811) AM_MIRROR(0x47e4) AM_READ_PORT("IN13")
220   AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_READ(watchdog_reset_r) AM_WRITE(_2000_201F_w)
220   AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_READ(watchdog_reset_r) AM_WRITE(skydiver_2000_201F_w)
221221   AM_RANGE(0x2800, 0x2fff) AM_MIRROR(0x4000) AM_ROM
222222   AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x4000) AM_ROM
223223   AM_RANGE(0x3800, 0x3fff) AM_ROM
r243669r243670
375375   /* basic machine hardware */
376376   MCFG_CPU_ADD("maincpu", M6800,MASTER_CLOCK/16)     /* ???? */
377377   MCFG_CPU_PROGRAM_MAP(skydiver_map)
378   MCFG_CPU_PERIODIC_INT_DRIVER(skydiver_state, interrupt,  5*60)
378   MCFG_CPU_PERIODIC_INT_DRIVER(skydiver_state, skydiver_interrupt,  5*60)
379379   MCFG_WATCHDOG_VBLANK_INIT(8)    // 128V clocks the same as VBLANK
380380
381381
r243669r243670
385385   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
386386   MCFG_SCREEN_SIZE(32*8, 32*8)
387387   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
388   MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update)
388   MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update_skydiver)
389389   MCFG_SCREEN_PALETTE("palette")
390390
391391   MCFG_GFXDECODE_ADD("gfxdecode", "palette", skydiver)
r243669r243670
432432 *
433433 *************************************/
434434
435GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", GAME_SUPPORTS_SAVE, layout_skydiver )
435GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", 0, layout_skydiver )
trunk/src/mame/drivers/st_mp100.c
r243669r243670
858858GAME(1978,  lectrono,   0,      st_mp100,   mp100, driver_device, 0,   ROT0,   "Stern", "Lectronamo", GAME_MECHANICAL | GAME_NO_SOUND )
859859GAME(1978,  wildfyre,   0,      st_mp100,   mp100, driver_device, 0,   ROT0,   "Stern", "Wildfyre", GAME_MECHANICAL | GAME_NO_SOUND )
860860GAME(1978,  nugent,     0,      st_mp100,   mp100, driver_device, 0,   ROT0,   "Stern", "Nugent", GAME_MECHANICAL | GAME_NO_SOUND )
861GAME(1979,  dracula,    0,      st_mp100,   mp100, driver_device, 0,   ROT0,   "Stern", "Dracula (Pinball)", GAME_MECHANICAL | GAME_NO_SOUND )
861GAME(1979,  dracula,    0,      st_mp100,   mp100, driver_device, 0,   ROT0,   "Stern", "Dracula", GAME_MECHANICAL | GAME_NO_SOUND )
862862
863863// different inputs
864864GAME(1979,  trident,    0,      st_mp100,   mp200, driver_device, 0,   ROT0,   "Stern", "Trident", GAME_MECHANICAL | GAME_NO_SOUND )
trunk/src/mame/drivers/tecmo.c
r243669r243670
5151#include "emu.h"
5252#include "cpu/z80/z80.h"
5353#include "sound/3812intf.h"
54#include "sound/msm5205.h"
5455#include "includes/tecmo.h"
5556
5657
57WRITE8_MEMBER(tecmo_state::bankswitch_w)
58WRITE8_MEMBER(tecmo_state::tecmo_bankswitch_w)
5859{
5960   int bankaddress;
6061   UINT8 *RAM = memregion("maincpu")->base();
r243669r243670
6465   membank("bank1")->set_base(&RAM[bankaddress]);
6566}
6667
67WRITE8_MEMBER(tecmo_state::sound_command_w)
68WRITE8_MEMBER(tecmo_state::tecmo_sound_command_w)
6869{
6970   soundlatch_byte_w(space, offset, data);
7071   m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE);
7172}
7273
73WRITE8_MEMBER(tecmo_state::nmi_ack_w)
74WRITE8_MEMBER(tecmo_state::tecmo_nmi_ack_w)
7475{
7576   m_soundcpu->set_input_line(INPUT_LINE_NMI,CLEAR_LINE);
7677}
7778
78WRITE8_MEMBER(tecmo_state::adpcm_start_w)
79WRITE8_MEMBER(tecmo_state::tecmo_adpcm_start_w)
7980{
8081   m_adpcm_pos = data << 8;
8182   m_msm->reset_w(0);
8283}
8384
84WRITE8_MEMBER(tecmo_state::adpcm_end_w)
85WRITE8_MEMBER(tecmo_state::tecmo_adpcm_end_w)
8586{
8687   m_adpcm_end = (data + 1) << 8;
8788}
8889
89WRITE8_MEMBER(tecmo_state::adpcm_vol_w)
90WRITE8_MEMBER(tecmo_state::tecmo_adpcm_vol_w)
9091{
9192   m_msm->set_volume((data & 0x0f) * 100 / 15);
9293}
9394
94WRITE_LINE_MEMBER(tecmo_state::adpcm_int)
95WRITE_LINE_MEMBER(tecmo_state::tecmo_adpcm_int)
9596{
9697   if (m_adpcm_pos >= m_adpcm_end ||
9798            m_adpcm_pos >= memregion("adpcm")->bytes())
r243669r243670
111112}
112113
113114/* the 8-bit dipswitches are split across addresses */
114READ8_MEMBER(tecmo_state::dswa_l_r)
115READ8_MEMBER(tecmo_state::tecmo_dswa_l_r)
115116{
116117   UINT8 port = ioport("DSWA")->read();
117118   port &= 0x0f;
118119   return port;
119120}
120121
121READ8_MEMBER(tecmo_state::dswa_h_r)
122READ8_MEMBER(tecmo_state::tecmo_dswa_h_r)
122123{
123124   UINT8 port = ioport("DSWA")->read();
124125   port &= 0xf0;
125126   return port>>4;
126127}
127128
128READ8_MEMBER(tecmo_state::dswb_l_r)
129READ8_MEMBER(tecmo_state::tecmo_dswb_l_r)
129130{
130131   UINT8 port = ioport("DSWB")->read();
131132   port &= 0x0f;
132133   return port;
133134}
134135
135READ8_MEMBER(tecmo_state::dswb_h_r)
136READ8_MEMBER(tecmo_state::tecmo_dswb_h_r)
136137{
137138   UINT8 port = ioport("DSWB")->read();
138139   port &= 0xf0;
r243669r243670
143144static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state )
144145   AM_RANGE(0x0000, 0xbfff) AM_ROM
145146   AM_RANGE(0xc000, 0xcfff) AM_RAM
146   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
147   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
148   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
147   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
148   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
149   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
149150   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
150151   AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
151152   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
r243669r243670
155156   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
156157   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
157158   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
158   AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
159   AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
160   AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
161   AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
159   AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
160   AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
161   AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
162   AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
162163   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
163   AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
164   AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
165   AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
166   AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
167   AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
164   AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
165   AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
166   AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
167   AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
168   AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
168169   AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
169170ADDRESS_MAP_END
170171
171172static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state )
172173   AM_RANGE(0x0000, 0xbfff) AM_ROM
173174   AM_RANGE(0xc000, 0xcfff) AM_RAM
174   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
175   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
176   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
175   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
176   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
177   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
177178   AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
178179   AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
179180   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
r243669r243670
183184   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
184185   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
185186   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
186   AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
187   AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
188   AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
189   AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
187   AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
188   AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
189   AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
190   AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
190191   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
191   AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
192   AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
193   AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
194   AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
195   AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
192   AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
193   AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
194   AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
195   AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
196   AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
196197   AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
197198ADDRESS_MAP_END
198199
199200static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state )
200201   AM_RANGE(0x0000, 0xbfff) AM_ROM
201   AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
202   AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
203   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
202   AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
203   AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
204   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
204205   AM_RANGE(0xd000, 0xdfff) AM_RAM
205206   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
206207   AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
r243669r243670
211212   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
212213   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
213214   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
214   AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
215   AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
216   AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
217   AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
215   AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
216   AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
217   AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
218   AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
218219   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
219   AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
220   AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
221   AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
222   AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
223   AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
220   AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
221   AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
222   AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
223   AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
224   AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
224225   AM_RANGE(0xf809, 0xf809) AM_WRITENOP    /* ? */
225226   AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP    /* ? if mapped to watchdog like in the others, causes reset */
226227ADDRESS_MAP_END
r243669r243670
229230   AM_RANGE(0x0000, 0x3fff) AM_ROM
230231   AM_RANGE(0x4000, 0x47ff) AM_RAM
231232   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write)
232   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w)
233   AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w)
234   AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w)
235   AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_ack_w)
233   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w)
234   AM_RANGE(0xd000, 0xd000) AM_WRITE(tecmo_adpcm_end_w)
235   AM_RANGE(0xe000, 0xe000) AM_WRITE(tecmo_adpcm_vol_w)
236   AM_RANGE(0xf000, 0xf000) AM_WRITE(tecmo_nmi_ack_w)
236237ADDRESS_MAP_END
237238
238239static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state )
r243669r243670
241242   AM_RANGE(0x0000, 0x7fff) AM_ROM
242243   AM_RANGE(0x8000, 0x87ff) AM_RAM
243244   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write)
244   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w)
245   AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w)
246   AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w)
247   AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w)
245   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w)
246   AM_RANGE(0xc400, 0xc400) AM_WRITE(tecmo_adpcm_end_w)
247   AM_RANGE(0xc800, 0xc800) AM_WRITE(tecmo_adpcm_vol_w)
248   AM_RANGE(0xcc00, 0xcc00) AM_WRITE(tecmo_nmi_ack_w)
248249ADDRESS_MAP_END
249250
250251
r243669r243670
599600GFXDECODE_END
600601
601602
602void tecmo_state::machine_start()
603MACHINE_RESET_MEMBER(tecmo_state,rygar)
603604{
604   save_item(NAME(m_adpcm_pos));
605   save_item(NAME(m_adpcm_end));
606   save_item(NAME(m_adpcm_data));
607}
608
609void tecmo_state::machine_reset()
610{
611605   m_adpcm_pos = 0;
612606   m_adpcm_end = 0;
613607   m_adpcm_data = -1;
r243669r243670
629623   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)  /* frames per second, vblank duration */)
630624   MCFG_SCREEN_SIZE(32*8, 32*8)
631625   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
632   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update)
626   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
633627   MCFG_SCREEN_PALETTE("palette")
634628
635629   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo)
r243669r243670
639633
640634   MCFG_DEVICE_ADD("spritegen", TECMO_SPRITE, 0)
641635
636   MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
637
638   MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar )
639
642640   /* sound hardware */
643641   MCFG_SPEAKER_STANDARD_MONO("mono")
644642
r243669r243670
647645   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
648646
649647   MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */
650   MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, adpcm_int))    /* interrupt function */
648   MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, tecmo_adpcm_int))    /* interrupt function */
651649   MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B)      /* 8KHz               */
652650   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
653651MACHINE_CONFIG_END
r243669r243670
673671   MCFG_CPU_PROGRAM_MAP(silkworm_map)
674672MACHINE_CONFIG_END
675673
676static MACHINE_CONFIG_DERIVED( backfirt, gemini )
674#ifdef UNUSED_CODE
675static MACHINE_CONFIG_START( backfirt, tecmo_state )
677676
678   /* this pcb has no MSM5205 */
679   MCFG_DEVICE_REMOVE("msm")
677   /* basic machine hardware */
678   MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4)
679   MCFG_CPU_PROGRAM_MAP(rygar_map)
680   MCFG_CPU_VBLANK_INT_DRIVER("screen", tecmo_state,  irq0_line_hold)
681
682   MCFG_CPU_ADD("soundcpu", Z80, XTAL_8MHz/2)
683   MCFG_CPU_PROGRAM_MAP(rygar_sound_map)
684
685   /* video hardware */
686   MCFG_SCREEN_ADD("screen", RASTER)
687   MCFG_SCREEN_REFRESH_RATE(60)
688   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)  /* frames per second, vblank duration */)
689   MCFG_SCREEN_SIZE(32*8, 32*8)
690   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
691   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
692   MCFG_SCREEN_PALETTE("palette")
693
694   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo)
695   MCFG_PALETTE_ADD("palette", 1024)
696   MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
697   MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG)
698
699   MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
700
701   MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar )
702
703   /* sound hardware */
704   MCFG_SPEAKER_STANDARD_MONO("mono")
705
706   MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
707   MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
708   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
709
710   /* no MSM on this PCB */
711
680712MACHINE_CONFIG_END
713#endif
714
681715/***************************************************************************
682716
683717  Game driver(s)
r243669r243670
10311065   ROM_LOAD( "b16-s2.bin",  0x10000, 0x10000, CRC(6e4052c9) SHA1(e2e3d7221b75cb044449a25a076a93c3def1f11b) )   /* tiles #2 */
10321066   ROM_LOAD( "b15-s2.bin",  0x20000, 0x10000, CRC(2b6cc20e) SHA1(4815819288753400935836cc1b0b69f4c4b43ddc) )   /* tiles #2 */
10331067   ROM_LOAD( "b14-s3.bin",  0x30000, 0x08000, CRC(4d29637a) SHA1(28e85925138256b8ce5a1c4a5df5b219b1b6b197) )   /* tiles #2 */ // half size is correct, rom type 27256
1068
1069   ROM_REGION( 0x8000, "adpcm", ROMREGION_ERASE00 )    /* ADPCM samples */
1070//  ROM_LOAD( "silkworm.1",   0x0000, 0x8000, CRC(5b553644) SHA1(5d39d2251094c17f7b732b4861401b3516fce9b1) )
10341071ROM_END
10351072
10361073ROM_START( gemini )
r243669r243670
11011138
11021139
11031140
1104GAME( 1986, rygar,     0,        rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 1)", GAME_SUPPORTS_SAVE )
1105GAME( 1986, rygar2,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 2)", GAME_SUPPORTS_SAVE )
1106GAME( 1986, rygar3,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 3 Old Version)", GAME_SUPPORTS_SAVE )
1107GAME( 1986, rygarj,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Argus no Senshi (Japan)", GAME_SUPPORTS_SAVE )
1108GAME( 1987, gemini,    0,        gemini,   gemini, tecmo_state,   gemini,   ROT90, "Tecmo", "Gemini Wing (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */
1109GAME( 1988, silkworm,  0,        silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (World)", GAME_SUPPORTS_SAVE )   /* No regional "Warning, if you are playing ..." screen */
1110GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (Japan)", GAME_SUPPORTS_SAVE )   /* Japan regional warning screen */
1111GAME( 1988, backfirt,  0,        backfirt, backfirt, tecmo_state, backfirt, ROT0,  "Tecmo", "Back Fire (Tecmo, bootleg)", GAME_SUPPORTS_SAVE )
1141GAME( 1986, rygar,     0,        rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 1)", 0 )
1142GAME( 1986, rygar2,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 2)", 0 )
1143GAME( 1986, rygar3,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 3 Old Version)", 0 )
1144GAME( 1986, rygarj,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Argus no Senshi (Japan)", 0 )
1145GAME( 1987, gemini,    0,        gemini,   gemini, tecmo_state,   gemini,   ROT90, "Tecmo", "Gemini Wing (Japan)", 0 ) /* Japan regional warning screen */
1146GAME( 1988, silkworm,  0,        silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (World)", 0 )   /* No regional "Warning, if you are playing ..." screen */
1147GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (Japan)", 0 )   /* Japan regional warning screen */
1148GAME( 1988, backfirt,  0,        gemini,   backfirt, tecmo_state, backfirt, ROT0,  "Tecmo", "Back Fire (Tecmo, bootleg)", 0 )
trunk/src/mame/drivers/tecmo16.c
r243669r243670
3232
3333/******************************************************************************/
3434
35WRITE16_MEMBER(tecmo16_state::sound_command_w)
35WRITE16_MEMBER(tecmo16_state::tecmo16_sound_command_w)
3636{
3737   if (ACCESSING_BITS_0_7)
3838   {
r243669r243670
4646static ADDRESS_MAP_START( fstarfrc_map, AS_PROGRAM, 16, tecmo16_state )
4747   AM_RANGE(0x000000, 0x07ffff) AM_ROM
4848   AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
49   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
50   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
51   AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
52   AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
53   AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
49   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram")
50   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram")
51   AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram")
52   AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2")
53   AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
5454   AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */
5555   AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
5656   AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
57   AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
58   AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w)
57   AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
58   AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
5959   AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP   /* ??? */
6060   AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
6161   AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
62   AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
63   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
64   AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
65   AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
66   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
62   AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w)
63   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w)
64   AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w)
65   AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w)
66   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w)
6767ADDRESS_MAP_END
6868
6969static ADDRESS_MAP_START( ginkun_map, AS_PROGRAM, 16, tecmo16_state )
7070   AM_RANGE(0x000000, 0x07ffff) AM_ROM
7171   AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
72   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
73   AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
74   AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
75   AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
76   AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
72   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram")
73   AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram")
74   AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram")
75   AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2")
76   AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
7777   AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */
7878   AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
7979   AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
80   AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
81   AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w)
80   AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
81   AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
8282   AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP  /* ??? */
8383   AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP   /* ??? */
8484   AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
8585   AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
86   AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
87   AM_RANGE(0x160006, 0x160007) AM_WRITE(scroll_char_y_w)
88   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
89   AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
90   AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
91   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
86   AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w)
87   AM_RANGE(0x160006, 0x160007) AM_WRITE(tecmo16_scroll_char_y_w)
88   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w)
89   AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w)
90   AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w)
91   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w)
9292ADDRESS_MAP_END
9393
9494static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tecmo16_state )
r243669r243670
382382   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
383383   MCFG_SCREEN_SIZE(32*8, 32*8)
384384   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
385   MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update)
385   MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update_tecmo16)
386386
387387   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo16)
388388   MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096)
r243669r243670
629629
630630/******************************************************************************/
631631
632GAME( 1992, fstarfrc,  0,        fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", GAME_SUPPORTS_SAVE )
633GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", GAME_SUPPORTS_SAVE )
634GAME( 1992, riot,      0,        riot,     riot, driver_device,     0, ROT0,  "NMK",   "Riot", GAME_SUPPORTS_SAVE )
635GAME( 1995, ginkun,    0,        ginkun,   ginkun, driver_device,   0, ROT0,  "Tecmo", "Ganbare Ginkun", GAME_SUPPORTS_SAVE )
632GAME( 1992, fstarfrc,  0,        fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", 0 )
633GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", 0 )
634GAME( 1992, riot,      0,        riot,     riot, driver_device,     0, ROT0,  "NMK",   "Riot", 0 )
635GAME( 1995, ginkun,    0,        ginkun,   ginkun, driver_device,   0, ROT0,  "Tecmo", "Ganbare Ginkun", 0 )
trunk/src/mame/drivers/vball.c
r243669r243670
3131 -2) X Line Scrolling doesn't work 100% when Flip Screen Dip is set
3232 -3) 2 Player Version - Dips for difficulty don't seem to work or just need more testing
3333
34 -4) 2 Player Version - sound ROM is different and the adpcm chip is addressed differently
34 -4) 2 Player Version - sound ROM is different and the adpmc chip is addressed differently
3535                        Changed it to use a rom that was dumped from original PCB (readme below),
3636                        this makes the non-working ROM not used - i don't know where it come from.
3737
r243669r243670
131131   /* Save the scroll x register value */
132132   if (scanline < 256)
133133   {
134      m_scrollx[255 - scanline] = (m_scrollx_hi + m_scrollx_lo + 4);
134      m_vb_scrollx[255 - scanline] = (m_vb_scrollx_hi + m_vb_scrollx_lo + 4);
135135   }
136136}
137137
138WRITE8_MEMBER(vball_state::irq_ack_w)
138WRITE8_MEMBER(vball_state::vball_irq_ack_w)
139139{
140140   if (offset == 0)
141141      m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
r243669r243670
154154   bit 6 = scroll y hi
155155   bit 7 = ?
156156*/
157WRITE8_MEMBER(vball_state::bankswitch_w)
157WRITE8_MEMBER(vball_state::vb_bankswitch_w)
158158{
159   membank("mainbank")->set_entry(data & 1);
159   UINT8 *RAM = memregion("maincpu")->base();
160   membank("bank1")->set_base(&RAM[0x10000 + (0x4000 * (data & 1))]);
160161
161162   if (m_gfxset != ((data  & 0x20) ^ 0x20))
162163   {
163164      m_gfxset = (data  & 0x20) ^ 0x20;
164         m_bg_tilemap->mark_all_dirty();
165         vb_mark_all_dirty();
165166   }
166   m_scrolly_hi = (data & 0x40) << 2;
167   m_vb_scrolly_hi = (data & 0x40) << 2;
167168}
168169
169170/* The sound system comes all but verbatim from Double Dragon */
r243669r243670
183184   bit 6 = sp prom bank
184185   bit 7 = sp prom bank
185186*/
186WRITE8_MEMBER(vball_state::scrollx_hi_w)
187WRITE8_MEMBER(vball_state::vb_scrollx_hi_w)
187188{
188189   flip_screen_set(~data&1);
189   m_scrollx_hi = (data & 0x02) << 7;
190   bgprombank_w((data >> 2) & 0x07);
191   spprombank_w((data >> 5) & 0x07);
192   //logerror("%04x: scrollx_hi = %d\n", space.device().safe_pcbase(), m_scrollx_hi);
190   m_vb_scrollx_hi = (data & 0x02) << 7;
191   vb_bgprombank_w((data >> 2) & 0x07);
192   vb_spprombank_w((data >> 5) & 0x07);
193   //logerror("%04x: vb_scrollx_hi = %d\n", space.device().safe_pcbase(), m_vb_scrollx_hi);
193194}
194195
195WRITE8_MEMBER(vball_state::scrollx_lo_w)
196WRITE8_MEMBER(vball_state::vb_scrollx_lo_w)
196197{
197   m_scrollx_lo = data;
198   //logerror("%04x: scrollx_lo =%d\n", space.device().safe_pcbase(), m_scrollx_lo);
198   m_vb_scrollx_lo = data;
199   //logerror("%04x: vb_scrollx_lo =%d\n", space.device().safe_pcbase(), m_vb_scrollx_lo);
199200}
200201
201202
r243669r243670
210211   AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2")
211212   AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3")
212213   AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4")
213   AM_RANGE(0x1008, 0x1008) AM_WRITE(scrollx_hi_w)
214   AM_RANGE(0x1009, 0x1009) AM_WRITE(bankswitch_w)
215   AM_RANGE(0x100a, 0x100b) AM_WRITE(irq_ack_w)  /* is there a scanline counter here? */
216   AM_RANGE(0x100c, 0x100c) AM_WRITE(scrollx_lo_w)
214   AM_RANGE(0x1008, 0x1008) AM_WRITE(vb_scrollx_hi_w)
215   AM_RANGE(0x1009, 0x1009) AM_WRITE(vb_bankswitch_w)
216   AM_RANGE(0x100a, 0x100b) AM_WRITE(vball_irq_ack_w)  /* is there a scanline counter here? */
217   AM_RANGE(0x100c, 0x100c) AM_WRITE(vb_scrollx_lo_w)
217218   AM_RANGE(0x100d, 0x100d) AM_WRITE(cpu_sound_command_w)
218   AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("scrolly_lo")
219   AM_RANGE(0x2000, 0x2fff) AM_WRITE(videoram_w) AM_SHARE("videoram")
220   AM_RANGE(0x3000, 0x3fff) AM_WRITE(attrib_w) AM_SHARE("attribram")
221   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
219   AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("vb_scrolly_lo")
220   AM_RANGE(0x2000, 0x2fff) AM_WRITE(vb_videoram_w) AM_SHARE("vb_videoram")
221   AM_RANGE(0x3000, 0x3fff) AM_WRITE(vb_attrib_w) AM_SHARE("vb_attribram")
222   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
222223   AM_RANGE(0x8000, 0xffff) AM_ROM
223224ADDRESS_MAP_END
224225
r243669r243670
360361   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Used in 4 player mode, not supported in 2 player set */
361362INPUT_PORTS_END
362363
363void vball_state::machine_start()
364{
365   membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000);
366}
367364
368
369365static const gfx_layout charlayout =
370366{
371367   8,8,
r243669r243670
411407   MCFG_SCREEN_ADD("screen", RASTER)
412408   MCFG_SCREEN_SIZE(32*8, 32*8)
413409   MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248)   /* based on ddragon driver */
414   MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update)
410   MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb)
415411   MCFG_SCREEN_PALETTE("palette")
416412
417413   MCFG_GFXDECODE_ADD("gfxdecode", "palette", vb)
r243669r243670
561557ROM_END
562558
563559
564GAME( 1988, vball,    0,     vball,    vball, driver_device,    0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", GAME_SUPPORTS_SAVE )
565GAME( 1988, vball2pj, vball, vball,    vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", GAME_SUPPORTS_SAVE )
566GAME( 1988, vballb,   vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", GAME_SUPPORTS_SAVE )
567GAME( 1988, vball2pjb,vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", GAME_SUPPORTS_SAVE )
560GAME( 1988, vball,    0,     vball,    vball, driver_device,    0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", 0 )
561GAME( 1988, vball2pj, vball, vball,    vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", 0 )
562GAME( 1988, vballb,   vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", 0 )
563GAME( 1988, vball2pjb,vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", 0 )
trunk/src/mame/includes/skydiver.h
r243669r243670
2424public:
2525   skydiver_state(const machine_config &mconfig, device_type type, const char *tag)
2626      : driver_device(mconfig, type, tag),
27      m_videoram(*this, "videoram") ,
2728      m_maincpu(*this, "maincpu"),
2829      m_discrete(*this, "discrete"),
2930      m_gfxdecode(*this, "gfxdecode"),
30      m_palette(*this, "palette"),
31      m_videoram(*this, "videoram") { }
31      m_palette(*this, "palette") { }
3232
33   required_device<cpu_device> m_maincpu;
34   required_device<discrete_device> m_discrete;
35   required_device<gfxdecode_device> m_gfxdecode;
36   required_device<palette_device> m_palette;
37
3833   required_shared_ptr<UINT8> m_videoram;
39   
4034   int m_nmion;
4135   tilemap_t *m_bg_tilemap;
4236   int m_width;
4337
44   DECLARE_WRITE8_MEMBER(nmion_w);
45   DECLARE_WRITE8_MEMBER(videoram_w);
46   DECLARE_READ8_MEMBER(wram_r);
47   DECLARE_WRITE8_MEMBER(wram_w);
48   DECLARE_WRITE8_MEMBER(width_w);
49   DECLARE_WRITE8_MEMBER(coin_lockout_w);
50   DECLARE_WRITE8_MEMBER(start_lamp_1_w);
51   DECLARE_WRITE8_MEMBER(start_lamp_2_w);
52   DECLARE_WRITE8_MEMBER(lamp_s_w);
53   DECLARE_WRITE8_MEMBER(lamp_k_w);
54   DECLARE_WRITE8_MEMBER(lamp_y_w);
55   DECLARE_WRITE8_MEMBER(lamp_d_w);
56   DECLARE_WRITE8_MEMBER(_2000_201F_w);
57   DECLARE_WRITE8_MEMBER(sound_enable_w);
58   DECLARE_WRITE8_MEMBER(whistle_w);
59   
38   DECLARE_WRITE8_MEMBER(skydiver_nmion_w);
39   DECLARE_WRITE8_MEMBER(skydiver_videoram_w);
40   DECLARE_READ8_MEMBER(skydiver_wram_r);
41   DECLARE_WRITE8_MEMBER(skydiver_wram_w);
42   DECLARE_WRITE8_MEMBER(skydiver_width_w);
43   DECLARE_WRITE8_MEMBER(skydiver_coin_lockout_w);
44   DECLARE_WRITE8_MEMBER(skydiver_start_lamp_1_w);
45   DECLARE_WRITE8_MEMBER(skydiver_start_lamp_2_w);
46   DECLARE_WRITE8_MEMBER(skydiver_lamp_s_w);
47   DECLARE_WRITE8_MEMBER(skydiver_lamp_k_w);
48   DECLARE_WRITE8_MEMBER(skydiver_lamp_y_w);
49   DECLARE_WRITE8_MEMBER(skydiver_lamp_d_w);
50   DECLARE_WRITE8_MEMBER(skydiver_2000_201F_w);
51   DECLARE_WRITE8_MEMBER(skydiver_sound_enable_w);
52   DECLARE_WRITE8_MEMBER(skydiver_whistle_w);
6053   TILE_GET_INFO_MEMBER(get_tile_info);
61   
6254   virtual void machine_reset();
6355   virtual void video_start();
6456   DECLARE_PALETTE_INIT(skydiver);
65   
66   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
57   UINT32 screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
58   INTERRUPT_GEN_MEMBER(skydiver_interrupt);
6759   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
68   
69   INTERRUPT_GEN_MEMBER(interrupt);
60   required_device<cpu_device> m_maincpu;
61   required_device<discrete_device> m_discrete;
62   required_device<gfxdecode_device> m_gfxdecode;
63   required_device<palette_device> m_palette;
7064};
7165
7266/*----------- defined in audio/skydiver.c -----------*/
trunk/src/mame/includes/tecmo.h
r243669r243670
66public:
77   tecmo_state(const machine_config &mconfig, device_type type, const char *tag)
88      : driver_device(mconfig, type, tag),
9      m_txvideoram(*this, "txvideoram"),
10      m_fgvideoram(*this, "fgvideoram"),
11      m_bgvideoram(*this, "bgvideoram"),
12      m_spriteram(*this, "spriteram"),
913      m_maincpu(*this, "maincpu"),
1014      m_soundcpu(*this, "soundcpu"),
1115      m_msm(*this, "msm"),
1216      m_gfxdecode(*this, "gfxdecode"),
1317      m_palette(*this, "palette"),
14      m_sprgen(*this, "spritegen"),
15      m_txvideoram(*this, "txvideoram"),
16      m_fgvideoram(*this, "fgvideoram"),
17      m_bgvideoram(*this, "bgvideoram"),
18      m_spriteram(*this, "spriteram")   { }
18      m_sprgen(*this, "spritegen")
19      { }
1920
20   required_device<cpu_device> m_maincpu;
21   required_device<cpu_device> m_soundcpu;
22   optional_device<msm5205_device> m_msm;
23   required_device<gfxdecode_device> m_gfxdecode;
24   required_device<palette_device> m_palette;
25   required_device<tecmo_spr_device> m_sprgen;
26
21   int m_adpcm_pos;
22   int m_adpcm_end;
23   int m_adpcm_data;
24   int m_video_type;
2725   required_shared_ptr<UINT8> m_txvideoram;
2826   required_shared_ptr<UINT8> m_fgvideoram;
2927   required_shared_ptr<UINT8> m_bgvideoram;
30   required_shared_ptr<UINT8> m_spriteram;
31
3228   tilemap_t *m_tx_tilemap;
3329   tilemap_t *m_fg_tilemap;
3430   tilemap_t *m_bg_tilemap;
3531   UINT8 m_fgscroll[3];
3632   UINT8 m_bgscroll[3];
37   int m_adpcm_pos;
38   int m_adpcm_end;
39   int m_adpcm_data;
40   int m_video_type;
41
42   DECLARE_WRITE8_MEMBER(bankswitch_w);
43   DECLARE_WRITE8_MEMBER(sound_command_w);
44   DECLARE_WRITE8_MEMBER(nmi_ack_w);
45   DECLARE_WRITE8_MEMBER(adpcm_end_w);
46   DECLARE_READ8_MEMBER(dswa_l_r);
47   DECLARE_READ8_MEMBER(dswa_h_r);
48   DECLARE_READ8_MEMBER(dswb_l_r);
49   DECLARE_READ8_MEMBER(dswb_h_r);
50   DECLARE_WRITE8_MEMBER(txvideoram_w);
51   DECLARE_WRITE8_MEMBER(fgvideoram_w);
52   DECLARE_WRITE8_MEMBER(bgvideoram_w);
53   DECLARE_WRITE8_MEMBER(fgscroll_w);
54   DECLARE_WRITE8_MEMBER(bgscroll_w);
55   DECLARE_WRITE8_MEMBER(flipscreen_w);
56   DECLARE_WRITE8_MEMBER(adpcm_start_w);
57   DECLARE_WRITE8_MEMBER(adpcm_vol_w);
58   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
59   
33   required_shared_ptr<UINT8> m_spriteram;
34   DECLARE_WRITE8_MEMBER(tecmo_bankswitch_w);
35   DECLARE_WRITE8_MEMBER(tecmo_sound_command_w);
36   DECLARE_WRITE8_MEMBER(tecmo_nmi_ack_w);
37   DECLARE_WRITE8_MEMBER(tecmo_adpcm_end_w);
38   DECLARE_READ8_MEMBER(tecmo_dswa_l_r);
39   DECLARE_READ8_MEMBER(tecmo_dswa_h_r);
40   DECLARE_READ8_MEMBER(tecmo_dswb_l_r);
41   DECLARE_READ8_MEMBER(tecmo_dswb_h_r);
42   DECLARE_WRITE8_MEMBER(tecmo_txvideoram_w);
43   DECLARE_WRITE8_MEMBER(tecmo_fgvideoram_w);
44   DECLARE_WRITE8_MEMBER(tecmo_bgvideoram_w);
45   DECLARE_WRITE8_MEMBER(tecmo_fgscroll_w);
46   DECLARE_WRITE8_MEMBER(tecmo_bgscroll_w);
47   DECLARE_WRITE8_MEMBER(tecmo_flipscreen_w);
48   DECLARE_WRITE8_MEMBER(tecmo_adpcm_start_w);
49   DECLARE_WRITE8_MEMBER(tecmo_adpcm_vol_w);
6050   DECLARE_DRIVER_INIT(silkworm);
6151   DECLARE_DRIVER_INIT(rygar);
6252   DECLARE_DRIVER_INIT(backfirt);
6353   DECLARE_DRIVER_INIT(gemini);
64   
6554   TILE_GET_INFO_MEMBER(get_bg_tile_info);
6655   TILE_GET_INFO_MEMBER(get_fg_tile_info);
6756   TILE_GET_INFO_MEMBER(gemini_get_bg_tile_info);
6857   TILE_GET_INFO_MEMBER(gemini_get_fg_tile_info);
6958   TILE_GET_INFO_MEMBER(get_tx_tile_info);
70   
71   virtual void machine_start();
72   virtual void machine_reset();
73   virtual void video_start();
74   
75   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
59   DECLARE_MACHINE_RESET(rygar);
60   DECLARE_VIDEO_START(tecmo);
61   UINT32 screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7662   void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
63   DECLARE_WRITE_LINE_MEMBER(tecmo_adpcm_int);
64   required_device<cpu_device> m_maincpu;
65   required_device<cpu_device> m_soundcpu;
66   required_device<msm5205_device> m_msm;
67   required_device<gfxdecode_device> m_gfxdecode;
68   required_device<palette_device> m_palette;
69   required_device<tecmo_spr_device> m_sprgen;
7770};
trunk/src/mame/includes/tecmo16.h
r243669r243670
66public:
77   tecmo16_state(const machine_config &mconfig, device_type type, const char *tag)
88      : driver_device(mconfig, type, tag),
9      m_videoram(*this, "videoram"),
10      m_colorram(*this, "colorram"),
11      m_videoram2(*this, "videoram2"),
12      m_colorram2(*this, "colorram2"),
13      m_charram(*this, "charram"),
14      m_spriteram(*this, "spriteram"),
915      m_maincpu(*this, "maincpu"),
1016      m_audiocpu(*this, "audiocpu"),
1117      m_gfxdecode(*this, "gfxdecode"),
1218      m_screen(*this, "screen"),
1319      m_palette(*this, "palette"),
1420      m_sprgen(*this, "spritegen"),
15      m_mixer(*this, "mixer"),
16      m_videoram(*this, "videoram"),
17      m_colorram(*this, "colorram"),
18      m_videoram2(*this, "videoram2"),
19      m_colorram2(*this, "colorram2"),
20      m_charram(*this, "charram"),
21      m_spriteram(*this, "spriteram")
21      m_mixer(*this, "mixer")
2222   { }
2323
24   required_device<cpu_device> m_maincpu;
25   required_device<cpu_device> m_audiocpu;
26   required_device<gfxdecode_device> m_gfxdecode;
27   required_device<screen_device> m_screen;
28   required_device<palette_device> m_palette;
29   required_device<tecmo_spr_device> m_sprgen;
30   required_device<tecmo_mix_device> m_mixer;
31
3224   required_shared_ptr<UINT16> m_videoram;
3325   required_shared_ptr<UINT16> m_colorram;
3426   required_shared_ptr<UINT16> m_videoram2;
3527   required_shared_ptr<UINT16> m_colorram2;
3628   required_shared_ptr<UINT16> m_charram;
37   required_shared_ptr<UINT16> m_spriteram;
38
3929   tilemap_t *m_fg_tilemap;
4030   tilemap_t *m_bg_tilemap;
4131   tilemap_t *m_tx_tilemap;
r243669r243670
5040   UINT16 m_scroll2_y_w;
5141   UINT16 m_scroll_char_x_w;
5242   UINT16 m_scroll_char_y_w;
53
54   DECLARE_WRITE16_MEMBER(sound_command_w);
55   DECLARE_WRITE16_MEMBER(videoram_w);
56   DECLARE_WRITE16_MEMBER(colorram_w);
57   DECLARE_WRITE16_MEMBER(videoram2_w);
58   DECLARE_WRITE16_MEMBER(colorram2_w);
59   DECLARE_WRITE16_MEMBER(charram_w);
60   DECLARE_WRITE16_MEMBER(flipscreen_w);
61   DECLARE_WRITE16_MEMBER(scroll_x_w);
62   DECLARE_WRITE16_MEMBER(scroll_y_w);
63   DECLARE_WRITE16_MEMBER(scroll2_x_w);
64   DECLARE_WRITE16_MEMBER(scroll2_y_w);
65   DECLARE_WRITE16_MEMBER(scroll_char_x_w);
66   DECLARE_WRITE16_MEMBER(scroll_char_y_w);
67
43   required_shared_ptr<UINT16> m_spriteram;
44   DECLARE_WRITE16_MEMBER(tecmo16_sound_command_w);
45   DECLARE_WRITE16_MEMBER(tecmo16_videoram_w);
46   DECLARE_WRITE16_MEMBER(tecmo16_colorram_w);
47   DECLARE_WRITE16_MEMBER(tecmo16_videoram2_w);
48   DECLARE_WRITE16_MEMBER(tecmo16_colorram2_w);
49   DECLARE_WRITE16_MEMBER(tecmo16_charram_w);
50   DECLARE_WRITE16_MEMBER(tecmo16_flipscreen_w);
51   DECLARE_WRITE16_MEMBER(tecmo16_scroll_x_w);
52   DECLARE_WRITE16_MEMBER(tecmo16_scroll_y_w);
53   DECLARE_WRITE16_MEMBER(tecmo16_scroll2_x_w);
54   DECLARE_WRITE16_MEMBER(tecmo16_scroll2_y_w);
55   DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_x_w);
56   DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_y_w);
6857   TILE_GET_INFO_MEMBER(fg_get_tile_info);
6958   TILE_GET_INFO_MEMBER(bg_get_tile_info);
7059   TILE_GET_INFO_MEMBER(tx_get_tile_info);
71
7260   virtual void video_start();
7361   DECLARE_VIDEO_START(ginkun);
7462   DECLARE_VIDEO_START(riot);
63   UINT32 screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
64   required_device<cpu_device> m_maincpu;
65   required_device<cpu_device> m_audiocpu;
66   required_device<gfxdecode_device> m_gfxdecode;
67   required_device<screen_device> m_screen;
68   required_device<palette_device> m_palette;
69   required_device<tecmo_spr_device> m_sprgen;
70   required_device<tecmo_mix_device> m_mixer;
7571
76   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
77   
78   void save_state();
7972};
trunk/src/mame/includes/vball.h
r243669r243670
33public:
44   vball_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_vb_attribram(*this, "vb_attribram"),
7      m_vb_videoram(*this, "vb_videoram"),
8      m_vb_scrolly_lo(*this, "vb_scrolly_lo"),
9      m_spriteram(*this, "spriteram"),
610      m_maincpu(*this, "maincpu"),
711      m_audiocpu(*this, "audiocpu"),
812      m_gfxdecode(*this, "gfxdecode"),
913      m_screen(*this, "screen"),
10      m_palette(*this, "palette"),
11      m_attribram(*this, "attribram"),
12      m_videoram(*this, "videoram"),
13      m_scrolly_lo(*this, "scrolly_lo"),
14      m_spriteram(*this, "spriteram") { }
14      m_palette(*this, "palette"){ }
1515
16   required_device<cpu_device> m_maincpu;
17   required_device<cpu_device> m_audiocpu;
18   required_device<gfxdecode_device> m_gfxdecode;
19   required_device<screen_device> m_screen;
20   required_device<palette_device> m_palette;
21
22   required_shared_ptr<UINT8> m_attribram;
23   required_shared_ptr<UINT8> m_videoram;
24   required_shared_ptr<UINT8> m_scrolly_lo;
25   required_shared_ptr<UINT8> m_spriteram;
26   
27   int m_scrollx_hi;
28   int m_scrolly_hi;
29   int m_scrollx_lo;
16   required_shared_ptr<UINT8> m_vb_attribram;
17   required_shared_ptr<UINT8> m_vb_videoram;
18   required_shared_ptr<UINT8> m_vb_scrolly_lo;
19   int m_vb_scrollx_hi;
20   int m_vb_scrolly_hi;
21   int m_vb_scrollx_lo;
3022   int m_gfxset;
31   int m_scrollx[256];
32   int m_bgprombank;
33   int m_spprombank;
23   int m_vb_scrollx[256];
24   int m_vb_bgprombank;
25   int m_vb_spprombank;
3426   tilemap_t *m_bg_tilemap;
35   
36   DECLARE_WRITE8_MEMBER(irq_ack_w);
37   DECLARE_WRITE8_MEMBER(bankswitch_w);
27   required_shared_ptr<UINT8> m_spriteram;
28   DECLARE_WRITE8_MEMBER(vball_irq_ack_w);
29   DECLARE_WRITE8_MEMBER(vb_bankswitch_w);
3830   DECLARE_WRITE8_MEMBER(cpu_sound_command_w);
39   DECLARE_WRITE8_MEMBER(scrollx_hi_w);
40   DECLARE_WRITE8_MEMBER(scrollx_lo_w);
41   DECLARE_WRITE8_MEMBER(videoram_w);
42   DECLARE_WRITE8_MEMBER(attrib_w);
43   
31   DECLARE_WRITE8_MEMBER(vb_scrollx_hi_w);
32   DECLARE_WRITE8_MEMBER(vb_scrollx_lo_w);
33   DECLARE_WRITE8_MEMBER(vb_videoram_w);
34   DECLARE_READ8_MEMBER(vb_attrib_r);
35   DECLARE_WRITE8_MEMBER(vb_attrib_w);
4436   TILEMAP_MAPPER_MEMBER(background_scan);
4537   TILE_GET_INFO_MEMBER(get_bg_tile_info);
46   
47   virtual void machine_start();
4838   virtual void video_start();
49   
50   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
39   UINT32 screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5140   TIMER_DEVICE_CALLBACK_MEMBER(vball_scanline);
52   void bgprombank_w(int bank);
53   void spprombank_w(int bank);
41   void vb_bgprombank_w( int bank );
42   void vb_spprombank_w( int bank );
43   void vb_mark_all_dirty(  );
5444   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
5545   inline int scanline_to_vcount(int scanline);
46   required_device<cpu_device> m_maincpu;
47   required_device<cpu_device> m_audiocpu;
48   required_device<gfxdecode_device> m_gfxdecode;
49   required_device<screen_device> m_screen;
50   required_device<palette_device> m_palette;
5651};
trunk/src/mame/video/skydiver.c
r243669r243670
1414   address_space &space = m_maincpu->space(AS_PROGRAM);
1515
1616   /* reset all latches */
17   start_lamp_1_w(space, 0, 0);
18   start_lamp_2_w(space, 0, 0);
19   lamp_s_w(space, 0, 0);
20   lamp_k_w(space, 0, 0);
21   lamp_y_w(space, 0, 0);
22   lamp_d_w(space, 0, 0);
17   skydiver_start_lamp_1_w(space, 0, 0);
18   skydiver_start_lamp_2_w(space, 0, 0);
19   skydiver_lamp_s_w(space, 0, 0);
20   skydiver_lamp_k_w(space, 0, 0);
21   skydiver_lamp_y_w(space, 0, 0);
22   skydiver_lamp_d_w(space, 0, 0);
2323   output_set_value("lampi", 0);
2424   output_set_value("lampv", 0);
2525   output_set_value("lampe", 0);
2626   output_set_value("lampr", 0);
27   width_w(space, 0, 0);
28   coin_lockout_w(space, 0, 0);
27   skydiver_width_w(space, 0, 0);
28   skydiver_coin_lockout_w(space, 0, 0);
2929}
3030
3131
r243669r243670
5252void skydiver_state::video_start()
5353{
5454   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skydiver_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
55   
56   save_item(NAME(m_nmion));
57   save_item(NAME(m_width));
5855}
5956
6057
r243669r243670
6461 *
6562 *************************************/
6663
67WRITE8_MEMBER(skydiver_state::videoram_w)
64WRITE8_MEMBER(skydiver_state::skydiver_videoram_w)
6865{
6966   m_videoram[offset] = data;
7067   m_bg_tilemap->mark_tile_dirty(offset);
7168}
7269
7370
74READ8_MEMBER(skydiver_state::wram_r)
71READ8_MEMBER(skydiver_state::skydiver_wram_r)
7572{
7673   return m_videoram[offset | 0x380];
7774}
7875
79WRITE8_MEMBER(skydiver_state::wram_w)
76WRITE8_MEMBER(skydiver_state::skydiver_wram_w)
8077{
8178   m_videoram[offset | 0x0380] = data;
8279}
8380
8481
85WRITE8_MEMBER(skydiver_state::width_w)
82WRITE8_MEMBER(skydiver_state::skydiver_width_w)
8683{
8784   m_width = offset;
8885}
8986
9087
91WRITE8_MEMBER(skydiver_state::coin_lockout_w)
88WRITE8_MEMBER(skydiver_state::skydiver_coin_lockout_w)
9289{
9390   coin_lockout_global_w(machine(), !offset);
9491}
9592
9693
97WRITE8_MEMBER(skydiver_state::start_lamp_1_w)
94WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_1_w)
9895{
9996   set_led_status(machine(), 0, offset);
10097}
10198
102WRITE8_MEMBER(skydiver_state::start_lamp_2_w)
99WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_2_w)
103100{
104101   set_led_status(machine(), 1, offset);
105102}
106103
107104
108WRITE8_MEMBER(skydiver_state::lamp_s_w)
105WRITE8_MEMBER(skydiver_state::skydiver_lamp_s_w)
109106{
110107   output_set_value("lamps", offset);
111108}
112109
113WRITE8_MEMBER(skydiver_state::lamp_k_w)
110WRITE8_MEMBER(skydiver_state::skydiver_lamp_k_w)
114111{
115112   output_set_value("lampk", offset);
116113}
117114
118WRITE8_MEMBER(skydiver_state::lamp_y_w)
115WRITE8_MEMBER(skydiver_state::skydiver_lamp_y_w)
119116{
120117   output_set_value("lampy", offset);
121118}
122119
123WRITE8_MEMBER(skydiver_state::lamp_d_w)
120WRITE8_MEMBER(skydiver_state::skydiver_lamp_d_w)
124121{
125122   output_set_value("lampd", offset);
126123}
127124
128WRITE8_MEMBER(skydiver_state::_2000_201F_w)
125WRITE8_MEMBER(skydiver_state::skydiver_2000_201F_w)
129126{
130127   int bit = offset & 0x01;
131128
r243669r243670
201198}
202199
203200
204UINT32 skydiver_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
201UINT32 skydiver_state::screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
205202{
206203   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
207204
trunk/src/mame/video/tecmo.c
r243669r243670
7474
7575***************************************************************************/
7676
77void tecmo_state::video_start()
77VIDEO_START_MEMBER(tecmo_state,tecmo)
7878{
7979   if (m_video_type == 2)  /* gemini */
8080   {
r243669r243670
9494
9595   m_bg_tilemap->set_scrolldx(-48,256+48);
9696   m_fg_tilemap->set_scrolldx(-48,256+48);
97   
98   save_item(NAME(m_fgscroll));
99   save_item(NAME(m_bgscroll));
10097}
10198
10299
r243669r243670
107104
108105***************************************************************************/
109106
110WRITE8_MEMBER(tecmo_state::txvideoram_w)
107WRITE8_MEMBER(tecmo_state::tecmo_txvideoram_w)
111108{
112109   m_txvideoram[offset] = data;
113110   m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
114111}
115112
116WRITE8_MEMBER(tecmo_state::fgvideoram_w)
113WRITE8_MEMBER(tecmo_state::tecmo_fgvideoram_w)
117114{
118115   m_fgvideoram[offset] = data;
119116   m_fg_tilemap->mark_tile_dirty(offset & 0x1ff);
120117}
121118
122WRITE8_MEMBER(tecmo_state::bgvideoram_w)
119WRITE8_MEMBER(tecmo_state::tecmo_bgvideoram_w)
123120{
124121   m_bgvideoram[offset] = data;
125122   m_bg_tilemap->mark_tile_dirty(offset & 0x1ff);
126123}
127124
128WRITE8_MEMBER(tecmo_state::fgscroll_w)
125WRITE8_MEMBER(tecmo_state::tecmo_fgscroll_w)
129126{
130127   m_fgscroll[offset] = data;
131128
r243669r243670
133130   m_fg_tilemap->set_scrolly(0, m_fgscroll[2]);
134131}
135132
136WRITE8_MEMBER(tecmo_state::bgscroll_w)
133WRITE8_MEMBER(tecmo_state::tecmo_bgscroll_w)
137134{
138135   m_bgscroll[offset] = data;
139136
r243669r243670
141138   m_bg_tilemap->set_scrolly(0, m_bgscroll[2]);
142139}
143140
144WRITE8_MEMBER(tecmo_state::flipscreen_w)
141WRITE8_MEMBER(tecmo_state::tecmo_flipscreen_w)
145142{
146143   flip_screen_set(data & 1);
147144}
r243669r243670
156153
157154
158155
159UINT32 tecmo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
156UINT32 tecmo_state::screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
160157{
161158   screen.priority().fill(0, cliprect);
162159   bitmap.fill(0x100, cliprect);
trunk/src/mame/video/tecmo16.c
r243669r243670
1414
1515/******************************************************************************/
1616
17
18void tecmo16_state::save_state()
19{
20   save_item(NAME(m_flipscreen));
21   save_item(NAME(m_scroll_x_w));
22   save_item(NAME(m_scroll_y_w));
23   save_item(NAME(m_scroll2_x_w));
24   save_item(NAME(m_scroll2_y_w));
25   save_item(NAME(m_scroll_char_x_w));
26   save_item(NAME(m_scroll_char_y_w));
27}
28
2917TILE_GET_INFO_MEMBER(tecmo16_state::fg_get_tile_info)
3018{
3119   int tile = m_videoram[tile_index] & 0x1fff;
r243669r243670
8270   m_tx_tilemap->set_scrolly(0,-16);
8371   m_flipscreen = 0;
8472   m_game_is_riot = 0;
85   
86   save_state();
8773}
8874
8975VIDEO_START_MEMBER(tecmo16_state,ginkun)
r243669r243670
10490   m_tx_tilemap->set_transparent_pen(0);
10591   m_flipscreen = 0;
10692   m_game_is_riot = 0;
107   
108   save_state();
10993}
11094
11195VIDEO_START_MEMBER(tecmo16_state,riot)
r243669r243670
127111   m_tx_tilemap->set_scrolldy(-16,-16);
128112   m_flipscreen = 0;
129113   m_game_is_riot = 1;
130   
131   save_state();
132114}
133115
134116/******************************************************************************/
135117
136WRITE16_MEMBER(tecmo16_state::videoram_w)
118WRITE16_MEMBER(tecmo16_state::tecmo16_videoram_w)
137119{
138120   COMBINE_DATA(&m_videoram[offset]);
139121   m_fg_tilemap->mark_tile_dirty(offset);
140122}
141123
142WRITE16_MEMBER(tecmo16_state::colorram_w)
124WRITE16_MEMBER(tecmo16_state::tecmo16_colorram_w)
143125{
144126   COMBINE_DATA(&m_colorram[offset]);
145127   m_fg_tilemap->mark_tile_dirty(offset);
146128}
147129
148WRITE16_MEMBER(tecmo16_state::videoram2_w)
130WRITE16_MEMBER(tecmo16_state::tecmo16_videoram2_w)
149131{
150132   COMBINE_DATA(&m_videoram2[offset]);
151133   m_bg_tilemap->mark_tile_dirty(offset);
152134}
153135
154WRITE16_MEMBER(tecmo16_state::colorram2_w)
136WRITE16_MEMBER(tecmo16_state::tecmo16_colorram2_w)
155137{
156138   COMBINE_DATA(&m_colorram2[offset]);
157139   m_bg_tilemap->mark_tile_dirty(offset);
158140}
159141
160142
161WRITE16_MEMBER(tecmo16_state::charram_w)
143WRITE16_MEMBER(tecmo16_state::tecmo16_charram_w)
162144{
163145   COMBINE_DATA(&m_charram[offset]);
164146   m_tx_tilemap->mark_tile_dirty(offset);
165147}
166148
167WRITE16_MEMBER(tecmo16_state::flipscreen_w)
149WRITE16_MEMBER(tecmo16_state::tecmo16_flipscreen_w)
168150{
169151   m_flipscreen = data & 0x01;
170152   flip_screen_set(m_flipscreen);
r243669r243670
172154
173155/******************************************************************************/
174156
175WRITE16_MEMBER(tecmo16_state::scroll_x_w)
157WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_x_w)
176158{
177159   COMBINE_DATA(&m_scroll_x_w);
178160   m_fg_tilemap->set_scrollx(0,m_scroll_x_w);
179161}
180162
181WRITE16_MEMBER(tecmo16_state::scroll_y_w)
163WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_y_w)
182164{
183165   COMBINE_DATA(&m_scroll_y_w);
184166   m_fg_tilemap->set_scrolly(0,m_scroll_y_w);
185167}
186168
187WRITE16_MEMBER(tecmo16_state::scroll2_x_w)
169WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_x_w)
188170{
189171   COMBINE_DATA(&m_scroll2_x_w);
190172   m_bg_tilemap->set_scrollx(0,m_scroll2_x_w);
191173}
192174
193WRITE16_MEMBER(tecmo16_state::scroll2_y_w)
175WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_y_w)
194176{
195177   COMBINE_DATA(&m_scroll2_y_w);
196178   m_bg_tilemap->set_scrolly(0,m_scroll2_y_w);
197179}
198180
199WRITE16_MEMBER(tecmo16_state::scroll_char_x_w)
181WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_x_w)
200182{
201183   COMBINE_DATA(&m_scroll_char_x_w);
202184   m_tx_tilemap->set_scrollx(0,m_scroll_char_x_w);
203185}
204186
205WRITE16_MEMBER(tecmo16_state::scroll_char_y_w)
187WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_y_w)
206188{
207189   COMBINE_DATA(&m_scroll_char_y_w);
208190   m_tx_tilemap->set_scrolly(0,m_scroll_char_y_w-16);
r243669r243670
213195
214196/******************************************************************************/
215197
216UINT32 tecmo16_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
198UINT32 tecmo16_state::screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
217199{
218200   m_tile_bitmap_bg.fill(0, cliprect);
219201   m_tile_bitmap_fg.fill(0, cliprect);
trunk/src/mame/video/vball.c
r243669r243670
2727
2828TILE_GET_INFO_MEMBER(vball_state::get_bg_tile_info)
2929{
30   UINT8 code = m_videoram[tile_index];
31   UINT8 attr = m_attribram[tile_index];
30   UINT8 code = m_vb_videoram[tile_index];
31   UINT8 attr = m_vb_attribram[tile_index];
3232   SET_TILE_INFO_MEMBER(0,
3333         code + ((attr & 0x1f) << 8) + (m_gfxset<<8),
3434         (attr >> 5) & 0x7,
r243669r243670
4242
4343   m_bg_tilemap->set_scroll_rows(32);
4444   m_gfxset=0;
45   m_bgprombank=0xff;
46   m_spprombank=0xff;
47   
48   save_item(NAME(m_scrollx_hi));
49   save_item(NAME(m_scrolly_hi));
50   save_item(NAME(m_scrollx_lo));
51   save_item(NAME(m_gfxset));
52   save_item(NAME(m_scrollx));
53   save_item(NAME(m_bgprombank));
54   save_item(NAME(m_spprombank));
45   m_vb_bgprombank=0xff;
46   m_vb_spprombank=0xff;
5547}
5648
57WRITE8_MEMBER(vball_state::videoram_w)
49WRITE8_MEMBER(vball_state::vb_videoram_w)
5850{
59   m_videoram[offset] = data;
51   m_vb_videoram[offset] = data;
6052   m_bg_tilemap->mark_tile_dirty(offset);
6153}
6254
63WRITE8_MEMBER(vball_state::attrib_w)
55#ifdef UNUSED_FUNCTION
56READ8_MEMBER(vball_state::vb_attrib_r)
6457{
65   m_attribram[offset] = data;
58   return m_vb_attribram[offset];
59}
60#endif
61
62WRITE8_MEMBER(vball_state::vb_attrib_w)
63{
64   m_vb_attribram[offset] = data;
6665   m_bg_tilemap->mark_tile_dirty(offset);
6766}
6867
69void vball_state::bgprombank_w( int bank )
68void vball_state::vb_bgprombank_w( int bank )
7069{
7170   int i;
7271   UINT8* color_prom;
7372
74   if (bank==m_bgprombank) return;
73   if (bank==m_vb_bgprombank) return;
7574
7675   color_prom = memregion("proms")->base() + bank*0x80;
7776   for (i=0;i<128;i++, color_prom++) {
7877      m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
7978                  pal4bit(color_prom[0x800] >> 0));
8079   }
81   m_bgprombank=bank;
80   m_vb_bgprombank=bank;
8281}
8382
84void vball_state::spprombank_w( int bank )
83void vball_state::vb_spprombank_w( int bank )
8584{
8685   int i;
8786   UINT8* color_prom;
8887
89   if (bank==m_spprombank) return;
88   if (bank==m_vb_spprombank) return;
9089
9190   color_prom = memregion("proms")->base()+0x400 + bank*0x80;
9291   for (i=128;i<256;i++,color_prom++)  {
9392      m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
9493                  pal4bit(color_prom[0x800] >> 0));
9594   }
96   m_spprombank=bank;
95   m_vb_spprombank=bank;
9796}
9897
98void vball_state::vb_mark_all_dirty(  )
99{
100   m_bg_tilemap->mark_all_dirty();
101}
99102
100103#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\
101104               cliprect, \
r243669r243670
147150
148151#undef DRAW_SPRITE
149152
150UINT32 vball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
153UINT32 vball_state::screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
151154{
152155   int i;
153156
154   m_bg_tilemap->set_scrolly(0,m_scrolly_hi + *m_scrolly_lo);
157   m_bg_tilemap->set_scrolly(0,m_vb_scrolly_hi + *m_vb_scrolly_lo);
155158
156159   /*To get linescrolling to work properly, we must ignore the 1st two scroll values, no idea why! -SJE */
157160   for (i = 2; i < 256; i++) {
158      m_bg_tilemap->set_scrollx(i,m_scrollx[i-2]);
159      //logerror("scrollx[%d] = %d\n",i,m_scrollx[i]);
161      m_bg_tilemap->set_scrollx(i,m_vb_scrollx[i-2]);
162      //logerror("scrollx[%d] = %d\n",i,m_vb_scrollx[i]);
160163   }
161164   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
162165   draw_sprites(bitmap,cliprect);
trunk/src/mess/drivers/edracula.c
r243669r243670
116116
117117static INPUT_PORTS_START( edracula )
118118   PORT_START("IN0")
119   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
120   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START )
119   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START )
120   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT )
121121   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
122122   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
123123
trunk/src/mess/drivers/pc9801.c
r243669r243670
14101410   {
14111411      if(BIT(m_egc.regs[2], 10))
14121412      {
1413         m_egc.leftover[0] = 0;
1413         m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
14141414         egc_shift(0, data);
14151415         // leftover[0] is inited above, set others to same
14161416         m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = m_egc.leftover[0];
r243669r243670
14221422   // mask off the bits before the start
14231423   if(m_egc.first)
14241424   {
1425      mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (16 - dst_off)) - 1);
1426      if(BIT(m_egc.regs[2], 10) && !m_egc.init)
1425      mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (dst_off + 1)) - 1);
1426      if(!m_egc.init)
14271427         m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
14281428   }
14291429
r243669r243670
15131513      m_egc.pat[2] = m_video_ram_2[plane_off + (0x4000 * 3)];
15141514      m_egc.pat[3] = m_video_ram_2[plane_off];
15151515   }
1516   if(m_egc.first && !m_egc.init)
1517   {
1518      m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
1519      m_egc.init = true;
1520   }
15211516   for(int i = 0; i < 4; i++)
15221517      m_egc.src[i] = egc_shift(i, m_video_ram_2[plane_off + (((i + 1) & 3) * 0x4000)]);
15231518
r243669r243670
15731568         {
15741569            if((m_grcg.mode & (1 << i)) == 0)
15751570            {
1571
15761572               if(mem_mask & 0xff)
15771573               {
15781574                  vram[offset | (((i + 1) & 3) * 0x8000)] &= ~(data >> 0);
r243669r243670
19001896   else if(offset == 7)
19011897   {
19021898//      logerror("%02x GRCG TILE %02x\n",data,m_grcg.tile_index);
1903      m_grcg.tile[m_grcg.tile_index] = BITSWAP8(data,0,1,2,3,4,5,6,7);
1899      m_grcg.tile[m_grcg.tile_index] = BITSWAP16(data,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7);
19041900      m_grcg.tile_index ++;
19051901      m_grcg.tile_index &= 3;
19061902      return;
r243669r243670
19141910   if(!m_ex_video_ff[2])
19151911      return;
19161912
1917   if(!(m_egc.regs[1] & 0x6000) || (offset != 4)) // why?
1918      COMBINE_DATA(&m_egc.regs[offset]);
1913   COMBINE_DATA(&m_egc.regs[offset]);
19191914   switch(offset)
19201915   {
19211916      case 1:
trunk/src/mess/drivers/tb303.c
r243669r243670
7979   MCFG_CPU_ADD("maincpu", NEC_D650, TB303_T2_CLOCK_HZ)
8080
8181   MCFG_TIMER_DRIVER_ADD_PERIODIC("t3_clock", tb303_state, t3_clock, TB303_T3_CLOCK)
82   MCFG_TIMER_START_DELAY(TB303_T3_CLOCK)
8382   MCFG_TIMER_DRIVER_ADD("t3_off", tb303_state, t3_off)
8483
8584   MCFG_DEFAULT_LAYOUT(layout_tb303)
trunk/src/mess/drivers/zorba.c
r243669r243670
1313The keyboard is an intelligent serial device like the Kaypro's keyboard. They even have the same plug,
1414and might be swappable. Need a schematic.
1515
16Instead of using a daisy chain, the IM2 vectors are calculated by a prom (u77). Unfortunately, the prom
17contents make no sense at all (mostly FF), so the vectors for IRQ0 and IRQ2 are hard-coded. Other IRQ
18vectors are not used as yet.
19
20Status:
21- Boots up, and the keyboard works
22
2316ToDo:
24- Need software that does more than plain text (such as games)
25- Add masking feature (only used for the UARTs)
17- Add interrupt vector hardware and masking feature
2618- Connect devices to the above hardware
2719- Fix the display
28- Connect the PIT to the UARTs
20- Fix floppy-disk
21- Connect up the PIT
2922- Replace the ascii keyboard with the real one, if possible
3023- Probably lots of other things
3124
r243669r243670
4538#include "machine/keyboard.h"
4639#include "machine/wd_fdc.h"
4740
41#define KEYBOARD_TAG "keyboard"
4842
4943class zorba_state : public driver_device
5044{
r243669r243670
8377   DECLARE_WRITE8_MEMBER(pia0_porta_w);
8478   DECLARE_WRITE8_MEMBER(kbd_put);
8579   DECLARE_READ8_MEMBER(keyboard_r);
86   DECLARE_WRITE_LINE_MEMBER(irq0_w);
87   DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
88   DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
89   I8275_DRAW_CHARACTER_MEMBER(zorba_update_chr);
80   I8275_DRAW_CHARACTER_MEMBER( zorba_update_chr );
9081   required_device<palette_device> m_palette;
9182
9283private:
9384   UINT8 m_term_data;
94   UINT8 m_fdc_rq;
9585   required_device<cpu_device> m_maincpu;
9686   required_device<beep_device> m_beep;
9787   required_device<z80dma_device> m_dma;
r243669r243670
159149   membank("bankr0")->set_entry(1);
160150}
161151
162WRITE_LINE_MEMBER( zorba_state::irq0_w )
163{
164   if (state)
165   {
166      m_maincpu->set_input_line_vector(0, 0x88);
167      m_maincpu->set_input_line(0, ASSERT_LINE);
168   }
169   else
170      m_maincpu->set_input_line(0, CLEAR_LINE);
171}
172
173WRITE_LINE_MEMBER( zorba_state::fdc_intrq_w )
174{
175   m_fdc_rq = (m_fdc_rq & 2) | state;
176   if (m_fdc_rq == 1)
177   {
178      m_maincpu->set_input_line_vector(0, 0x80);
179      m_maincpu->set_input_line(0, ASSERT_LINE);
180   }
181   else
182   if (m_fdc_rq == 0)
183      m_maincpu->set_input_line(0, CLEAR_LINE);
184}
185
186WRITE_LINE_MEMBER( zorba_state::fdc_drq_w )
187{
188   m_fdc_rq = (m_fdc_rq & 1) | (state << 1);
189   if (m_fdc_rq == 2)
190   {
191      m_maincpu->set_input_line_vector(0, 0x80);
192      m_maincpu->set_input_line(0, ASSERT_LINE);
193   }
194   else
195   if (m_fdc_rq == 0)
196      m_maincpu->set_input_line(0, CLEAR_LINE);
197}
198
199152WRITE8_MEMBER( zorba_state::intmask_w )
200153{
201154}
r243669r243670
220173{
221174// since our Z80 has no support for BUSACK, we assume it is granted immediately
222175   m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, state);
176   m_maincpu->set_input_line(INPUT_LINE_HALT, state); // do we need this?
223177   m_dma->bai_w(state); // tell dma that bus has been granted
224178}
225179
r243669r243670
272226   m_fdc->set_floppy(floppy);
273227
274228   if (floppy)
275      floppy->ss_w(!BIT(data, 5));
229   {
230      floppy->ss_w(!BIT(data, 5)); // might need inverting
231   }
276232
277233   m_floppy0->get_device()->mon_w(BIT(data, 4));
278234   m_floppy1->get_device()->mon_w(BIT(data, 4));
r243669r243670
319275
320276MACHINE_RESET_MEMBER( zorba_state, zorba )
321277{
322   m_fdc_rq = 0;
323278   m_beep->set_frequency(800);
324279   m_p_chargen = memregion("chargen")->base();
325280   membank("bankr0")->set_entry(1); // point at rom
326281   membank("bankw0")->set_entry(0); // always write to ram
327   m_maincpu->reset();
328282}
329283
330284READ8_MEMBER( zorba_state::keyboard_r )
r243669r243670
369323   MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_24MHz/6)
370324   // busack on cpu connects to bai pin
371325   MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(zorba_state, busreq_w))  //connects to busreq on cpu
372   MCFG_Z80DMA_OUT_INT_CB(WRITELINE(zorba_state, irq0_w))   // connects to IRQ0 on IM2 controller
326   MCFG_Z80DMA_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))   // connects to IRQ0 on cpu
373327   //ba0 - not connected
374328   MCFG_Z80DMA_IN_MREQ_CB(READ8(zorba_state, memory_read_byte))
375329   MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(zorba_state, memory_write_byte))
376330   MCFG_Z80DMA_IN_IORQ_CB(READ8(zorba_state, io_read_byte))
377331   MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(zorba_state, io_write_byte))
378332
379   MCFG_DEVICE_ADD("uart0", I8251, 0) // U32 COM port J2
333   MCFG_DEVICE_ADD("uart0", I8251, 0)
334   // COM port
380335
381   MCFG_DEVICE_ADD("uart1", I8251, 0) // U31 printer port J3
336   MCFG_DEVICE_ADD("uart1", I8251, 0)
337   // printer port
382338
383   MCFG_DEVICE_ADD("uart2", I8251, 0) // U30 serial keyboard J6
339   MCFG_DEVICE_ADD("uart2", I8251, 0)
340   // keyboard
384341
385   // port A - disk select etc, beeper
386   // port B - parallel interface
342// port A - disk select etc, beeper
343// port B - parallel interface
387344   MCFG_DEVICE_ADD("pia0", PIA6821, 0)
388345   MCFG_PIA_WRITEPA_HANDLER(WRITE8(zorba_state, pia0_porta_w))
389346
390   // IEEE488 interface
347// IEEE488 interface
391348   MCFG_DEVICE_ADD("pia1", PIA6821, 0)
392349
393350   MCFG_DEVICE_ADD("pit", PIT8254, 0)
394   MCFG_PIT8253_CLK0(XTAL_24MHz / 3) /* Timer 0: clock to J2 comm port */
395   MCFG_PIT8253_CLK1(XTAL_24MHz / 3) /* Timer 1: clock to U31 */
396   MCFG_PIT8253_CLK2(XTAL_24MHz / 3) /* Timer 2: clock to U30 */
351   MCFG_PIT8253_CLK0(XTAL_24MHz / 3) /* Timer 0: ? */
352   MCFG_PIT8253_CLK1(XTAL_24MHz / 3) /* Timer 1: ? */
353   MCFG_PIT8253_CLK2(XTAL_24MHz / 3) /* Timer 2: ? */
397354
398355   MCFG_DEVICE_ADD("crtc", I8275, XTAL_14_31818MHz/7)
399356   MCFG_I8275_CHARACTER_WIDTH(8)
400357   MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(zorba_state, zorba_update_chr)
401358   MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w))
402   MCFG_I8275_IRQ_CALLBACK(WRITELINE(zorba_state, irq0_w))
359   MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
403360   MCFG_FD1793x_ADD("fdc", XTAL_24MHz / 24)
404   MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(zorba_state, fdc_intrq_w))
405   MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(zorba_state, fdc_drq_w))
406   //MCFG_WD_FDC_FORCE_READY
407361   MCFG_FLOPPY_DRIVE_ADD("fdc:0", zorba_floppies, "525dd", floppy_image_device::default_floppy_formats)
408362   MCFG_FLOPPY_DRIVE_ADD("fdc:1", zorba_floppies, "525dd", floppy_image_device::default_floppy_formats)
409363
410364   /* Keyboard */
411   MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
365   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
412366   MCFG_GENERIC_KEYBOARD_CB(WRITE8(zorba_state, kbd_put))
413367MACHINE_CONFIG_END
414368
r243669r243670
425379   ROM_REGION( 0x60, "proms", 0 )
426380   ROM_LOAD( "74ls288.u37", 0x0000, 0x0020, CRC(0a67edd6) SHA1(c1ece8978a3a061e0130d43907fa63a71e75e75d) )
427381   ROM_LOAD( "74ls288.u38", 0x0020, 0x0020, CRC(5ec93ea7) SHA1(3a84c098474b05d5cbe1939a3e15f66d06470581) )
428   ROM_LOAD( "74ls288.u77", 0x0040, 0x0020, CRC(946e03b0) SHA1(24240bdd7bdf507a5b51628fb36ad1266fc53a28) ) // suspected bad dump
382   ROM_LOAD( "74ls288.u77", 0x0040, 0x0020, CRC(946e03b0) SHA1(24240bdd7bdf507a5b51628fb36ad1266fc53a28) )
429383ROM_END
430384
431385COMP( 1982, zorba, 0, 0, zorba, zorba, zorba_state, zorba, "Telcon Industries", "Zorba", GAME_NOT_WORKING )
trunk/src/mess/layout/tc4.lay
r243669r243670
5454
5555   <!-- score panel -->
5656
57      <bezel element="static_white"><bounds x="0" y="0.9" width="4" height="0.1" /></bezel>
57      <bezel element="static_white"><bounds x="0" y="0.9" width="5" height="0.1" /></bezel>
5858      <bezel element="static_white"><bounds x="0" y="2" width="11" height="0.1" /></bezel>
5959      <bezel element="static_white"><bounds x="0" y="4.4" width="11" height="0.1" /></bezel>
6060
61      <bezel element="static_white"><bounds x="0.95" y="0.95" width="0.1" height="1.1" /></bezel>
6261      <bezel element="static_white"><bounds x="1.95" y="0.95" width="0.1" height="1.1" /></bezel>
6362      <bezel element="static_white"><bounds x="2.95" y="0.95" width="0.1" height="1.1" /></bezel>
64      <bezel element="static_white"><bounds x="3.95" y="0" width="0.1" height="2.05" /></bezel>
65      <bezel element="static_white"><bounds x="6.95" y="0" width="0.1" height="2.05" /></bezel>
63      <bezel element="static_white"><bounds x="3.95" y="0.95" width="0.1" height="1.1" /></bezel>
64      <bezel element="static_white"><bounds x="4.95" y="0" width="0.1" height="2.05" /></bezel>
65      <bezel element="static_white"><bounds x="7.95" y="0" width="0.1" height="2.05" /></bezel>
6666
67      <bezel element="text_1"><bounds x="0" y="1" width="1" height="1" /></bezel>
68      <bezel element="text_2"><bounds x="1" y="1" width="1" height="1" /></bezel>
69      <bezel element="text_3"><bounds x="2" y="1" width="1" height="1" /></bezel>
70      <bezel element="text_4"><bounds x="3" y="1" width="1" height="1" /></bezel>
67      <bezel element="text_1"><bounds x="1" y="1" width="1" height="1" /></bezel>
68      <bezel element="text_2"><bounds x="2" y="1" width="1" height="1" /></bezel>
69      <bezel element="text_3"><bounds x="3" y="1" width="1" height="1" /></bezel>
70      <bezel element="text_4"><bounds x="4" y="1" width="1" height="1" /></bezel>
7171
72      <bezel element="text_home"><bounds x="4" y="1" width="3" height="1" /></bezel>
73      <bezel element="text_visitor"><bounds x="7" y="1" width="4" height="1" /></bezel>
72      <bezel element="text_home"><bounds x="5" y="1" width="3" height="1" /></bezel>
73      <bezel element="text_visitor"><bounds x="8" y="1" width="3" height="1" /></bezel>
7474
7575
76      <bezel name="lamp77" element="led"><bounds x="0" y="3" width="1" height="1" /></bezel>
77      <bezel name="lamp87" element="led"><bounds x="1" y="3" width="1" height="1" /></bezel>
78      <bezel name="lamp97" element="led"><bounds x="2" y="3" width="1" height="1" /></bezel>
79      <bezel name="lamp57" element="led"><bounds x="3" y="3" width="1" height="1" /></bezel>
76      <bezel name="lamp77" element="led"><bounds x="1" y="3" width="1" height="1" /></bezel>
77      <bezel name="lamp87" element="led"><bounds x="2" y="3" width="1" height="1" /></bezel>
78      <bezel name="lamp97" element="led"><bounds x="3" y="3" width="1" height="1" /></bezel>
79      <bezel name="lamp57" element="led"><bounds x="4" y="3" width="1" height="1" /></bezel>
8080
81      <bezel name="digit5" element="digit"><bounds x="4.5" y="2.5" width="1" height="1.5" /></bezel>
82      <bezel name="digit9" element="digit"><bounds x="5.5" y="2.5" width="1" height="1.5" /></bezel>
83      <bezel name="digit8" element="digit"><bounds x="7.5" y="2.5" width="1" height="1.5" /></bezel>
84      <bezel name="digit7" element="digit"><bounds x="8.5" y="2.5" width="1" height="1.5" /></bezel>
81      <bezel name="digit5" element="digit"><bounds x="5.5" y="2.5" width="1" height="1.5" /></bezel>
82      <bezel name="digit9" element="digit"><bounds x="6.5" y="2.5" width="1" height="1.5" /></bezel>
83      <bezel name="digit8" element="digit"><bounds x="8.5" y="2.5" width="1" height="1.5" /></bezel>
84      <bezel name="digit7" element="digit"><bounds x="9.5" y="2.5" width="1" height="1.5" /></bezel>
8585
8686
8787
trunk/src/osd/sdl/sdl.mak
r243669r243670
728728
729729ifndef NO_USE_QTDEBUG
730730$(OSDOBJ)/%.moc.c: $(OSDSRC)/%.h
731   $(MOC) $(MOCINCPATH) $< -o $@
731   $(MOC) $(MOCINCPATH) $(DEFS) $< -o $@
732732
733733DEBUGOBJS = \
734734   $(OSDOBJ)/modules/debugger/qt/debuggerview.o \
trunk/src/osd/windows/drawdd.c
r243669r243670
5858      //ddcaps(0),
5959      //helcaps(0),
6060      membuffer(NULL),
61      membuffersize(0)
61      membuffersize(NULL)
6262   { }
6363
6464   virtual ~renderer_dd() { }
trunk/src/osd/windows/vconv.c
r243669r243670
8080   // warning C4189: 'xxx' : local variable is initialized but not referenced
8181   // warning C4191: 'type cast' : unsafe conversion from 'xxx' to 'xxx' // 64-bit only
8282   // warning C4201: nonstandard extension used : nameless struct/union
83   // warning C4232: nonstandard extension used : 'xxx' : address of dllimport 'xxx' is not static, identity not guaranteed
8483   // warning C4242: 'x' : conversion from 'xxx' to 'xxx', possible loss of data
8584   // warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
8685   // warning C4250: 'xxx' : inherits 'xxx' via dominance
r243669r243670
109108   // warning C4805: 'x' : unsafe mix of type 'xxx' and type 'xxx' in operation
110109   // warning C4820: 'xxx' : 'x' bytes padding added after data member 'xxx'
111110   // warning C4826: Conversion from 'type1 ' to 'type_2' is sign-extended. This may cause unexpected runtime behavior. // 32-bit only
112   { VS7,      "-Wall",                    "/Wall /W4 /wd4003 /wd4018 /wd4061 /wd4100 /wd4127 /wd4131 /wd4141 /wd4146 /wd4150 /wd4189 /wd4191 /wd4201 /wd4232 /wd4242 /wd4244 /wd4250 /wd4255 /wd4296 /wd4306 /wd4310 /wd4324 /wd4347 /wd4435 /wd4510 /wd4512 /wd4514 /wd4571 /wd4610 /wd4611 /wd4619 /wd4625 /wd4626 /wd4640 /wd4668 /wd4702 /wd4706 /wd4710 /wd4711 /wd4805 /wd4820 /wd4826" },
111   { VS7,      "-Wall",                    "/Wall /W4 /wd4003 /wd4018 /wd4061 /wd4100 /wd4127 /wd4131 /wd4141 /wd4146 /wd4150 /wd4189 /wd4191 /wd4201 /wd4242 /wd4244 /wd4250 /wd4255 /wd4296 /wd4306 /wd4310 /wd4324 /wd4347 /wd4435 /wd4510 /wd4512 /wd4514 /wd4571 /wd4610 /wd4611 /wd4619 /wd4625 /wd4626 /wd4640 /wd4668 /wd4702 /wd4706 /wd4710 /wd4711 /wd4805 /wd4820 /wd4826" },
113112   { 0,        "-Wall",                    "/W0" },
114113   { VS7,      "-Wno-unused",              "/wd4100 /wd4101 /wd4102 /wd4505" },
115114   { 0,        "-Wno-sign-compare",        "/wd4365 /wd4389 /wd4245 /wd4388" },
trunk/src/osd/windows/windows.mak
r243669r243670
432432
433433MOC = @moc
434434$(OSDOBJ)/%.moc.c: $(OSDSRC)/%.h
435   $(MOC) $(INCPATH) $< -o $@
435   $(MOC) $(INCPATH) $(DEFS) $< -o $@
436436
437437OSDOBJS += \
438438   $(OSDOBJ)/modules/debugger/qt/debugqtview.o \


Previous 199869 Revisions Next


© 1997-2024 The MAME Team