Previous 199869 Revisions Next

r35165 Saturday 21st February, 2015 at 05:43:19 UTC by Miodrag Milanović
Merge pull request #139 from cuavas/master

Debugger love: Windows edition
[3rdparty/sqlite3]sqlite3.c
[src/emu]input.c input.h ioport.c
[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
r243676r243677
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
86498644#if (defined(i386)     || defined(__i386__)   || defined(_M_IX86) ||    \
86508645     defined(__x86_64) || defined(__x86_64__) || defined(_M_X64)  ||    \
86518646     defined(_M_AMD64) || defined(_M_ARM)     || defined(__x86)   ||    \
r243676r243677
86638658# define SQLITE_UTF16NATIVE  SQLITE_UTF16BE
86648659#endif
86658660#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)
r243676r243677
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, #zName, 0, 0}
10859   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, (char*)#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, #zName, 0, 0}
10862   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, (char*)#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, #zName, 0, 0}
10865   SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, (char*)#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, #zName, 0, 0}
10868   pArg, 0, xFunc, 0, 0, (char*)#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, #zName, 0, 0}
10871   (void *)arg, 0, likeFunc, 0, 0, (char*)#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,#zName,0,0}
10874   SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,(char*)#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,#zName,0,0}
10877   SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,(char*)#zName,0,0}
1087810878
1087910879/*
1088010880** All current savepoints are stored in a linked list starting at
r243676r243677
2120221202        /* Normalize realvalue to within 10.0 > realvalue >= 1.0 */
2120321203        exp = 0;
2120421204        if( sqlite3IsNaN((double)realvalue) ){
21205          bufpt = "NaN";
21205          bufpt = (char *)"NaN";
2120621206          length = 3;
2120721207          break;
2120821208        }
r243676r243677
2121721217          while( realvalue<1.0 ){ realvalue *= 10.0; exp--; }
2121821218          if( exp>350 ){
2121921219            if( prefix=='-' ){
21220              bufpt = "-Inf";
21220              bufpt = (char *)"-Inf";
2122121221            }else if( prefix=='+' ){
21222              bufpt = "+Inf";
21222              bufpt =(char *) "+Inf";
2122321223            }else{
21224              bufpt = "Inf";
21224              bufpt = (char *)"Inf";
2122521225            }
2122621226            length = sqlite3Strlen30(bufpt);
2122721227            break;
r243676r243677
2137521375          bufpt = va_arg(ap,char*);
2137621376        }
2137721377        if( bufpt==0 ){
21378          bufpt = "";
21378          bufpt = (char *)"";
2137921379        }else if( xtype==etDYNSTRING && !bArgList ){
2138021380          zExtra = bufpt;
2138121381        }
r243676r243677
2140021400          escarg = va_arg(ap,char*);
2140121401        }
2140221402        isnull = escarg==0;
21403        if( isnull ) escarg = (xtype==etSQLESCAPE2 ? "NULL" : "(NULL)");
21403        if( isnull ) escarg = (char *)(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++;
r243676r243677
2218222182    assert( rc!=WAIT_IO_COMPLETION );
2218322183    bRc = CloseHandle((HANDLE)p->tid);
2218422184    assert( bRc );
22185   (void)bRc;
2218522186  }
2218622187  if( rc==WAIT_OBJECT_0 ) *ppOut = p->pResult;
2218722188  sqlite3_free(p);
r243676r243677
2230222303** The following constant value is used by the SQLITE_BIGENDIAN and
2230322304** SQLITE_LITTLEENDIAN macros.
2230422305*/
22305SQLITE_PRIVATE const int sqlite3one = 1;
22306//SQLITE_PRIVATE const int sqlite3one = 1;
2230622307#endif /* SQLITE_AMALGAMATION */
2230722308
2230822309/*
r243676r243677
2591925920  const char *zPath,              /* File path associated with error */
2592025921  int iLine                       /* Source line number where error occurred */
2592125922){
25922  char *zErr;                     /* Message from strerror() or equivalent */
25923  const char *zErr;                     /* Message from strerror() or equivalent */
2592325924  int iErrno = errno;             /* Saved syscall error number */
2592425925
2592525926  /* If this is not a threadsafe build (SQLITE_THREADSAFE==0), then use
r243676r243677
6431264313        sqlite3_snprintf(nTemp, zTemp, "NULL");
6431364314      }else{
6431464315        assert( pMem->flags & MEM_Blob );
64315        zP4 = "(blob)";
64316        zP4 = (char *)"(blob)";
6431664317      }
6431764318      break;
6431864319    }
r243676r243677
8631186312  statInit,        /* xFunc */
8631286313  0,               /* xStep */
8631386314  0,               /* xFinalize */
86314  "stat_init",     /* zName */
86315  (char*)"stat_init",     /* zName */
8631586316  0,               /* pHash */
8631686317  0                /* pDestructor */
8631786318};
r243676r243677
8661286613  statPush,        /* xFunc */
8661386614  0,               /* xStep */
8661486615  0,               /* xFinalize */
86615  "stat_push",     /* zName */
86616  (char*)"stat_push",     /* zName */
8661686617  0,               /* pHash */
8661786618  0                /* pDestructor */
8661886619};
r243676r243677
8675986760  statGet,         /* xFunc */
8676086761  0,               /* xStep */
8676186762  0,               /* xFinalize */
86762  "stat_get",      /* zName */
86763  (char*)"stat_get",      /* zName */
8676386764  0,               /* pHash */
8676486765  0                /* pDestructor */
8676586766};
r243676r243677
8810588106    detachFunc,       /* xFunc */
8810688107    0,                /* xStep */
8810788108    0,                /* xFinalize */
88108    "sqlite_detach",  /* zName */
88109    (char*)"sqlite_detach",  /* zName */
8810988110    0,                /* pHash */
8811088111    0                 /* pDestructor */
8811188112  };
r243676r243677
8812688127    attachFunc,       /* xFunc */
8812788128    0,                /* xStep */
8812888129    0,                /* xFinalize */
88129    "sqlite_attach",  /* zName */
88130    (char*)"sqlite_attach",  /* zName */
8813088131    0,                /* pHash */
8813188132    0                 /* pDestructor */
8813288133  };
r243676r243677
9008290083static char *createTableStmt(sqlite3 *db, Table *p){
9008390084  int i, k, n;
9008490085  char *zStmt;
90085  char *zSep, *zSep2, *zEnd;
90086  const char *zSep, *zSep2, *zEnd;
9008690087  Column *pCol;
9008790088  n = 0;
9008890089  for(pCol = p->aCol, i=0; i<p->nCol; i++, pCol++){
r243676r243677
9031790318      if( !hasColumn(pPk->aiColumn, j, i) ){
9031890319        assert( j<pPk->nColumn );
9031990320        pPk->aiColumn[j] = i;
90320        pPk->azColl[j] = "BINARY";
90321        pPk->azColl[j] = (char *)"BINARY";
9032190322        j++;
9032290323      }
9032390324    }
r243676r243677
9041890419  if( !db->init.busy ){
9041990420    int n;
9042090421    Vdbe *v;
90421    char *zType;    /* "view" or "table" */
90422    char *zType2;   /* "VIEW" or "TABLE" */
90422    const char *zType;    /* "view" or "table" */
90423    const char *zType2;   /* "VIEW" or "TABLE" */
9042390424    char *zStmt;    /* Text of the CREATE TABLE or CREATE VIEW statement */
9042490425
9042590426    v = sqlite3GetVdbe(pParse);
r243676r243677
9164291643      nExtra -= nColl;
9164391644    }else{
9164491645      zColl = pTab->aCol[j].zColl;
91645      if( !zColl ) zColl = "BINARY";
91646      if( !zColl ) zColl = (char *)"BINARY";
9164691647    }
9164791648    if( !db->init.busy && !sqlite3LocateCollSeq(pParse, zColl) ){
9164891649      goto exit_create_index;
r243676r243677
9166791668    assert( i==pIndex->nColumn );
9166891669  }else{
9166991670    pIndex->aiColumn[i] = -1;
91670    pIndex->azColl[i] = "BINARY";
91671    pIndex->azColl[i] = (char *)"BINARY";
9167191672  }
9167291673  sqlite3DefaultRowEst(pIndex);
9167391674  if( pParse->pNewTable==0 ) estimateIndexWidth(pIndex);
r243676r243677
9621996220          ** unusable. Bail out early in this case.  */
9622096221          zDfltColl = pParent->aCol[iCol].zColl;
9622196222          if( !zDfltColl ){
96222            zDfltColl = "BINARY";
96223            zDfltColl = (char *)"BINARY";
9622396224          }
9622496225          if( sqlite3StrICmp(pIdx->azColl[i], zDfltColl) ) break;
9622596226
r243676r243677
101462101463** journal-mode name.
101463101464*/
101464101465SQLITE_PRIVATE const char *sqlite3JournalModename(int eMode){
101465  static char * const azModeName[] = {
101466  static const char * azModeName[] = {
101466101467    "delete", "persist", "off", "truncate", "memory"
101467101468#ifndef SQLITE_OMIT_WAL
101468101469     , "wal"
r243676r243677
102832102833  */
102833102834  case PragTyp_ENCODING: {
102834102835    static const struct EncName {
102835      char *zName;
102836      const char *zName;
102836102837      u8 enc;
102837102838    } encnames[] = {
102838102839      { "UTF8",     SQLITE_UTF8        },
r243676r243677
105140105141** Name of the connection operator, used for error messages.
105141105142*/
105142105143static const char *selectOpName(int id){
105143  char *z;
105144  const char *z;
105144105145  switch( id ){
105145105146    case TK_ALL:       z = "UNION ALL";   break;
105146105147    case TK_INTERSECT: z = "INTERSECT";   break;
r243676r243677
105607105608      if( iCol<0 ) iCol = pTab->iPKey;
105608105609      assert( iCol==-1 || (iCol>=0 && iCol<pTab->nCol) );
105609105610      if( iCol<0 ){
105610        zCol = "rowid";
105611        zCol = (char*)"rowid";
105611105612      }else{
105612105613        zCol = pTab->aCol[iCol].zName;
105613105614      }
r243676r243677
111848111849  */
111849111850  nDb = db->nDb;
111850111851  if( sqlite3TempInMemory(db) ){
111851    zSql = "ATTACH ':memory:' AS vacuum_db;";
111852    zSql = (char*)"ATTACH ':memory:' AS vacuum_db;";
111852111853  }else{
111853    zSql = "ATTACH '' AS vacuum_db;";
111854    zSql = (char*)"ATTACH '' AS vacuum_db;";
111854111855  }
111855111856  rc = execSql(db, pzErrMsg, zSql);
111856111857  if( db->nDb>nDb ){
r243676r243677
115270115271  pIdx = sqlite3AllocateIndexObject(pParse->db, nKeyCol+1, 0, &zNotUsed);
115271115272  if( pIdx==0 ) return;
115272115273  pLoop->u.btree.pIndex = pIdx;
115273  pIdx->zName = "auto-index";
115274  pIdx->zName = (char*)"auto-index";
115274115275  pIdx->pTable = pTable;
115275115276  n = 0;
115276115277  idxCols = 0;
r243676r243677
115285115286        idxCols |= cMask;
115286115287        pIdx->aiColumn[n] = pTerm->u.leftColumn;
115287115288        pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight);
115288        pIdx->azColl[n] = ALWAYS(pColl) ? pColl->zName : "BINARY";
115289        pIdx->azColl[n] = ALWAYS(pColl) ? pColl->zName : (char*)"BINARY";
115289115290        n++;
115290115291      }
115291115292    }
r243676r243677
115297115298  for(i=0; i<mxBitCol; i++){
115298115299    if( extraCols & MASKBIT(i) ){
115299115300      pIdx->aiColumn[n] = i;
115300      pIdx->azColl[n] = "BINARY";
115301      pIdx->azColl[n] = (char*)"BINARY";
115301115302      n++;
115302115303    }
115303115304  }
115304115305  if( pSrc->colUsed & MASKBIT(BMS-1) ){
115305115306    for(i=BMS-1; i<pTable->nCol; i++){
115306115307      pIdx->aiColumn[n] = i;
115307      pIdx->azColl[n] = "BINARY";
115308      pIdx->azColl[n] = (char*)"BINARY";
115308115309      n++;
115309115310    }
115310115311  }
115311115312  assert( n==nKeyCol );
115312115313  pIdx->aiColumn[n] = -1;
115313  pIdx->azColl[n] = "BINARY";
115314  pIdx->azColl[n] = (char*)"BINARY";
115314115315
115315115316  /* Create the automatic index */
115316115317  assert( pLevel->iIdxCur>=0 );
r243676r243677
116377116378  if( nEq==0 && (pLoop->wsFlags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ) return;
116378116379  sqlite3StrAccumAppend(pStr, " (", 2);
116379116380  for(i=0; i<nEq; i++){
116380    char *z = aiColumn[i] < 0 ? "rowid" : aCol[aiColumn[i]].zName;
116381    char *z = aiColumn[i] < 0 ? (char*)"rowid" : aCol[aiColumn[i]].zName;
116381116382    if( i>=nSkip ){
116382116383      explainAppendTerm(pStr, i, z, "=");
116383116384    }else{
r243676r243677
116388116389
116389116390  j = i;
116390116391  if( pLoop->wsFlags&WHERE_BTM_LIMIT ){
116391    char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName;
116392    char *z = aiColumn[j] < 0 ? (char*)"rowid" : aCol[aiColumn[j]].zName;
116392116393    explainAppendTerm(pStr, i++, z, ">");
116393116394  }
116394116395  if( pLoop->wsFlags&WHERE_TOP_LIMIT ){
116395    char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName;
116396    char *z = aiColumn[j] < 0 ? (char*)"rowid" : aCol[aiColumn[j]].zName;
116396116397    explainAppendTerm(pStr, i, z, "<");
116397116398  }
116398116399  sqlite3StrAccumAppend(pStr, ")", 1);
r243676r243677
127315127316          mask = SQLITE_OPEN_SHAREDCACHE|SQLITE_OPEN_PRIVATECACHE;
127316127317          aMode = aCacheMode;
127317127318          limit = mask;
127318          zModeType = "cache";
127319          zModeType = (char*)"cache";
127319127320        }
127320127321        if( nOpt==4 && memcmp("mode", zOpt, 4)==0 ){
127321127322          static struct OpenMode aOpenMode[] = {
r243676r243677
127330127331                   | SQLITE_OPEN_CREATE | SQLITE_OPEN_MEMORY;
127331127332          aMode = aOpenMode;
127332127333          limit = mask & flags;
127333          zModeType = "access";
127334          zModeType = (char*)"access";
127334127335        }
127335127336
127336127337        if( aMode ){
r243676r243677
127559127560  /* The default safety_level for the main database is 'full'; for the temp
127560127561  ** database it is 'NONE'. This matches the pager layer defaults. 
127561127562  */
127562  db->aDb[0].zName = "main";
127563  db->aDb[0].zName = (char*)"main";
127563127564  db->aDb[0].safety_level = 3;
127564  db->aDb[1].zName = "temp";
127565  db->aDb[1].zName = (char*)"temp";
127565127566  db->aDb[1].safety_level = 1;
127566127567
127567127568  db->magic = SQLITE_MAGIC_OPEN;
trunk/src/emu/input.c
r243676r243677
422422
423423// standard joystick mappings
424424const char          joystick_map_8way[] = "7778...4445";
425const char          joystick_map_4way_sticky[] = "s8.4s8.44s8.4445";
426425const 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
430429//**************************************************************************
431430//  JOYSTICK MAP
432431//**************************************************************************
trunk/src/emu/input.h
r243676r243677
11351135
11361136// joystick maps
11371137extern const char joystick_map_8way[];
1138extern const char joystick_map_4way_sticky[];
11391138extern const char joystick_map_4way_diagonal[];
11401139
11411140
trunk/src/emu/ioport.c
r243676r243677
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      //  when using a keyboard for input, and maximizes responsiveness.
788      //  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
r243676r243677
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 joysticks and change the default map if we find any
2522   // look for 4-way diagonal 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->way() == 4)
2527            if (field->live().joystick != NULL && field->rotated())
25282528            {
2529               machine().input().set_global_joystick_map(field->rotated() ? joystick_map_4way_diagonal : joystick_map_4way_sticky);
2529               machine().input().set_global_joystick_map(joystick_map_4way_diagonal);
25302530               break;
25312531            }
25322532
trunk/src/lib/lib.mak
r243676r243677
598598
599599$(LIBOBJ)/sqlite3/sqlite3.o: $(3RDPARTY)/sqlite3/sqlite3.c | $(OSPREBUILD)
600600   @echo Compiling $<...
601   $(CC) $(CDEFS) $(CONLYFLAGS) -Wno-bad-function-cast -I$(3RDPARTY)/sqlite3 $(SQLITE3_FLAGS) -c $< -o $@
601   $(CC) $(CDEFS) $(CCOMFLAGS) $(CONLYFLAGS) -Wno-bad-function-cast -Wno-undef -I$(3RDPARTY)/sqlite3 $(SQLITE3_FLAGS) -c $< -o $@
602602
603603#-------------------------------------------------
604604# BGFX library objects
trunk/src/mame/audio/skydiver.c
r243676r243677
4343
4444DISCRETE_SOUND_START(skydiver)
4545   /************************************************/
46   /* skydiver  Effects Relataive Gain Table       */
46   /* skydiver  Effects Relative 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
r243676r243677
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"),
110109         m_ms32_roz_ctrl(*this, "roz_ctrl"),
111110         m_ms32_spram(*this, "spram"),
112111         m_ms32_tx0_scroll(*this, "tx0_scroll"),
113112         m_ms32_bg0_scroll(*this, "bg0_scroll"),
114113         m_ms32_tx1_scroll(*this, "tx1_scroll"),
115         m_ms32_bg1_scroll(*this, "bg1_scroll")  { }
114         m_ms32_bg1_scroll(*this, "bg1_scroll"),
115         m_p1_keys(*this, "P1KEY"),
116         m_p2_keys(*this, "P2KEY") { }
116117
117118   tilemap_t *m_ms32_tx_tilemap[2];
118119   tilemap_t *m_ms32_bg_tilemap[2];
r243676r243677
123124   required_shared_ptr<UINT32> m_ms32_bg1_ram;
124125   required_shared_ptr<UINT32> m_ms32_roz0_ram;
125126   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
133137   UINT32 m_bnstars1_mahjong_select;
134138   DECLARE_WRITE32_MEMBER(ms32_tx0_ram_w);
135139   DECLARE_WRITE32_MEMBER(ms32_tx1_ram_w);
r243676r243677
137141   DECLARE_WRITE32_MEMBER(ms32_bg1_ram_w);
138142   DECLARE_WRITE32_MEMBER(ms32_roz0_ram_w);
139143   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);
143144   DECLARE_WRITE32_MEMBER(bnstars1_mahjong_select_w);
145   DECLARE_CUSTOM_INPUT_MEMBER(mahjong_ctrl_r);
144146   DECLARE_DRIVER_INIT(bnstars);
145147   TILE_GET_INFO_MEMBER(get_ms32_tx0_tile_info);
146148   TILE_GET_INFO_MEMBER(get_ms32_tx1_tile_info);
r243676r243677
153155   UINT32 screen_update_bnstars_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
154156   UINT32 screen_update_bnstars_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
155157   void draw_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int chip);
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);
158   void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size);
158159};
159160
160161
r243676r243677
176177   tileno = m_ms32_tx1_ram[tile_index *2+0] & 0x0000ffff;
177178   colour = m_ms32_tx1_ram[tile_index *2+1] & 0x0000000f;
178179
179   SET_TILE_INFO_MEMBER(7,tileno,colour,0);
180   SET_TILE_INFO_MEMBER(6,tileno,colour,0);
180181}
181182
182183WRITE32_MEMBER(bnstars_state::ms32_tx0_ram_w)
r243676r243677
210211   tileno = m_ms32_bg1_ram[tile_index *2+0] & 0x0000ffff;
211212   colour = m_ms32_bg1_ram[tile_index *2+1] & 0x0000000f;
212213
213   SET_TILE_INFO_MEMBER(6,tileno,colour,0);
214   SET_TILE_INFO_MEMBER(5,tileno,colour,0);
214215}
215216
216217WRITE32_MEMBER(bnstars_state::ms32_bg0_ram_w)
r243676r243677
329330   tileno = m_ms32_roz1_ram[tile_index *2+0] & 0x0000ffff;
330331   colour = m_ms32_roz1_ram[tile_index *2+1] & 0x0000000f;
331332
332   SET_TILE_INFO_MEMBER(5,tileno,colour,0);
333   SET_TILE_INFO_MEMBER(4,tileno,colour,0);
333334}
334335
335336WRITE32_MEMBER(bnstars_state::ms32_roz0_ram_w)
r243676r243677
345346}
346347
347348
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
372349/* SPRITES based on tetrisp2 for now, readd priority bits later */
373void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region)
350void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size)
374351{
375352/***************************************************************************
376353
r243676r243677
412389   int tx, ty, sx, sy, flipx, flipy;
413390   int xsize, ysize, xzoom, yzoom;
414391   int code, attr, color, size, pri, pri_mask;
415   gfx_element *gfx = m_gfxdecode->gfx(region);
392   gfx_element *gfx = m_gfxdecode->gfx(0);
416393
417394   UINT32      *source = sprram_top;
418395   const UINT32    *finish = sprram_top + (sprram_size - 0x10) / 4;
r243676r243677
538515   m_ms32_tx_tilemap[0]->draw(screen, bitmap, cliprect, 0,4);
539516
540517
541   draw_sprites(screen,bitmap,cliprect, m_ms32_spram, 0x20000, 0);
518   draw_sprites(screen,bitmap,cliprect, m_ms32_spram, 0x20000);
542519
543520   return 0;
544521}
r243676r243677
547524{
548525   screen.priority().fill(0, cliprect);
549526
550   bitmap.fill(0x8000+0, cliprect);    /* bg color */
527   bitmap.fill(0, cliprect);    /* bg color */
551528
552529
553530   m_ms32_bg_tilemap[1]->set_scrollx(0, m_ms32_bg1_scroll[0x00/4] + m_ms32_bg1_scroll[0x08/4] + 0x10 );
r243676r243677
560537   m_ms32_tx_tilemap[1]->set_scrolly(0, m_ms32_tx1_scroll[0x0c/4] + m_ms32_tx1_scroll[0x14/4]);
561538   m_ms32_tx_tilemap[1]->draw(screen, bitmap, cliprect, 0,4);
562539
563   draw_sprites(screen,bitmap,cliprect, m_ms32_spram+(0x20000/4), 0x20000, 4);
540   draw_sprites(screen,bitmap,cliprect, m_ms32_spram+(0x20000/4), 0x20000);
564541
565542   return 0;
566543}
567544
568545static INPUT_PORTS_START( bnstars )
569   PORT_START("IN0")
570   PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 )
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 )
571556   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_A )
572557   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_E )
573558   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
574559   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_I )
575560   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
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 ) )
561   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
650562
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 ) )
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 )
738571
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 ) )
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 )
826580
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 ) )
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 )
916588
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 ) )
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 )
965592   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN2 )
966   PORT_DIPNAME(     0x00020000, 0x00020000, "MAH9" )
967   PORT_DIPSETTING(  0x00020000, DEF_STR( Off ) )
968   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
593   PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN )
969594   PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE2 )
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 ) )
595   PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test?") PORT_CODE(KEYCODE_F2)
1009596
1010   PORT_START("IN5")
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")
1011633   PORT_DIPNAME(     0x00000001, 0x00000001, "Test Mode" ) PORT_DIPLOCATION("SW1:8")
1012634   PORT_DIPSETTING(  0x00000001, DEF_STR( Off ) )
1013635   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
r243676r243677
1032654   PORT_DIPSETTING(  0x00000060, DEF_STR( 1C_2C ) )
1033655   PORT_DIPSETTING(  0x000000a0, DEF_STR( 1C_3C ) )
1034656   PORT_DIPSETTING(  0x00000020, DEF_STR( 1C_4C ) )
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 ) )
657
658   PORT_DIPUNUSED_DIPLOC( 0x00000100, 0x00000100, "SW2:8" )
659   PORT_DIPUNUSED_DIPLOC( 0x00000200, 0x00000200, "SW2:7" )
1041660   PORT_DIPNAME(     0x00000400, 0x00000400, "Taisen Only" ) PORT_DIPLOCATION("SW2:6")
1042661   PORT_DIPSETTING(  0x00000400, DEF_STR( Off ) )
1043662   PORT_DIPSETTING(  0x00000000, DEF_STR( On ) )
r243676r243677
1057676   PORT_DIPSETTING(  0x0000a000, DEF_STR( Harder ) )
1058677   PORT_DIPSETTING(  0x00002000, DEF_STR( Hardest ) )
1059678
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 ) )
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?
1206688INPUT_PORTS_END
1207689
1208690
1209
1210691/* sprites are contained in 256x256 "tiles" */
1211692static GFXLAYOUT_RAW( spritelayout, 256, 256, 256*8, 256*256*8 )
1212693static GFXLAYOUT_RAW( bglayout, 16, 16, 16*8, 16*16*8 )
r243676r243677
1218699   GFXDECODE_ENTRY( "gfx4", 0, bglayout,     0x1000, 0x10 ) /* Bg scr1 */
1219700   GFXDECODE_ENTRY( "gfx5", 0, txlayout,     0x6000, 0x10 ) /* Tx scr1 */
1220701
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
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 */
1226705GFXDECODE_END
1227706
1228READ32_MEMBER(bnstars_state::bnstars1_r)
707CUSTOM_INPUT_MEMBER(bnstars_state::mahjong_ctrl_r)
1229708{
709   required_ioport_array<4> &keys = (param == 0) ? m_p1_keys : m_p2_keys;
710   
1230711   switch (m_bnstars1_mahjong_select & 0x2080)
1231712   {
1232713      default:
1233714         printf("unk bnstars1_r %08x\n",m_bnstars1_mahjong_select);
1234         return 0xffffffff;
715         return 0xff;
1235716
1236717      case 0x0000:
1237         return ioport("IN0")->read();
718         return keys[0]->read();
1238719
1239720      case 0x0080:
1240         return ioport("IN1")->read();
721         return keys[1]->read();
1241722
1242723      case 0x2000:
1243         return ioport("IN2")->read();
724         return keys[2]->read();
1244725
1245726      case 0x2080:
1246         return ioport("IN3")->read();
1247
727         return keys[3]->read();
1248728   }
1249729}
1250730
r243676r243677
1260740
1261741   AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w)
1262742
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")
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")
1266746
1267747   AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP
1268748   AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w)
r243676r243677
1286766   /* wrote together */
1287767   AM_RANGE(0xfd040000, 0xfd047fff) AM_RAM // priority ram
1288768   AM_RANGE(0xfd080000, 0xfd087fff) AM_RAM
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")
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")
1291771   AM_RANGE(0xfe000000, 0xfe01ffff) AM_RAM_WRITE(ms32_roz1_ram_w) AM_SHARE("roz1_ram")
1292772   AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM_WRITE(ms32_roz0_ram_w) AM_SHARE("roz0_ram")
1293773   AM_RANGE(0xfe800000, 0xfe83ffff) AM_RAM AM_SHARE("spram")
r243676r243677
1297777   AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE(ms32_bg0_ram_w) AM_SHARE("bg0_ram")
1298778
1299779   AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM
1300   AM_RANGE(0xffe00000, 0xffffffff) AM_ROMBANK("bank1")
780   AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0)
1301781ADDRESS_MAP_END
1302782
1303783static ADDRESS_MAP_START( bnstars_sound_map, AS_PROGRAM, 8, bnstars_state )
r243676r243677
1335815
1336816   MCFG_QUANTUM_TIME(attotime::from_hz(60000))
1337817
1338
1339818   MCFG_GFXDECODE_ADD("gfxdecode", "palette", bnstars)
1340   MCFG_PALETTE_ADD("palette", 0x8000*2)
1341819
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
1342828   MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
1343829
1344830   MCFG_SCREEN_ADD("lscreen", RASTER)
r243676r243677
1355841   MCFG_SCREEN_SIZE(40*8, 32*8)
1356842   MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
1357843   MCFG_SCREEN_UPDATE_DRIVER(bnstars_state, screen_update_bnstars_right)
1358   MCFG_SCREEN_PALETTE("palette")
844   MCFG_SCREEN_PALETTE("palette2")
1359845
1360846
1361847   /* sound hardware */
r243676r243677
1415901   ROM_LOAD( "vsjanshi5.6", 0x000000, 0x080000, CRC(fdbbac21) SHA1(c77d852e53126cc8ebfe1e79d1134e42b54d1aab) )
1416902
1417903   /* Sound Program (one, driving both screen sound) */
1418   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
904   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
1419905   ROM_LOAD( "sb93145.5",  0x000000, 0x040000, CRC(0424e899) SHA1(fbcdebfa3d5f52b10cf30f7e416f5f53994e4d55) )
1420   ROM_RELOAD(              0x010000, 0x40000 )
1421906
1422907   /* Samples #1 (Screen 1?) */
1423908   ROM_REGION( 0x400000, "ymf1", 0 ) /* samples - 8-bit signed PCM */
r243676r243677
1439924   decrypt_ms32_tx(machine(), 0x00020,0x7e, "gfx7");
1440925   decrypt_ms32_bg(machine(), 0x00001,0x9b, "gfx6");
1441926
1442   membank("bank1")->set_base(memregion("maincpu")->base());
1443927   configure_banks();
1444928}
1445929
trunk/src/mame/drivers/ms32.c
r243676r243677
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_ROMBANK("bank1")                                                AM_MIRROR(0x3c000000) // ROM is 32-bit wide, 0x200000 in size */
356   AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROM AM_REGION("maincpu", 0)                            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? */
r243676r243677
13751375
13761376void ms32_state::machine_reset()
13771377{
1378   membank("bank1")->set_base(memregion("maincpu")->base());
13791378   membank("bank4")->set_entry(0);
13801379   membank("bank5")->set_entry(1);
13811380   irq_init();
r243676r243677
14601459   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
14611460   ROM_LOAD( "bbbx32-2.bin",0x000000, 0x080000, CRC(3ffdae75) SHA1(2b837d28f7ecdd49e8525bd5c249e83021d5fe9f) )
14621461
1463   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1462   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
14641463   ROM_LOAD( "bbbx21.bin",  0x000000, 0x040000, CRC(5f3ea01f) SHA1(761f6a5852312d2b12de009f3cf0476f5b2e906c) )
1465   ROM_RELOAD(              0x010000, 0x40000 )
14661464
14671465   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
14681466   ROM_LOAD( "bbbx22.bin",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243676r243677
14981496   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
14991497   ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) )
15001498
1501   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1499   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
15021500   ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) )
1503   ROM_RELOAD(              0x010000, 0x40000 )
15041501
15051502   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
15061503   ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) )
r243676r243677
15361533   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
15371534   ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) )
15381535
1539   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1536   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
15401537   ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) )
1541   ROM_RELOAD(              0x010000, 0x40000 )
15421538
15431539   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
15441540   ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) )
r243676r243677
15761572   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
15771573   ROM_LOAD( "93166-30.41", 0x000000, 0x080000, CRC(980ab89c) SHA1(8468fc13a5988e25750e8d99ff464f46e86ab412) )
15781574
1579   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1575   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
15801576   ROM_LOAD( "93166-21.30", 0x000000, 0x040000, CRC(9300be4c) SHA1(a8e9c1704abf26545aeb9a5d28fd0cafd38f2d84) )
1581   ROM_RELOAD(              0x010000, 0x40000 )
15821577
15831578   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
15841579   ROM_LOAD( "92042-01.33", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243676r243677
16311626   ROM_LOAD( "f1sb4b.bin", 0x400000, 0x200000, CRC(077180c5) SHA1(ab16739da709ecdbbb1264beba349ef6ecf3f8b1) )
16321627   ROM_LOAD( "f1sb5b.bin", 0x600000, 0x200000, CRC(efabc47d) SHA1(195afde8a1f45da4fc04c3080a3cf5fdfff7be5e) )
16331628
1634   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1629   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
16351630   ROM_LOAD( "f1sb21.bin", 0x000000, 0x040000, CRC(e131e1c7) SHA1(33f95a074930c49548069518d8c6dcde7fa25627) )
1636   ROM_RELOAD(              0x010000, 0x40000 )
16371631
16381632   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
16391633   ROM_LOAD( "f1sb24.bin", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243676r243677
16681662   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
16691663   ROM_LOAD( "94019_2.030",0x000000, 0x080000, CRC(f9543fcf) SHA1(8466c7893bc6c43e2a80b8f91a776fd0a345ea6c) )
16701664
1671   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1665   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
16721666   ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) )
1673   ROM_RELOAD(              0x010000, 0x40000 )
16741667
16751668   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
16761669   ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common rom?
r243676r243677
17051698   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
17061699   ROM_LOAD( "94019.030",0x000000, 0x080000, CRC(026b5379) SHA1(b9237477f1bf8ae83174e8231492fe667e6d6a13) )
17071700
1708   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1701   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
17091702   ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) )
1710   ROM_RELOAD(              0x010000, 0x40000 )
17111703
17121704   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
17131705   ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common rom?
r243676r243677
17451737   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
17461738   ROM_LOAD( "mr94041.30", 0x000000, 0x080000, CRC(c0f27b7f) SHA1(874fe80aa4b46520f844ef6efa61f28eabccbc4f) )
17471739
1748   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1740   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
17491741   ROM_LOAD( "mr94041.21", 0x000000, 0x040000, CRC(38dcb837) SHA1(29fdde54e52dec4ee39a6f2db8e0d67774320d15) )
1750   ROM_RELOAD(              0x010000, 0x40000 )
17511742
17521743   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
17531744   ROM_LOAD( "mr94041.13", 0x000000, 0x200000, CRC(fba84caf) SHA1(318270dbf825a8e0f315992c49a2dc34dd1df7c1) )
r243676r243677
17811772   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
17821773   ROM_LOAD( "mb93138a.32", 0x000000, 0x080000, CRC(f563a144) SHA1(14d86e4992329811857e1faf282cd9ec530a364c) )
17831774
1784   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1775   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
17851776   ROM_LOAD( "mb93138a.21", 0x000000, 0x040000, CRC(8e8048b0) SHA1(93285a0570ed829b36f4e8c57d133a7dd14f123d) )
1786   ROM_RELOAD(              0x010000, 0x40000 )
17871777
17881778   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
17891779   ROM_LOAD( "mr92042.01",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243676r243677
18861876   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
18871877   ROM_LOAD( "mb93138.32", 0x000000, 0x080000, CRC(df5d00b4) SHA1(2bbbcd546d5b5170d81bf33b37b46b70b417c9c7) )
18881878
1889   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1879   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
18901880   ROM_LOAD( "mb93138.21", 0x000000, 0x040000, CRC(008bc217) SHA1(eec66a86f285ccbc47eba17a4bb83cc1f8a5f425) )
1891   ROM_RELOAD(              0x010000, 0x40000 )
18921881
18931882   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
18941883   ROM_LOAD( "mr92042.01",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243676r243677
19251914   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
19261915   ROM_LOAD( "mr95025.30",  0x000000, 0x080000, CRC(aee6e0c2) SHA1(dee985f7a9773ba7a4d31a3833a7775d778bbe5a) )
19271916
1928   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1917   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
19291918   ROM_LOAD( "mr95025.21",  0x000000, 0x040000, CRC(a6c70c7f) SHA1(fe2108f3e8d46ed53d8c5c98e8d0fdb19b77075d) )
1930   ROM_RELOAD(              0x010000, 0x40000 )
19311919
19321920   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
19331921   ROM_LOAD( "mr95025.12",  0x000000, 0x200000, CRC(1dd4f766) SHA1(455befd3a216f2197cd2e7e4899d4f1af7d20bf7) )
r243676r243677
19631951   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
19641952   ROM_LOAD( "93166.30",  0x000000, 0x080000, CRC(1807c1ea) SHA1(94696b8319c4982cb5d33423f56e2348f210cdb5) )
19651953
1966   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1954   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
19671955   ROM_LOAD( "93166.21",  0x000000, 0x040000, CRC(01a03687) SHA1(2340c4ed19f434e8c23709edfc93259313aefaf9))
1968   ROM_RELOAD(              0x010000, 0x40000 )
19691956
19701957   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
19711958   ROM_LOAD( "95008-11.22",  0x000000, 0x200000, CRC(23b9af76) SHA1(98b4087c142500dc759bda94d71c77634452a7ad))
r243676r243677
20031990   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
20041991   ROM_LOAD( "p47-30.bin",  0x000000, 0x080000, CRC(7ba90fad) SHA1(c0a3d4458816f00b8f5eb4b6d4531d1abeaccbe5) )
20051992
2006   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
1993   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
20071994   ROM_LOAD( "p47-21.bin",  0x000000, 0x040000, CRC(f2d43927) SHA1(69ac20f339a515d58cafbcd6f7d7982ca5cda681) )
2008   ROM_RELOAD(              0x010000, 0x40000 )
20091995
20101996   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
20111997   ROM_LOAD( "p47-22.bin",  0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) )
r243676r243677
20352021   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
20362022   ROM_LOAD( "mr95024.30", 0x000000, 0x080000, CRC(cea7002d) SHA1(5462edaeb9339790b95ed15a4bfaab8fae655b12) )
20372023
2038   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
2024   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
20392025   ROM_LOAD( "mr95024.21", 0x000000, 0x040000, CRC(5c565e3b) SHA1(d349a8ca50d03c06d8978e6d3632b624f019dee4) )
2040   ROM_RELOAD(              0x010000, 0x40000 )
20412026
20422027   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
20432028   ROM_LOAD( "mr95024.22", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples
r243676r243677
20672052   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
20682053   ROM_LOAD( "tp2m3230.30", 0x000000, 0x080000, CRC(6845e476) SHA1(61c33714db2e2b5ccdcef0e0d3efdc391fe6aba2) )
20692054
2070   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
2055   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
20712056   ROM_LOAD( "tp2m3221.21", 0x000000, 0x040000, CRC(2bcc4176) SHA1(74740fa13ab81b9819b4cfbe9d34a0749ba23b8f) )
2072   ROM_RELOAD(              0x010000, 0x40000 )
20732057
20742058   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
20752059   ROM_LOAD( "tp2m3205.22", 0x000000, 0x200000, CRC(74aa5c31) SHA1(7e3f86198fb678244fab76bee9c72bbdfc818118) )
r243676r243677
21062090   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
21072091   ROM_LOAD( "vsjanshi30.41",  0x000000, 0x080000, CRC(fdbbac21) SHA1(c77d852e53126cc8ebfe1e79d1134e42b54d1aab) )
21082092
2109   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
2093   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
21102094   ROM_LOAD( "vsjanshi21.30",  0x000000, 0x040000, CRC(d622bce1) SHA1(059fcc3c7216d3ea4f3a4226a06219375ce8c2bf) )
2111   ROM_RELOAD(              0x010000, 0x40000 )
21122095
21132096   ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */
21142097   ROM_LOAD( "mr96004-10.22",  0x000000, 0x400000, CRC(83f4303a) SHA1(90ee010591afe1d35744925ef0e8d9a7e2ef3378) )
r243676r243677
21792162   ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */
21802163   ROM_LOAD( "32", 0x000000, 0x080000, CRC(becc25c2) SHA1(4ae7665cd45ebd9586068e99327145194ba216fc) )
21812164
2182   ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */
2165   ROM_REGION( 0x40000, "audiocpu", 0 ) /* z80 program */
21832166   ROM_LOAD( "ws-21", 0x000000, 0x040000, CRC(bdeff5d6) SHA1(920a6fc983d53f09510887e4e81ee89ccd5079e6) )
2184   ROM_RELOAD(              0x010000, 0x40000 )
21852167
21862168   ROM_REGION( 0x400000, "ymf", 0 ) /* samples */
21872169   ROM_LOAD( "mr92042-01.22", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) )
r243676r243677
21952177void ms32_state::configure_banks()
21962178{
21972179   save_item(NAME(m_to_main));
2198   membank("bank4")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x14000, 0x4000);
2199   membank("bank5")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x14000, 0x4000);
2180   membank("bank4")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000);
2181   membank("bank5")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000);
22002182}
22012183
22022184DRIVER_INIT_MEMBER(ms32_state,ms32_common)
trunk/src/mame/drivers/raiden2.c
r243676r243677
1// license:?
1// license:? (pending decision)
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
86
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
7   TODO:
8   * zeroteam - sort-DMA doesn't seem to work too well, sprite-sprite priorities are broken as per now
169
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
1718===========================================================================================================
1819
1920raiden 2 board test note 17/04/08 (based on test by dox)
r243676r243677
2425  value of 0x80 puts 0x00000-0x1ffff at 0x20000 - 0x3ffff
2526  value of 0x00 puts 0x20000-0x3ffff at 0x20000 - 0x3ffff
2627
27===
2828
2929===========================================================================================================
3030
r243676r243677
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
156133********************************************************************************************************/
157134
158135#include "emu.h"
r243676r243677
13671344
13681345   /* video hardware */
13691346   MCFG_SCREEN_ADD("screen", RASTER)
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
1347   MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
13771348   MCFG_SCREEN_RAW_PARAMS(XTAL_32MHz/4,512,0,40*8,282,0,30*8) /* hand-tuned to match ~55.47 */
1378#endif
13791349   MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2)
13801350
13811351   MCFG_GFXDECODE_ADD("gfxdecode", "palette", raiden2)
trunk/src/mame/drivers/skyarmy.c
r243676r243677
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"),
3740      m_videoram(*this, "videoram"),
3841      m_colorram(*this, "colorram"),
3942      m_spriteram(*this, "spriteram"),
40      m_scrollram(*this, "scrollram"),
41      m_maincpu(*this, "maincpu"),
42      m_gfxdecode(*this, "gfxdecode"),
43      m_palette(*this, "palette")  { }
43      m_scrollram(*this, "scrollram") { }
4444
45   required_device<cpu_device> m_maincpu;
46   required_device<gfxdecode_device> m_gfxdecode;
47   required_device<palette_device> m_palette;
48
4549   required_shared_ptr<UINT8> m_videoram;
4650   required_shared_ptr<UINT8> m_colorram;
4751   required_shared_ptr<UINT8> m_spriteram;
4852   required_shared_ptr<UINT8> m_scrollram;
53   
4954   tilemap_t* m_tilemap;
5055   int m_nmi;
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);
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);
5561   DECLARE_WRITE8_MEMBER(nmi_enable_w);
56   TILE_GET_INFO_MEMBER(get_skyarmy_tile_info);
62   
63   TILE_GET_INFO_MEMBER(get_tile_info);
64   
65   virtual void machine_start();
5766   virtual void video_start();
5867   DECLARE_PALETTE_INIT(skyarmy);
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;
68   
69   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
70   
71   INTERRUPT_GEN_MEMBER(nmi_source);
6472};
6573
66WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_x_w)
74void skyarmy_state::machine_start()
6775{
76   save_item(NAME(m_nmi));
77}
78
79WRITE8_MEMBER(skyarmy_state::flip_screen_x_w)
80{
6881   flip_screen_x_set(data & 0x01);
6982}
7083
71WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_y_w)
84WRITE8_MEMBER(skyarmy_state::flip_screen_y_w)
7285{
7386   flip_screen_y_set(data & 0x01);
7487}
7588
76TILE_GET_INFO_MEMBER(skyarmy_state::get_skyarmy_tile_info)
89TILE_GET_INFO_MEMBER(skyarmy_state::get_tile_info)
7790{
7891   int code = m_videoram[tile_index];
7992   int attr = BITSWAP8(m_colorram[tile_index], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
r243676r243677
8194   SET_TILE_INFO_MEMBER(0, code, attr, 0);
8295}
8396
84WRITE8_MEMBER(skyarmy_state::skyarmy_videoram_w)
97WRITE8_MEMBER(skyarmy_state::videoram_w)
8598{
8699   m_videoram[offset] = data;
87100   m_tilemap->mark_tile_dirty(offset);
88101}
89102
90WRITE8_MEMBER(skyarmy_state::skyarmy_colorram_w)
103WRITE8_MEMBER(skyarmy_state::colorram_w)
91104{
92105   m_colorram[offset] = data;
93106   m_tilemap->mark_tile_dirty(offset);
r243676r243677
124137
125138void skyarmy_state::video_start()
126139{
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);
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);
128141   m_tilemap->set_scroll_cols(32);
129142}
130143
131144
132UINT32 skyarmy_state::screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
145UINT32 skyarmy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
133146{
134   UINT8 *spriteram = m_spriteram;
135147   int sx, sy, flipx, flipy, offs,pal;
136148   int i;
137149
r243676r243677
142154
143155   for (offs = 0 ; offs < 0x40; offs+=4)
144156   {
145      pal = BITSWAP8(spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
157      pal = BITSWAP8(m_spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7;
146158
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;
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;
151163
152164      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
153         spriteram[offs+1]&0x3f,
165         m_spriteram[offs+1]&0x3f,
154166         pal,
155167         flipx,flipy,
156168         sx,sy,0);
r243676r243677
159171   return 0;
160172}
161173
162INTERRUPT_GEN_MEMBER(skyarmy_state::skyarmy_nmi_source)
174INTERRUPT_GEN_MEMBER(skyarmy_state::nmi_source)
163175{
164176   if(m_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
165177}
r243676r243677
174186static ADDRESS_MAP_START( skyarmy_map, AS_PROGRAM, 8, skyarmy_state )
175187   AM_RANGE(0x0000, 0x7fff) AM_ROM
176188   AM_RANGE(0x8000, 0x87ff) AM_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 */
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 */
179191   AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram") /* Sprites */
180192   AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scrollram")  /* Scroll RAM */
181193   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW")
r243676r243677
183195   AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2")
184196   AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM")
185197   AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_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)
198   AM_RANGE(0xa005, 0xa005) AM_WRITE(flip_screen_x_w)
199   AM_RANGE(0xa006, 0xa006) AM_WRITE(flip_screen_y_w)
188200   AM_RANGE(0xa007, 0xa007) AM_WRITENOP
189201ADDRESS_MAP_END
190202
r243676r243677
286298   MCFG_CPU_PROGRAM_MAP(skyarmy_map)
287299   MCFG_CPU_IO_MAP(skyarmy_io_map)
288300   MCFG_CPU_VBLANK_INT_DRIVER("screen", skyarmy_state,  irq0_line_hold)
289   MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, skyarmy_nmi_source, 650)    /* Hz */
301   MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, nmi_source, 650)    /* Hz */
290302
291303   /* video hardware */
292304   MCFG_SCREEN_ADD("screen", RASTER)
r243676r243677
294306   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
295307   MCFG_SCREEN_SIZE(32*8,32*8)
296308   MCFG_SCREEN_VISIBLE_AREA(0*8,32*8-1,1*8,31*8-1)
297   MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update_skyarmy)
309   MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update)
298310   MCFG_SCREEN_PALETTE("palette")
299311
300312   MCFG_GFXDECODE_ADD("gfxdecode", "palette", skyarmy)
r243676r243677
327339   ROM_LOAD( "a6.bin",  0x0000, 0x0020, CRC(c721220b) SHA1(61b3320fb616c0600d56840cb6438616c7e0c6eb) )
328340ROM_END
329341
330GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL )
342GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/skydiver.c
r243676r243677
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 cuurent value of 5 interrupts per frame, works pretty good,
14        * The current value of 5 interrupts per frame, works pretty good,
1515          but is not 100% accurate timing wise.
1616
1717****************************************************************************
r243676r243677
139139 *
140140 *************************************/
141141
142WRITE8_MEMBER(skydiver_state::skydiver_nmion_w)
142WRITE8_MEMBER(skydiver_state::nmion_w)
143143{
144144   m_nmion = offset;
145145}
146146
147147
148INTERRUPT_GEN_MEMBER(skydiver_state::skydiver_interrupt)
148INTERRUPT_GEN_MEMBER(skydiver_state::interrupt)
149149{
150150   /* Convert range data to divide value and write to sound */
151151   address_space &space = m_maincpu->space(AS_PROGRAM);
r243676r243677
167167 *
168168 *************************************/
169169
170WRITE8_MEMBER(skydiver_state::skydiver_sound_enable_w)
170WRITE8_MEMBER(skydiver_state::sound_enable_w)
171171{
172172   m_discrete->write(space, SKYDIVER_SOUND_EN, offset);
173173}
174174
175WRITE8_MEMBER(skydiver_state::skydiver_whistle_w)
175WRITE8_MEMBER(skydiver_state::whistle_w)
176176{
177177   m_discrete->write(space, NODE_RELATIVE(SKYDIVER_WHISTLE1_EN, (offset >> 1)), offset & 0x01);
178178}
r243676r243677
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(skydiver_wram_r, skydiver_wram_w)
190   AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(wram_r, 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(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)
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)
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")
r243676r243677
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(skydiver_2000_201F_w)
220   AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_READ(watchdog_reset_r) AM_WRITE(_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
r243676r243677
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, skydiver_interrupt,  5*60)
378   MCFG_CPU_PERIODIC_INT_DRIVER(skydiver_state, interrupt,  5*60)
379379   MCFG_WATCHDOG_VBLANK_INIT(8)    // 128V clocks the same as VBLANK
380380
381381
r243676r243677
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_skydiver)
388   MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update)
389389   MCFG_SCREEN_PALETTE("palette")
390390
391391   MCFG_GFXDECODE_ADD("gfxdecode", "palette", skydiver)
r243676r243677
432432 *
433433 *************************************/
434434
435GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", 0, layout_skydiver )
435GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", GAME_SUPPORTS_SAVE, layout_skydiver )
trunk/src/mame/drivers/st_mp100.c
r243676r243677
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", GAME_MECHANICAL | GAME_NO_SOUND )
861GAME(1979,  dracula,    0,      st_mp100,   mp100, driver_device, 0,   ROT0,   "Stern", "Dracula (Pinball)", 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
r243676r243677
5151#include "emu.h"
5252#include "cpu/z80/z80.h"
5353#include "sound/3812intf.h"
54#include "sound/msm5205.h"
5554#include "includes/tecmo.h"
5655
5756
58WRITE8_MEMBER(tecmo_state::tecmo_bankswitch_w)
57WRITE8_MEMBER(tecmo_state::bankswitch_w)
5958{
6059   int bankaddress;
6160   UINT8 *RAM = memregion("maincpu")->base();
r243676r243677
6564   membank("bank1")->set_base(&RAM[bankaddress]);
6665}
6766
68WRITE8_MEMBER(tecmo_state::tecmo_sound_command_w)
67WRITE8_MEMBER(tecmo_state::sound_command_w)
6968{
7069   soundlatch_byte_w(space, offset, data);
7170   m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE);
7271}
7372
74WRITE8_MEMBER(tecmo_state::tecmo_nmi_ack_w)
73WRITE8_MEMBER(tecmo_state::nmi_ack_w)
7574{
7675   m_soundcpu->set_input_line(INPUT_LINE_NMI,CLEAR_LINE);
7776}
7877
79WRITE8_MEMBER(tecmo_state::tecmo_adpcm_start_w)
78WRITE8_MEMBER(tecmo_state::adpcm_start_w)
8079{
8180   m_adpcm_pos = data << 8;
8281   m_msm->reset_w(0);
8382}
8483
85WRITE8_MEMBER(tecmo_state::tecmo_adpcm_end_w)
84WRITE8_MEMBER(tecmo_state::adpcm_end_w)
8685{
8786   m_adpcm_end = (data + 1) << 8;
8887}
8988
90WRITE8_MEMBER(tecmo_state::tecmo_adpcm_vol_w)
89WRITE8_MEMBER(tecmo_state::adpcm_vol_w)
9190{
9291   m_msm->set_volume((data & 0x0f) * 100 / 15);
9392}
9493
95WRITE_LINE_MEMBER(tecmo_state::tecmo_adpcm_int)
94WRITE_LINE_MEMBER(tecmo_state::adpcm_int)
9695{
9796   if (m_adpcm_pos >= m_adpcm_end ||
9897            m_adpcm_pos >= memregion("adpcm")->bytes())
r243676r243677
112111}
113112
114113/* the 8-bit dipswitches are split across addresses */
115READ8_MEMBER(tecmo_state::tecmo_dswa_l_r)
114READ8_MEMBER(tecmo_state::dswa_l_r)
116115{
117116   UINT8 port = ioport("DSWA")->read();
118117   port &= 0x0f;
119118   return port;
120119}
121120
122READ8_MEMBER(tecmo_state::tecmo_dswa_h_r)
121READ8_MEMBER(tecmo_state::dswa_h_r)
123122{
124123   UINT8 port = ioport("DSWA")->read();
125124   port &= 0xf0;
126125   return port>>4;
127126}
128127
129READ8_MEMBER(tecmo_state::tecmo_dswb_l_r)
128READ8_MEMBER(tecmo_state::dswb_l_r)
130129{
131130   UINT8 port = ioport("DSWB")->read();
132131   port &= 0x0f;
133132   return port;
134133}
135134
136READ8_MEMBER(tecmo_state::tecmo_dswb_h_r)
135READ8_MEMBER(tecmo_state::dswb_h_r)
137136{
138137   UINT8 port = ioport("DSWB")->read();
139138   port &= 0xf0;
r243676r243677
144143static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state )
145144   AM_RANGE(0x0000, 0xbfff) AM_ROM
146145   AM_RANGE(0xc000, 0xcfff) AM_RAM
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")
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")
150149   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
151150   AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
152151   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
r243676r243677
156155   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
157156   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
158157   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
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)
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)
163162   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
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)
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)
169168   AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
170169ADDRESS_MAP_END
171170
172171static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state )
173172   AM_RANGE(0x0000, 0xbfff) AM_ROM
174173   AM_RANGE(0xc000, 0xcfff) AM_RAM
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")
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")
178177   AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
179178   AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
180179   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
r243676r243677
184183   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
185184   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
186185   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
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)
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)
191190   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
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)
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)
197196   AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
198197ADDRESS_MAP_END
199198
200199static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state )
201200   AM_RANGE(0x0000, 0xbfff) AM_ROM
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")
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")
205204   AM_RANGE(0xd000, 0xdfff) AM_RAM
206205   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
207206   AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
r243676r243677
212211   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
213212   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
214213   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
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)
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)
219218   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
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)
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)
225224   AM_RANGE(0xf809, 0xf809) AM_WRITENOP    /* ? */
226225   AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP    /* ? if mapped to watchdog like in the others, causes reset */
227226ADDRESS_MAP_END
r243676r243677
230229   AM_RANGE(0x0000, 0x3fff) AM_ROM
231230   AM_RANGE(0x4000, 0x47ff) AM_RAM
232231   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write)
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)
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)
237236ADDRESS_MAP_END
238237
239238static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state )
r243676r243677
242241   AM_RANGE(0x0000, 0x7fff) AM_ROM
243242   AM_RANGE(0x8000, 0x87ff) AM_RAM
244243   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write)
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)
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)
249248ADDRESS_MAP_END
250249
251250
r243676r243677
600599GFXDECODE_END
601600
602601
603MACHINE_RESET_MEMBER(tecmo_state,rygar)
602void tecmo_state::machine_start()
604603{
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{
605611   m_adpcm_pos = 0;
606612   m_adpcm_end = 0;
607613   m_adpcm_data = -1;
r243676r243677
623629   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)  /* frames per second, vblank duration */)
624630   MCFG_SCREEN_SIZE(32*8, 32*8)
625631   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
626   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
632   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update)
627633   MCFG_SCREEN_PALETTE("palette")
628634
629635   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo)
r243676r243677
633639
634640   MCFG_DEVICE_ADD("spritegen", TECMO_SPRITE, 0)
635641
636   MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
637
638   MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar )
639
640642   /* sound hardware */
641643   MCFG_SPEAKER_STANDARD_MONO("mono")
642644
r243676r243677
645647   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
646648
647649   MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */
648   MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, tecmo_adpcm_int))    /* interrupt function */
650   MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, adpcm_int))    /* interrupt function */
649651   MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B)      /* 8KHz               */
650652   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
651653MACHINE_CONFIG_END
r243676r243677
671673   MCFG_CPU_PROGRAM_MAP(silkworm_map)
672674MACHINE_CONFIG_END
673675
674#ifdef UNUSED_CODE
675static MACHINE_CONFIG_START( backfirt, tecmo_state )
676static MACHINE_CONFIG_DERIVED( backfirt, gemini )
676677
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
678   /* this pcb has no MSM5205 */
679   MCFG_DEVICE_REMOVE("msm")
712680MACHINE_CONFIG_END
713#endif
714
715681/***************************************************************************
716682
717683  Game driver(s)
r243676r243677
10651031   ROM_LOAD( "b16-s2.bin",  0x10000, 0x10000, CRC(6e4052c9) SHA1(e2e3d7221b75cb044449a25a076a93c3def1f11b) )   /* tiles #2 */
10661032   ROM_LOAD( "b15-s2.bin",  0x20000, 0x10000, CRC(2b6cc20e) SHA1(4815819288753400935836cc1b0b69f4c4b43ddc) )   /* tiles #2 */
10671033   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) )
10711034ROM_END
10721035
10731036ROM_START( gemini )
r243676r243677
11381101
11391102
11401103
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 )
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 )
trunk/src/mame/drivers/tecmo16.c
r243676r243677
3232
3333/******************************************************************************/
3434
35WRITE16_MEMBER(tecmo16_state::tecmo16_sound_command_w)
35WRITE16_MEMBER(tecmo16_state::sound_command_w)
3636{
3737   if (ACCESSING_BITS_0_7)
3838   {
r243676r243677
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(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")
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")
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(tecmo16_flipscreen_w)
58   AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
57   AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
58   AM_RANGE(0x150010, 0x150011) AM_WRITE(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(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)
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)
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(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")
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")
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(tecmo16_flipscreen_w)
81   AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
80   AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
81   AM_RANGE(0x150010, 0x150011) AM_WRITE(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(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)
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)
9292ADDRESS_MAP_END
9393
9494static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tecmo16_state )
r243676r243677
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_tecmo16)
385   MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update)
386386
387387   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo16)
388388   MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096)
r243676r243677
629629
630630/******************************************************************************/
631631
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 )
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 )
trunk/src/mame/drivers/vball.c
r243676r243677
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 adpmc chip is addressed differently
34 -4) 2 Player Version - sound ROM is different and the adpcm 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
r243676r243677
131131   /* Save the scroll x register value */
132132   if (scanline < 256)
133133   {
134      m_vb_scrollx[255 - scanline] = (m_vb_scrollx_hi + m_vb_scrollx_lo + 4);
134      m_scrollx[255 - scanline] = (m_scrollx_hi + m_scrollx_lo + 4);
135135   }
136136}
137137
138WRITE8_MEMBER(vball_state::vball_irq_ack_w)
138WRITE8_MEMBER(vball_state::irq_ack_w)
139139{
140140   if (offset == 0)
141141      m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
r243676r243677
154154   bit 6 = scroll y hi
155155   bit 7 = ?
156156*/
157WRITE8_MEMBER(vball_state::vb_bankswitch_w)
157WRITE8_MEMBER(vball_state::bankswitch_w)
158158{
159   UINT8 *RAM = memregion("maincpu")->base();
160   membank("bank1")->set_base(&RAM[0x10000 + (0x4000 * (data & 1))]);
159   membank("mainbank")->set_entry(data & 1);
161160
162161   if (m_gfxset != ((data  & 0x20) ^ 0x20))
163162   {
164163      m_gfxset = (data  & 0x20) ^ 0x20;
165         vb_mark_all_dirty();
164         m_bg_tilemap->mark_all_dirty();
166165   }
167   m_vb_scrolly_hi = (data & 0x40) << 2;
166   m_scrolly_hi = (data & 0x40) << 2;
168167}
169168
170169/* The sound system comes all but verbatim from Double Dragon */
r243676r243677
184183   bit 6 = sp prom bank
185184   bit 7 = sp prom bank
186185*/
187WRITE8_MEMBER(vball_state::vb_scrollx_hi_w)
186WRITE8_MEMBER(vball_state::scrollx_hi_w)
188187{
189188   flip_screen_set(~data&1);
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);
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);
194193}
195194
196WRITE8_MEMBER(vball_state::vb_scrollx_lo_w)
195WRITE8_MEMBER(vball_state::scrollx_lo_w)
197196{
198   m_vb_scrollx_lo = data;
199   //logerror("%04x: vb_scrollx_lo =%d\n", space.device().safe_pcbase(), m_vb_scrollx_lo);
197   m_scrollx_lo = data;
198   //logerror("%04x: scrollx_lo =%d\n", space.device().safe_pcbase(), m_scrollx_lo);
200199}
201200
202201
r243676r243677
211210   AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2")
212211   AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3")
213212   AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4")
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)
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)
218217   AM_RANGE(0x100d, 0x100d) AM_WRITE(cpu_sound_command_w)
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")
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")
223222   AM_RANGE(0x8000, 0xffff) AM_ROM
224223ADDRESS_MAP_END
225224
r243676r243677
361360   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Used in 4 player mode, not supported in 2 player set */
362361INPUT_PORTS_END
363362
363void vball_state::machine_start()
364{
365   membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000);
366}
364367
368
365369static const gfx_layout charlayout =
366370{
367371   8,8,
r243676r243677
407411   MCFG_SCREEN_ADD("screen", RASTER)
408412   MCFG_SCREEN_SIZE(32*8, 32*8)
409413   MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248)   /* based on ddragon driver */
410   MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb)
414   MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update)
411415   MCFG_SCREEN_PALETTE("palette")
412416
413417   MCFG_GFXDECODE_ADD("gfxdecode", "palette", vb)
r243676r243677
557561ROM_END
558562
559563
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 )
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 )
trunk/src/mame/includes/skydiver.h
r243676r243677
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") ,
2827      m_maincpu(*this, "maincpu"),
2928      m_discrete(*this, "discrete"),
3029      m_gfxdecode(*this, "gfxdecode"),
31      m_palette(*this, "palette") { }
30      m_palette(*this, "palette"),
31      m_videoram(*this, "videoram") { }
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
3338   required_shared_ptr<UINT8> m_videoram;
39   
3440   int m_nmion;
3541   tilemap_t *m_bg_tilemap;
3642   int m_width;
3743
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);
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   
5360   TILE_GET_INFO_MEMBER(get_tile_info);
61   
5462   virtual void machine_reset();
5563   virtual void video_start();
5664   DECLARE_PALETTE_INIT(skydiver);
57   UINT32 screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
58   INTERRUPT_GEN_MEMBER(skydiver_interrupt);
65   
66   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5967   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
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;
68   
69   INTERRUPT_GEN_MEMBER(interrupt);
6470};
6571
6672/*----------- defined in audio/skydiver.c -----------*/
trunk/src/mame/includes/tecmo.h
r243676r243677
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"),
139      m_maincpu(*this, "maincpu"),
1410      m_soundcpu(*this, "soundcpu"),
1511      m_msm(*this, "msm"),
1612      m_gfxdecode(*this, "gfxdecode"),
1713      m_palette(*this, "palette"),
18      m_sprgen(*this, "spritegen")
19      { }
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")   { }
2019
21   int m_adpcm_pos;
22   int m_adpcm_end;
23   int m_adpcm_data;
24   int m_video_type;
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
2527   required_shared_ptr<UINT8> m_txvideoram;
2628   required_shared_ptr<UINT8> m_fgvideoram;
2729   required_shared_ptr<UINT8> m_bgvideoram;
30   required_shared_ptr<UINT8> m_spriteram;
31
2832   tilemap_t *m_tx_tilemap;
2933   tilemap_t *m_fg_tilemap;
3034   tilemap_t *m_bg_tilemap;
3135   UINT8 m_fgscroll[3];
3236   UINT8 m_bgscroll[3];
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);
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   
5060   DECLARE_DRIVER_INIT(silkworm);
5161   DECLARE_DRIVER_INIT(rygar);
5262   DECLARE_DRIVER_INIT(backfirt);
5363   DECLARE_DRIVER_INIT(gemini);
64   
5465   TILE_GET_INFO_MEMBER(get_bg_tile_info);
5566   TILE_GET_INFO_MEMBER(get_fg_tile_info);
5667   TILE_GET_INFO_MEMBER(gemini_get_bg_tile_info);
5768   TILE_GET_INFO_MEMBER(gemini_get_fg_tile_info);
5869   TILE_GET_INFO_MEMBER(get_tx_tile_info);
59   DECLARE_MACHINE_RESET(rygar);
60   DECLARE_VIDEO_START(tecmo);
61   UINT32 screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
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);
6276   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;
7077};
trunk/src/mame/includes/tecmo16.h
r243676r243677
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"),
159      m_maincpu(*this, "maincpu"),
1610      m_audiocpu(*this, "audiocpu"),
1711      m_gfxdecode(*this, "gfxdecode"),
1812      m_screen(*this, "screen"),
1913      m_palette(*this, "palette"),
2014      m_sprgen(*this, "spritegen"),
21      m_mixer(*this, "mixer")
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")
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
2432   required_shared_ptr<UINT16> m_videoram;
2533   required_shared_ptr<UINT16> m_colorram;
2634   required_shared_ptr<UINT16> m_videoram2;
2735   required_shared_ptr<UINT16> m_colorram2;
2836   required_shared_ptr<UINT16> m_charram;
37   required_shared_ptr<UINT16> m_spriteram;
38
2939   tilemap_t *m_fg_tilemap;
3040   tilemap_t *m_bg_tilemap;
3141   tilemap_t *m_tx_tilemap;
r243676r243677
4050   UINT16 m_scroll2_y_w;
4151   UINT16 m_scroll_char_x_w;
4252   UINT16 m_scroll_char_y_w;
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);
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
5768   TILE_GET_INFO_MEMBER(fg_get_tile_info);
5869   TILE_GET_INFO_MEMBER(bg_get_tile_info);
5970   TILE_GET_INFO_MEMBER(tx_get_tile_info);
71
6072   virtual void video_start();
6173   DECLARE_VIDEO_START(ginkun);
6274   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;
7175
76   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
77   
78   void save_state();
7279};
trunk/src/mame/includes/vball.h
r243676r243677
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"),
106      m_maincpu(*this, "maincpu"),
117      m_audiocpu(*this, "audiocpu"),
128      m_gfxdecode(*this, "gfxdecode"),
139      m_screen(*this, "screen"),
14      m_palette(*this, "palette"){ }
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") { }
1515
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;
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;
2230   int m_gfxset;
23   int m_vb_scrollx[256];
24   int m_vb_bgprombank;
25   int m_vb_spprombank;
31   int m_scrollx[256];
32   int m_bgprombank;
33   int m_spprombank;
2634   tilemap_t *m_bg_tilemap;
27   required_shared_ptr<UINT8> m_spriteram;
28   DECLARE_WRITE8_MEMBER(vball_irq_ack_w);
29   DECLARE_WRITE8_MEMBER(vb_bankswitch_w);
35   
36   DECLARE_WRITE8_MEMBER(irq_ack_w);
37   DECLARE_WRITE8_MEMBER(bankswitch_w);
3038   DECLARE_WRITE8_MEMBER(cpu_sound_command_w);
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);
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   
3644   TILEMAP_MAPPER_MEMBER(background_scan);
3745   TILE_GET_INFO_MEMBER(get_bg_tile_info);
46   
47   virtual void machine_start();
3848   virtual void video_start();
39   UINT32 screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
49   
50   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4051   TIMER_DEVICE_CALLBACK_MEMBER(vball_scanline);
41   void vb_bgprombank_w( int bank );
42   void vb_spprombank_w( int bank );
43   void vb_mark_all_dirty(  );
52   void bgprombank_w(int bank);
53   void spprombank_w(int bank);
4454   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
4555   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;
5156};
trunk/src/mame/video/skydiver.c
r243676r243677
1414   address_space &space = m_maincpu->space(AS_PROGRAM);
1515
1616   /* reset all latches */
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);
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);
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   skydiver_width_w(space, 0, 0);
28   skydiver_coin_lockout_w(space, 0, 0);
27   width_w(space, 0, 0);
28   coin_lockout_w(space, 0, 0);
2929}
3030
3131
r243676r243677
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));
5558}
5659
5760
r243676r243677
6164 *
6265 *************************************/
6366
64WRITE8_MEMBER(skydiver_state::skydiver_videoram_w)
67WRITE8_MEMBER(skydiver_state::videoram_w)
6568{
6669   m_videoram[offset] = data;
6770   m_bg_tilemap->mark_tile_dirty(offset);
6871}
6972
7073
71READ8_MEMBER(skydiver_state::skydiver_wram_r)
74READ8_MEMBER(skydiver_state::wram_r)
7275{
7376   return m_videoram[offset | 0x380];
7477}
7578
76WRITE8_MEMBER(skydiver_state::skydiver_wram_w)
79WRITE8_MEMBER(skydiver_state::wram_w)
7780{
7881   m_videoram[offset | 0x0380] = data;
7982}
8083
8184
82WRITE8_MEMBER(skydiver_state::skydiver_width_w)
85WRITE8_MEMBER(skydiver_state::width_w)
8386{
8487   m_width = offset;
8588}
8689
8790
88WRITE8_MEMBER(skydiver_state::skydiver_coin_lockout_w)
91WRITE8_MEMBER(skydiver_state::coin_lockout_w)
8992{
9093   coin_lockout_global_w(machine(), !offset);
9194}
9295
9396
94WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_1_w)
97WRITE8_MEMBER(skydiver_state::start_lamp_1_w)
9598{
9699   set_led_status(machine(), 0, offset);
97100}
98101
99WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_2_w)
102WRITE8_MEMBER(skydiver_state::start_lamp_2_w)
100103{
101104   set_led_status(machine(), 1, offset);
102105}
103106
104107
105WRITE8_MEMBER(skydiver_state::skydiver_lamp_s_w)
108WRITE8_MEMBER(skydiver_state::lamp_s_w)
106109{
107110   output_set_value("lamps", offset);
108111}
109112
110WRITE8_MEMBER(skydiver_state::skydiver_lamp_k_w)
113WRITE8_MEMBER(skydiver_state::lamp_k_w)
111114{
112115   output_set_value("lampk", offset);
113116}
114117
115WRITE8_MEMBER(skydiver_state::skydiver_lamp_y_w)
118WRITE8_MEMBER(skydiver_state::lamp_y_w)
116119{
117120   output_set_value("lampy", offset);
118121}
119122
120WRITE8_MEMBER(skydiver_state::skydiver_lamp_d_w)
123WRITE8_MEMBER(skydiver_state::lamp_d_w)
121124{
122125   output_set_value("lampd", offset);
123126}
124127
125WRITE8_MEMBER(skydiver_state::skydiver_2000_201F_w)
128WRITE8_MEMBER(skydiver_state::_2000_201F_w)
126129{
127130   int bit = offset & 0x01;
128131
r243676r243677
198201}
199202
200203
201UINT32 skydiver_state::screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
204UINT32 skydiver_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
202205{
203206   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
204207
trunk/src/mame/video/tecmo.c
r243676r243677
7474
7575***************************************************************************/
7676
77VIDEO_START_MEMBER(tecmo_state,tecmo)
77void tecmo_state::video_start()
7878{
7979   if (m_video_type == 2)  /* gemini */
8080   {
r243676r243677
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));
97100}
98101
99102
r243676r243677
104107
105108***************************************************************************/
106109
107WRITE8_MEMBER(tecmo_state::tecmo_txvideoram_w)
110WRITE8_MEMBER(tecmo_state::txvideoram_w)
108111{
109112   m_txvideoram[offset] = data;
110113   m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
111114}
112115
113WRITE8_MEMBER(tecmo_state::tecmo_fgvideoram_w)
116WRITE8_MEMBER(tecmo_state::fgvideoram_w)
114117{
115118   m_fgvideoram[offset] = data;
116119   m_fg_tilemap->mark_tile_dirty(offset & 0x1ff);
117120}
118121
119WRITE8_MEMBER(tecmo_state::tecmo_bgvideoram_w)
122WRITE8_MEMBER(tecmo_state::bgvideoram_w)
120123{
121124   m_bgvideoram[offset] = data;
122125   m_bg_tilemap->mark_tile_dirty(offset & 0x1ff);
123126}
124127
125WRITE8_MEMBER(tecmo_state::tecmo_fgscroll_w)
128WRITE8_MEMBER(tecmo_state::fgscroll_w)
126129{
127130   m_fgscroll[offset] = data;
128131
r243676r243677
130133   m_fg_tilemap->set_scrolly(0, m_fgscroll[2]);
131134}
132135
133WRITE8_MEMBER(tecmo_state::tecmo_bgscroll_w)
136WRITE8_MEMBER(tecmo_state::bgscroll_w)
134137{
135138   m_bgscroll[offset] = data;
136139
r243676r243677
138141   m_bg_tilemap->set_scrolly(0, m_bgscroll[2]);
139142}
140143
141WRITE8_MEMBER(tecmo_state::tecmo_flipscreen_w)
144WRITE8_MEMBER(tecmo_state::flipscreen_w)
142145{
143146   flip_screen_set(data & 1);
144147}
r243676r243677
153156
154157
155158
156UINT32 tecmo_state::screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
159UINT32 tecmo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
157160{
158161   screen.priority().fill(0, cliprect);
159162   bitmap.fill(0x100, cliprect);
trunk/src/mame/video/tecmo16.c
r243676r243677
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
1729TILE_GET_INFO_MEMBER(tecmo16_state::fg_get_tile_info)
1830{
1931   int tile = m_videoram[tile_index] & 0x1fff;
r243676r243677
7082   m_tx_tilemap->set_scrolly(0,-16);
7183   m_flipscreen = 0;
7284   m_game_is_riot = 0;
85   
86   save_state();
7387}
7488
7589VIDEO_START_MEMBER(tecmo16_state,ginkun)
r243676r243677
90104   m_tx_tilemap->set_transparent_pen(0);
91105   m_flipscreen = 0;
92106   m_game_is_riot = 0;
107   
108   save_state();
93109}
94110
95111VIDEO_START_MEMBER(tecmo16_state,riot)
r243676r243677
111127   m_tx_tilemap->set_scrolldy(-16,-16);
112128   m_flipscreen = 0;
113129   m_game_is_riot = 1;
130   
131   save_state();
114132}
115133
116134/******************************************************************************/
117135
118WRITE16_MEMBER(tecmo16_state::tecmo16_videoram_w)
136WRITE16_MEMBER(tecmo16_state::videoram_w)
119137{
120138   COMBINE_DATA(&m_videoram[offset]);
121139   m_fg_tilemap->mark_tile_dirty(offset);
122140}
123141
124WRITE16_MEMBER(tecmo16_state::tecmo16_colorram_w)
142WRITE16_MEMBER(tecmo16_state::colorram_w)
125143{
126144   COMBINE_DATA(&m_colorram[offset]);
127145   m_fg_tilemap->mark_tile_dirty(offset);
128146}
129147
130WRITE16_MEMBER(tecmo16_state::tecmo16_videoram2_w)
148WRITE16_MEMBER(tecmo16_state::videoram2_w)
131149{
132150   COMBINE_DATA(&m_videoram2[offset]);
133151   m_bg_tilemap->mark_tile_dirty(offset);
134152}
135153
136WRITE16_MEMBER(tecmo16_state::tecmo16_colorram2_w)
154WRITE16_MEMBER(tecmo16_state::colorram2_w)
137155{
138156   COMBINE_DATA(&m_colorram2[offset]);
139157   m_bg_tilemap->mark_tile_dirty(offset);
140158}
141159
142160
143WRITE16_MEMBER(tecmo16_state::tecmo16_charram_w)
161WRITE16_MEMBER(tecmo16_state::charram_w)
144162{
145163   COMBINE_DATA(&m_charram[offset]);
146164   m_tx_tilemap->mark_tile_dirty(offset);
147165}
148166
149WRITE16_MEMBER(tecmo16_state::tecmo16_flipscreen_w)
167WRITE16_MEMBER(tecmo16_state::flipscreen_w)
150168{
151169   m_flipscreen = data & 0x01;
152170   flip_screen_set(m_flipscreen);
r243676r243677
154172
155173/******************************************************************************/
156174
157WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_x_w)
175WRITE16_MEMBER(tecmo16_state::scroll_x_w)
158176{
159177   COMBINE_DATA(&m_scroll_x_w);
160178   m_fg_tilemap->set_scrollx(0,m_scroll_x_w);
161179}
162180
163WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_y_w)
181WRITE16_MEMBER(tecmo16_state::scroll_y_w)
164182{
165183   COMBINE_DATA(&m_scroll_y_w);
166184   m_fg_tilemap->set_scrolly(0,m_scroll_y_w);
167185}
168186
169WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_x_w)
187WRITE16_MEMBER(tecmo16_state::scroll2_x_w)
170188{
171189   COMBINE_DATA(&m_scroll2_x_w);
172190   m_bg_tilemap->set_scrollx(0,m_scroll2_x_w);
173191}
174192
175WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_y_w)
193WRITE16_MEMBER(tecmo16_state::scroll2_y_w)
176194{
177195   COMBINE_DATA(&m_scroll2_y_w);
178196   m_bg_tilemap->set_scrolly(0,m_scroll2_y_w);
179197}
180198
181WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_x_w)
199WRITE16_MEMBER(tecmo16_state::scroll_char_x_w)
182200{
183201   COMBINE_DATA(&m_scroll_char_x_w);
184202   m_tx_tilemap->set_scrollx(0,m_scroll_char_x_w);
185203}
186204
187WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_y_w)
205WRITE16_MEMBER(tecmo16_state::scroll_char_y_w)
188206{
189207   COMBINE_DATA(&m_scroll_char_y_w);
190208   m_tx_tilemap->set_scrolly(0,m_scroll_char_y_w-16);
r243676r243677
195213
196214/******************************************************************************/
197215
198UINT32 tecmo16_state::screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
216UINT32 tecmo16_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
199217{
200218   m_tile_bitmap_bg.fill(0, cliprect);
201219   m_tile_bitmap_fg.fill(0, cliprect);
trunk/src/mame/video/vball.c
r243676r243677
2727
2828TILE_GET_INFO_MEMBER(vball_state::get_bg_tile_info)
2929{
30   UINT8 code = m_vb_videoram[tile_index];
31   UINT8 attr = m_vb_attribram[tile_index];
30   UINT8 code = m_videoram[tile_index];
31   UINT8 attr = m_attribram[tile_index];
3232   SET_TILE_INFO_MEMBER(0,
3333         code + ((attr & 0x1f) << 8) + (m_gfxset<<8),
3434         (attr >> 5) & 0x7,
r243676r243677
4242
4343   m_bg_tilemap->set_scroll_rows(32);
4444   m_gfxset=0;
45   m_vb_bgprombank=0xff;
46   m_vb_spprombank=0xff;
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));
4755}
4856
49WRITE8_MEMBER(vball_state::vb_videoram_w)
57WRITE8_MEMBER(vball_state::videoram_w)
5058{
51   m_vb_videoram[offset] = data;
59   m_videoram[offset] = data;
5260   m_bg_tilemap->mark_tile_dirty(offset);
5361}
5462
55#ifdef UNUSED_FUNCTION
56READ8_MEMBER(vball_state::vb_attrib_r)
63WRITE8_MEMBER(vball_state::attrib_w)
5764{
58   return m_vb_attribram[offset];
59}
60#endif
61
62WRITE8_MEMBER(vball_state::vb_attrib_w)
63{
64   m_vb_attribram[offset] = data;
65   m_attribram[offset] = data;
6566   m_bg_tilemap->mark_tile_dirty(offset);
6667}
6768
68void vball_state::vb_bgprombank_w( int bank )
69void vball_state::bgprombank_w( int bank )
6970{
7071   int i;
7172   UINT8* color_prom;
7273
73   if (bank==m_vb_bgprombank) return;
74   if (bank==m_bgprombank) return;
7475
7576   color_prom = memregion("proms")->base() + bank*0x80;
7677   for (i=0;i<128;i++, color_prom++) {
7778      m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
7879                  pal4bit(color_prom[0x800] >> 0));
7980   }
80   m_vb_bgprombank=bank;
81   m_bgprombank=bank;
8182}
8283
83void vball_state::vb_spprombank_w( int bank )
84void vball_state::spprombank_w( int bank )
8485{
8586   int i;
8687   UINT8* color_prom;
8788
88   if (bank==m_vb_spprombank) return;
89   if (bank==m_spprombank) return;
8990
9091   color_prom = memregion("proms")->base()+0x400 + bank*0x80;
9192   for (i=128;i<256;i++,color_prom++)  {
9293      m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
9394                  pal4bit(color_prom[0x800] >> 0));
9495   }
95   m_vb_spprombank=bank;
96   m_spprombank=bank;
9697}
9798
98void vball_state::vb_mark_all_dirty(  )
99{
100   m_bg_tilemap->mark_all_dirty();
101}
10299
103100#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\
104101               cliprect, \
r243676r243677
150147
151148#undef DRAW_SPRITE
152149
153UINT32 vball_state::screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
150UINT32 vball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
154151{
155152   int i;
156153
157   m_bg_tilemap->set_scrolly(0,m_vb_scrolly_hi + *m_vb_scrolly_lo);
154   m_bg_tilemap->set_scrolly(0,m_scrolly_hi + *m_scrolly_lo);
158155
159156   /*To get linescrolling to work properly, we must ignore the 1st two scroll values, no idea why! -SJE */
160157   for (i = 2; i < 256; i++) {
161      m_bg_tilemap->set_scrollx(i,m_vb_scrollx[i-2]);
162      //logerror("scrollx[%d] = %d\n",i,m_vb_scrollx[i]);
158      m_bg_tilemap->set_scrollx(i,m_scrollx[i-2]);
159      //logerror("scrollx[%d] = %d\n",i,m_scrollx[i]);
163160   }
164161   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
165162   draw_sprites(bitmap,cliprect);
trunk/src/mess/drivers/edracula.c
r243676r243677
116116
117117static INPUT_PORTS_START( edracula )
118118   PORT_START("IN0")
119   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START )
120   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT )
119   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT )
120   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START )
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
r243676r243677
14101410   {
14111411      if(BIT(m_egc.regs[2], 10))
14121412      {
1413         m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
1413         m_egc.leftover[0] = 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];
r243676r243677
14221422   // mask off the bits before the start
14231423   if(m_egc.first)
14241424   {
1425      mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (dst_off + 1)) - 1);
1426      if(!m_egc.init)
1425      mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (16 - dst_off)) - 1);
1426      if(BIT(m_egc.regs[2], 10) && !m_egc.init)
14271427         m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0;
14281428   }
14291429
r243676r243677
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   }
15161521   for(int i = 0; i < 4; i++)
15171522      m_egc.src[i] = egc_shift(i, m_video_ram_2[plane_off + (((i + 1) & 3) * 0x4000)]);
15181523
r243676r243677
15681573         {
15691574            if((m_grcg.mode & (1 << i)) == 0)
15701575            {
1571
15721576               if(mem_mask & 0xff)
15731577               {
15741578                  vram[offset | (((i + 1) & 3) * 0x8000)] &= ~(data >> 0);
r243676r243677
18961900   else if(offset == 7)
18971901   {
18981902//      logerror("%02x GRCG TILE %02x\n",data,m_grcg.tile_index);
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);
1903      m_grcg.tile[m_grcg.tile_index] = BITSWAP8(data,0,1,2,3,4,5,6,7);
19001904      m_grcg.tile_index ++;
19011905      m_grcg.tile_index &= 3;
19021906      return;
r243676r243677
19101914   if(!m_ex_video_ff[2])
19111915      return;
19121916
1913   COMBINE_DATA(&m_egc.regs[offset]);
1917   if(!(m_egc.regs[1] & 0x6000) || (offset != 4)) // why?
1918      COMBINE_DATA(&m_egc.regs[offset]);
19141919   switch(offset)
19151920   {
19161921      case 1:
trunk/src/mess/drivers/tb303.c
r243676r243677
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)
8283   MCFG_TIMER_DRIVER_ADD("t3_off", tb303_state, t3_off)
8384
8485   MCFG_DEFAULT_LAYOUT(layout_tb303)
trunk/src/mess/drivers/zorba.c
r243676r243677
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
1623ToDo:
17- Add interrupt vector hardware and masking feature
24- Need software that does more than plain text (such as games)
25- Add masking feature (only used for the UARTs)
1826- Connect devices to the above hardware
1927- Fix the display
20- Fix floppy-disk
21- Connect up the PIT
28- Connect the PIT to the UARTs
2229- Replace the ascii keyboard with the real one, if possible
2330- Probably lots of other things
2431
r243676r243677
3845#include "machine/keyboard.h"
3946#include "machine/wd_fdc.h"
4047
41#define KEYBOARD_TAG "keyboard"
4248
4349class zorba_state : public driver_device
4450{
r243676r243677
7783   DECLARE_WRITE8_MEMBER(pia0_porta_w);
7884   DECLARE_WRITE8_MEMBER(kbd_put);
7985   DECLARE_READ8_MEMBER(keyboard_r);
80   I8275_DRAW_CHARACTER_MEMBER( zorba_update_chr );
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);
8190   required_device<palette_device> m_palette;
8291
8392private:
8493   UINT8 m_term_data;
94   UINT8 m_fdc_rq;
8595   required_device<cpu_device> m_maincpu;
8696   required_device<beep_device> m_beep;
8797   required_device<z80dma_device> m_dma;
r243676r243677
149159   membank("bankr0")->set_entry(1);
150160}
151161
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
152199WRITE8_MEMBER( zorba_state::intmask_w )
153200{
154201}
r243676r243677
173220{
174221// since our Z80 has no support for BUSACK, we assume it is granted immediately
175222   m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, state);
176   m_maincpu->set_input_line(INPUT_LINE_HALT, state); // do we need this?
177223   m_dma->bai_w(state); // tell dma that bus has been granted
178224}
179225
r243676r243677
226272   m_fdc->set_floppy(floppy);
227273
228274   if (floppy)
229   {
230      floppy->ss_w(!BIT(data, 5)); // might need inverting
231   }
275      floppy->ss_w(!BIT(data, 5));
232276
233277   m_floppy0->get_device()->mon_w(BIT(data, 4));
234278   m_floppy1->get_device()->mon_w(BIT(data, 4));
r243676r243677
275319
276320MACHINE_RESET_MEMBER( zorba_state, zorba )
277321{
322   m_fdc_rq = 0;
278323   m_beep->set_frequency(800);
279324   m_p_chargen = memregion("chargen")->base();
280325   membank("bankr0")->set_entry(1); // point at rom
281326   membank("bankw0")->set_entry(0); // always write to ram
327   m_maincpu->reset();
282328}
283329
284330READ8_MEMBER( zorba_state::keyboard_r )
r243676r243677
323369   MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_24MHz/6)
324370   // busack on cpu connects to bai pin
325371   MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(zorba_state, busreq_w))  //connects to busreq on cpu
326   MCFG_Z80DMA_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))   // connects to IRQ0 on cpu
372   MCFG_Z80DMA_OUT_INT_CB(WRITELINE(zorba_state, irq0_w))   // connects to IRQ0 on IM2 controller
327373   //ba0 - not connected
328374   MCFG_Z80DMA_IN_MREQ_CB(READ8(zorba_state, memory_read_byte))
329375   MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(zorba_state, memory_write_byte))
330376   MCFG_Z80DMA_IN_IORQ_CB(READ8(zorba_state, io_read_byte))
331377   MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(zorba_state, io_write_byte))
332378
333   MCFG_DEVICE_ADD("uart0", I8251, 0)
334   // COM port
379   MCFG_DEVICE_ADD("uart0", I8251, 0) // U32 COM port J2
335380
336   MCFG_DEVICE_ADD("uart1", I8251, 0)
337   // printer port
381   MCFG_DEVICE_ADD("uart1", I8251, 0) // U31 printer port J3
338382
339   MCFG_DEVICE_ADD("uart2", I8251, 0)
340   // keyboard
383   MCFG_DEVICE_ADD("uart2", I8251, 0) // U30 serial keyboard J6
341384
342// port A - disk select etc, beeper
343// port B - parallel interface
385   // port A - disk select etc, beeper
386   // port B - parallel interface
344387   MCFG_DEVICE_ADD("pia0", PIA6821, 0)
345388   MCFG_PIA_WRITEPA_HANDLER(WRITE8(zorba_state, pia0_porta_w))
346389
347// IEEE488 interface
390   // IEEE488 interface
348391   MCFG_DEVICE_ADD("pia1", PIA6821, 0)
349392
350393   MCFG_DEVICE_ADD("pit", PIT8254, 0)
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: ? */
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 */
354397
355398   MCFG_DEVICE_ADD("crtc", I8275, XTAL_14_31818MHz/7)
356399   MCFG_I8275_CHARACTER_WIDTH(8)
357400   MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(zorba_state, zorba_update_chr)
358401   MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w))
359   MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
402   MCFG_I8275_IRQ_CALLBACK(WRITELINE(zorba_state, irq0_w))
360403   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
361407   MCFG_FLOPPY_DRIVE_ADD("fdc:0", zorba_floppies, "525dd", floppy_image_device::default_floppy_formats)
362408   MCFG_FLOPPY_DRIVE_ADD("fdc:1", zorba_floppies, "525dd", floppy_image_device::default_floppy_formats)
363409
364410   /* Keyboard */
365   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
411   MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
366412   MCFG_GENERIC_KEYBOARD_CB(WRITE8(zorba_state, kbd_put))
367413MACHINE_CONFIG_END
368414
r243676r243677
379425   ROM_REGION( 0x60, "proms", 0 )
380426   ROM_LOAD( "74ls288.u37", 0x0000, 0x0020, CRC(0a67edd6) SHA1(c1ece8978a3a061e0130d43907fa63a71e75e75d) )
381427   ROM_LOAD( "74ls288.u38", 0x0020, 0x0020, CRC(5ec93ea7) SHA1(3a84c098474b05d5cbe1939a3e15f66d06470581) )
382   ROM_LOAD( "74ls288.u77", 0x0040, 0x0020, CRC(946e03b0) SHA1(24240bdd7bdf507a5b51628fb36ad1266fc53a28) )
428   ROM_LOAD( "74ls288.u77", 0x0040, 0x0020, CRC(946e03b0) SHA1(24240bdd7bdf507a5b51628fb36ad1266fc53a28) ) // suspected bad dump
383429ROM_END
384430
385431COMP( 1982, zorba, 0, 0, zorba, zorba, zorba_state, zorba, "Telcon Industries", "Zorba", GAME_NOT_WORKING )
trunk/src/mess/layout/tc4.lay
r243676r243677
5454
5555   <!-- score panel -->
5656
57      <bezel element="static_white"><bounds x="0" y="0.9" width="5" height="0.1" /></bezel>
57      <bezel element="static_white"><bounds x="0" y="0.9" width="4" 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>
6162      <bezel element="static_white"><bounds x="1.95" y="0.95" width="0.1" height="1.1" /></bezel>
6263      <bezel element="static_white"><bounds x="2.95" y="0.95" width="0.1" height="1.1" /></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>
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>
6666
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>
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>
7171
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>
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>
7474
7575
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>
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>
8080
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>
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>
8585
8686
8787
trunk/src/osd/sdl/sdl.mak
r243676r243677
728728
729729ifndef NO_USE_QTDEBUG
730730$(OSDOBJ)/%.moc.c: $(OSDSRC)/%.h
731   $(MOC) $(MOCINCPATH) $(DEFS) $< -o $@
731   $(MOC) $(MOCINCPATH) $< -o $@
732732
733733DEBUGOBJS = \
734734   $(OSDOBJ)/modules/debugger/qt/debuggerview.o \
trunk/src/osd/windows/drawdd.c
r243676r243677
5858      //ddcaps(0),
5959      //helcaps(0),
6060      membuffer(NULL),
61      membuffersize(NULL)
61      membuffersize(0)
6262   { }
6363
6464   virtual ~renderer_dd() { }
trunk/src/osd/windows/vconv.c
r243676r243677
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
8384   // warning C4242: 'x' : conversion from 'xxx' to 'xxx', possible loss of data
8485   // warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
8586   // warning C4250: 'xxx' : inherits 'xxx' via dominance
r243676r243677
108109   // warning C4805: 'x' : unsafe mix of type 'xxx' and type 'xxx' in operation
109110   // warning C4820: 'xxx' : 'x' bytes padding added after data member 'xxx'
110111   // warning C4826: Conversion from 'type1 ' to 'type_2' is sign-extended. This may cause unexpected runtime behavior. // 32-bit only
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" },
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" },
112113   { 0,        "-Wall",                    "/W0" },
113114   { VS7,      "-Wno-unused",              "/wd4100 /wd4101 /wd4102 /wd4505" },
114115   { 0,        "-Wno-sign-compare",        "/wd4365 /wd4389 /wd4245 /wd4388" },
trunk/src/osd/windows/windows.mak
r243676r243677
446446
447447MOC = @moc
448448$(OSDOBJ)/%.moc.c: $(OSDSRC)/%.h
449   $(MOC) $(INCPATH) $(DEFS) $< -o $@
449   $(MOC) $(INCPATH) $< -o $@
450450
451451OSDOBJS += \
452452   $(OSDOBJ)/modules/debugger/qt/debugqtview.o \


Previous 199869 Revisions Next


© 1997-2024 The MAME Team