Previous | 199869 Revisions | Next |
r35158 Friday 20th February, 2015 at 09:16:29 UTC by Vasantha Crabb |
---|
Make return type match value being returned |
[3rdparty/sqlite3] | sqlite3.c |
[src/emu] | input.c input.h ioport.c |
[src/emu/debug] | dvmemory.h |
[src/lib] | lib.mak |
[src/mame/audio] | skydiver.c |
[src/mame/drivers] | bnstars.c ms32.c raiden2.c skyarmy.c skydiver.c st_mp100.c tecmo.c tecmo16.c vball.c |
[src/mame/includes] | skydiver.h tecmo.h tecmo16.h vball.h |
[src/mame/video] | skydiver.c tecmo.c tecmo16.c vball.c |
[src/mess/drivers] | edracula.c pc9801.c tb303.c zorba.c |
[src/mess/layout] | tc4.lay |
[src/osd/sdl] | sdl.mak |
[src/osd/windows] | drawdd.c vconv.c windows.mak |
r243669 | r243670 | |
---|---|---|
8641 | 8641 | ** -DSQLITE_RUNTIME_BYTEORDER=1 is set, then byte-order is determined |
8642 | 8642 | ** at run-time. |
8643 | 8643 | */ |
8644 | #ifdef SQLITE_AMALGAMATION | |
8645 | SQLITE_PRIVATE const int sqlite3one = 1; | |
8646 | #else | |
8647 | SQLITE_PRIVATE const int sqlite3one; | |
8648 | #endif | |
8644 | 8649 | #if (defined(i386) || defined(__i386__) || defined(_M_IX86) || \ |
8645 | 8650 | defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \ |
8646 | 8651 | defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \ |
r243669 | r243670 | |
8658 | 8663 | # define SQLITE_UTF16NATIVE SQLITE_UTF16BE |
8659 | 8664 | #endif |
8660 | 8665 | #if !defined(SQLITE_BYTEORDER) |
8661 | #ifdef SQLITE_AMALGAMATION | |
8662 | SQLITE_PRIVATE const int sqlite3one = 1; | |
8663 | #else | |
8664 | SQLITE_PRIVATE const int sqlite3one; | |
8665 | #endif | |
8666 | 8666 | # define SQLITE_BYTEORDER 0 /* 0 means "unknown at compile-time" */ |
8667 | 8667 | # define SQLITE_BIGENDIAN (*(char *)(&sqlite3one)==0) |
8668 | 8668 | # define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1) |
r243669 | r243670 | |
10856 | 10856 | */ |
10857 | 10857 | #define FUNCTION(zName, nArg, iArg, bNC, xFunc) \ |
10858 | 10858 | {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \ |
10859 | SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, | |
10859 | SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0, 0} | |
10860 | 10860 | #define VFUNCTION(zName, nArg, iArg, bNC, xFunc) \ |
10861 | 10861 | {nArg, SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \ |
10862 | SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, | |
10862 | SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0, 0} | |
10863 | 10863 | #define FUNCTION2(zName, nArg, iArg, bNC, xFunc, extraFlags) \ |
10864 | 10864 | {nArg,SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\ |
10865 | SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, | |
10865 | SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, #zName, 0, 0} | |
10866 | 10866 | #define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \ |
10867 | 10867 | {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \ |
10868 | pArg, 0, xFunc, 0, 0, | |
10868 | pArg, 0, xFunc, 0, 0, #zName, 0, 0} | |
10869 | 10869 | #define LIKEFUNC(zName, nArg, arg, flags) \ |
10870 | 10870 | {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \ |
10871 | (void *)arg, 0, likeFunc, 0, 0, | |
10871 | (void *)arg, 0, likeFunc, 0, 0, #zName, 0, 0} | |
10872 | 10872 | #define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal) \ |
10873 | 10873 | {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL), \ |
10874 | SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal, | |
10874 | SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0,0} | |
10875 | 10875 | #define AGGREGATE2(zName, nArg, arg, nc, xStep, xFinal, extraFlags) \ |
10876 | 10876 | {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|extraFlags, \ |
10877 | SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal, | |
10877 | SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0,0} | |
10878 | 10878 | |
10879 | 10879 | /* |
10880 | 10880 | ** All current savepoints are stored in a linked list starting at |
r243669 | r243670 | |
21202 | 21202 | /* Normalize realvalue to within 10.0 > realvalue >= 1.0 */ |
21203 | 21203 | exp = 0; |
21204 | 21204 | if( sqlite3IsNaN((double)realvalue) ){ |
21205 | bufpt = | |
21205 | bufpt = "NaN"; | |
21206 | 21206 | length = 3; |
21207 | 21207 | break; |
21208 | 21208 | } |
r243669 | r243670 | |
21217 | 21217 | while( realvalue<1.0 ){ realvalue *= 10.0; exp--; } |
21218 | 21218 | if( exp>350 ){ |
21219 | 21219 | if( prefix=='-' ){ |
21220 | bufpt = | |
21220 | bufpt = "-Inf"; | |
21221 | 21221 | }else if( prefix=='+' ){ |
21222 | bufpt = | |
21222 | bufpt = "+Inf"; | |
21223 | 21223 | }else{ |
21224 | bufpt = | |
21224 | bufpt = "Inf"; | |
21225 | 21225 | } |
21226 | 21226 | length = sqlite3Strlen30(bufpt); |
21227 | 21227 | break; |
r243669 | r243670 | |
21375 | 21375 | bufpt = va_arg(ap,char*); |
21376 | 21376 | } |
21377 | 21377 | if( bufpt==0 ){ |
21378 | bufpt = | |
21378 | bufpt = ""; | |
21379 | 21379 | }else if( xtype==etDYNSTRING && !bArgList ){ |
21380 | 21380 | zExtra = bufpt; |
21381 | 21381 | } |
r243669 | r243670 | |
21400 | 21400 | escarg = va_arg(ap,char*); |
21401 | 21401 | } |
21402 | 21402 | isnull = escarg==0; |
21403 | if( isnull ) escarg = ( | |
21403 | if( isnull ) escarg = (xtype==etSQLESCAPE2 ? "NULL" : "(NULL)"); | |
21404 | 21404 | k = precision; |
21405 | 21405 | for(i=n=0; k!=0 && (ch=escarg[i])!=0; i++, k--){ |
21406 | 21406 | if( ch==q ) n++; |
r243669 | r243670 | |
22182 | 22182 | assert( rc!=WAIT_IO_COMPLETION ); |
22183 | 22183 | bRc = CloseHandle((HANDLE)p->tid); |
22184 | 22184 | assert( bRc ); |
22185 | (void)bRc; | |
22186 | 22185 | } |
22187 | 22186 | if( rc==WAIT_OBJECT_0 ) *ppOut = p->pResult; |
22188 | 22187 | sqlite3_free(p); |
r243669 | r243670 | |
22303 | 22302 | ** The following constant value is used by the SQLITE_BIGENDIAN and |
22304 | 22303 | ** SQLITE_LITTLEENDIAN macros. |
22305 | 22304 | */ |
22306 | ||
22305 | SQLITE_PRIVATE const int sqlite3one = 1; | |
22307 | 22306 | #endif /* SQLITE_AMALGAMATION */ |
22308 | 22307 | |
22309 | 22308 | /* |
r243669 | r243670 | |
25920 | 25919 | const char *zPath, /* File path associated with error */ |
25921 | 25920 | int iLine /* Source line number where error occurred */ |
25922 | 25921 | ){ |
25923 | c | |
25922 | char *zErr; /* Message from strerror() or equivalent */ | |
25924 | 25923 | int iErrno = errno; /* Saved syscall error number */ |
25925 | 25924 | |
25926 | 25925 | /* If this is not a threadsafe build (SQLITE_THREADSAFE==0), then use |
r243669 | r243670 | |
64313 | 64312 | sqlite3_snprintf(nTemp, zTemp, "NULL"); |
64314 | 64313 | }else{ |
64315 | 64314 | assert( pMem->flags & MEM_Blob ); |
64316 | zP4 = | |
64315 | zP4 = "(blob)"; | |
64317 | 64316 | } |
64318 | 64317 | break; |
64319 | 64318 | } |
r243669 | r243670 | |
86312 | 86311 | statInit, /* xFunc */ |
86313 | 86312 | 0, /* xStep */ |
86314 | 86313 | 0, /* xFinalize */ |
86315 | | |
86314 | "stat_init", /* zName */ | |
86316 | 86315 | 0, /* pHash */ |
86317 | 86316 | 0 /* pDestructor */ |
86318 | 86317 | }; |
r243669 | r243670 | |
86613 | 86612 | statPush, /* xFunc */ |
86614 | 86613 | 0, /* xStep */ |
86615 | 86614 | 0, /* xFinalize */ |
86616 | | |
86615 | "stat_push", /* zName */ | |
86617 | 86616 | 0, /* pHash */ |
86618 | 86617 | 0 /* pDestructor */ |
86619 | 86618 | }; |
r243669 | r243670 | |
86760 | 86759 | statGet, /* xFunc */ |
86761 | 86760 | 0, /* xStep */ |
86762 | 86761 | 0, /* xFinalize */ |
86763 | | |
86762 | "stat_get", /* zName */ | |
86764 | 86763 | 0, /* pHash */ |
86765 | 86764 | 0 /* pDestructor */ |
86766 | 86765 | }; |
r243669 | r243670 | |
88106 | 88105 | detachFunc, /* xFunc */ |
88107 | 88106 | 0, /* xStep */ |
88108 | 88107 | 0, /* xFinalize */ |
88109 | | |
88108 | "sqlite_detach", /* zName */ | |
88110 | 88109 | 0, /* pHash */ |
88111 | 88110 | 0 /* pDestructor */ |
88112 | 88111 | }; |
r243669 | r243670 | |
88127 | 88126 | attachFunc, /* xFunc */ |
88128 | 88127 | 0, /* xStep */ |
88129 | 88128 | 0, /* xFinalize */ |
88130 | | |
88129 | "sqlite_attach", /* zName */ | |
88131 | 88130 | 0, /* pHash */ |
88132 | 88131 | 0 /* pDestructor */ |
88133 | 88132 | }; |
r243669 | r243670 | |
90083 | 90082 | static char *createTableStmt(sqlite3 *db, Table *p){ |
90084 | 90083 | int i, k, n; |
90085 | 90084 | char *zStmt; |
90086 | c | |
90085 | char *zSep, *zSep2, *zEnd; | |
90087 | 90086 | Column *pCol; |
90088 | 90087 | n = 0; |
90089 | 90088 | for(pCol = p->aCol, i=0; i<p->nCol; i++, pCol++){ |
r243669 | r243670 | |
90318 | 90317 | if( !hasColumn(pPk->aiColumn, j, i) ){ |
90319 | 90318 | assert( j<pPk->nColumn ); |
90320 | 90319 | pPk->aiColumn[j] = i; |
90321 | pPk->azColl[j] = | |
90320 | pPk->azColl[j] = "BINARY"; | |
90322 | 90321 | j++; |
90323 | 90322 | } |
90324 | 90323 | } |
r243669 | r243670 | |
90419 | 90418 | if( !db->init.busy ){ |
90420 | 90419 | int n; |
90421 | 90420 | Vdbe *v; |
90422 | const char *zType; /* "view" or "table" */ | |
90423 | const char *zType2; /* "VIEW" or "TABLE" */ | |
90421 | char *zType; /* "view" or "table" */ | |
90422 | char *zType2; /* "VIEW" or "TABLE" */ | |
90424 | 90423 | char *zStmt; /* Text of the CREATE TABLE or CREATE VIEW statement */ |
90425 | 90424 | |
90426 | 90425 | v = sqlite3GetVdbe(pParse); |
r243669 | r243670 | |
91643 | 91642 | nExtra -= nColl; |
91644 | 91643 | }else{ |
91645 | 91644 | zColl = pTab->aCol[j].zColl; |
91646 | if( !zColl ) zColl = | |
91645 | if( !zColl ) zColl = "BINARY"; | |
91647 | 91646 | } |
91648 | 91647 | if( !db->init.busy && !sqlite3LocateCollSeq(pParse, zColl) ){ |
91649 | 91648 | goto exit_create_index; |
r243669 | r243670 | |
91668 | 91667 | assert( i==pIndex->nColumn ); |
91669 | 91668 | }else{ |
91670 | 91669 | pIndex->aiColumn[i] = -1; |
91671 | pIndex->azColl[i] = | |
91670 | pIndex->azColl[i] = "BINARY"; | |
91672 | 91671 | } |
91673 | 91672 | sqlite3DefaultRowEst(pIndex); |
91674 | 91673 | if( pParse->pNewTable==0 ) estimateIndexWidth(pIndex); |
r243669 | r243670 | |
96220 | 96219 | ** unusable. Bail out early in this case. */ |
96221 | 96220 | zDfltColl = pParent->aCol[iCol].zColl; |
96222 | 96221 | if( !zDfltColl ){ |
96223 | zDfltColl = | |
96222 | zDfltColl = "BINARY"; | |
96224 | 96223 | } |
96225 | 96224 | if( sqlite3StrICmp(pIdx->azColl[i], zDfltColl) ) break; |
96226 | 96225 | |
r243669 | r243670 | |
101463 | 101462 | ** journal-mode name. |
101464 | 101463 | */ |
101465 | 101464 | SQLITE_PRIVATE const char *sqlite3JournalModename(int eMode){ |
101466 | static c | |
101465 | static char * const azModeName[] = { | |
101467 | 101466 | "delete", "persist", "off", "truncate", "memory" |
101468 | 101467 | #ifndef SQLITE_OMIT_WAL |
101469 | 101468 | , "wal" |
r243669 | r243670 | |
102833 | 102832 | */ |
102834 | 102833 | case PragTyp_ENCODING: { |
102835 | 102834 | static const struct EncName { |
102836 | c | |
102835 | char *zName; | |
102837 | 102836 | u8 enc; |
102838 | 102837 | } encnames[] = { |
102839 | 102838 | { "UTF8", SQLITE_UTF8 }, |
r243669 | r243670 | |
105141 | 105140 | ** Name of the connection operator, used for error messages. |
105142 | 105141 | */ |
105143 | 105142 | static const char *selectOpName(int id){ |
105144 | c | |
105143 | char *z; | |
105145 | 105144 | switch( id ){ |
105146 | 105145 | case TK_ALL: z = "UNION ALL"; break; |
105147 | 105146 | case TK_INTERSECT: z = "INTERSECT"; break; |
r243669 | r243670 | |
105608 | 105607 | if( iCol<0 ) iCol = pTab->iPKey; |
105609 | 105608 | assert( iCol==-1 || (iCol>=0 && iCol<pTab->nCol) ); |
105610 | 105609 | if( iCol<0 ){ |
105611 | zCol = | |
105610 | zCol = "rowid"; | |
105612 | 105611 | }else{ |
105613 | 105612 | zCol = pTab->aCol[iCol].zName; |
105614 | 105613 | } |
r243669 | r243670 | |
111849 | 111848 | */ |
111850 | 111849 | nDb = db->nDb; |
111851 | 111850 | if( sqlite3TempInMemory(db) ){ |
111852 | zSql = | |
111851 | zSql = "ATTACH ':memory:' AS vacuum_db;"; | |
111853 | 111852 | }else{ |
111854 | zSql = | |
111853 | zSql = "ATTACH '' AS vacuum_db;"; | |
111855 | 111854 | } |
111856 | 111855 | rc = execSql(db, pzErrMsg, zSql); |
111857 | 111856 | if( db->nDb>nDb ){ |
r243669 | r243670 | |
115271 | 115270 | pIdx = sqlite3AllocateIndexObject(pParse->db, nKeyCol+1, 0, &zNotUsed); |
115272 | 115271 | if( pIdx==0 ) return; |
115273 | 115272 | pLoop->u.btree.pIndex = pIdx; |
115274 | pIdx->zName = | |
115273 | pIdx->zName = "auto-index"; | |
115275 | 115274 | pIdx->pTable = pTable; |
115276 | 115275 | n = 0; |
115277 | 115276 | idxCols = 0; |
r243669 | r243670 | |
115286 | 115285 | idxCols |= cMask; |
115287 | 115286 | pIdx->aiColumn[n] = pTerm->u.leftColumn; |
115288 | 115287 | pColl = sqlite3BinaryCompareCollSeq(pParse, pX->pLeft, pX->pRight); |
115289 | pIdx->azColl[n] = ALWAYS(pColl) ? pColl->zName : | |
115288 | pIdx->azColl[n] = ALWAYS(pColl) ? pColl->zName : "BINARY"; | |
115290 | 115289 | n++; |
115291 | 115290 | } |
115292 | 115291 | } |
r243669 | r243670 | |
115298 | 115297 | for(i=0; i<mxBitCol; i++){ |
115299 | 115298 | if( extraCols & MASKBIT(i) ){ |
115300 | 115299 | pIdx->aiColumn[n] = i; |
115301 | pIdx->azColl[n] = | |
115300 | pIdx->azColl[n] = "BINARY"; | |
115302 | 115301 | n++; |
115303 | 115302 | } |
115304 | 115303 | } |
115305 | 115304 | if( pSrc->colUsed & MASKBIT(BMS-1) ){ |
115306 | 115305 | for(i=BMS-1; i<pTable->nCol; i++){ |
115307 | 115306 | pIdx->aiColumn[n] = i; |
115308 | pIdx->azColl[n] = | |
115307 | pIdx->azColl[n] = "BINARY"; | |
115309 | 115308 | n++; |
115310 | 115309 | } |
115311 | 115310 | } |
115312 | 115311 | assert( n==nKeyCol ); |
115313 | 115312 | pIdx->aiColumn[n] = -1; |
115314 | pIdx->azColl[n] = | |
115313 | pIdx->azColl[n] = "BINARY"; | |
115315 | 115314 | |
115316 | 115315 | /* Create the automatic index */ |
115317 | 115316 | assert( pLevel->iIdxCur>=0 ); |
r243669 | r243670 | |
116378 | 116377 | if( nEq==0 && (pLoop->wsFlags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ) return; |
116379 | 116378 | sqlite3StrAccumAppend(pStr, " (", 2); |
116380 | 116379 | for(i=0; i<nEq; i++){ |
116381 | char *z = aiColumn[i] < 0 ? | |
116380 | char *z = aiColumn[i] < 0 ? "rowid" : aCol[aiColumn[i]].zName; | |
116382 | 116381 | if( i>=nSkip ){ |
116383 | 116382 | explainAppendTerm(pStr, i, z, "="); |
116384 | 116383 | }else{ |
r243669 | r243670 | |
116389 | 116388 | |
116390 | 116389 | j = i; |
116391 | 116390 | if( pLoop->wsFlags&WHERE_BTM_LIMIT ){ |
116392 | char *z = aiColumn[j] < 0 ? | |
116391 | char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName; | |
116393 | 116392 | explainAppendTerm(pStr, i++, z, ">"); |
116394 | 116393 | } |
116395 | 116394 | if( pLoop->wsFlags&WHERE_TOP_LIMIT ){ |
116396 | char *z = aiColumn[j] < 0 ? | |
116395 | char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName; | |
116397 | 116396 | explainAppendTerm(pStr, i, z, "<"); |
116398 | 116397 | } |
116399 | 116398 | sqlite3StrAccumAppend(pStr, ")", 1); |
r243669 | r243670 | |
127316 | 127315 | mask = SQLITE_OPEN_SHAREDCACHE|SQLITE_OPEN_PRIVATECACHE; |
127317 | 127316 | aMode = aCacheMode; |
127318 | 127317 | limit = mask; |
127319 | zModeType = | |
127318 | zModeType = "cache"; | |
127320 | 127319 | } |
127321 | 127320 | if( nOpt==4 && memcmp("mode", zOpt, 4)==0 ){ |
127322 | 127321 | static struct OpenMode aOpenMode[] = { |
r243669 | r243670 | |
127331 | 127330 | | SQLITE_OPEN_CREATE | SQLITE_OPEN_MEMORY; |
127332 | 127331 | aMode = aOpenMode; |
127333 | 127332 | limit = mask & flags; |
127334 | zModeType = | |
127333 | zModeType = "access"; | |
127335 | 127334 | } |
127336 | 127335 | |
127337 | 127336 | if( aMode ){ |
r243669 | r243670 | |
127560 | 127559 | /* The default safety_level for the main database is 'full'; for the temp |
127561 | 127560 | ** database it is 'NONE'. This matches the pager layer defaults. |
127562 | 127561 | */ |
127563 | db->aDb[0].zName = | |
127562 | db->aDb[0].zName = "main"; | |
127564 | 127563 | db->aDb[0].safety_level = 3; |
127565 | db->aDb[1].zName = | |
127564 | db->aDb[1].zName = "temp"; | |
127566 | 127565 | db->aDb[1].safety_level = 1; |
127567 | 127566 | |
127568 | 127567 | db->magic = SQLITE_MAGIC_OPEN; |
r243669 | r243670 | |
---|---|---|
54 | 54 | // getters |
55 | 55 | const char *expression() { return m_expression.string(); } |
56 | 56 | UINT8 bytes_per_chunk() { flush_updates(); return m_bytes_per_chunk; } |
57 | UINT | |
57 | UINT32 chunks_per_row() { flush_updates(); return m_chunks_per_row; } | |
58 | 58 | bool reverse() const { return m_reverse_view; } |
59 | 59 | bool ascii() const { return m_ascii_view; } |
60 | 60 | bool physical() const { return m_no_translation; } |
r243669 | r243670 | |
---|---|---|
422 | 422 | |
423 | 423 | // standard joystick mappings |
424 | 424 | const char joystick_map_8way[] = "7778...4445"; |
425 | const char joystick_map_4way_sticky[] = "s8.4s8.44s8.4445"; | |
425 | 426 | const char joystick_map_4way_diagonal[] = "4444s8888..444458888.444555888.ss5.222555666.222256666.2222s6666.2222s6666"; |
426 | // const char joystick_map_4way_sticky[] = "s8.4s8.44s8.4445"; | |
427 | 427 | |
428 | 428 | |
429 | ||
429 | 430 | //************************************************************************** |
430 | 431 | // JOYSTICK MAP |
431 | 432 | //************************************************************************** |
r243669 | r243670 | |
---|---|---|
1135 | 1135 | |
1136 | 1136 | // joystick maps |
1137 | 1137 | extern const char joystick_map_8way[]; |
1138 | extern const char joystick_map_4way_sticky[]; | |
1138 | 1139 | extern const char joystick_map_4way_diagonal[]; |
1139 | 1140 | |
1140 | 1141 |
r243669 | r243670 | |
---|---|---|
785 | 785 | // |
786 | 786 | // If joystick is pointing at a diagonal, acknowledge that the player moved |
787 | 787 | // the joystick by favoring a direction change. This minimizes frustration |
788 | // and maximizes responsiveness. | |
788 | // when using a keyboard for input, and maximizes responsiveness. | |
789 | 789 | // |
790 | 790 | // For example, if you are holding "left" then switch to "up" (where both left |
791 | 791 | // and up are briefly pressed at the same time), we'll transition immediately |
r243669 | r243670 | |
2519 | 2519 | init_autoselect_devices(IPT_TRACKBALL_X, IPT_TRACKBALL_Y, 0, OPTION_TRACKBALL_DEVICE, "trackball"); |
2520 | 2520 | init_autoselect_devices(IPT_MOUSE_X, IPT_MOUSE_Y, 0, OPTION_MOUSE_DEVICE, "mouse"); |
2521 | 2521 | |
2522 | // look for 4-way | |
2522 | // look for 4-way joysticks and change the default map if we find any | |
2523 | 2523 | const char *joystick_map_default = machine().options().joystick_map(); |
2524 | 2524 | if (joystick_map_default[0] == 0 || strcmp(joystick_map_default, "auto") == 0) |
2525 | 2525 | for (ioport_port *port = first_port(); port != NULL; port = port->next()) |
2526 | 2526 | for (ioport_field *field = port->first_field(); field != NULL; field = field->next()) |
2527 | if (field->live().joystick != NULL && field-> | |
2527 | if (field->live().joystick != NULL && field->way() == 4) | |
2528 | 2528 | { |
2529 | machine().input().set_global_joystick_map(joystick_map_4way_diagonal); | |
2529 | machine().input().set_global_joystick_map(field->rotated() ? joystick_map_4way_diagonal : joystick_map_4way_sticky); | |
2530 | 2530 | break; |
2531 | 2531 | } |
2532 | 2532 |
r243669 | r243670 | |
---|---|---|
598 | 598 | |
599 | 599 | $(LIBOBJ)/sqlite3/sqlite3.o: $(3RDPARTY)/sqlite3/sqlite3.c | $(OSPREBUILD) |
600 | 600 | @echo Compiling $<... |
601 | $(CC) $(CDEFS) $(C | |
601 | $(CC) $(CDEFS) $(CONLYFLAGS) -Wno-bad-function-cast -I$(3RDPARTY)/sqlite3 $(SQLITE3_FLAGS) -c $< -o $@ | |
602 | 602 | |
603 | 603 | #------------------------------------------------- |
604 | 604 | # BGFX library objects |
r243669 | r243670 | |
---|---|---|
43 | 43 | |
44 | 44 | DISCRETE_SOUND_START(skydiver) |
45 | 45 | /************************************************/ |
46 | /* skydiver Effects Relative Gain Table | |
46 | /* skydiver Effects Relataive Gain Table */ | |
47 | 47 | /* */ |
48 | 48 | /* Effect V-ampIn Gain ratio Relative */ |
49 | 49 | /* Note 3.8 3.8/260.5 1000.0 */ |
r243669 | r243670 | |
---|---|---|
106 | 106 | m_ms32_bg1_ram(*this, "bg1_ram"), |
107 | 107 | m_ms32_roz0_ram(*this, "roz0_ram"), |
108 | 108 | m_ms32_roz1_ram(*this, "roz1_ram"), |
109 | m_ms32_pal_ram(*this, "pal_ram"), | |
109 | 110 | m_ms32_roz_ctrl(*this, "roz_ctrl"), |
110 | 111 | m_ms32_spram(*this, "spram"), |
111 | 112 | m_ms32_tx0_scroll(*this, "tx0_scroll"), |
112 | 113 | m_ms32_bg0_scroll(*this, "bg0_scroll"), |
113 | 114 | m_ms32_tx1_scroll(*this, "tx1_scroll"), |
114 | m_ms32_bg1_scroll(*this, "bg1_scroll"), | |
115 | m_p1_keys(*this, "P1KEY"), | |
116 | m_p2_keys(*this, "P2KEY") { } | |
115 | m_ms32_bg1_scroll(*this, "bg1_scroll") { } | |
117 | 116 | |
118 | 117 | tilemap_t *m_ms32_tx_tilemap[2]; |
119 | 118 | tilemap_t *m_ms32_bg_tilemap[2]; |
r243669 | r243670 | |
124 | 123 | required_shared_ptr<UINT32> m_ms32_bg1_ram; |
125 | 124 | required_shared_ptr<UINT32> m_ms32_roz0_ram; |
126 | 125 | required_shared_ptr<UINT32> m_ms32_roz1_ram; |
126 | required_shared_ptr_array<UINT32, 2> m_ms32_pal_ram; | |
127 | 127 | required_shared_ptr_array<UINT32, 2> m_ms32_roz_ctrl; |
128 | 128 | required_shared_ptr<UINT32> m_ms32_spram; |
129 | 129 | required_shared_ptr<UINT32> m_ms32_tx0_scroll; |
130 | 130 | required_shared_ptr<UINT32> m_ms32_bg0_scroll; |
131 | 131 | required_shared_ptr<UINT32> m_ms32_tx1_scroll; |
132 | 132 | 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 | ||
137 | 133 | UINT32 m_bnstars1_mahjong_select; |
138 | 134 | DECLARE_WRITE32_MEMBER(ms32_tx0_ram_w); |
139 | 135 | DECLARE_WRITE32_MEMBER(ms32_tx1_ram_w); |
r243669 | r243670 | |
141 | 137 | DECLARE_WRITE32_MEMBER(ms32_bg1_ram_w); |
142 | 138 | DECLARE_WRITE32_MEMBER(ms32_roz0_ram_w); |
143 | 139 | 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); | |
144 | 143 | DECLARE_WRITE32_MEMBER(bnstars1_mahjong_select_w); |
145 | DECLARE_CUSTOM_INPUT_MEMBER(mahjong_ctrl_r); | |
146 | 144 | DECLARE_DRIVER_INIT(bnstars); |
147 | 145 | TILE_GET_INFO_MEMBER(get_ms32_tx0_tile_info); |
148 | 146 | TILE_GET_INFO_MEMBER(get_ms32_tx1_tile_info); |
r243669 | r243670 | |
155 | 153 | UINT32 screen_update_bnstars_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
156 | 154 | UINT32 screen_update_bnstars_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
157 | 155 | void draw_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int chip); |
158 | void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size); | |
156 | void update_color(int color, int screen); | |
157 | void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region); | |
159 | 158 | }; |
160 | 159 | |
161 | 160 | |
r243669 | r243670 | |
177 | 176 | tileno = m_ms32_tx1_ram[tile_index *2+0] & 0x0000ffff; |
178 | 177 | colour = m_ms32_tx1_ram[tile_index *2+1] & 0x0000000f; |
179 | 178 | |
180 | SET_TILE_INFO_MEMBER( | |
179 | SET_TILE_INFO_MEMBER(7,tileno,colour,0); | |
181 | 180 | } |
182 | 181 | |
183 | 182 | WRITE32_MEMBER(bnstars_state::ms32_tx0_ram_w) |
r243669 | r243670 | |
211 | 210 | tileno = m_ms32_bg1_ram[tile_index *2+0] & 0x0000ffff; |
212 | 211 | colour = m_ms32_bg1_ram[tile_index *2+1] & 0x0000000f; |
213 | 212 | |
214 | SET_TILE_INFO_MEMBER( | |
213 | SET_TILE_INFO_MEMBER(6,tileno,colour,0); | |
215 | 214 | } |
216 | 215 | |
217 | 216 | WRITE32_MEMBER(bnstars_state::ms32_bg0_ram_w) |
r243669 | r243670 | |
330 | 329 | tileno = m_ms32_roz1_ram[tile_index *2+0] & 0x0000ffff; |
331 | 330 | colour = m_ms32_roz1_ram[tile_index *2+1] & 0x0000000f; |
332 | 331 | |
333 | SET_TILE_INFO_MEMBER( | |
332 | SET_TILE_INFO_MEMBER(5,tileno,colour,0); | |
334 | 333 | } |
335 | 334 | |
336 | 335 | WRITE32_MEMBER(bnstars_state::ms32_roz0_ram_w) |
r243669 | r243670 | |
346 | 345 | } |
347 | 346 | |
348 | 347 | |
348 | void 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 | ||
359 | WRITE32_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 | ||
365 | WRITE32_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 | ||
349 | 372 | /* SPRITES based on tetrisp2 for now, readd priority bits later */ |
350 | void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size) | |
373 | void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region) | |
351 | 374 | { |
352 | 375 | /*************************************************************************** |
353 | 376 | |
r243669 | r243670 | |
389 | 412 | int tx, ty, sx, sy, flipx, flipy; |
390 | 413 | int xsize, ysize, xzoom, yzoom; |
391 | 414 | int code, attr, color, size, pri, pri_mask; |
392 | gfx_element *gfx = m_gfxdecode->gfx( | |
415 | gfx_element *gfx = m_gfxdecode->gfx(region); | |
393 | 416 | |
394 | 417 | UINT32 *source = sprram_top; |
395 | 418 | const UINT32 *finish = sprram_top + (sprram_size - 0x10) / 4; |
r243669 | r243670 | |
515 | 538 | m_ms32_tx_tilemap[0]->draw(screen, bitmap, cliprect, 0,4); |
516 | 539 | |
517 | 540 | |
518 | draw_sprites(screen,bitmap,cliprect, m_ms32_spram, 0x20000); | |
541 | draw_sprites(screen,bitmap,cliprect, m_ms32_spram, 0x20000, 0); | |
519 | 542 | |
520 | 543 | return 0; |
521 | 544 | } |
r243669 | r243670 | |
524 | 547 | { |
525 | 548 | screen.priority().fill(0, cliprect); |
526 | 549 | |
527 | bitmap.fill(0, cliprect); /* bg color */ | |
550 | bitmap.fill(0x8000+0, cliprect); /* bg color */ | |
528 | 551 | |
529 | 552 | |
530 | 553 | m_ms32_bg_tilemap[1]->set_scrollx(0, m_ms32_bg1_scroll[0x00/4] + m_ms32_bg1_scroll[0x08/4] + 0x10 ); |
r243669 | r243670 | |
537 | 560 | m_ms32_tx_tilemap[1]->set_scrolly(0, m_ms32_tx1_scroll[0x0c/4] + m_ms32_tx1_scroll[0x14/4]); |
538 | 561 | m_ms32_tx_tilemap[1]->draw(screen, bitmap, cliprect, 0,4); |
539 | 562 | |
540 | draw_sprites(screen,bitmap,cliprect, m_ms32_spram+(0x20000/4), 0x20000); | |
563 | draw_sprites(screen,bitmap,cliprect, m_ms32_spram+(0x20000/4), 0x20000, 4); | |
541 | 564 | |
542 | 565 | return 0; |
543 | 566 | } |
544 | 567 | |
545 | 568 | static INPUT_PORTS_START( bnstars ) |
546 | PORT_START("P1") | |
547 | PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bnstars_state, mahjong_ctrl_r, (void *)0) | |
548 | PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
549 | PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 ) | |
550 | PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
551 | PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE1 ) | |
552 | PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Test?") PORT_CODE(KEYCODE_F1) | |
553 | ||
554 | PORT_START("P1KEY.0") | |
555 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) | |
569 | PORT_START("IN0") | |
570 | PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 ) | |
556 | 571 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_A ) |
557 | 572 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_E ) |
558 | 573 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) |
559 | 574 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_I ) |
560 | 575 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) |
561 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
576 | PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) | |
577 | PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) | |
578 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
579 | PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) | |
580 | PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) | |
581 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
582 | PORT_DIPNAME( 0x00000100, 0x00000100, DEF_STR( Unknown ) ) | |
583 | PORT_DIPSETTING( 0x00000100, DEF_STR( Off ) ) | |
584 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
585 | PORT_DIPNAME( 0x00000200, 0x00000200, DEF_STR( Unknown ) ) | |
586 | PORT_DIPSETTING( 0x00000200, DEF_STR( Off ) ) | |
587 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
588 | PORT_DIPNAME( 0x00000400, 0x00000400, DEF_STR( Unknown ) ) | |
589 | PORT_DIPSETTING( 0x00000400, DEF_STR( Off ) ) | |
590 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
591 | PORT_DIPNAME( 0x00000800, 0x00000800, DEF_STR( Unknown ) ) | |
592 | PORT_DIPSETTING( 0x00000800, DEF_STR( Off ) ) | |
593 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
594 | PORT_DIPNAME( 0x00001000, 0x00001000, DEF_STR( Unknown ) ) | |
595 | PORT_DIPSETTING( 0x00001000, DEF_STR( Off ) ) | |
596 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
597 | PORT_DIPNAME( 0x00002000, 0x00002000, DEF_STR( Unknown ) ) | |
598 | PORT_DIPSETTING( 0x00002000, DEF_STR( Off ) ) | |
599 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
600 | PORT_DIPNAME( 0x00004000, 0x00004000, DEF_STR( Unknown ) ) | |
601 | PORT_DIPSETTING( 0x00004000, DEF_STR( Off ) ) | |
602 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
603 | PORT_DIPNAME( 0x00008000, 0x00008000, DEF_STR( Unknown ) ) | |
604 | PORT_DIPSETTING( 0x00008000, DEF_STR( Off ) ) | |
605 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
606 | PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 ) | |
607 | PORT_DIPNAME( 0x00020000, 0x00020000, "MAH1" ) | |
608 | PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) | |
609 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
610 | PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE1 ) | |
611 | PORT_DIPNAME( 0x00080000, 0x00080000, "Service Mode ? 1" ) | |
612 | PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) | |
613 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
614 | PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) | |
615 | PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) | |
616 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
617 | PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unknown ) ) | |
618 | PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) | |
619 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
620 | PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) | |
621 | PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) | |
622 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
623 | PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) | |
624 | PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) | |
625 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
626 | PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) ) | |
627 | PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) ) | |
628 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
629 | PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) ) | |
630 | PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) ) | |
631 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
632 | PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) ) | |
633 | PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) ) | |
634 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
635 | PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) | |
636 | PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) ) | |
637 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
638 | PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) | |
639 | PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) ) | |
640 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
641 | PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) | |
642 | PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) | |
643 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
644 | PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) | |
645 | PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) ) | |
646 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
647 | PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) | |
648 | PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) ) | |
649 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
562 | 650 | |
563 | PORT_START("P1KEY.1") | |
564 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
565 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B ) | |
566 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_F ) | |
567 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) | |
568 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_J ) | |
569 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) | |
570 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
651 | PORT_START("IN1") | |
652 | PORT_DIPNAME( 0x00000001, 0x00000001, "MAH2" ) | |
653 | PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) | |
654 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
655 | PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_B ) | |
656 | PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_F ) | |
657 | PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) | |
658 | PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_J ) | |
659 | PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) | |
660 | PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) | |
661 | PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) | |
662 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
663 | PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) | |
664 | PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) | |
665 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
666 | PORT_DIPNAME( 0x00000100, 0x00000100, DEF_STR( Unknown ) ) | |
667 | PORT_DIPSETTING( 0x00000100, DEF_STR( Off ) ) | |
668 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
669 | PORT_DIPNAME( 0x00000200, 0x00000200, DEF_STR( Unknown ) ) | |
670 | PORT_DIPSETTING( 0x00000200, DEF_STR( Off ) ) | |
671 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
672 | PORT_DIPNAME( 0x00000400, 0x00000400, DEF_STR( Unknown ) ) | |
673 | PORT_DIPSETTING( 0x00000400, DEF_STR( Off ) ) | |
674 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
675 | PORT_DIPNAME( 0x00000800, 0x00000800, DEF_STR( Unknown ) ) | |
676 | PORT_DIPSETTING( 0x00000800, DEF_STR( Off ) ) | |
677 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
678 | PORT_DIPNAME( 0x00001000, 0x00001000, DEF_STR( Unknown ) ) | |
679 | PORT_DIPSETTING( 0x00001000, DEF_STR( Off ) ) | |
680 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
681 | PORT_DIPNAME( 0x00002000, 0x00002000, DEF_STR( Unknown ) ) | |
682 | PORT_DIPSETTING( 0x00002000, DEF_STR( Off ) ) | |
683 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
684 | PORT_DIPNAME( 0x00004000, 0x00004000, DEF_STR( Unknown ) ) | |
685 | PORT_DIPSETTING( 0x00004000, DEF_STR( Off ) ) | |
686 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
687 | PORT_DIPNAME( 0x00008000, 0x00008000, DEF_STR( Unknown ) ) | |
688 | PORT_DIPSETTING( 0x00008000, DEF_STR( Off ) ) | |
689 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
690 | PORT_DIPNAME( 0x00010000, 0x00010000, "MAH3" ) | |
691 | PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) ) | |
692 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
693 | PORT_DIPNAME( 0x00020000, 0x00020000, DEF_STR( Unknown ) ) | |
694 | PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) | |
695 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
696 | PORT_DIPNAME( 0x00040000, 0x00040000, DEF_STR( Unknown ) ) | |
697 | PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) ) | |
698 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
699 | PORT_DIPNAME( 0x00080000, 0x00080000, DEF_STR( Unknown ) ) | |
700 | PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) | |
701 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
702 | PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) | |
703 | PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) | |
704 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
705 | PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unknown ) ) | |
706 | PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) | |
707 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
708 | PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) | |
709 | PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) | |
710 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
711 | PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) | |
712 | PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) | |
713 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
714 | PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) ) | |
715 | PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) ) | |
716 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
717 | PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) ) | |
718 | PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) ) | |
719 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
720 | PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) ) | |
721 | PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) ) | |
722 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
723 | PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) | |
724 | PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) ) | |
725 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
726 | PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) | |
727 | PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) ) | |
728 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
729 | PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) | |
730 | PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) | |
731 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
732 | PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) | |
733 | PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) ) | |
734 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
735 | PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) | |
736 | PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) ) | |
737 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
571 | 738 | |
572 | PORT_START("P1KEY.2") | |
573 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
574 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_C ) | |
575 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G ) | |
576 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) | |
577 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_K ) | |
578 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) | |
579 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
739 | PORT_START("IN2") | |
740 | PORT_DIPNAME( 0x00000001, 0x00000001, "MAH4" ) | |
741 | PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) | |
742 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
743 | PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_C ) | |
744 | PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_G ) | |
745 | PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) | |
746 | PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_K ) | |
747 | PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) | |
748 | PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) | |
749 | PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) | |
750 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
751 | PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) | |
752 | PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) | |
753 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
754 | PORT_DIPNAME( 0x00000100, 0x00000100, DEF_STR( Unknown ) ) | |
755 | PORT_DIPSETTING( 0x00000100, DEF_STR( Off ) ) | |
756 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
757 | PORT_DIPNAME( 0x00000200, 0x00000200, DEF_STR( Unknown ) ) | |
758 | PORT_DIPSETTING( 0x00000200, DEF_STR( Off ) ) | |
759 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
760 | PORT_DIPNAME( 0x00000400, 0x00000400, DEF_STR( Unknown ) ) | |
761 | PORT_DIPSETTING( 0x00000400, DEF_STR( Off ) ) | |
762 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
763 | PORT_DIPNAME( 0x00000800, 0x00000800, DEF_STR( Unknown ) ) | |
764 | PORT_DIPSETTING( 0x00000800, DEF_STR( Off ) ) | |
765 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
766 | PORT_DIPNAME( 0x00001000, 0x00001000, DEF_STR( Unknown ) ) | |
767 | PORT_DIPSETTING( 0x00001000, DEF_STR( Off ) ) | |
768 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
769 | PORT_DIPNAME( 0x00002000, 0x00002000, DEF_STR( Unknown ) ) | |
770 | PORT_DIPSETTING( 0x00002000, DEF_STR( Off ) ) | |
771 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
772 | PORT_DIPNAME( 0x00004000, 0x00004000, DEF_STR( Unknown ) ) | |
773 | PORT_DIPSETTING( 0x00004000, DEF_STR( Off ) ) | |
774 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
775 | PORT_DIPNAME( 0x00008000, 0x00008000, DEF_STR( Unknown ) ) | |
776 | PORT_DIPSETTING( 0x00008000, DEF_STR( Off ) ) | |
777 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
778 | PORT_DIPNAME( 0x00010000, 0x00010000, "MAH5" ) | |
779 | PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) ) | |
780 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
781 | PORT_DIPNAME( 0x00020000, 0x00020000, DEF_STR( Unknown ) ) | |
782 | PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) | |
783 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
784 | PORT_DIPNAME( 0x00040000, 0x00040000, DEF_STR( Unknown ) ) | |
785 | PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) ) | |
786 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
787 | PORT_DIPNAME( 0x00080000, 0x00080000, DEF_STR( Unknown ) ) | |
788 | PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) | |
789 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
790 | PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) | |
791 | PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) | |
792 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
793 | PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unknown ) ) | |
794 | PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) | |
795 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
796 | PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) | |
797 | PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) | |
798 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
799 | PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) | |
800 | PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) | |
801 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
802 | PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) ) | |
803 | PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) ) | |
804 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
805 | PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) ) | |
806 | PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) ) | |
807 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
808 | PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) ) | |
809 | PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) ) | |
810 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
811 | PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) | |
812 | PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) ) | |
813 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
814 | PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) | |
815 | PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) ) | |
816 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
817 | PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) | |
818 | PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) | |
819 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
820 | PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) | |
821 | PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) ) | |
822 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
823 | PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) | |
824 | PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) ) | |
825 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
580 | 826 | |
581 | PORT_START("P1KEY.3") | |
582 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
583 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_D ) | |
584 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_H ) | |
585 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) | |
586 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L ) | |
587 | PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
827 | PORT_START("IN3") | |
828 | PORT_DIPNAME( 0x00000001, 0x00000001, "MAH6" ) | |
829 | PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) | |
830 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
831 | PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_D ) | |
832 | PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_H ) | |
833 | PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) | |
834 | PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_L ) | |
835 | PORT_DIPNAME( 0x00000020, 0x00000020, DEF_STR( Unknown ) ) | |
836 | PORT_DIPSETTING( 0x00000020, DEF_STR( Off ) ) | |
837 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
838 | PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) | |
839 | PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) | |
840 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
841 | PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) | |
842 | PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) | |
843 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
844 | PORT_DIPNAME( 0x00000100, 0x00000100, DEF_STR( Unknown ) ) | |
845 | PORT_DIPSETTING( 0x00000100, DEF_STR( Off ) ) | |
846 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
847 | PORT_DIPNAME( 0x00000200, 0x00000200, DEF_STR( Unknown ) ) | |
848 | PORT_DIPSETTING( 0x00000200, DEF_STR( Off ) ) | |
849 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
850 | PORT_DIPNAME( 0x00000400, 0x00000400, DEF_STR( Unknown ) ) | |
851 | PORT_DIPSETTING( 0x00000400, DEF_STR( Off ) ) | |
852 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
853 | PORT_DIPNAME( 0x00000800, 0x00000800, DEF_STR( Unknown ) ) | |
854 | PORT_DIPSETTING( 0x00000800, DEF_STR( Off ) ) | |
855 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
856 | PORT_DIPNAME( 0x00001000, 0x00001000, DEF_STR( Unknown ) ) | |
857 | PORT_DIPSETTING( 0x00001000, DEF_STR( Off ) ) | |
858 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
859 | PORT_DIPNAME( 0x00002000, 0x00002000, DEF_STR( Unknown ) ) | |
860 | PORT_DIPSETTING( 0x00002000, DEF_STR( Off ) ) | |
861 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
862 | PORT_DIPNAME( 0x00004000, 0x00004000, DEF_STR( Unknown ) ) | |
863 | PORT_DIPSETTING( 0x00004000, DEF_STR( Off ) ) | |
864 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
865 | PORT_DIPNAME( 0x00008000, 0x00008000, DEF_STR( Unknown ) ) | |
866 | PORT_DIPSETTING( 0x00008000, DEF_STR( Off ) ) | |
867 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
868 | PORT_DIPNAME( 0x00010000, 0x00010000, "MAH7" ) | |
869 | PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) ) | |
870 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
871 | PORT_DIPNAME( 0x00020000, 0x00020000, DEF_STR( Unknown ) ) | |
872 | PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) | |
873 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
874 | PORT_DIPNAME( 0x00040000, 0x00040000, DEF_STR( Unknown ) ) | |
875 | PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) ) | |
876 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
877 | PORT_DIPNAME( 0x00080000, 0x00080000, DEF_STR( Unknown ) ) | |
878 | PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) | |
879 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
880 | PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) | |
881 | PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) | |
882 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
883 | PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unknown ) ) | |
884 | PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) | |
885 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
886 | PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) | |
887 | PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) | |
888 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
889 | PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) | |
890 | PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) | |
891 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
892 | PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) ) | |
893 | PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) ) | |
894 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
895 | PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) ) | |
896 | PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) ) | |
897 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
898 | PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) ) | |
899 | PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) ) | |
900 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
901 | PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) | |
902 | PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) ) | |
903 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
904 | PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) | |
905 | PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) ) | |
906 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
907 | PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) | |
908 | PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) | |
909 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
910 | PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) | |
911 | PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) ) | |
912 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
913 | PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) | |
914 | PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) ) | |
915 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
588 | 916 | |
589 | PORT_START("P2") | |
590 | PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bnstars_state, mahjong_ctrl_r, (void *)1) | |
591 | PORT_BIT( 0x0000ff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
917 | PORT_START("IN4") | |
918 | PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START2 ) | |
919 | /* The follow 4 bits active 4 button each one for the second player */ | |
920 | PORT_DIPNAME( 0x00000002, 0x00000002, "P2: A,B,C,D" ) | |
921 | PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) ) | |
922 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
923 | PORT_DIPNAME( 0x00000004, 0x00000004, "P2: E,F,G,H" ) | |
924 | PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) ) | |
925 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
926 | PORT_DIPNAME( 0x00000008, 0x00000008, "P2: M,N,Pon,Chie" ) | |
927 | PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) ) | |
928 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
929 | PORT_DIPNAME( 0x00000010, 0x00000010, "P2: I,J,K,L" ) | |
930 | PORT_DIPSETTING( 0x00000010, DEF_STR( Off ) ) | |
931 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
932 | PORT_DIPNAME( 0x00000020, 0x00000020, "P2: Kan,Reach,Ron" ) | |
933 | PORT_DIPSETTING( 0x00000020, DEF_STR( Off ) ) | |
934 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
935 | PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) | |
936 | PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) | |
937 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
938 | PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) | |
939 | PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) | |
940 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
941 | PORT_DIPNAME( 0x00000100, 0x00000100, DEF_STR( Unknown ) ) | |
942 | PORT_DIPSETTING( 0x00000100, DEF_STR( Off ) ) | |
943 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
944 | PORT_DIPNAME( 0x00000200, 0x00000200, DEF_STR( Unknown ) ) | |
945 | PORT_DIPSETTING( 0x00000200, DEF_STR( Off ) ) | |
946 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
947 | PORT_DIPNAME( 0x00000400, 0x00000400, DEF_STR( Unknown ) ) | |
948 | PORT_DIPSETTING( 0x00000400, DEF_STR( Off ) ) | |
949 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
950 | PORT_DIPNAME( 0x00000800, 0x00000800, DEF_STR( Unknown ) ) | |
951 | PORT_DIPSETTING( 0x00000800, DEF_STR( Off ) ) | |
952 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
953 | PORT_DIPNAME( 0x00001000, 0x00001000, DEF_STR( Unknown ) ) | |
954 | PORT_DIPSETTING( 0x00001000, DEF_STR( Off ) ) | |
955 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
956 | PORT_DIPNAME( 0x00002000, 0x00002000, DEF_STR( Unknown ) ) | |
957 | PORT_DIPSETTING( 0x00002000, DEF_STR( Off ) ) | |
958 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
959 | PORT_DIPNAME( 0x00004000, 0x00004000, DEF_STR( Unknown ) ) | |
960 | PORT_DIPSETTING( 0x00004000, DEF_STR( Off ) ) | |
961 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
962 | PORT_DIPNAME( 0x00008000, 0x00008000, DEF_STR( Unknown ) ) | |
963 | PORT_DIPSETTING( 0x00008000, DEF_STR( Off ) ) | |
964 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
592 | 965 | PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN2 ) |
593 | PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
966 | PORT_DIPNAME( 0x00020000, 0x00020000, "MAH9" ) | |
967 | PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) | |
968 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
594 | 969 | PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_SERVICE2 ) |
595 | PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test?") PORT_CODE(KEYCODE_F2) | |
970 | PORT_DIPNAME( 0x00080000, 0x00080000, "Service Mode ? 2" ) | |
971 | PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) | |
972 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
973 | PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) | |
974 | PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) | |
975 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
976 | PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unknown ) ) | |
977 | PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) | |
978 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
979 | PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) | |
980 | PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) | |
981 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
982 | PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) | |
983 | PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) | |
984 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
985 | PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) ) | |
986 | PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) ) | |
987 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
988 | PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) ) | |
989 | PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) ) | |
990 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
991 | PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) ) | |
992 | PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) ) | |
993 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
994 | PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) | |
995 | PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) ) | |
996 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
997 | PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) | |
998 | PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) ) | |
999 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1000 | PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) | |
1001 | PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) | |
1002 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1003 | PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) | |
1004 | PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) ) | |
1005 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1006 | PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) | |
1007 | PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) ) | |
1008 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
596 | 1009 | |
597 | PORT_START("P2KEY.0") | |
598 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) | |
599 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) | |
600 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) | |
601 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) | |
602 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) | |
603 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) | |
604 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
605 | ||
606 | PORT_START("P2KEY.1") | |
607 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
608 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) | |
609 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) | |
610 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) | |
611 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) | |
612 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) | |
613 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
614 | ||
615 | PORT_START("P2KEY.2") | |
616 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
617 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) | |
618 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) | |
619 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) | |
620 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) | |
621 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) | |
622 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
623 | ||
624 | PORT_START("P2KEY.3") | |
625 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
626 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) | |
627 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) | |
628 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) | |
629 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) | |
630 | PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN ) | |
631 | ||
632 | PORT_START("DSW") | |
1010 | PORT_START("IN5") | |
633 | 1011 | PORT_DIPNAME( 0x00000001, 0x00000001, "Test Mode" ) PORT_DIPLOCATION("SW1:8") |
634 | 1012 | PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) |
635 | 1013 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) |
r243669 | r243670 | |
654 | 1032 | PORT_DIPSETTING( 0x00000060, DEF_STR( 1C_2C ) ) |
655 | 1033 | PORT_DIPSETTING( 0x000000a0, DEF_STR( 1C_3C ) ) |
656 | 1034 | PORT_DIPSETTING( 0x00000020, DEF_STR( 1C_4C ) ) |
657 | ||
658 | PORT_DIPUNUSED_DIPLOC( 0x00000100, 0x00000100, "SW2:8" ) | |
659 | PORT_DIPUNUSED_DIPLOC( 0x00000200, 0x00000200, "SW2:7" ) | |
1035 | PORT_DIPNAME( 0x00000100, 0x00000100, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:8") | |
1036 | PORT_DIPSETTING( 0x00000100, DEF_STR( Off ) ) | |
1037 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1038 | PORT_DIPNAME( 0x00000200, 0x00000200, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7") | |
1039 | PORT_DIPSETTING( 0x00000200, DEF_STR( Off ) ) | |
1040 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
660 | 1041 | PORT_DIPNAME( 0x00000400, 0x00000400, "Taisen Only" ) PORT_DIPLOCATION("SW2:6") |
661 | 1042 | PORT_DIPSETTING( 0x00000400, DEF_STR( Off ) ) |
662 | 1043 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) |
r243669 | r243670 | |
676 | 1057 | PORT_DIPSETTING( 0x0000a000, DEF_STR( Harder ) ) |
677 | 1058 | PORT_DIPSETTING( 0x00002000, DEF_STR( Hardest ) ) |
678 | 1059 | |
679 | PORT_DIPUNUSED_DIPLOC( 0x00010000, 0x00010000, "SW3:8" ) | |
680 | PORT_DIPUNUSED_DIPLOC( 0x00020000, 0x00020000, "SW3:7" ) | |
681 | PORT_DIPUNUSED_DIPLOC( 0x00040000, 0x00040000, "SW3:6" ) | |
682 | PORT_DIPUNUSED_DIPLOC( 0x00080000, 0x00080000, "SW3:5" ) | |
683 | PORT_DIPUNUSED_DIPLOC( 0x00100000, 0x00100000, "SW3:4" ) | |
684 | PORT_DIPUNUSED_DIPLOC( 0x00200000, 0x00200000, "SW3:3" ) | |
685 | PORT_DIPUNUSED_DIPLOC( 0x00400000, 0x00400000, "SW3:2" ) | |
686 | PORT_DIPUNUSED_DIPLOC( 0x00800000, 0x00800000, "SW3:1" ) | |
687 | PORT_BIT( 0xff000000, IP_ACTIVE_LOW, IPT_UNUSED ) // Unused? | |
1060 | PORT_DIPNAME( 0x00010000, 0x00010000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:8") | |
1061 | PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) ) | |
1062 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1063 | PORT_DIPNAME( 0x00020000, 0x00020000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:7") | |
1064 | PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) | |
1065 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1066 | PORT_DIPNAME( 0x00040000, 0x00040000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:6") | |
1067 | PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) ) | |
1068 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1069 | PORT_DIPNAME( 0x00080000, 0x00080000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:5") | |
1070 | PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) | |
1071 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1072 | PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:4") | |
1073 | PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) | |
1074 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1075 | PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:3") | |
1076 | PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) | |
1077 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1078 | PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:2") | |
1079 | PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) | |
1080 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1081 | PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW3:1") | |
1082 | PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) | |
1083 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1084 | PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) ) | |
1085 | PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) ) | |
1086 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1087 | PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) ) | |
1088 | PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) ) | |
1089 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1090 | PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) ) | |
1091 | PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) ) | |
1092 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1093 | PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) | |
1094 | PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) ) | |
1095 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1096 | PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) | |
1097 | PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) ) | |
1098 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1099 | PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) | |
1100 | PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) | |
1101 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1102 | PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) | |
1103 | PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) ) | |
1104 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1105 | PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) | |
1106 | PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) ) | |
1107 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1108 | ||
1109 | PORT_START("IN6") | |
1110 | PORT_DIPNAME( 0x00000001, 0x00000001, "4" ) | |
1111 | PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) | |
1112 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1113 | PORT_DIPNAME( 0x00000002, 0x00000002, DEF_STR( Unknown ) ) | |
1114 | PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) ) | |
1115 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1116 | PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Unknown ) ) | |
1117 | PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) ) | |
1118 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1119 | PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR( Unknown ) ) | |
1120 | PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) ) | |
1121 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1122 | PORT_DIPNAME( 0x00000010, 0x00000010, DEF_STR( Unknown ) ) | |
1123 | PORT_DIPSETTING( 0x00000010, DEF_STR( Off ) ) | |
1124 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1125 | PORT_DIPNAME( 0x00000020, 0x00000020, DEF_STR( Unknown ) ) | |
1126 | PORT_DIPSETTING( 0x00000020, DEF_STR( Off ) ) | |
1127 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1128 | PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) | |
1129 | PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) | |
1130 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1131 | PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) | |
1132 | PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) | |
1133 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1134 | PORT_DIPNAME( 0x00000100, 0x00000100, DEF_STR( Unknown ) ) | |
1135 | PORT_DIPSETTING( 0x00000100, DEF_STR( Off ) ) | |
1136 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1137 | PORT_DIPNAME( 0x00000200, 0x00000200, DEF_STR( Unknown ) ) | |
1138 | PORT_DIPSETTING( 0x00000200, DEF_STR( Off ) ) | |
1139 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1140 | PORT_DIPNAME( 0x00000400, 0x00000400, DEF_STR( Unknown ) ) | |
1141 | PORT_DIPSETTING( 0x00000400, DEF_STR( Off ) ) | |
1142 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1143 | PORT_DIPNAME( 0x00000800, 0x00000800, DEF_STR( Unknown ) ) | |
1144 | PORT_DIPSETTING( 0x00000800, DEF_STR( Off ) ) | |
1145 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1146 | PORT_DIPNAME( 0x00001000, 0x00001000, DEF_STR( Unknown ) ) | |
1147 | PORT_DIPSETTING( 0x00001000, DEF_STR( Off ) ) | |
1148 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1149 | PORT_DIPNAME( 0x00002000, 0x00002000, DEF_STR( Unknown ) ) | |
1150 | PORT_DIPSETTING( 0x00002000, DEF_STR( Off ) ) | |
1151 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1152 | PORT_DIPNAME( 0x00004000, 0x00004000, DEF_STR( Unknown ) ) | |
1153 | PORT_DIPSETTING( 0x00004000, DEF_STR( Off ) ) | |
1154 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1155 | PORT_DIPNAME( 0x00008000, 0x00008000, DEF_STR( Unknown ) ) | |
1156 | PORT_DIPSETTING( 0x00008000, DEF_STR( Off ) ) | |
1157 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1158 | PORT_DIPNAME( 0x00010000, 0x00010000, "5" ) | |
1159 | PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) ) | |
1160 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1161 | PORT_DIPNAME( 0x00020000, 0x00020000, DEF_STR( Unknown ) ) | |
1162 | PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) | |
1163 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1164 | PORT_DIPNAME( 0x00040000, 0x00040000, DEF_STR( Unknown ) ) | |
1165 | PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) ) | |
1166 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1167 | PORT_DIPNAME( 0x00080000, 0x00080000, DEF_STR( Unknown ) ) | |
1168 | PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) | |
1169 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1170 | PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) | |
1171 | PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) | |
1172 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1173 | PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unknown ) ) | |
1174 | PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) | |
1175 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1176 | PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) | |
1177 | PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) | |
1178 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1179 | PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) | |
1180 | PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) | |
1181 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1182 | PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Unknown ) ) | |
1183 | PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) ) | |
1184 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1185 | PORT_DIPNAME( 0x02000000, 0x02000000, DEF_STR( Unknown ) ) | |
1186 | PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) ) | |
1187 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1188 | PORT_DIPNAME( 0x04000000, 0x04000000, DEF_STR( Unknown ) ) | |
1189 | PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) ) | |
1190 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1191 | PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) | |
1192 | PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) ) | |
1193 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1194 | PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) | |
1195 | PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) ) | |
1196 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1197 | PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) | |
1198 | PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) | |
1199 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1200 | PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) | |
1201 | PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) ) | |
1202 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
1203 | PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) | |
1204 | PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) ) | |
1205 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) | |
688 | 1206 | INPUT_PORTS_END |
689 | 1207 | |
690 | 1208 | |
1209 | ||
691 | 1210 | /* sprites are contained in 256x256 "tiles" */ |
692 | 1211 | static GFXLAYOUT_RAW( spritelayout, 256, 256, 256*8, 256*256*8 ) |
693 | 1212 | static GFXLAYOUT_RAW( bglayout, 16, 16, 16*8, 16*16*8 ) |
r243669 | r243670 | |
699 | 1218 | GFXDECODE_ENTRY( "gfx4", 0, bglayout, 0x1000, 0x10 ) /* Bg scr1 */ |
700 | 1219 | GFXDECODE_ENTRY( "gfx5", 0, txlayout, 0x6000, 0x10 ) /* Tx scr1 */ |
701 | 1220 | |
702 | GFXDECODE_ENTRY( "gfx3", 0, bglayout, 0x5000, 0x10 ) /* Roz scr2 */ | |
703 | GFXDECODE_ENTRY( "gfx6", 0, bglayout, 0x1000, 0x10 ) /* Bg scr2 */ | |
704 | GFXDECODE_ENTRY( "gfx7", 0, txlayout, 0x6000, 0x10 ) /* Tx scr2 */ | |
1221 | GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0x8000+0x0000, 0x10 ) | |
1222 | GFXDECODE_ENTRY( "gfx3", 0, bglayout, 0x8000+0x5000, 0x10 ) /* Roz scr2 */ | |
1223 | GFXDECODE_ENTRY( "gfx6", 0, bglayout, 0x8000+0x1000, 0x10 ) /* Bg scr2 */ | |
1224 | GFXDECODE_ENTRY( "gfx7", 0, txlayout, 0x8000+0x6000, 0x10 ) /* Tx scr2 */ | |
1225 | ||
705 | 1226 | GFXDECODE_END |
706 | 1227 | |
707 | ||
1228 | READ32_MEMBER(bnstars_state::bnstars1_r) | |
708 | 1229 | { |
709 | required_ioport_array<4> &keys = (param == 0) ? m_p1_keys : m_p2_keys; | |
710 | ||
711 | 1230 | switch (m_bnstars1_mahjong_select & 0x2080) |
712 | 1231 | { |
713 | 1232 | default: |
714 | 1233 | printf("unk bnstars1_r %08x\n",m_bnstars1_mahjong_select); |
715 | return 0xff; | |
1234 | return 0xffffffff; | |
716 | 1235 | |
717 | 1236 | case 0x0000: |
718 | return | |
1237 | return ioport("IN0")->read(); | |
719 | 1238 | |
720 | 1239 | case 0x0080: |
721 | return | |
1240 | return ioport("IN1")->read(); | |
722 | 1241 | |
723 | 1242 | case 0x2000: |
724 | return | |
1243 | return ioport("IN2")->read(); | |
725 | 1244 | |
726 | 1245 | case 0x2080: |
727 | return keys[3]->read(); | |
1246 | return ioport("IN3")->read(); | |
1247 | ||
728 | 1248 | } |
729 | 1249 | } |
730 | 1250 | |
r243669 | r243670 | |
740 | 1260 | |
741 | 1261 | AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w) |
742 | 1262 | |
743 | AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("P1") | |
744 | AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ_PORT("P2") | |
745 | AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW") | |
1263 | AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ(bnstars1_r ) | |
1264 | AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ_PORT("IN4") | |
1265 | AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("IN5") | |
746 | 1266 | |
747 | 1267 | AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP |
748 | 1268 | AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w) |
r243669 | r243670 | |
766 | 1286 | /* wrote together */ |
767 | 1287 | AM_RANGE(0xfd040000, 0xfd047fff) AM_RAM // priority ram |
768 | 1288 | AM_RANGE(0xfd080000, 0xfd087fff) AM_RAM |
769 | AM_RANGE(0xfd200000, 0xfd237fff) AM_DEVREADWRITE16("palette2", palette_device, read, write, 0x0000ffff) AM_SHARE("palette2") | |
770 | AM_RANGE(0xfd400000, 0xfd437fff) AM_DEVREADWRITE16("palette", palette_device, read, write, 0x0000ffff) AM_SHARE("palette") | |
1289 | AM_RANGE(0xfd200000, 0xfd237fff) AM_RAM_WRITE(ms32_pal1_ram_w) AM_SHARE("pal_ram.1") | |
1290 | AM_RANGE(0xfd400000, 0xfd437fff) AM_RAM_WRITE(ms32_pal0_ram_w) AM_SHARE("pal_ram.0") | |
771 | 1291 | AM_RANGE(0xfe000000, 0xfe01ffff) AM_RAM_WRITE(ms32_roz1_ram_w) AM_SHARE("roz1_ram") |
772 | 1292 | AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM_WRITE(ms32_roz0_ram_w) AM_SHARE("roz0_ram") |
773 | 1293 | AM_RANGE(0xfe800000, 0xfe83ffff) AM_RAM AM_SHARE("spram") |
r243669 | r243670 | |
777 | 1297 | AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE(ms32_bg0_ram_w) AM_SHARE("bg0_ram") |
778 | 1298 | |
779 | 1299 | AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM |
780 | AM_RANGE(0xffe00000, 0xffffffff) AM_ROM | |
1300 | AM_RANGE(0xffe00000, 0xffffffff) AM_ROMBANK("bank1") | |
781 | 1301 | ADDRESS_MAP_END |
782 | 1302 | |
783 | 1303 | static ADDRESS_MAP_START( bnstars_sound_map, AS_PROGRAM, 8, bnstars_state ) |
r243669 | r243670 | |
815 | 1335 | |
816 | 1336 | MCFG_QUANTUM_TIME(attotime::from_hz(60000)) |
817 | 1337 | |
1338 | ||
818 | 1339 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", bnstars) |
1340 | MCFG_PALETTE_ADD("palette", 0x8000*2) | |
819 | 1341 | |
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 | ||
828 | 1342 | MCFG_DEFAULT_LAYOUT(layout_dualhsxs) |
829 | 1343 | |
830 | 1344 | MCFG_SCREEN_ADD("lscreen", RASTER) |
r243669 | r243670 | |
841 | 1355 | MCFG_SCREEN_SIZE(40*8, 32*8) |
842 | 1356 | MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) |
843 | 1357 | MCFG_SCREEN_UPDATE_DRIVER(bnstars_state, screen_update_bnstars_right) |
844 | MCFG_SCREEN_PALETTE("palette | |
1358 | MCFG_SCREEN_PALETTE("palette") | |
845 | 1359 | |
846 | 1360 | |
847 | 1361 | /* sound hardware */ |
r243669 | r243670 | |
901 | 1415 | ROM_LOAD( "vsjanshi5.6", 0x000000, 0x080000, CRC(fdbbac21) SHA1(c77d852e53126cc8ebfe1e79d1134e42b54d1aab) ) |
902 | 1416 | |
903 | 1417 | /* Sound Program (one, driving both screen sound) */ |
904 | ROM_REGION( 0x | |
1418 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
905 | 1419 | ROM_LOAD( "sb93145.5", 0x000000, 0x040000, CRC(0424e899) SHA1(fbcdebfa3d5f52b10cf30f7e416f5f53994e4d55) ) |
1420 | ROM_RELOAD( 0x010000, 0x40000 ) | |
906 | 1421 | |
907 | 1422 | /* Samples #1 (Screen 1?) */ |
908 | 1423 | ROM_REGION( 0x400000, "ymf1", 0 ) /* samples - 8-bit signed PCM */ |
r243669 | r243670 | |
924 | 1439 | decrypt_ms32_tx(machine(), 0x00020,0x7e, "gfx7"); |
925 | 1440 | decrypt_ms32_bg(machine(), 0x00001,0x9b, "gfx6"); |
926 | 1441 | |
1442 | membank("bank1")->set_base(memregion("maincpu")->base()); | |
927 | 1443 | configure_banks(); |
928 | 1444 | } |
929 | 1445 |
r243669 | r243670 | |
---|---|---|
353 | 353 | 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 */ |
354 | 354 | /* AM_RANGE(0xc2c10000, 0xc2dfffff) // mirrors of txram / bg, handled above */ |
355 | 355 | AM_RANGE(0xc2e00000, 0xc2e1ffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0x3c0e0000) /* mainram is 32-bit wide, 0x20000 in size */ |
356 | AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROM | |
356 | AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROMBANK("bank1") AM_MIRROR(0x3c000000) // ROM is 32-bit wide, 0x200000 in size */ | |
357 | 357 | |
358 | 358 | /* todo: clean up the mapping of these */ |
359 | 359 | AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP /* sound? */ |
r243669 | r243670 | |
1375 | 1375 | |
1376 | 1376 | void ms32_state::machine_reset() |
1377 | 1377 | { |
1378 | membank("bank1")->set_base(memregion("maincpu")->base()); | |
1378 | 1379 | membank("bank4")->set_entry(0); |
1379 | 1380 | membank("bank5")->set_entry(1); |
1380 | 1381 | irq_init(); |
r243669 | r243670 | |
1459 | 1460 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1460 | 1461 | ROM_LOAD( "bbbx32-2.bin",0x000000, 0x080000, CRC(3ffdae75) SHA1(2b837d28f7ecdd49e8525bd5c249e83021d5fe9f) ) |
1461 | 1462 | |
1462 | ROM_REGION( 0x | |
1463 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1463 | 1464 | ROM_LOAD( "bbbx21.bin", 0x000000, 0x040000, CRC(5f3ea01f) SHA1(761f6a5852312d2b12de009f3cf0476f5b2e906c) ) |
1465 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1464 | 1466 | |
1465 | 1467 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1466 | 1468 | ROM_LOAD( "bbbx22.bin", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples |
r243669 | r243670 | |
1496 | 1498 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1497 | 1499 | ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) ) |
1498 | 1500 | |
1499 | ROM_REGION( 0x | |
1501 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1500 | 1502 | ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) ) |
1503 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1501 | 1504 | |
1502 | 1505 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1503 | 1506 | ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) ) |
r243669 | r243670 | |
1533 | 1536 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1534 | 1537 | ROM_LOAD( "93166-30.bin", 0x000000, 0x080000, CRC(0c738883) SHA1(e552c1842d759e5e617eb9c6cc178620a461b4dd) ) |
1535 | 1538 | |
1536 | ROM_REGION( 0x | |
1539 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1537 | 1540 | ROM_LOAD( "93166-21.bin", 0x000000, 0x040000, CRC(e7fd1bf4) SHA1(74567530364bfd93bffddb588758d8498e197668) ) |
1541 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1538 | 1542 | |
1539 | 1543 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1540 | 1544 | ROM_LOAD( "94019-10.22", 0x000000, 0x200000, CRC(745d41ec) SHA1(9118d0f27b65c9d37970326ccf86fdccb81d32f5) ) |
r243669 | r243670 | |
1572 | 1576 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1573 | 1577 | ROM_LOAD( "93166-30.41", 0x000000, 0x080000, CRC(980ab89c) SHA1(8468fc13a5988e25750e8d99ff464f46e86ab412) ) |
1574 | 1578 | |
1575 | ROM_REGION( 0x | |
1579 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1576 | 1580 | ROM_LOAD( "93166-21.30", 0x000000, 0x040000, CRC(9300be4c) SHA1(a8e9c1704abf26545aeb9a5d28fd0cafd38f2d84) ) |
1581 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1577 | 1582 | |
1578 | 1583 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1579 | 1584 | ROM_LOAD( "92042-01.33", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples |
r243669 | r243670 | |
1626 | 1631 | ROM_LOAD( "f1sb4b.bin", 0x400000, 0x200000, CRC(077180c5) SHA1(ab16739da709ecdbbb1264beba349ef6ecf3f8b1) ) |
1627 | 1632 | ROM_LOAD( "f1sb5b.bin", 0x600000, 0x200000, CRC(efabc47d) SHA1(195afde8a1f45da4fc04c3080a3cf5fdfff7be5e) ) |
1628 | 1633 | |
1629 | ROM_REGION( 0x | |
1634 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1630 | 1635 | ROM_LOAD( "f1sb21.bin", 0x000000, 0x040000, CRC(e131e1c7) SHA1(33f95a074930c49548069518d8c6dcde7fa25627) ) |
1636 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1631 | 1637 | |
1632 | 1638 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1633 | 1639 | ROM_LOAD( "f1sb24.bin", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples |
r243669 | r243670 | |
1662 | 1668 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1663 | 1669 | ROM_LOAD( "94019_2.030",0x000000, 0x080000, CRC(f9543fcf) SHA1(8466c7893bc6c43e2a80b8f91a776fd0a345ea6c) ) |
1664 | 1670 | |
1665 | ROM_REGION( 0x | |
1671 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1666 | 1672 | ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) ) |
1673 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1667 | 1674 | |
1668 | 1675 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1669 | 1676 | ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common rom? |
r243669 | r243670 | |
1698 | 1705 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1699 | 1706 | ROM_LOAD( "94019.030",0x000000, 0x080000, CRC(026b5379) SHA1(b9237477f1bf8ae83174e8231492fe667e6d6a13) ) |
1700 | 1707 | |
1701 | ROM_REGION( 0x | |
1708 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1702 | 1709 | ROM_LOAD( "94019.021",0x000000, 0x040000, CRC(6e8dd039) SHA1(f1e69c9b40b14ba0f8377a6d9b6c3933919bc803) ) |
1710 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1703 | 1711 | |
1704 | 1712 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1705 | 1713 | ROM_LOAD( "92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common rom? |
r243669 | r243670 | |
1737 | 1745 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1738 | 1746 | ROM_LOAD( "mr94041.30", 0x000000, 0x080000, CRC(c0f27b7f) SHA1(874fe80aa4b46520f844ef6efa61f28eabccbc4f) ) |
1739 | 1747 | |
1740 | ROM_REGION( 0x | |
1748 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1741 | 1749 | ROM_LOAD( "mr94041.21", 0x000000, 0x040000, CRC(38dcb837) SHA1(29fdde54e52dec4ee39a6f2db8e0d67774320d15) ) |
1750 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1742 | 1751 | |
1743 | 1752 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
1744 | 1753 | ROM_LOAD( "mr94041.13", 0x000000, 0x200000, CRC(fba84caf) SHA1(318270dbf825a8e0f315992c49a2dc34dd1df7c1) ) |
r243669 | r243670 | |
1772 | 1781 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1773 | 1782 | ROM_LOAD( "mb93138a.32", 0x000000, 0x080000, CRC(f563a144) SHA1(14d86e4992329811857e1faf282cd9ec530a364c) ) |
1774 | 1783 | |
1775 | ROM_REGION( 0x | |
1784 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1776 | 1785 | ROM_LOAD( "mb93138a.21", 0x000000, 0x040000, CRC(8e8048b0) SHA1(93285a0570ed829b36f4e8c57d133a7dd14f123d) ) |
1786 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1777 | 1787 | |
1778 | 1788 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */ |
1779 | 1789 | ROM_LOAD( "mr92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples |
r243669 | r243670 | |
1876 | 1886 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1877 | 1887 | ROM_LOAD( "mb93138.32", 0x000000, 0x080000, CRC(df5d00b4) SHA1(2bbbcd546d5b5170d81bf33b37b46b70b417c9c7) ) |
1878 | 1888 | |
1879 | ROM_REGION( 0x | |
1889 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1880 | 1890 | ROM_LOAD( "mb93138.21", 0x000000, 0x040000, CRC(008bc217) SHA1(eec66a86f285ccbc47eba17a4bb83cc1f8a5f425) ) |
1891 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1881 | 1892 | |
1882 | 1893 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */ |
1883 | 1894 | ROM_LOAD( "mr92042.01", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples |
r243669 | r243670 | |
1914 | 1925 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1915 | 1926 | ROM_LOAD( "mr95025.30", 0x000000, 0x080000, CRC(aee6e0c2) SHA1(dee985f7a9773ba7a4d31a3833a7775d778bbe5a) ) |
1916 | 1927 | |
1917 | ROM_REGION( 0x | |
1928 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1918 | 1929 | ROM_LOAD( "mr95025.21", 0x000000, 0x040000, CRC(a6c70c7f) SHA1(fe2108f3e8d46ed53d8c5c98e8d0fdb19b77075d) ) |
1930 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1919 | 1931 | |
1920 | 1932 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */ |
1921 | 1933 | ROM_LOAD( "mr95025.12", 0x000000, 0x200000, CRC(1dd4f766) SHA1(455befd3a216f2197cd2e7e4899d4f1af7d20bf7) ) |
r243669 | r243670 | |
1951 | 1963 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1952 | 1964 | ROM_LOAD( "93166.30", 0x000000, 0x080000, CRC(1807c1ea) SHA1(94696b8319c4982cb5d33423f56e2348f210cdb5) ) |
1953 | 1965 | |
1954 | ROM_REGION( 0x | |
1966 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1955 | 1967 | ROM_LOAD( "93166.21", 0x000000, 0x040000, CRC(01a03687) SHA1(2340c4ed19f434e8c23709edfc93259313aefaf9)) |
1968 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1956 | 1969 | |
1957 | 1970 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */ |
1958 | 1971 | ROM_LOAD( "95008-11.22", 0x000000, 0x200000, CRC(23b9af76) SHA1(98b4087c142500dc759bda94d71c77634452a7ad)) |
r243669 | r243670 | |
1990 | 2003 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
1991 | 2004 | ROM_LOAD( "p47-30.bin", 0x000000, 0x080000, CRC(7ba90fad) SHA1(c0a3d4458816f00b8f5eb4b6d4531d1abeaccbe5) ) |
1992 | 2005 | |
1993 | ROM_REGION( 0x | |
2006 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
1994 | 2007 | ROM_LOAD( "p47-21.bin", 0x000000, 0x040000, CRC(f2d43927) SHA1(69ac20f339a515d58cafbcd6f7d7982ca5cda681) ) |
2008 | ROM_RELOAD( 0x010000, 0x40000 ) | |
1995 | 2009 | |
1996 | 2010 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */ |
1997 | 2011 | ROM_LOAD( "p47-22.bin", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) |
r243669 | r243670 | |
2021 | 2035 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
2022 | 2036 | ROM_LOAD( "mr95024.30", 0x000000, 0x080000, CRC(cea7002d) SHA1(5462edaeb9339790b95ed15a4bfaab8fae655b12) ) |
2023 | 2037 | |
2024 | ROM_REGION( 0x | |
2038 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
2025 | 2039 | ROM_LOAD( "mr95024.21", 0x000000, 0x040000, CRC(5c565e3b) SHA1(d349a8ca50d03c06d8978e6d3632b624f019dee4) ) |
2040 | ROM_RELOAD( 0x010000, 0x40000 ) | |
2026 | 2041 | |
2027 | 2042 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
2028 | 2043 | ROM_LOAD( "mr95024.22", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) // common samples |
r243669 | r243670 | |
2052 | 2067 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
2053 | 2068 | ROM_LOAD( "tp2m3230.30", 0x000000, 0x080000, CRC(6845e476) SHA1(61c33714db2e2b5ccdcef0e0d3efdc391fe6aba2) ) |
2054 | 2069 | |
2055 | ROM_REGION( 0x | |
2070 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
2056 | 2071 | ROM_LOAD( "tp2m3221.21", 0x000000, 0x040000, CRC(2bcc4176) SHA1(74740fa13ab81b9819b4cfbe9d34a0749ba23b8f) ) |
2072 | ROM_RELOAD( 0x010000, 0x40000 ) | |
2057 | 2073 | |
2058 | 2074 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
2059 | 2075 | ROM_LOAD( "tp2m3205.22", 0x000000, 0x200000, CRC(74aa5c31) SHA1(7e3f86198fb678244fab76bee9c72bbdfc818118) ) |
r243669 | r243670 | |
2090 | 2106 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
2091 | 2107 | ROM_LOAD( "vsjanshi30.41", 0x000000, 0x080000, CRC(fdbbac21) SHA1(c77d852e53126cc8ebfe1e79d1134e42b54d1aab) ) |
2092 | 2108 | |
2093 | ROM_REGION( 0x | |
2109 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
2094 | 2110 | ROM_LOAD( "vsjanshi21.30", 0x000000, 0x040000, CRC(d622bce1) SHA1(059fcc3c7216d3ea4f3a4226a06219375ce8c2bf) ) |
2111 | ROM_RELOAD( 0x010000, 0x40000 ) | |
2095 | 2112 | |
2096 | 2113 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples - 8-bit signed PCM */ |
2097 | 2114 | ROM_LOAD( "mr96004-10.22", 0x000000, 0x400000, CRC(83f4303a) SHA1(90ee010591afe1d35744925ef0e8d9a7e2ef3378) ) |
r243669 | r243670 | |
2162 | 2179 | ROM_REGION( 0x080000, "gfx4", 0 ) /* tx tiles */ |
2163 | 2180 | ROM_LOAD( "32", 0x000000, 0x080000, CRC(becc25c2) SHA1(4ae7665cd45ebd9586068e99327145194ba216fc) ) |
2164 | 2181 | |
2165 | ROM_REGION( 0x | |
2182 | ROM_REGION( 0x50000, "audiocpu", 0 ) /* z80 program */ | |
2166 | 2183 | ROM_LOAD( "ws-21", 0x000000, 0x040000, CRC(bdeff5d6) SHA1(920a6fc983d53f09510887e4e81ee89ccd5079e6) ) |
2184 | ROM_RELOAD( 0x010000, 0x40000 ) | |
2167 | 2185 | |
2168 | 2186 | ROM_REGION( 0x400000, "ymf", 0 ) /* samples */ |
2169 | 2187 | ROM_LOAD( "mr92042-01.22", 0x000000, 0x200000, CRC(0fa26f65) SHA1(e92b14862fbce33ea4ab4567ec48199bfcbbdd84) ) |
r243669 | r243670 | |
2177 | 2195 | void ms32_state::configure_banks() |
2178 | 2196 | { |
2179 | 2197 | save_item(NAME(m_to_main)); |
2180 | membank("bank4")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000); | |
2181 | membank("bank5")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000); | |
2198 | membank("bank4")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x14000, 0x4000); | |
2199 | membank("bank5")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x14000, 0x4000); | |
2182 | 2200 | } |
2183 | 2201 | |
2184 | 2202 | DRIVER_INIT_MEMBER(ms32_state,ms32_common) |
r243669 | r243670 | |
---|---|---|
1 | // license:? | |
1 | // license:? | |
2 | 2 | // copyright-holders:Olivier Galibert, Angelo Salese, David Haywood, Tomasz Slanina |
3 | 3 | /******************************************************************************************************** |
4 | 4 | |
5 | 5 | 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 | |
6 | 8 | |
7 | TODO: | |
8 | * zeroteam - sort-DMA doesn't seem to work too well, sprite-sprite priorities are broken as per now | |
9 | TODO: | |
10 | - Zero Team currently crashes due of an unknown check with collision detection. | |
11 | Additionally: | |
12 | 8E377: C7 06 00 05 80 A9 mov word ptr [500h],0A980h | |
13 | 8E37D: C7 06 00 05 00 B9 mov word ptr [500h],0B900h | |
14 | 8E383: F7 06 88 05 FF FF test word ptr [588h],0FFFFh ;checks unknown collision detection port with 0xffff? | |
15 | 8E389: 75 0A bne 8E395h | |
9 | 16 | |
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 | ||
18 | 17 | =========================================================================================================== |
19 | 18 | |
20 | 19 | raiden 2 board test note 17/04/08 (based on test by dox) |
r243669 | r243670 | |
25 | 24 | value of 0x80 puts 0x00000-0x1ffff at 0x20000 - 0x3ffff |
26 | 25 | value of 0x00 puts 0x20000-0x3ffff at 0x20000 - 0x3ffff |
27 | 26 | |
27 | === | |
28 | 28 | |
29 | 29 | =========================================================================================================== |
30 | 30 | |
r243669 | r243670 | |
130 | 130 | |
131 | 131 | The games in legionna.c use (almost?) the same protection chips. |
132 | 132 | |
133 | Current 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 | ||
133 | 156 | ********************************************************************************************************/ |
134 | 157 | |
135 | 158 | #include "emu.h" |
r243669 | r243670 | |
1344 | 1367 | |
1345 | 1368 | /* video hardware */ |
1346 | 1369 | MCFG_SCREEN_ADD("screen", RASTER) |
1347 | MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) | |
1370 | MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) | |
1371 | #if 1 | |
1372 | MCFG_SCREEN_REFRESH_RATE(55.47) /* verified on pcb */ | |
1373 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(500) /* not accurate */) | |
1374 | MCFG_SCREEN_SIZE(44*8, 34*8) | |
1375 | MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 30*8-1) | |
1376 | #else // this should be correct but currently causes sprite flickering, visible from the very start of the intro | |
1348 | 1377 | MCFG_SCREEN_RAW_PARAMS(XTAL_32MHz/4,512,0,40*8,282,0,30*8) /* hand-tuned to match ~55.47 */ |
1378 | #endif | |
1349 | 1379 | MCFG_SCREEN_UPDATE_DRIVER(raiden2_state, screen_update_raiden2) |
1350 | 1380 | |
1351 | 1381 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", raiden2) |
r243669 | r243670 | |
---|---|---|
34 | 34 | public: |
35 | 35 | skyarmy_state(const machine_config &mconfig, device_type type, const char *tag) |
36 | 36 | : driver_device(mconfig, type, tag), |
37 | m_maincpu(*this, "maincpu"), | |
38 | m_gfxdecode(*this, "gfxdecode"), | |
39 | m_palette(*this, "palette"), | |
40 | 37 | m_videoram(*this, "videoram"), |
41 | 38 | m_colorram(*this, "colorram"), |
42 | 39 | m_spriteram(*this, "spriteram"), |
43 | m_scrollram(*this, "scrollram") { } | |
40 | m_scrollram(*this, "scrollram"), | |
41 | m_maincpu(*this, "maincpu"), | |
42 | m_gfxdecode(*this, "gfxdecode"), | |
43 | m_palette(*this, "palette") { } | |
44 | 44 | |
45 | required_device<cpu_device> m_maincpu; | |
46 | required_device<gfxdecode_device> m_gfxdecode; | |
47 | required_device<palette_device> m_palette; | |
48 | ||
49 | 45 | required_shared_ptr<UINT8> m_videoram; |
50 | 46 | required_shared_ptr<UINT8> m_colorram; |
51 | 47 | required_shared_ptr<UINT8> m_spriteram; |
52 | 48 | required_shared_ptr<UINT8> m_scrollram; |
53 | ||
54 | 49 | tilemap_t* m_tilemap; |
55 | 50 | int m_nmi; |
56 | ||
57 | DECLARE_WRITE8_MEMBER(flip_screen_x_w); | |
58 | DECLARE_WRITE8_MEMBER(flip_screen_y_w); | |
59 | DECLARE_WRITE8_MEMBER(videoram_w); | |
60 | DECLARE_WRITE8_MEMBER(colorram_w); | |
51 | DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_x_w); | |
52 | DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_y_w); | |
53 | DECLARE_WRITE8_MEMBER(skyarmy_videoram_w); | |
54 | DECLARE_WRITE8_MEMBER(skyarmy_colorram_w); | |
61 | 55 | DECLARE_WRITE8_MEMBER(nmi_enable_w); |
62 | ||
63 | TILE_GET_INFO_MEMBER(get_tile_info); | |
64 | ||
65 | virtual void machine_start(); | |
56 | TILE_GET_INFO_MEMBER(get_skyarmy_tile_info); | |
66 | 57 | virtual void video_start(); |
67 | 58 | DECLARE_PALETTE_INIT(skyarmy); |
68 | ||
69 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
70 | ||
71 | INTERRUPT_GEN_MEMBER(nmi_source); | |
59 | UINT32 screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
60 | INTERRUPT_GEN_MEMBER(skyarmy_nmi_source); | |
61 | required_device<cpu_device> m_maincpu; | |
62 | required_device<gfxdecode_device> m_gfxdecode; | |
63 | required_device<palette_device> m_palette; | |
72 | 64 | }; |
73 | 65 | |
74 | ||
66 | WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_x_w) | |
75 | 67 | { |
76 | save_item(NAME(m_nmi)); | |
77 | } | |
78 | ||
79 | WRITE8_MEMBER(skyarmy_state::flip_screen_x_w) | |
80 | { | |
81 | 68 | flip_screen_x_set(data & 0x01); |
82 | 69 | } |
83 | 70 | |
84 | WRITE8_MEMBER(skyarmy_state::flip_screen_y_w) | |
71 | WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_y_w) | |
85 | 72 | { |
86 | 73 | flip_screen_y_set(data & 0x01); |
87 | 74 | } |
88 | 75 | |
89 | TILE_GET_INFO_MEMBER(skyarmy_state::get_tile_info) | |
76 | TILE_GET_INFO_MEMBER(skyarmy_state::get_skyarmy_tile_info) | |
90 | 77 | { |
91 | 78 | int code = m_videoram[tile_index]; |
92 | 79 | int attr = BITSWAP8(m_colorram[tile_index], 7, 6, 5, 4, 3, 0, 1, 2) & 7; |
r243669 | r243670 | |
94 | 81 | SET_TILE_INFO_MEMBER(0, code, attr, 0); |
95 | 82 | } |
96 | 83 | |
97 | WRITE8_MEMBER(skyarmy_state::videoram_w) | |
84 | WRITE8_MEMBER(skyarmy_state::skyarmy_videoram_w) | |
98 | 85 | { |
99 | 86 | m_videoram[offset] = data; |
100 | 87 | m_tilemap->mark_tile_dirty(offset); |
101 | 88 | } |
102 | 89 | |
103 | WRITE8_MEMBER(skyarmy_state::colorram_w) | |
90 | WRITE8_MEMBER(skyarmy_state::skyarmy_colorram_w) | |
104 | 91 | { |
105 | 92 | m_colorram[offset] = data; |
106 | 93 | m_tilemap->mark_tile_dirty(offset); |
r243669 | r243670 | |
137 | 124 | |
138 | 125 | void skyarmy_state::video_start() |
139 | 126 | { |
140 | m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skyarmy_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); | |
127 | m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(skyarmy_state::get_skyarmy_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); | |
141 | 128 | m_tilemap->set_scroll_cols(32); |
142 | 129 | } |
143 | 130 | |
144 | 131 | |
145 | UINT32 skyarmy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
132 | UINT32 skyarmy_state::screen_update_skyarmy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
146 | 133 | { |
134 | UINT8 *spriteram = m_spriteram; | |
147 | 135 | int sx, sy, flipx, flipy, offs,pal; |
148 | 136 | int i; |
149 | 137 | |
r243669 | r243670 | |
154 | 142 | |
155 | 143 | for (offs = 0 ; offs < 0x40; offs+=4) |
156 | 144 | { |
157 | pal = BITSWAP8( | |
145 | pal = BITSWAP8(spriteram[offs+2], 7, 6, 5, 4, 3, 0, 1, 2) & 7; | |
158 | 146 | |
159 | sx = m_spriteram[offs+3]; | |
160 | sy = 240-(m_spriteram[offs]+1); | |
161 | flipy = (m_spriteram[offs+1]&0x80)>>7; | |
162 | flipx = (m_spriteram[offs+1]&0x40)>>6; | |
147 | sx = spriteram[offs+3]; | |
148 | sy = 240-(spriteram[offs]+1); | |
149 | flipy = (spriteram[offs+1]&0x80)>>7; | |
150 | flipx = (spriteram[offs+1]&0x40)>>6; | |
163 | 151 | |
164 | 152 | m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, |
165 | | |
153 | spriteram[offs+1]&0x3f, | |
166 | 154 | pal, |
167 | 155 | flipx,flipy, |
168 | 156 | sx,sy,0); |
r243669 | r243670 | |
171 | 159 | return 0; |
172 | 160 | } |
173 | 161 | |
174 | INTERRUPT_GEN_MEMBER(skyarmy_state::nmi_source) | |
162 | INTERRUPT_GEN_MEMBER(skyarmy_state::skyarmy_nmi_source) | |
175 | 163 | { |
176 | 164 | if(m_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
177 | 165 | } |
r243669 | r243670 | |
186 | 174 | static ADDRESS_MAP_START( skyarmy_map, AS_PROGRAM, 8, skyarmy_state ) |
187 | 175 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
188 | 176 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
189 | AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* Video RAM */ | |
190 | AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* Color RAM */ | |
177 | AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skyarmy_videoram_w) AM_SHARE("videoram") /* Video RAM */ | |
178 | AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(skyarmy_colorram_w) AM_SHARE("colorram") /* Color RAM */ | |
191 | 179 | AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram") /* Sprites */ |
192 | 180 | AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scrollram") /* Scroll RAM */ |
193 | 181 | AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW") |
r243669 | r243670 | |
195 | 183 | AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2") |
196 | 184 | AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM") |
197 | 185 | AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_w) // ??? |
198 | AM_RANGE(0xa005, 0xa005) AM_WRITE(flip_screen_x_w) | |
199 | AM_RANGE(0xa006, 0xa006) AM_WRITE(flip_screen_y_w) | |
186 | AM_RANGE(0xa005, 0xa005) AM_WRITE(skyarmy_flip_screen_x_w) | |
187 | AM_RANGE(0xa006, 0xa006) AM_WRITE(skyarmy_flip_screen_y_w) | |
200 | 188 | AM_RANGE(0xa007, 0xa007) AM_WRITENOP |
201 | 189 | ADDRESS_MAP_END |
202 | 190 | |
r243669 | r243670 | |
298 | 286 | MCFG_CPU_PROGRAM_MAP(skyarmy_map) |
299 | 287 | MCFG_CPU_IO_MAP(skyarmy_io_map) |
300 | 288 | MCFG_CPU_VBLANK_INT_DRIVER("screen", skyarmy_state, irq0_line_hold) |
301 | MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, nmi_source, 650) /* Hz */ | |
289 | MCFG_CPU_PERIODIC_INT_DRIVER(skyarmy_state, skyarmy_nmi_source, 650) /* Hz */ | |
302 | 290 | |
303 | 291 | /* video hardware */ |
304 | 292 | MCFG_SCREEN_ADD("screen", RASTER) |
r243669 | r243670 | |
306 | 294 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
307 | 295 | MCFG_SCREEN_SIZE(32*8,32*8) |
308 | 296 | MCFG_SCREEN_VISIBLE_AREA(0*8,32*8-1,1*8,31*8-1) |
309 | MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update) | |
297 | MCFG_SCREEN_UPDATE_DRIVER(skyarmy_state, screen_update_skyarmy) | |
310 | 298 | MCFG_SCREEN_PALETTE("palette") |
311 | 299 | |
312 | 300 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", skyarmy) |
r243669 | r243670 | |
339 | 327 | ROM_LOAD( "a6.bin", 0x0000, 0x0020, CRC(c721220b) SHA1(61b3320fb616c0600d56840cb6438616c7e0c6eb) ) |
340 | 328 | ROM_END |
341 | 329 | |
342 | GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL | |
330 | GAME( 1982, skyarmy, 0, skyarmy, skyarmy, driver_device, 0, ROT90, "Shoei", "Sky Army", GAME_NO_COCKTAIL ) |
r243669 | r243670 | |
---|---|---|
11 | 11 | * There is a problem with coin input not starting when in demo mode. |
12 | 12 | * The NMI interrupt needs to be more accurate, to do 32V, adjusted |
13 | 13 | to VBLANK. This also affects sound. |
14 | * The cu | |
14 | * The cuurent value of 5 interrupts per frame, works pretty good, | |
15 | 15 | but is not 100% accurate timing wise. |
16 | 16 | |
17 | 17 | **************************************************************************** |
r243669 | r243670 | |
139 | 139 | * |
140 | 140 | *************************************/ |
141 | 141 | |
142 | WRITE8_MEMBER(skydiver_state::nmion_w) | |
142 | WRITE8_MEMBER(skydiver_state::skydiver_nmion_w) | |
143 | 143 | { |
144 | 144 | m_nmion = offset; |
145 | 145 | } |
146 | 146 | |
147 | 147 | |
148 | INTERRUPT_GEN_MEMBER(skydiver_state::interrupt) | |
148 | INTERRUPT_GEN_MEMBER(skydiver_state::skydiver_interrupt) | |
149 | 149 | { |
150 | 150 | /* Convert range data to divide value and write to sound */ |
151 | 151 | address_space &space = m_maincpu->space(AS_PROGRAM); |
r243669 | r243670 | |
167 | 167 | * |
168 | 168 | *************************************/ |
169 | 169 | |
170 | WRITE8_MEMBER(skydiver_state::sound_enable_w) | |
170 | WRITE8_MEMBER(skydiver_state::skydiver_sound_enable_w) | |
171 | 171 | { |
172 | 172 | m_discrete->write(space, SKYDIVER_SOUND_EN, offset); |
173 | 173 | } |
174 | 174 | |
175 | WRITE8_MEMBER(skydiver_state::whistle_w) | |
175 | WRITE8_MEMBER(skydiver_state::skydiver_whistle_w) | |
176 | 176 | { |
177 | 177 | m_discrete->write(space, NODE_RELATIVE(SKYDIVER_WHISTLE1_EN, (offset >> 1)), offset & 0x01); |
178 | 178 | } |
r243669 | r243670 | |
187 | 187 | |
188 | 188 | static ADDRESS_MAP_START( skydiver_map, AS_PROGRAM, 8, skydiver_state ) |
189 | 189 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
190 | AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(wram_r, wram_w) | |
190 | AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(skydiver_wram_r, skydiver_wram_w) | |
191 | 191 | AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x4000) AM_RAM /* RAM B1 */ |
192 | AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */ | |
193 | AM_RANGE(0x0800, 0x0801) AM_MIRROR(0x47f0) AM_WRITE(lamp_s_w) | |
194 | AM_RANGE(0x0802, 0x0803) AM_MIRROR(0x47f0) AM_WRITE(lamp_k_w) | |
195 | AM_RANGE(0x0804, 0x0805) AM_MIRROR(0x47f0) AM_WRITE(start_lamp_1_w) | |
196 | AM_RANGE(0x0806, 0x0807) AM_MIRROR(0x47f0) AM_WRITE(start_lamp_2_w) | |
197 | AM_RANGE(0x0808, 0x0809) AM_MIRROR(0x47f0) AM_WRITE(lamp_y_w) | |
198 | AM_RANGE(0x080a, 0x080b) AM_MIRROR(0x47f0) AM_WRITE(lamp_d_w) | |
199 | AM_RANGE(0x080c, 0x080d) AM_MIRROR(0x47f0) AM_WRITE(sound_enable_w) | |
200 | // AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x47f0) AM_WRITE(jump1_lamps_w) | |
201 | AM_RANGE(0x1002, 0x1003) AM_MIRROR(0x47f0) AM_WRITE(coin_lockout_w) | |
202 | // AM_RANGE(0x1006, 0x1007) AM_MIRROR(0x47f0) AM_WRITE(jump2_lamps_w) | |
203 | AM_RANGE(0x1008, 0x100b) AM_MIRROR(0x47f0) AM_WRITE(whistle_w) | |
204 | AM_RANGE(0x100c, 0x100d) AM_MIRROR(0x47f0) AM_WRITE(nmion_w) | |
205 | AM_RANGE(0x100e, 0x100f) AM_MIRROR(0x47f0) AM_WRITE(width_w) | |
192 | AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(skydiver_videoram_w) AM_SHARE("videoram") /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */ | |
193 | AM_RANGE(0x0800, 0x0801) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_s_w) | |
194 | AM_RANGE(0x0802, 0x0803) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_k_w) | |
195 | AM_RANGE(0x0804, 0x0805) AM_MIRROR(0x47f0) AM_WRITE(skydiver_start_lamp_1_w) | |
196 | AM_RANGE(0x0806, 0x0807) AM_MIRROR(0x47f0) AM_WRITE(skydiver_start_lamp_2_w) | |
197 | AM_RANGE(0x0808, 0x0809) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_y_w) | |
198 | AM_RANGE(0x080a, 0x080b) AM_MIRROR(0x47f0) AM_WRITE(skydiver_lamp_d_w) | |
199 | AM_RANGE(0x080c, 0x080d) AM_MIRROR(0x47f0) AM_WRITE(skydiver_sound_enable_w) | |
200 | // AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x47f0) AM_WRITE(skydiver_jump1_lamps_w) | |
201 | AM_RANGE(0x1002, 0x1003) AM_MIRROR(0x47f0) AM_WRITE(skydiver_coin_lockout_w) | |
202 | // AM_RANGE(0x1006, 0x1007) AM_MIRROR(0x47f0) AM_WRITE(skydiver_jump2_lamps_w) | |
203 | AM_RANGE(0x1008, 0x100b) AM_MIRROR(0x47f0) AM_WRITE(skydiver_whistle_w) | |
204 | AM_RANGE(0x100c, 0x100d) AM_MIRROR(0x47f0) AM_WRITE(skydiver_nmion_w) | |
205 | AM_RANGE(0x100e, 0x100f) AM_MIRROR(0x47f0) AM_WRITE(skydiver_width_w) | |
206 | 206 | AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x47e0) AM_READ_PORT("IN0") |
207 | 207 | AM_RANGE(0x1801, 0x1801) AM_MIRROR(0x47e0) AM_READ_PORT("IN1") |
208 | 208 | AM_RANGE(0x1802, 0x1802) AM_MIRROR(0x47e0) AM_READ_PORT("IN2") |
r243669 | r243670 | |
217 | 217 | AM_RANGE(0x180b, 0x180b) AM_MIRROR(0x47e4) AM_READ_PORT("IN11") |
218 | 218 | AM_RANGE(0x1810, 0x1810) AM_MIRROR(0x47e4) AM_READ_PORT("IN12") |
219 | 219 | AM_RANGE(0x1811, 0x1811) AM_MIRROR(0x47e4) AM_READ_PORT("IN13") |
220 | AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_READ(watchdog_reset_r) AM_WRITE(_2000_201F_w) | |
220 | AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_READ(watchdog_reset_r) AM_WRITE(skydiver_2000_201F_w) | |
221 | 221 | AM_RANGE(0x2800, 0x2fff) AM_MIRROR(0x4000) AM_ROM |
222 | 222 | AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x4000) AM_ROM |
223 | 223 | AM_RANGE(0x3800, 0x3fff) AM_ROM |
r243669 | r243670 | |
375 | 375 | /* basic machine hardware */ |
376 | 376 | MCFG_CPU_ADD("maincpu", M6800,MASTER_CLOCK/16) /* ???? */ |
377 | 377 | MCFG_CPU_PROGRAM_MAP(skydiver_map) |
378 | MCFG_CPU_PERIODIC_INT_DRIVER(skydiver_state, interrupt, 5*60) | |
378 | MCFG_CPU_PERIODIC_INT_DRIVER(skydiver_state, skydiver_interrupt, 5*60) | |
379 | 379 | MCFG_WATCHDOG_VBLANK_INIT(8) // 128V clocks the same as VBLANK |
380 | 380 | |
381 | 381 | |
r243669 | r243670 | |
385 | 385 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
386 | 386 | MCFG_SCREEN_SIZE(32*8, 32*8) |
387 | 387 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1) |
388 | MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update) | |
388 | MCFG_SCREEN_UPDATE_DRIVER(skydiver_state, screen_update_skydiver) | |
389 | 389 | MCFG_SCREEN_PALETTE("palette") |
390 | 390 | |
391 | 391 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", skydiver) |
r243669 | r243670 | |
432 | 432 | * |
433 | 433 | *************************************/ |
434 | 434 | |
435 | GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", | |
435 | GAMEL(1978, skydiver, 0, skydiver, skydiver, driver_device, 0, ROT0, "Atari", "Sky Diver", 0, layout_skydiver ) |
r243669 | r243670 | |
---|---|---|
858 | 858 | GAME(1978, lectrono, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Lectronamo", GAME_MECHANICAL | GAME_NO_SOUND ) |
859 | 859 | GAME(1978, wildfyre, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Wildfyre", GAME_MECHANICAL | GAME_NO_SOUND ) |
860 | 860 | GAME(1978, nugent, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Nugent", GAME_MECHANICAL | GAME_NO_SOUND ) |
861 | GAME(1979, dracula, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Dracula | |
861 | GAME(1979, dracula, 0, st_mp100, mp100, driver_device, 0, ROT0, "Stern", "Dracula", GAME_MECHANICAL | GAME_NO_SOUND ) | |
862 | 862 | |
863 | 863 | // different inputs |
864 | 864 | GAME(1979, trident, 0, st_mp100, mp200, driver_device, 0, ROT0, "Stern", "Trident", GAME_MECHANICAL | GAME_NO_SOUND ) |
r243669 | r243670 | |
---|---|---|
51 | 51 | #include "emu.h" |
52 | 52 | #include "cpu/z80/z80.h" |
53 | 53 | #include "sound/3812intf.h" |
54 | #include "sound/msm5205.h" | |
54 | 55 | #include "includes/tecmo.h" |
55 | 56 | |
56 | 57 | |
57 | WRITE8_MEMBER(tecmo_state::bankswitch_w) | |
58 | WRITE8_MEMBER(tecmo_state::tecmo_bankswitch_w) | |
58 | 59 | { |
59 | 60 | int bankaddress; |
60 | 61 | UINT8 *RAM = memregion("maincpu")->base(); |
r243669 | r243670 | |
64 | 65 | membank("bank1")->set_base(&RAM[bankaddress]); |
65 | 66 | } |
66 | 67 | |
67 | WRITE8_MEMBER(tecmo_state::sound_command_w) | |
68 | WRITE8_MEMBER(tecmo_state::tecmo_sound_command_w) | |
68 | 69 | { |
69 | 70 | soundlatch_byte_w(space, offset, data); |
70 | 71 | m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE); |
71 | 72 | } |
72 | 73 | |
73 | WRITE8_MEMBER(tecmo_state::nmi_ack_w) | |
74 | WRITE8_MEMBER(tecmo_state::tecmo_nmi_ack_w) | |
74 | 75 | { |
75 | 76 | m_soundcpu->set_input_line(INPUT_LINE_NMI,CLEAR_LINE); |
76 | 77 | } |
77 | 78 | |
78 | WRITE8_MEMBER(tecmo_state::adpcm_start_w) | |
79 | WRITE8_MEMBER(tecmo_state::tecmo_adpcm_start_w) | |
79 | 80 | { |
80 | 81 | m_adpcm_pos = data << 8; |
81 | 82 | m_msm->reset_w(0); |
82 | 83 | } |
83 | 84 | |
84 | WRITE8_MEMBER(tecmo_state::adpcm_end_w) | |
85 | WRITE8_MEMBER(tecmo_state::tecmo_adpcm_end_w) | |
85 | 86 | { |
86 | 87 | m_adpcm_end = (data + 1) << 8; |
87 | 88 | } |
88 | 89 | |
89 | WRITE8_MEMBER(tecmo_state::adpcm_vol_w) | |
90 | WRITE8_MEMBER(tecmo_state::tecmo_adpcm_vol_w) | |
90 | 91 | { |
91 | 92 | m_msm->set_volume((data & 0x0f) * 100 / 15); |
92 | 93 | } |
93 | 94 | |
94 | WRITE_LINE_MEMBER(tecmo_state::adpcm_int) | |
95 | WRITE_LINE_MEMBER(tecmo_state::tecmo_adpcm_int) | |
95 | 96 | { |
96 | 97 | if (m_adpcm_pos >= m_adpcm_end || |
97 | 98 | m_adpcm_pos >= memregion("adpcm")->bytes()) |
r243669 | r243670 | |
111 | 112 | } |
112 | 113 | |
113 | 114 | /* the 8-bit dipswitches are split across addresses */ |
114 | READ8_MEMBER(tecmo_state::dswa_l_r) | |
115 | READ8_MEMBER(tecmo_state::tecmo_dswa_l_r) | |
115 | 116 | { |
116 | 117 | UINT8 port = ioport("DSWA")->read(); |
117 | 118 | port &= 0x0f; |
118 | 119 | return port; |
119 | 120 | } |
120 | 121 | |
121 | READ8_MEMBER(tecmo_state::dswa_h_r) | |
122 | READ8_MEMBER(tecmo_state::tecmo_dswa_h_r) | |
122 | 123 | { |
123 | 124 | UINT8 port = ioport("DSWA")->read(); |
124 | 125 | port &= 0xf0; |
125 | 126 | return port>>4; |
126 | 127 | } |
127 | 128 | |
128 | READ8_MEMBER(tecmo_state::dswb_l_r) | |
129 | READ8_MEMBER(tecmo_state::tecmo_dswb_l_r) | |
129 | 130 | { |
130 | 131 | UINT8 port = ioport("DSWB")->read(); |
131 | 132 | port &= 0x0f; |
132 | 133 | return port; |
133 | 134 | } |
134 | 135 | |
135 | READ8_MEMBER(tecmo_state::dswb_h_r) | |
136 | READ8_MEMBER(tecmo_state::tecmo_dswb_h_r) | |
136 | 137 | { |
137 | 138 | UINT8 port = ioport("DSWB")->read(); |
138 | 139 | port &= 0xf0; |
r243669 | r243670 | |
143 | 144 | static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state ) |
144 | 145 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
145 | 146 | AM_RANGE(0xc000, 0xcfff) AM_RAM |
146 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") | |
147 | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") | |
148 | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") | |
147 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram") | |
148 | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram") | |
149 | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram") | |
149 | 150 | AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") |
150 | 151 | AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
151 | 152 | AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1") |
r243669 | r243670 | |
155 | 156 | AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") |
156 | 157 | AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") |
157 | 158 | AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") |
158 | AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) | |
159 | AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) | |
160 | AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) | |
161 | AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) | |
159 | AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r) | |
160 | AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r) | |
161 | AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r) | |
162 | AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r) | |
162 | 163 | AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") |
163 | AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) | |
164 | AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) | |
165 | AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w) | |
166 | AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) | |
167 | AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) | |
164 | AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w) | |
165 | AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w) | |
166 | AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w) | |
167 | AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w) | |
168 | AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w) | |
168 | 169 | AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w) |
169 | 170 | ADDRESS_MAP_END |
170 | 171 | |
171 | 172 | static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state ) |
172 | 173 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
173 | 174 | AM_RANGE(0xc000, 0xcfff) AM_RAM |
174 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") | |
175 | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") | |
176 | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") | |
175 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram") | |
176 | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram") | |
177 | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram") | |
177 | 178 | AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
178 | 179 | AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram") |
179 | 180 | AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1") |
r243669 | r243670 | |
183 | 184 | AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") |
184 | 185 | AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") |
185 | 186 | AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") |
186 | AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) | |
187 | AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) | |
188 | AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) | |
189 | AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) | |
187 | AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r) | |
188 | AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r) | |
189 | AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r) | |
190 | AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r) | |
190 | 191 | AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") |
191 | AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) | |
192 | AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) | |
193 | AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w) | |
194 | AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) | |
195 | AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) | |
192 | AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w) | |
193 | AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w) | |
194 | AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w) | |
195 | AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w) | |
196 | AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w) | |
196 | 197 | AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w) |
197 | 198 | ADDRESS_MAP_END |
198 | 199 | |
199 | 200 | static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state ) |
200 | 201 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
201 | AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") | |
202 | AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") | |
203 | AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") | |
202 | AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram") | |
203 | AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram") | |
204 | AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram") | |
204 | 205 | AM_RANGE(0xd000, 0xdfff) AM_RAM |
205 | 206 | AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") |
206 | 207 | AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
r243669 | r243670 | |
211 | 212 | AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") |
212 | 213 | AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") |
213 | 214 | AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") |
214 | AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) | |
215 | AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) | |
216 | AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) | |
217 | AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) | |
215 | AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r) | |
216 | AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r) | |
217 | AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r) | |
218 | AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r) | |
218 | 219 | AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") |
219 | AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) | |
220 | AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) | |
221 | AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w) | |
222 | AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) | |
223 | AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) | |
220 | AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w) | |
221 | AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w) | |
222 | AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w) | |
223 | AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w) | |
224 | AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w) | |
224 | 225 | AM_RANGE(0xf809, 0xf809) AM_WRITENOP /* ? */ |
225 | 226 | AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP /* ? if mapped to watchdog like in the others, causes reset */ |
226 | 227 | ADDRESS_MAP_END |
r243669 | r243670 | |
229 | 230 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
230 | 231 | AM_RANGE(0x4000, 0x47ff) AM_RAM |
231 | 232 | AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write) |
232 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w) | |
233 | AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w) | |
234 | AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w) | |
235 | AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_ack_w) | |
233 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w) | |
234 | AM_RANGE(0xd000, 0xd000) AM_WRITE(tecmo_adpcm_end_w) | |
235 | AM_RANGE(0xe000, 0xe000) AM_WRITE(tecmo_adpcm_vol_w) | |
236 | AM_RANGE(0xf000, 0xf000) AM_WRITE(tecmo_nmi_ack_w) | |
236 | 237 | ADDRESS_MAP_END |
237 | 238 | |
238 | 239 | static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state ) |
r243669 | r243670 | |
241 | 242 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
242 | 243 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
243 | 244 | AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write) |
244 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w) | |
245 | AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w) | |
246 | AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w) | |
247 | AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w) | |
245 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w) | |
246 | AM_RANGE(0xc400, 0xc400) AM_WRITE(tecmo_adpcm_end_w) | |
247 | AM_RANGE(0xc800, 0xc800) AM_WRITE(tecmo_adpcm_vol_w) | |
248 | AM_RANGE(0xcc00, 0xcc00) AM_WRITE(tecmo_nmi_ack_w) | |
248 | 249 | ADDRESS_MAP_END |
249 | 250 | |
250 | 251 | |
r243669 | r243670 | |
599 | 600 | GFXDECODE_END |
600 | 601 | |
601 | 602 | |
602 | ||
603 | MACHINE_RESET_MEMBER(tecmo_state,rygar) | |
603 | 604 | { |
604 | save_item(NAME(m_adpcm_pos)); | |
605 | save_item(NAME(m_adpcm_end)); | |
606 | save_item(NAME(m_adpcm_data)); | |
607 | } | |
608 | ||
609 | void tecmo_state::machine_reset() | |
610 | { | |
611 | 605 | m_adpcm_pos = 0; |
612 | 606 | m_adpcm_end = 0; |
613 | 607 | m_adpcm_data = -1; |
r243669 | r243670 | |
629 | 623 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */) |
630 | 624 | MCFG_SCREEN_SIZE(32*8, 32*8) |
631 | 625 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
632 | MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update) | |
626 | MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo) | |
633 | 627 | MCFG_SCREEN_PALETTE("palette") |
634 | 628 | |
635 | 629 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo) |
r243669 | r243670 | |
639 | 633 | |
640 | 634 | MCFG_DEVICE_ADD("spritegen", TECMO_SPRITE, 0) |
641 | 635 | |
636 | MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo) | |
637 | ||
638 | MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar ) | |
639 | ||
642 | 640 | /* sound hardware */ |
643 | 641 | MCFG_SPEAKER_STANDARD_MONO("mono") |
644 | 642 | |
r243669 | r243670 | |
647 | 645 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
648 | 646 | |
649 | 647 | MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */ |
650 | MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, adpcm_int)) /* interrupt function */ | |
648 | MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, tecmo_adpcm_int)) /* interrupt function */ | |
651 | 649 | MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ |
652 | 650 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
653 | 651 | MACHINE_CONFIG_END |
r243669 | r243670 | |
673 | 671 | MCFG_CPU_PROGRAM_MAP(silkworm_map) |
674 | 672 | MACHINE_CONFIG_END |
675 | 673 | |
676 | static MACHINE_CONFIG_DERIVED( backfirt, gemini ) | |
674 | #ifdef UNUSED_CODE | |
675 | static MACHINE_CONFIG_START( backfirt, tecmo_state ) | |
677 | 676 | |
678 | /* this pcb has no MSM5205 */ | |
679 | MCFG_DEVICE_REMOVE("msm") | |
677 | /* basic machine hardware */ | |
678 | MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) | |
679 | MCFG_CPU_PROGRAM_MAP(rygar_map) | |
680 | MCFG_CPU_VBLANK_INT_DRIVER("screen", tecmo_state, irq0_line_hold) | |
681 | ||
682 | MCFG_CPU_ADD("soundcpu", Z80, XTAL_8MHz/2) | |
683 | MCFG_CPU_PROGRAM_MAP(rygar_sound_map) | |
684 | ||
685 | /* video hardware */ | |
686 | MCFG_SCREEN_ADD("screen", RASTER) | |
687 | MCFG_SCREEN_REFRESH_RATE(60) | |
688 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */) | |
689 | MCFG_SCREEN_SIZE(32*8, 32*8) | |
690 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) | |
691 | MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo) | |
692 | MCFG_SCREEN_PALETTE("palette") | |
693 | ||
694 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo) | |
695 | MCFG_PALETTE_ADD("palette", 1024) | |
696 | MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG) | |
697 | MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) | |
698 | ||
699 | MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo) | |
700 | ||
701 | MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar ) | |
702 | ||
703 | /* sound hardware */ | |
704 | MCFG_SPEAKER_STANDARD_MONO("mono") | |
705 | ||
706 | MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */ | |
707 | MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) | |
708 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) | |
709 | ||
710 | /* no MSM on this PCB */ | |
711 | ||
680 | 712 | MACHINE_CONFIG_END |
713 | #endif | |
714 | ||
681 | 715 | /*************************************************************************** |
682 | 716 | |
683 | 717 | Game driver(s) |
r243669 | r243670 | |
1031 | 1065 | ROM_LOAD( "b16-s2.bin", 0x10000, 0x10000, CRC(6e4052c9) SHA1(e2e3d7221b75cb044449a25a076a93c3def1f11b) ) /* tiles #2 */ |
1032 | 1066 | ROM_LOAD( "b15-s2.bin", 0x20000, 0x10000, CRC(2b6cc20e) SHA1(4815819288753400935836cc1b0b69f4c4b43ddc) ) /* tiles #2 */ |
1033 | 1067 | 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) ) | |
1034 | 1071 | ROM_END |
1035 | 1072 | |
1036 | 1073 | ROM_START( gemini ) |
r243669 | r243670 | |
1101 | 1138 | |
1102 | 1139 | |
1103 | 1140 | |
1104 | GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", GAME_SUPPORTS_SAVE ) | |
1105 | GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", GAME_SUPPORTS_SAVE ) | |
1106 | GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", GAME_SUPPORTS_SAVE ) | |
1107 | GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", GAME_SUPPORTS_SAVE ) | |
1108 | GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */ | |
1109 | GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", GAME_SUPPORTS_SAVE ) /* No regional "Warning, if you are playing ..." screen */ | |
1110 | GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */ | |
1111 | GAME( 1988, backfirt, 0, backfirt, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", GAME_SUPPORTS_SAVE ) | |
1141 | GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", 0 ) | |
1142 | GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", 0 ) | |
1143 | GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", 0 ) | |
1144 | GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", 0 ) | |
1145 | GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", 0 ) /* Japan regional warning screen */ | |
1146 | GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", 0 ) /* No regional "Warning, if you are playing ..." screen */ | |
1147 | GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", 0 ) /* Japan regional warning screen */ | |
1148 | GAME( 1988, backfirt, 0, gemini, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", 0 ) |
r243669 | r243670 | |
---|---|---|
32 | 32 | |
33 | 33 | /******************************************************************************/ |
34 | 34 | |
35 | WRITE16_MEMBER(tecmo16_state::sound_command_w) | |
35 | WRITE16_MEMBER(tecmo16_state::tecmo16_sound_command_w) | |
36 | 36 | { |
37 | 37 | if (ACCESSING_BITS_0_7) |
38 | 38 | { |
r243669 | r243670 | |
46 | 46 | static ADDRESS_MAP_START( fstarfrc_map, AS_PROGRAM, 16, tecmo16_state ) |
47 | 47 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
48 | 48 | AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */ |
49 | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") | |
50 | AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") | |
51 | AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") | |
52 | AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") | |
53 | AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") | |
49 | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram") | |
50 | AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram") | |
51 | AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram") | |
52 | AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2") | |
53 | AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2") | |
54 | 54 | AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */ |
55 | 55 | AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") |
56 | 56 | AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
57 | AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w) | |
58 | AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w) | |
57 | AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w) | |
58 | AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w) | |
59 | 59 | AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */ |
60 | 60 | AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1") |
61 | 61 | AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2") |
62 | AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w) | |
63 | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w) | |
64 | AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w) | |
65 | AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w) | |
66 | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w) | |
62 | AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w) | |
63 | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w) | |
64 | AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w) | |
65 | AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w) | |
66 | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w) | |
67 | 67 | ADDRESS_MAP_END |
68 | 68 | |
69 | 69 | static ADDRESS_MAP_START( ginkun_map, AS_PROGRAM, 16, tecmo16_state ) |
70 | 70 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
71 | 71 | AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */ |
72 | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") | |
73 | AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") | |
74 | AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") | |
75 | AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") | |
76 | AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") | |
72 | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram") | |
73 | AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram") | |
74 | AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram") | |
75 | AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2") | |
76 | AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2") | |
77 | 77 | AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */ |
78 | 78 | AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") |
79 | 79 | AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
80 | AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w) | |
81 | AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w) | |
80 | AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w) | |
81 | AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w) | |
82 | 82 | AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP /* ??? */ |
83 | 83 | AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */ |
84 | 84 | AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1") |
85 | 85 | AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2") |
86 | AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w) | |
87 | AM_RANGE(0x160006, 0x160007) AM_WRITE(scroll_char_y_w) | |
88 | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w) | |
89 | AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w) | |
90 | AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w) | |
91 | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w) | |
86 | AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w) | |
87 | AM_RANGE(0x160006, 0x160007) AM_WRITE(tecmo16_scroll_char_y_w) | |
88 | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w) | |
89 | AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w) | |
90 | AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w) | |
91 | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w) | |
92 | 92 | ADDRESS_MAP_END |
93 | 93 | |
94 | 94 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tecmo16_state ) |
r243669 | r243670 | |
382 | 382 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
383 | 383 | MCFG_SCREEN_SIZE(32*8, 32*8) |
384 | 384 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
385 | MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update) | |
385 | MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update_tecmo16) | |
386 | 386 | |
387 | 387 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo16) |
388 | 388 | MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096) |
r243669 | r243670 | |
629 | 629 | |
630 | 630 | /******************************************************************************/ |
631 | 631 | |
632 | GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", GAME_SUPPORTS_SAVE ) | |
633 | GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", GAME_SUPPORTS_SAVE ) | |
634 | GAME( 1992, riot, 0, riot, riot, driver_device, 0, ROT0, "NMK", "Riot", GAME_SUPPORTS_SAVE ) | |
635 | GAME( 1995, ginkun, 0, ginkun, ginkun, driver_device, 0, ROT0, "Tecmo", "Ganbare Ginkun", GAME_SUPPORTS_SAVE ) | |
632 | GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", 0 ) | |
633 | GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", 0 ) | |
634 | GAME( 1992, riot, 0, riot, riot, driver_device, 0, ROT0, "NMK", "Riot", 0 ) | |
635 | GAME( 1995, ginkun, 0, ginkun, ginkun, driver_device, 0, ROT0, "Tecmo", "Ganbare Ginkun", 0 ) |
r243669 | r243670 | |
---|---|---|
31 | 31 | -2) X Line Scrolling doesn't work 100% when Flip Screen Dip is set |
32 | 32 | -3) 2 Player Version - Dips for difficulty don't seem to work or just need more testing |
33 | 33 | |
34 | -4) 2 Player Version - sound ROM is different and the adp | |
34 | -4) 2 Player Version - sound ROM is different and the adpmc chip is addressed differently | |
35 | 35 | Changed it to use a rom that was dumped from original PCB (readme below), |
36 | 36 | this makes the non-working ROM not used - i don't know where it come from. |
37 | 37 | |
r243669 | r243670 | |
131 | 131 | /* Save the scroll x register value */ |
132 | 132 | if (scanline < 256) |
133 | 133 | { |
134 | m_scrollx[255 - scanline] = (m_scrollx_hi + m_scrollx_lo + 4); | |
134 | m_vb_scrollx[255 - scanline] = (m_vb_scrollx_hi + m_vb_scrollx_lo + 4); | |
135 | 135 | } |
136 | 136 | } |
137 | 137 | |
138 | WRITE8_MEMBER(vball_state::irq_ack_w) | |
138 | WRITE8_MEMBER(vball_state::vball_irq_ack_w) | |
139 | 139 | { |
140 | 140 | if (offset == 0) |
141 | 141 | m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); |
r243669 | r243670 | |
154 | 154 | bit 6 = scroll y hi |
155 | 155 | bit 7 = ? |
156 | 156 | */ |
157 | WRITE8_MEMBER(vball_state::bankswitch_w) | |
157 | WRITE8_MEMBER(vball_state::vb_bankswitch_w) | |
158 | 158 | { |
159 | membank("mainbank")->set_entry(data & 1); | |
159 | UINT8 *RAM = memregion("maincpu")->base(); | |
160 | membank("bank1")->set_base(&RAM[0x10000 + (0x4000 * (data & 1))]); | |
160 | 161 | |
161 | 162 | if (m_gfxset != ((data & 0x20) ^ 0x20)) |
162 | 163 | { |
163 | 164 | m_gfxset = (data & 0x20) ^ 0x20; |
164 | | |
165 | vb_mark_all_dirty(); | |
165 | 166 | } |
166 | m_scrolly_hi = (data & 0x40) << 2; | |
167 | m_vb_scrolly_hi = (data & 0x40) << 2; | |
167 | 168 | } |
168 | 169 | |
169 | 170 | /* The sound system comes all but verbatim from Double Dragon */ |
r243669 | r243670 | |
183 | 184 | bit 6 = sp prom bank |
184 | 185 | bit 7 = sp prom bank |
185 | 186 | */ |
186 | WRITE8_MEMBER(vball_state::scrollx_hi_w) | |
187 | WRITE8_MEMBER(vball_state::vb_scrollx_hi_w) | |
187 | 188 | { |
188 | 189 | flip_screen_set(~data&1); |
189 | m_scrollx_hi = (data & 0x02) << 7; | |
190 | bgprombank_w((data >> 2) & 0x07); | |
191 | spprombank_w((data >> 5) & 0x07); | |
192 | //logerror("%04x: scrollx_hi = %d\n", space.device().safe_pcbase(), m_scrollx_hi); | |
190 | m_vb_scrollx_hi = (data & 0x02) << 7; | |
191 | vb_bgprombank_w((data >> 2) & 0x07); | |
192 | vb_spprombank_w((data >> 5) & 0x07); | |
193 | //logerror("%04x: vb_scrollx_hi = %d\n", space.device().safe_pcbase(), m_vb_scrollx_hi); | |
193 | 194 | } |
194 | 195 | |
195 | WRITE8_MEMBER(vball_state::scrollx_lo_w) | |
196 | WRITE8_MEMBER(vball_state::vb_scrollx_lo_w) | |
196 | 197 | { |
197 | m_scrollx_lo = data; | |
198 | //logerror("%04x: scrollx_lo =%d\n", space.device().safe_pcbase(), m_scrollx_lo); | |
198 | m_vb_scrollx_lo = data; | |
199 | //logerror("%04x: vb_scrollx_lo =%d\n", space.device().safe_pcbase(), m_vb_scrollx_lo); | |
199 | 200 | } |
200 | 201 | |
201 | 202 | |
r243669 | r243670 | |
210 | 211 | AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2") |
211 | 212 | AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3") |
212 | 213 | AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4") |
213 | AM_RANGE(0x1008, 0x1008) AM_WRITE(scrollx_hi_w) | |
214 | AM_RANGE(0x1009, 0x1009) AM_WRITE(bankswitch_w) | |
215 | AM_RANGE(0x100a, 0x100b) AM_WRITE(irq_ack_w) /* is there a scanline counter here? */ | |
216 | AM_RANGE(0x100c, 0x100c) AM_WRITE(scrollx_lo_w) | |
214 | AM_RANGE(0x1008, 0x1008) AM_WRITE(vb_scrollx_hi_w) | |
215 | AM_RANGE(0x1009, 0x1009) AM_WRITE(vb_bankswitch_w) | |
216 | AM_RANGE(0x100a, 0x100b) AM_WRITE(vball_irq_ack_w) /* is there a scanline counter here? */ | |
217 | AM_RANGE(0x100c, 0x100c) AM_WRITE(vb_scrollx_lo_w) | |
217 | 218 | AM_RANGE(0x100d, 0x100d) AM_WRITE(cpu_sound_command_w) |
218 | AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("scrolly_lo") | |
219 | AM_RANGE(0x2000, 0x2fff) AM_WRITE(videoram_w) AM_SHARE("videoram") | |
220 | AM_RANGE(0x3000, 0x3fff) AM_WRITE(attrib_w) AM_SHARE("attribram") | |
221 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") | |
219 | AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("vb_scrolly_lo") | |
220 | AM_RANGE(0x2000, 0x2fff) AM_WRITE(vb_videoram_w) AM_SHARE("vb_videoram") | |
221 | AM_RANGE(0x3000, 0x3fff) AM_WRITE(vb_attrib_w) AM_SHARE("vb_attribram") | |
222 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") | |
222 | 223 | AM_RANGE(0x8000, 0xffff) AM_ROM |
223 | 224 | ADDRESS_MAP_END |
224 | 225 | |
r243669 | r243670 | |
360 | 361 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Used in 4 player mode, not supported in 2 player set */ |
361 | 362 | INPUT_PORTS_END |
362 | 363 | |
363 | void vball_state::machine_start() | |
364 | { | |
365 | membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000); | |
366 | } | |
367 | 364 | |
368 | ||
369 | 365 | static const gfx_layout charlayout = |
370 | 366 | { |
371 | 367 | 8,8, |
r243669 | r243670 | |
411 | 407 | MCFG_SCREEN_ADD("screen", RASTER) |
412 | 408 | MCFG_SCREEN_SIZE(32*8, 32*8) |
413 | 409 | MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) /* based on ddragon driver */ |
414 | MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update) | |
410 | MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb) | |
415 | 411 | MCFG_SCREEN_PALETTE("palette") |
416 | 412 | |
417 | 413 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", vb) |
r243669 | r243670 | |
561 | 557 | ROM_END |
562 | 558 | |
563 | 559 | |
564 | GAME( 1988, vball, 0, vball, vball, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", GAME_SUPPORTS_SAVE ) | |
565 | GAME( 1988, vball2pj, vball, vball, vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", GAME_SUPPORTS_SAVE ) | |
566 | GAME( 1988, vballb, vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", GAME_SUPPORTS_SAVE ) | |
567 | GAME( 1988, vball2pjb,vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", GAME_SUPPORTS_SAVE ) | |
560 | GAME( 1988, vball, 0, vball, vball, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", 0 ) | |
561 | GAME( 1988, vball2pj, vball, vball, vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", 0 ) | |
562 | GAME( 1988, vballb, vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", 0 ) | |
563 | GAME( 1988, vball2pjb,vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", 0 ) |
r243669 | r243670 | |
---|---|---|
24 | 24 | public: |
25 | 25 | skydiver_state(const machine_config &mconfig, device_type type, const char *tag) |
26 | 26 | : driver_device(mconfig, type, tag), |
27 | m_videoram(*this, "videoram") , | |
27 | 28 | m_maincpu(*this, "maincpu"), |
28 | 29 | m_discrete(*this, "discrete"), |
29 | 30 | m_gfxdecode(*this, "gfxdecode"), |
30 | m_palette(*this, "palette"), | |
31 | m_videoram(*this, "videoram") { } | |
31 | m_palette(*this, "palette") { } | |
32 | 32 | |
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 | ||
38 | 33 | required_shared_ptr<UINT8> m_videoram; |
39 | ||
40 | 34 | int m_nmion; |
41 | 35 | tilemap_t *m_bg_tilemap; |
42 | 36 | int m_width; |
43 | 37 | |
44 | DECLARE_WRITE8_MEMBER(nmion_w); | |
45 | DECLARE_WRITE8_MEMBER(videoram_w); | |
46 | DECLARE_READ8_MEMBER(wram_r); | |
47 | DECLARE_WRITE8_MEMBER(wram_w); | |
48 | DECLARE_WRITE8_MEMBER(width_w); | |
49 | DECLARE_WRITE8_MEMBER(coin_lockout_w); | |
50 | DECLARE_WRITE8_MEMBER(start_lamp_1_w); | |
51 | DECLARE_WRITE8_MEMBER(start_lamp_2_w); | |
52 | DECLARE_WRITE8_MEMBER(lamp_s_w); | |
53 | DECLARE_WRITE8_MEMBER(lamp_k_w); | |
54 | DECLARE_WRITE8_MEMBER(lamp_y_w); | |
55 | DECLARE_WRITE8_MEMBER(lamp_d_w); | |
56 | DECLARE_WRITE8_MEMBER(_2000_201F_w); | |
57 | DECLARE_WRITE8_MEMBER(sound_enable_w); | |
58 | DECLARE_WRITE8_MEMBER(whistle_w); | |
59 | ||
38 | DECLARE_WRITE8_MEMBER(skydiver_nmion_w); | |
39 | DECLARE_WRITE8_MEMBER(skydiver_videoram_w); | |
40 | DECLARE_READ8_MEMBER(skydiver_wram_r); | |
41 | DECLARE_WRITE8_MEMBER(skydiver_wram_w); | |
42 | DECLARE_WRITE8_MEMBER(skydiver_width_w); | |
43 | DECLARE_WRITE8_MEMBER(skydiver_coin_lockout_w); | |
44 | DECLARE_WRITE8_MEMBER(skydiver_start_lamp_1_w); | |
45 | DECLARE_WRITE8_MEMBER(skydiver_start_lamp_2_w); | |
46 | DECLARE_WRITE8_MEMBER(skydiver_lamp_s_w); | |
47 | DECLARE_WRITE8_MEMBER(skydiver_lamp_k_w); | |
48 | DECLARE_WRITE8_MEMBER(skydiver_lamp_y_w); | |
49 | DECLARE_WRITE8_MEMBER(skydiver_lamp_d_w); | |
50 | DECLARE_WRITE8_MEMBER(skydiver_2000_201F_w); | |
51 | DECLARE_WRITE8_MEMBER(skydiver_sound_enable_w); | |
52 | DECLARE_WRITE8_MEMBER(skydiver_whistle_w); | |
60 | 53 | TILE_GET_INFO_MEMBER(get_tile_info); |
61 | ||
62 | 54 | virtual void machine_reset(); |
63 | 55 | virtual void video_start(); |
64 | 56 | DECLARE_PALETTE_INIT(skydiver); |
65 | ||
66 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
57 | UINT32 screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
58 | INTERRUPT_GEN_MEMBER(skydiver_interrupt); | |
67 | 59 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); |
68 | ||
69 | INTERRUPT_GEN_MEMBER(interrupt); | |
60 | required_device<cpu_device> m_maincpu; | |
61 | required_device<discrete_device> m_discrete; | |
62 | required_device<gfxdecode_device> m_gfxdecode; | |
63 | required_device<palette_device> m_palette; | |
70 | 64 | }; |
71 | 65 | |
72 | 66 | /*----------- defined in audio/skydiver.c -----------*/ |
r243669 | r243670 | |
---|---|---|
6 | 6 | public: |
7 | 7 | tecmo_state(const machine_config &mconfig, device_type type, const char *tag) |
8 | 8 | : 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"), | |
9 | 13 | m_maincpu(*this, "maincpu"), |
10 | 14 | m_soundcpu(*this, "soundcpu"), |
11 | 15 | m_msm(*this, "msm"), |
12 | 16 | m_gfxdecode(*this, "gfxdecode"), |
13 | 17 | m_palette(*this, "palette"), |
14 | m_sprgen(*this, "spritegen"), | |
15 | m_txvideoram(*this, "txvideoram"), | |
16 | m_fgvideoram(*this, "fgvideoram"), | |
17 | m_bgvideoram(*this, "bgvideoram"), | |
18 | m_spriteram(*this, "spriteram") { } | |
18 | m_sprgen(*this, "spritegen") | |
19 | { } | |
19 | 20 | |
20 | required_device<cpu_device> m_maincpu; | |
21 | required_device<cpu_device> m_soundcpu; | |
22 | optional_device<msm5205_device> m_msm; | |
23 | required_device<gfxdecode_device> m_gfxdecode; | |
24 | required_device<palette_device> m_palette; | |
25 | required_device<tecmo_spr_device> m_sprgen; | |
26 | ||
21 | int m_adpcm_pos; | |
22 | int m_adpcm_end; | |
23 | int m_adpcm_data; | |
24 | int m_video_type; | |
27 | 25 | required_shared_ptr<UINT8> m_txvideoram; |
28 | 26 | required_shared_ptr<UINT8> m_fgvideoram; |
29 | 27 | required_shared_ptr<UINT8> m_bgvideoram; |
30 | required_shared_ptr<UINT8> m_spriteram; | |
31 | ||
32 | 28 | tilemap_t *m_tx_tilemap; |
33 | 29 | tilemap_t *m_fg_tilemap; |
34 | 30 | tilemap_t *m_bg_tilemap; |
35 | 31 | UINT8 m_fgscroll[3]; |
36 | 32 | UINT8 m_bgscroll[3]; |
37 | int m_adpcm_pos; | |
38 | int m_adpcm_end; | |
39 | int m_adpcm_data; | |
40 | int m_video_type; | |
41 | ||
42 | DECLARE_WRITE8_MEMBER(bankswitch_w); | |
43 | DECLARE_WRITE8_MEMBER(sound_command_w); | |
44 | DECLARE_WRITE8_MEMBER(nmi_ack_w); | |
45 | DECLARE_WRITE8_MEMBER(adpcm_end_w); | |
46 | DECLARE_READ8_MEMBER(dswa_l_r); | |
47 | DECLARE_READ8_MEMBER(dswa_h_r); | |
48 | DECLARE_READ8_MEMBER(dswb_l_r); | |
49 | DECLARE_READ8_MEMBER(dswb_h_r); | |
50 | DECLARE_WRITE8_MEMBER(txvideoram_w); | |
51 | DECLARE_WRITE8_MEMBER(fgvideoram_w); | |
52 | DECLARE_WRITE8_MEMBER(bgvideoram_w); | |
53 | DECLARE_WRITE8_MEMBER(fgscroll_w); | |
54 | DECLARE_WRITE8_MEMBER(bgscroll_w); | |
55 | DECLARE_WRITE8_MEMBER(flipscreen_w); | |
56 | DECLARE_WRITE8_MEMBER(adpcm_start_w); | |
57 | DECLARE_WRITE8_MEMBER(adpcm_vol_w); | |
58 | DECLARE_WRITE_LINE_MEMBER(adpcm_int); | |
59 | ||
33 | required_shared_ptr<UINT8> m_spriteram; | |
34 | DECLARE_WRITE8_MEMBER(tecmo_bankswitch_w); | |
35 | DECLARE_WRITE8_MEMBER(tecmo_sound_command_w); | |
36 | DECLARE_WRITE8_MEMBER(tecmo_nmi_ack_w); | |
37 | DECLARE_WRITE8_MEMBER(tecmo_adpcm_end_w); | |
38 | DECLARE_READ8_MEMBER(tecmo_dswa_l_r); | |
39 | DECLARE_READ8_MEMBER(tecmo_dswa_h_r); | |
40 | DECLARE_READ8_MEMBER(tecmo_dswb_l_r); | |
41 | DECLARE_READ8_MEMBER(tecmo_dswb_h_r); | |
42 | DECLARE_WRITE8_MEMBER(tecmo_txvideoram_w); | |
43 | DECLARE_WRITE8_MEMBER(tecmo_fgvideoram_w); | |
44 | DECLARE_WRITE8_MEMBER(tecmo_bgvideoram_w); | |
45 | DECLARE_WRITE8_MEMBER(tecmo_fgscroll_w); | |
46 | DECLARE_WRITE8_MEMBER(tecmo_bgscroll_w); | |
47 | DECLARE_WRITE8_MEMBER(tecmo_flipscreen_w); | |
48 | DECLARE_WRITE8_MEMBER(tecmo_adpcm_start_w); | |
49 | DECLARE_WRITE8_MEMBER(tecmo_adpcm_vol_w); | |
60 | 50 | DECLARE_DRIVER_INIT(silkworm); |
61 | 51 | DECLARE_DRIVER_INIT(rygar); |
62 | 52 | DECLARE_DRIVER_INIT(backfirt); |
63 | 53 | DECLARE_DRIVER_INIT(gemini); |
64 | ||
65 | 54 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
66 | 55 | TILE_GET_INFO_MEMBER(get_fg_tile_info); |
67 | 56 | TILE_GET_INFO_MEMBER(gemini_get_bg_tile_info); |
68 | 57 | TILE_GET_INFO_MEMBER(gemini_get_fg_tile_info); |
69 | 58 | TILE_GET_INFO_MEMBER(get_tx_tile_info); |
70 | ||
71 | virtual void machine_start(); | |
72 | virtual void machine_reset(); | |
73 | virtual void video_start(); | |
74 | ||
75 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
59 | DECLARE_MACHINE_RESET(rygar); | |
60 | DECLARE_VIDEO_START(tecmo); | |
61 | UINT32 screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
76 | 62 | 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; | |
77 | 70 | }; |
r243669 | r243670 | |
---|---|---|
6 | 6 | public: |
7 | 7 | tecmo16_state(const machine_config &mconfig, device_type type, const char *tag) |
8 | 8 | : 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"), | |
9 | 15 | m_maincpu(*this, "maincpu"), |
10 | 16 | m_audiocpu(*this, "audiocpu"), |
11 | 17 | m_gfxdecode(*this, "gfxdecode"), |
12 | 18 | m_screen(*this, "screen"), |
13 | 19 | m_palette(*this, "palette"), |
14 | 20 | m_sprgen(*this, "spritegen"), |
15 | m_mixer(*this, "mixer"), | |
16 | m_videoram(*this, "videoram"), | |
17 | m_colorram(*this, "colorram"), | |
18 | m_videoram2(*this, "videoram2"), | |
19 | m_colorram2(*this, "colorram2"), | |
20 | m_charram(*this, "charram"), | |
21 | m_spriteram(*this, "spriteram") | |
21 | m_mixer(*this, "mixer") | |
22 | 22 | { } |
23 | 23 | |
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 | ||
32 | 24 | required_shared_ptr<UINT16> m_videoram; |
33 | 25 | required_shared_ptr<UINT16> m_colorram; |
34 | 26 | required_shared_ptr<UINT16> m_videoram2; |
35 | 27 | required_shared_ptr<UINT16> m_colorram2; |
36 | 28 | required_shared_ptr<UINT16> m_charram; |
37 | required_shared_ptr<UINT16> m_spriteram; | |
38 | ||
39 | 29 | tilemap_t *m_fg_tilemap; |
40 | 30 | tilemap_t *m_bg_tilemap; |
41 | 31 | tilemap_t *m_tx_tilemap; |
r243669 | r243670 | |
50 | 40 | UINT16 m_scroll2_y_w; |
51 | 41 | UINT16 m_scroll_char_x_w; |
52 | 42 | UINT16 m_scroll_char_y_w; |
53 | ||
54 | DECLARE_WRITE16_MEMBER(sound_command_w); | |
55 | DECLARE_WRITE16_MEMBER(videoram_w); | |
56 | DECLARE_WRITE16_MEMBER(colorram_w); | |
57 | DECLARE_WRITE16_MEMBER(videoram2_w); | |
58 | DECLARE_WRITE16_MEMBER(colorram2_w); | |
59 | DECLARE_WRITE16_MEMBER(charram_w); | |
60 | DECLARE_WRITE16_MEMBER(flipscreen_w); | |
61 | DECLARE_WRITE16_MEMBER(scroll_x_w); | |
62 | DECLARE_WRITE16_MEMBER(scroll_y_w); | |
63 | DECLARE_WRITE16_MEMBER(scroll2_x_w); | |
64 | DECLARE_WRITE16_MEMBER(scroll2_y_w); | |
65 | DECLARE_WRITE16_MEMBER(scroll_char_x_w); | |
66 | DECLARE_WRITE16_MEMBER(scroll_char_y_w); | |
67 | ||
43 | required_shared_ptr<UINT16> m_spriteram; | |
44 | DECLARE_WRITE16_MEMBER(tecmo16_sound_command_w); | |
45 | DECLARE_WRITE16_MEMBER(tecmo16_videoram_w); | |
46 | DECLARE_WRITE16_MEMBER(tecmo16_colorram_w); | |
47 | DECLARE_WRITE16_MEMBER(tecmo16_videoram2_w); | |
48 | DECLARE_WRITE16_MEMBER(tecmo16_colorram2_w); | |
49 | DECLARE_WRITE16_MEMBER(tecmo16_charram_w); | |
50 | DECLARE_WRITE16_MEMBER(tecmo16_flipscreen_w); | |
51 | DECLARE_WRITE16_MEMBER(tecmo16_scroll_x_w); | |
52 | DECLARE_WRITE16_MEMBER(tecmo16_scroll_y_w); | |
53 | DECLARE_WRITE16_MEMBER(tecmo16_scroll2_x_w); | |
54 | DECLARE_WRITE16_MEMBER(tecmo16_scroll2_y_w); | |
55 | DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_x_w); | |
56 | DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_y_w); | |
68 | 57 | TILE_GET_INFO_MEMBER(fg_get_tile_info); |
69 | 58 | TILE_GET_INFO_MEMBER(bg_get_tile_info); |
70 | 59 | TILE_GET_INFO_MEMBER(tx_get_tile_info); |
71 | ||
72 | 60 | virtual void video_start(); |
73 | 61 | DECLARE_VIDEO_START(ginkun); |
74 | 62 | 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; | |
75 | 71 | |
76 | UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); | |
77 | ||
78 | void save_state(); | |
79 | 72 | }; |
r243669 | r243670 | |
---|---|---|
3 | 3 | public: |
4 | 4 | vball_state(const machine_config &mconfig, device_type type, const char *tag) |
5 | 5 | : 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"), | |
6 | 10 | m_maincpu(*this, "maincpu"), |
7 | 11 | m_audiocpu(*this, "audiocpu"), |
8 | 12 | m_gfxdecode(*this, "gfxdecode"), |
9 | 13 | m_screen(*this, "screen"), |
10 | m_palette(*this, "palette"), | |
11 | m_attribram(*this, "attribram"), | |
12 | m_videoram(*this, "videoram"), | |
13 | m_scrolly_lo(*this, "scrolly_lo"), | |
14 | m_spriteram(*this, "spriteram") { } | |
14 | m_palette(*this, "palette"){ } | |
15 | 15 | |
16 | required_device<cpu_device> m_maincpu; | |
17 | required_device<cpu_device> m_audiocpu; | |
18 | required_device<gfxdecode_device> m_gfxdecode; | |
19 | required_device<screen_device> m_screen; | |
20 | required_device<palette_device> m_palette; | |
21 | ||
22 | required_shared_ptr<UINT8> m_attribram; | |
23 | required_shared_ptr<UINT8> m_videoram; | |
24 | required_shared_ptr<UINT8> m_scrolly_lo; | |
25 | required_shared_ptr<UINT8> m_spriteram; | |
26 | ||
27 | int m_scrollx_hi; | |
28 | int m_scrolly_hi; | |
29 | int m_scrollx_lo; | |
16 | required_shared_ptr<UINT8> m_vb_attribram; | |
17 | required_shared_ptr<UINT8> m_vb_videoram; | |
18 | required_shared_ptr<UINT8> m_vb_scrolly_lo; | |
19 | int m_vb_scrollx_hi; | |
20 | int m_vb_scrolly_hi; | |
21 | int m_vb_scrollx_lo; | |
30 | 22 | int m_gfxset; |
31 | int m_scrollx[256]; | |
32 | int m_bgprombank; | |
33 | int m_spprombank; | |
23 | int m_vb_scrollx[256]; | |
24 | int m_vb_bgprombank; | |
25 | int m_vb_spprombank; | |
34 | 26 | tilemap_t *m_bg_tilemap; |
35 | ||
36 | DECLARE_WRITE8_MEMBER(irq_ack_w); | |
37 | DECLARE_WRITE8_MEMBER(bankswitch_w); | |
27 | required_shared_ptr<UINT8> m_spriteram; | |
28 | DECLARE_WRITE8_MEMBER(vball_irq_ack_w); | |
29 | DECLARE_WRITE8_MEMBER(vb_bankswitch_w); | |
38 | 30 | DECLARE_WRITE8_MEMBER(cpu_sound_command_w); |
39 | DECLARE_WRITE8_MEMBER(scrollx_hi_w); | |
40 | DECLARE_WRITE8_MEMBER(scrollx_lo_w); | |
41 | DECLARE_WRITE8_MEMBER(videoram_w); | |
42 | DECLARE_WRITE8_MEMBER(attrib_w); | |
43 | ||
31 | DECLARE_WRITE8_MEMBER(vb_scrollx_hi_w); | |
32 | DECLARE_WRITE8_MEMBER(vb_scrollx_lo_w); | |
33 | DECLARE_WRITE8_MEMBER(vb_videoram_w); | |
34 | DECLARE_READ8_MEMBER(vb_attrib_r); | |
35 | DECLARE_WRITE8_MEMBER(vb_attrib_w); | |
44 | 36 | TILEMAP_MAPPER_MEMBER(background_scan); |
45 | 37 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
46 | ||
47 | virtual void machine_start(); | |
48 | 38 | virtual void video_start(); |
49 | ||
50 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
39 | UINT32 screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); | |
51 | 40 | TIMER_DEVICE_CALLBACK_MEMBER(vball_scanline); |
52 | void bgprombank_w(int bank); | |
53 | void spprombank_w(int bank); | |
41 | void vb_bgprombank_w( int bank ); | |
42 | void vb_spprombank_w( int bank ); | |
43 | void vb_mark_all_dirty( ); | |
54 | 44 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); |
55 | 45 | 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; | |
56 | 51 | }; |
r243669 | r243670 | |
---|---|---|
14 | 14 | address_space &space = m_maincpu->space(AS_PROGRAM); |
15 | 15 | |
16 | 16 | /* reset all latches */ |
17 | start_lamp_1_w(space, 0, 0); | |
18 | start_lamp_2_w(space, 0, 0); | |
19 | lamp_s_w(space, 0, 0); | |
20 | lamp_k_w(space, 0, 0); | |
21 | lamp_y_w(space, 0, 0); | |
22 | lamp_d_w(space, 0, 0); | |
17 | skydiver_start_lamp_1_w(space, 0, 0); | |
18 | skydiver_start_lamp_2_w(space, 0, 0); | |
19 | skydiver_lamp_s_w(space, 0, 0); | |
20 | skydiver_lamp_k_w(space, 0, 0); | |
21 | skydiver_lamp_y_w(space, 0, 0); | |
22 | skydiver_lamp_d_w(space, 0, 0); | |
23 | 23 | output_set_value("lampi", 0); |
24 | 24 | output_set_value("lampv", 0); |
25 | 25 | output_set_value("lampe", 0); |
26 | 26 | output_set_value("lampr", 0); |
27 | width_w(space, 0, 0); | |
28 | coin_lockout_w(space, 0, 0); | |
27 | skydiver_width_w(space, 0, 0); | |
28 | skydiver_coin_lockout_w(space, 0, 0); | |
29 | 29 | } |
30 | 30 | |
31 | 31 | |
r243669 | r243670 | |
52 | 52 | void skydiver_state::video_start() |
53 | 53 | { |
54 | 54 | 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)); | |
58 | 55 | } |
59 | 56 | |
60 | 57 | |
r243669 | r243670 | |
64 | 61 | * |
65 | 62 | *************************************/ |
66 | 63 | |
67 | WRITE8_MEMBER(skydiver_state::videoram_w) | |
64 | WRITE8_MEMBER(skydiver_state::skydiver_videoram_w) | |
68 | 65 | { |
69 | 66 | m_videoram[offset] = data; |
70 | 67 | m_bg_tilemap->mark_tile_dirty(offset); |
71 | 68 | } |
72 | 69 | |
73 | 70 | |
74 | READ8_MEMBER(skydiver_state::wram_r) | |
71 | READ8_MEMBER(skydiver_state::skydiver_wram_r) | |
75 | 72 | { |
76 | 73 | return m_videoram[offset | 0x380]; |
77 | 74 | } |
78 | 75 | |
79 | WRITE8_MEMBER(skydiver_state::wram_w) | |
76 | WRITE8_MEMBER(skydiver_state::skydiver_wram_w) | |
80 | 77 | { |
81 | 78 | m_videoram[offset | 0x0380] = data; |
82 | 79 | } |
83 | 80 | |
84 | 81 | |
85 | WRITE8_MEMBER(skydiver_state::width_w) | |
82 | WRITE8_MEMBER(skydiver_state::skydiver_width_w) | |
86 | 83 | { |
87 | 84 | m_width = offset; |
88 | 85 | } |
89 | 86 | |
90 | 87 | |
91 | WRITE8_MEMBER(skydiver_state::coin_lockout_w) | |
88 | WRITE8_MEMBER(skydiver_state::skydiver_coin_lockout_w) | |
92 | 89 | { |
93 | 90 | coin_lockout_global_w(machine(), !offset); |
94 | 91 | } |
95 | 92 | |
96 | 93 | |
97 | WRITE8_MEMBER(skydiver_state::start_lamp_1_w) | |
94 | WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_1_w) | |
98 | 95 | { |
99 | 96 | set_led_status(machine(), 0, offset); |
100 | 97 | } |
101 | 98 | |
102 | WRITE8_MEMBER(skydiver_state::start_lamp_2_w) | |
99 | WRITE8_MEMBER(skydiver_state::skydiver_start_lamp_2_w) | |
103 | 100 | { |
104 | 101 | set_led_status(machine(), 1, offset); |
105 | 102 | } |
106 | 103 | |
107 | 104 | |
108 | WRITE8_MEMBER(skydiver_state::lamp_s_w) | |
105 | WRITE8_MEMBER(skydiver_state::skydiver_lamp_s_w) | |
109 | 106 | { |
110 | 107 | output_set_value("lamps", offset); |
111 | 108 | } |
112 | 109 | |
113 | WRITE8_MEMBER(skydiver_state::lamp_k_w) | |
110 | WRITE8_MEMBER(skydiver_state::skydiver_lamp_k_w) | |
114 | 111 | { |
115 | 112 | output_set_value("lampk", offset); |
116 | 113 | } |
117 | 114 | |
118 | WRITE8_MEMBER(skydiver_state::lamp_y_w) | |
115 | WRITE8_MEMBER(skydiver_state::skydiver_lamp_y_w) | |
119 | 116 | { |
120 | 117 | output_set_value("lampy", offset); |
121 | 118 | } |
122 | 119 | |
123 | WRITE8_MEMBER(skydiver_state::lamp_d_w) | |
120 | WRITE8_MEMBER(skydiver_state::skydiver_lamp_d_w) | |
124 | 121 | { |
125 | 122 | output_set_value("lampd", offset); |
126 | 123 | } |
127 | 124 | |
128 | WRITE8_MEMBER(skydiver_state::_2000_201F_w) | |
125 | WRITE8_MEMBER(skydiver_state::skydiver_2000_201F_w) | |
129 | 126 | { |
130 | 127 | int bit = offset & 0x01; |
131 | 128 | |
r243669 | r243670 | |
201 | 198 | } |
202 | 199 | |
203 | 200 | |
204 | UINT32 skydiver_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
201 | UINT32 skydiver_state::screen_update_skydiver(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
205 | 202 | { |
206 | 203 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); |
207 | 204 |
r243669 | r243670 | |
---|---|---|
74 | 74 | |
75 | 75 | ***************************************************************************/ |
76 | 76 | |
77 | ||
77 | VIDEO_START_MEMBER(tecmo_state,tecmo) | |
78 | 78 | { |
79 | 79 | if (m_video_type == 2) /* gemini */ |
80 | 80 | { |
r243669 | r243670 | |
94 | 94 | |
95 | 95 | m_bg_tilemap->set_scrolldx(-48,256+48); |
96 | 96 | m_fg_tilemap->set_scrolldx(-48,256+48); |
97 | ||
98 | save_item(NAME(m_fgscroll)); | |
99 | save_item(NAME(m_bgscroll)); | |
100 | 97 | } |
101 | 98 | |
102 | 99 | |
r243669 | r243670 | |
107 | 104 | |
108 | 105 | ***************************************************************************/ |
109 | 106 | |
110 | WRITE8_MEMBER(tecmo_state::txvideoram_w) | |
107 | WRITE8_MEMBER(tecmo_state::tecmo_txvideoram_w) | |
111 | 108 | { |
112 | 109 | m_txvideoram[offset] = data; |
113 | 110 | m_tx_tilemap->mark_tile_dirty(offset & 0x3ff); |
114 | 111 | } |
115 | 112 | |
116 | WRITE8_MEMBER(tecmo_state::fgvideoram_w) | |
113 | WRITE8_MEMBER(tecmo_state::tecmo_fgvideoram_w) | |
117 | 114 | { |
118 | 115 | m_fgvideoram[offset] = data; |
119 | 116 | m_fg_tilemap->mark_tile_dirty(offset & 0x1ff); |
120 | 117 | } |
121 | 118 | |
122 | WRITE8_MEMBER(tecmo_state::bgvideoram_w) | |
119 | WRITE8_MEMBER(tecmo_state::tecmo_bgvideoram_w) | |
123 | 120 | { |
124 | 121 | m_bgvideoram[offset] = data; |
125 | 122 | m_bg_tilemap->mark_tile_dirty(offset & 0x1ff); |
126 | 123 | } |
127 | 124 | |
128 | WRITE8_MEMBER(tecmo_state::fgscroll_w) | |
125 | WRITE8_MEMBER(tecmo_state::tecmo_fgscroll_w) | |
129 | 126 | { |
130 | 127 | m_fgscroll[offset] = data; |
131 | 128 | |
r243669 | r243670 | |
133 | 130 | m_fg_tilemap->set_scrolly(0, m_fgscroll[2]); |
134 | 131 | } |
135 | 132 | |
136 | WRITE8_MEMBER(tecmo_state::bgscroll_w) | |
133 | WRITE8_MEMBER(tecmo_state::tecmo_bgscroll_w) | |
137 | 134 | { |
138 | 135 | m_bgscroll[offset] = data; |
139 | 136 | |
r243669 | r243670 | |
141 | 138 | m_bg_tilemap->set_scrolly(0, m_bgscroll[2]); |
142 | 139 | } |
143 | 140 | |
144 | WRITE8_MEMBER(tecmo_state::flipscreen_w) | |
141 | WRITE8_MEMBER(tecmo_state::tecmo_flipscreen_w) | |
145 | 142 | { |
146 | 143 | flip_screen_set(data & 1); |
147 | 144 | } |
r243669 | r243670 | |
156 | 153 | |
157 | 154 | |
158 | 155 | |
159 | UINT32 tecmo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
156 | UINT32 tecmo_state::screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
160 | 157 | { |
161 | 158 | screen.priority().fill(0, cliprect); |
162 | 159 | bitmap.fill(0x100, cliprect); |
r243669 | r243670 | |
---|---|---|
14 | 14 | |
15 | 15 | /******************************************************************************/ |
16 | 16 | |
17 | ||
18 | void 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 | ||
29 | 17 | TILE_GET_INFO_MEMBER(tecmo16_state::fg_get_tile_info) |
30 | 18 | { |
31 | 19 | int tile = m_videoram[tile_index] & 0x1fff; |
r243669 | r243670 | |
82 | 70 | m_tx_tilemap->set_scrolly(0,-16); |
83 | 71 | m_flipscreen = 0; |
84 | 72 | m_game_is_riot = 0; |
85 | ||
86 | save_state(); | |
87 | 73 | } |
88 | 74 | |
89 | 75 | VIDEO_START_MEMBER(tecmo16_state,ginkun) |
r243669 | r243670 | |
104 | 90 | m_tx_tilemap->set_transparent_pen(0); |
105 | 91 | m_flipscreen = 0; |
106 | 92 | m_game_is_riot = 0; |
107 | ||
108 | save_state(); | |
109 | 93 | } |
110 | 94 | |
111 | 95 | VIDEO_START_MEMBER(tecmo16_state,riot) |
r243669 | r243670 | |
127 | 111 | m_tx_tilemap->set_scrolldy(-16,-16); |
128 | 112 | m_flipscreen = 0; |
129 | 113 | m_game_is_riot = 1; |
130 | ||
131 | save_state(); | |
132 | 114 | } |
133 | 115 | |
134 | 116 | /******************************************************************************/ |
135 | 117 | |
136 | WRITE16_MEMBER(tecmo16_state::videoram_w) | |
118 | WRITE16_MEMBER(tecmo16_state::tecmo16_videoram_w) | |
137 | 119 | { |
138 | 120 | COMBINE_DATA(&m_videoram[offset]); |
139 | 121 | m_fg_tilemap->mark_tile_dirty(offset); |
140 | 122 | } |
141 | 123 | |
142 | WRITE16_MEMBER(tecmo16_state::colorram_w) | |
124 | WRITE16_MEMBER(tecmo16_state::tecmo16_colorram_w) | |
143 | 125 | { |
144 | 126 | COMBINE_DATA(&m_colorram[offset]); |
145 | 127 | m_fg_tilemap->mark_tile_dirty(offset); |
146 | 128 | } |
147 | 129 | |
148 | WRITE16_MEMBER(tecmo16_state::videoram2_w) | |
130 | WRITE16_MEMBER(tecmo16_state::tecmo16_videoram2_w) | |
149 | 131 | { |
150 | 132 | COMBINE_DATA(&m_videoram2[offset]); |
151 | 133 | m_bg_tilemap->mark_tile_dirty(offset); |
152 | 134 | } |
153 | 135 | |
154 | WRITE16_MEMBER(tecmo16_state::colorram2_w) | |
136 | WRITE16_MEMBER(tecmo16_state::tecmo16_colorram2_w) | |
155 | 137 | { |
156 | 138 | COMBINE_DATA(&m_colorram2[offset]); |
157 | 139 | m_bg_tilemap->mark_tile_dirty(offset); |
158 | 140 | } |
159 | 141 | |
160 | 142 | |
161 | WRITE16_MEMBER(tecmo16_state::charram_w) | |
143 | WRITE16_MEMBER(tecmo16_state::tecmo16_charram_w) | |
162 | 144 | { |
163 | 145 | COMBINE_DATA(&m_charram[offset]); |
164 | 146 | m_tx_tilemap->mark_tile_dirty(offset); |
165 | 147 | } |
166 | 148 | |
167 | WRITE16_MEMBER(tecmo16_state::flipscreen_w) | |
149 | WRITE16_MEMBER(tecmo16_state::tecmo16_flipscreen_w) | |
168 | 150 | { |
169 | 151 | m_flipscreen = data & 0x01; |
170 | 152 | flip_screen_set(m_flipscreen); |
r243669 | r243670 | |
172 | 154 | |
173 | 155 | /******************************************************************************/ |
174 | 156 | |
175 | WRITE16_MEMBER(tecmo16_state::scroll_x_w) | |
157 | WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_x_w) | |
176 | 158 | { |
177 | 159 | COMBINE_DATA(&m_scroll_x_w); |
178 | 160 | m_fg_tilemap->set_scrollx(0,m_scroll_x_w); |
179 | 161 | } |
180 | 162 | |
181 | WRITE16_MEMBER(tecmo16_state::scroll_y_w) | |
163 | WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_y_w) | |
182 | 164 | { |
183 | 165 | COMBINE_DATA(&m_scroll_y_w); |
184 | 166 | m_fg_tilemap->set_scrolly(0,m_scroll_y_w); |
185 | 167 | } |
186 | 168 | |
187 | WRITE16_MEMBER(tecmo16_state::scroll2_x_w) | |
169 | WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_x_w) | |
188 | 170 | { |
189 | 171 | COMBINE_DATA(&m_scroll2_x_w); |
190 | 172 | m_bg_tilemap->set_scrollx(0,m_scroll2_x_w); |
191 | 173 | } |
192 | 174 | |
193 | WRITE16_MEMBER(tecmo16_state::scroll2_y_w) | |
175 | WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_y_w) | |
194 | 176 | { |
195 | 177 | COMBINE_DATA(&m_scroll2_y_w); |
196 | 178 | m_bg_tilemap->set_scrolly(0,m_scroll2_y_w); |
197 | 179 | } |
198 | 180 | |
199 | WRITE16_MEMBER(tecmo16_state::scroll_char_x_w) | |
181 | WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_x_w) | |
200 | 182 | { |
201 | 183 | COMBINE_DATA(&m_scroll_char_x_w); |
202 | 184 | m_tx_tilemap->set_scrollx(0,m_scroll_char_x_w); |
203 | 185 | } |
204 | 186 | |
205 | WRITE16_MEMBER(tecmo16_state::scroll_char_y_w) | |
187 | WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_y_w) | |
206 | 188 | { |
207 | 189 | COMBINE_DATA(&m_scroll_char_y_w); |
208 | 190 | m_tx_tilemap->set_scrolly(0,m_scroll_char_y_w-16); |
r243669 | r243670 | |
213 | 195 | |
214 | 196 | /******************************************************************************/ |
215 | 197 | |
216 | UINT32 tecmo16_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) | |
198 | UINT32 tecmo16_state::screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) | |
217 | 199 | { |
218 | 200 | m_tile_bitmap_bg.fill(0, cliprect); |
219 | 201 | m_tile_bitmap_fg.fill(0, cliprect); |
r243669 | r243670 | |
---|---|---|
27 | 27 | |
28 | 28 | TILE_GET_INFO_MEMBER(vball_state::get_bg_tile_info) |
29 | 29 | { |
30 | UINT8 code = m_videoram[tile_index]; | |
31 | UINT8 attr = m_attribram[tile_index]; | |
30 | UINT8 code = m_vb_videoram[tile_index]; | |
31 | UINT8 attr = m_vb_attribram[tile_index]; | |
32 | 32 | SET_TILE_INFO_MEMBER(0, |
33 | 33 | code + ((attr & 0x1f) << 8) + (m_gfxset<<8), |
34 | 34 | (attr >> 5) & 0x7, |
r243669 | r243670 | |
42 | 42 | |
43 | 43 | m_bg_tilemap->set_scroll_rows(32); |
44 | 44 | m_gfxset=0; |
45 | m_bgprombank=0xff; | |
46 | m_spprombank=0xff; | |
47 | ||
48 | save_item(NAME(m_scrollx_hi)); | |
49 | save_item(NAME(m_scrolly_hi)); | |
50 | save_item(NAME(m_scrollx_lo)); | |
51 | save_item(NAME(m_gfxset)); | |
52 | save_item(NAME(m_scrollx)); | |
53 | save_item(NAME(m_bgprombank)); | |
54 | save_item(NAME(m_spprombank)); | |
45 | m_vb_bgprombank=0xff; | |
46 | m_vb_spprombank=0xff; | |
55 | 47 | } |
56 | 48 | |
57 | WRITE8_MEMBER(vball_state::videoram_w) | |
49 | WRITE8_MEMBER(vball_state::vb_videoram_w) | |
58 | 50 | { |
59 | m_videoram[offset] = data; | |
51 | m_vb_videoram[offset] = data; | |
60 | 52 | m_bg_tilemap->mark_tile_dirty(offset); |
61 | 53 | } |
62 | 54 | |
63 | WRITE8_MEMBER(vball_state::attrib_w) | |
55 | #ifdef UNUSED_FUNCTION | |
56 | READ8_MEMBER(vball_state::vb_attrib_r) | |
64 | 57 | { |
65 | m_attribram[offset] = data; | |
58 | return m_vb_attribram[offset]; | |
59 | } | |
60 | #endif | |
61 | ||
62 | WRITE8_MEMBER(vball_state::vb_attrib_w) | |
63 | { | |
64 | m_vb_attribram[offset] = data; | |
66 | 65 | m_bg_tilemap->mark_tile_dirty(offset); |
67 | 66 | } |
68 | 67 | |
69 | void vball_state::bgprombank_w( int bank ) | |
68 | void vball_state::vb_bgprombank_w( int bank ) | |
70 | 69 | { |
71 | 70 | int i; |
72 | 71 | UINT8* color_prom; |
73 | 72 | |
74 | if (bank==m_bgprombank) return; | |
73 | if (bank==m_vb_bgprombank) return; | |
75 | 74 | |
76 | 75 | color_prom = memregion("proms")->base() + bank*0x80; |
77 | 76 | for (i=0;i<128;i++, color_prom++) { |
78 | 77 | m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4), |
79 | 78 | pal4bit(color_prom[0x800] >> 0)); |
80 | 79 | } |
81 | m_bgprombank=bank; | |
80 | m_vb_bgprombank=bank; | |
82 | 81 | } |
83 | 82 | |
84 | void vball_state::spprombank_w( int bank ) | |
83 | void vball_state::vb_spprombank_w( int bank ) | |
85 | 84 | { |
86 | 85 | int i; |
87 | 86 | UINT8* color_prom; |
88 | 87 | |
89 | if (bank==m_spprombank) return; | |
88 | if (bank==m_vb_spprombank) return; | |
90 | 89 | |
91 | 90 | color_prom = memregion("proms")->base()+0x400 + bank*0x80; |
92 | 91 | for (i=128;i<256;i++,color_prom++) { |
93 | 92 | m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4), |
94 | 93 | pal4bit(color_prom[0x800] >> 0)); |
95 | 94 | } |
96 | m_spprombank=bank; | |
95 | m_vb_spprombank=bank; | |
97 | 96 | } |
98 | 97 | |
98 | void vball_state::vb_mark_all_dirty( ) | |
99 | { | |
100 | m_bg_tilemap->mark_all_dirty(); | |
101 | } | |
99 | 102 | |
100 | 103 | #define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\ |
101 | 104 | cliprect, \ |
r243669 | r243670 | |
147 | 150 | |
148 | 151 | #undef DRAW_SPRITE |
149 | 152 | |
150 | UINT32 vball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
153 | UINT32 vball_state::screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) | |
151 | 154 | { |
152 | 155 | int i; |
153 | 156 | |
154 | m_bg_tilemap->set_scrolly(0,m_scrolly_hi + *m_scrolly_lo); | |
157 | m_bg_tilemap->set_scrolly(0,m_vb_scrolly_hi + *m_vb_scrolly_lo); | |
155 | 158 | |
156 | 159 | /*To get linescrolling to work properly, we must ignore the 1st two scroll values, no idea why! -SJE */ |
157 | 160 | for (i = 2; i < 256; i++) { |
158 | m_bg_tilemap->set_scrollx(i,m_scrollx[i-2]); | |
159 | //logerror("scrollx[%d] = %d\n",i,m_scrollx[i]); | |
161 | m_bg_tilemap->set_scrollx(i,m_vb_scrollx[i-2]); | |
162 | //logerror("scrollx[%d] = %d\n",i,m_vb_scrollx[i]); | |
160 | 163 | } |
161 | 164 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); |
162 | 165 | draw_sprites(bitmap,cliprect); |
r243669 | r243670 | |
---|---|---|
116 | 116 | |
117 | 117 | static INPUT_PORTS_START( edracula ) |
118 | 118 | PORT_START("IN0") |
119 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) | |
120 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) | |
119 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) | |
120 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT ) | |
121 | 121 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
122 | 122 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
123 | 123 |
r243669 | r243670 | |
---|---|---|
1410 | 1410 | { |
1411 | 1411 | if(BIT(m_egc.regs[2], 10)) |
1412 | 1412 | { |
1413 | m_egc.leftover[0] = 0; | |
1413 | m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0; | |
1414 | 1414 | egc_shift(0, data); |
1415 | 1415 | // leftover[0] is inited above, set others to same |
1416 | 1416 | m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = m_egc.leftover[0]; |
r243669 | r243670 | |
1422 | 1422 | // mask off the bits before the start |
1423 | 1423 | if(m_egc.first) |
1424 | 1424 | { |
1425 | mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (16 - dst_off)) - 1); | |
1426 | if(BIT(m_egc.regs[2], 10) && !m_egc.init) | |
1425 | mask &= dir ? ~((1 << dst_off) - 1) : ((1 << (dst_off + 1)) - 1); | |
1426 | if(!m_egc.init) | |
1427 | 1427 | m_egc.leftover[0] = m_egc.leftover[1] = m_egc.leftover[2] = m_egc.leftover[3] = 0; |
1428 | 1428 | } |
1429 | 1429 | |
r243669 | r243670 | |
1513 | 1513 | m_egc.pat[2] = m_video_ram_2[plane_off + (0x4000 * 3)]; |
1514 | 1514 | m_egc.pat[3] = m_video_ram_2[plane_off]; |
1515 | 1515 | } |
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 | } | |
1521 | 1516 | for(int i = 0; i < 4; i++) |
1522 | 1517 | m_egc.src[i] = egc_shift(i, m_video_ram_2[plane_off + (((i + 1) & 3) * 0x4000)]); |
1523 | 1518 | |
r243669 | r243670 | |
1573 | 1568 | { |
1574 | 1569 | if((m_grcg.mode & (1 << i)) == 0) |
1575 | 1570 | { |
1571 | ||
1576 | 1572 | if(mem_mask & 0xff) |
1577 | 1573 | { |
1578 | 1574 | vram[offset | (((i + 1) & 3) * 0x8000)] &= ~(data >> 0); |
r243669 | r243670 | |
1900 | 1896 | else if(offset == 7) |
1901 | 1897 | { |
1902 | 1898 | // logerror("%02x GRCG TILE %02x\n",data,m_grcg.tile_index); |
1903 | m_grcg.tile[m_grcg.tile_index] = BITSWAP | |
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); | |
1904 | 1900 | m_grcg.tile_index ++; |
1905 | 1901 | m_grcg.tile_index &= 3; |
1906 | 1902 | return; |
r243669 | r243670 | |
1914 | 1910 | if(!m_ex_video_ff[2]) |
1915 | 1911 | return; |
1916 | 1912 | |
1917 | if(!(m_egc.regs[1] & 0x6000) || (offset != 4)) // why? | |
1918 | COMBINE_DATA(&m_egc.regs[offset]); | |
1913 | COMBINE_DATA(&m_egc.regs[offset]); | |
1919 | 1914 | switch(offset) |
1920 | 1915 | { |
1921 | 1916 | case 1: |
r243669 | r243670 | |
---|---|---|
79 | 79 | MCFG_CPU_ADD("maincpu", NEC_D650, TB303_T2_CLOCK_HZ) |
80 | 80 | |
81 | 81 | MCFG_TIMER_DRIVER_ADD_PERIODIC("t3_clock", tb303_state, t3_clock, TB303_T3_CLOCK) |
82 | MCFG_TIMER_START_DELAY(TB303_T3_CLOCK) | |
83 | 82 | MCFG_TIMER_DRIVER_ADD("t3_off", tb303_state, t3_off) |
84 | 83 | |
85 | 84 | MCFG_DEFAULT_LAYOUT(layout_tb303) |
r243669 | r243670 | |
---|---|---|
13 | 13 | The keyboard is an intelligent serial device like the Kaypro's keyboard. They even have the same plug, |
14 | 14 | and might be swappable. Need a schematic. |
15 | 15 | |
16 | Instead of using a daisy chain, the IM2 vectors are calculated by a prom (u77). Unfortunately, the prom | |
17 | contents make no sense at all (mostly FF), so the vectors for IRQ0 and IRQ2 are hard-coded. Other IRQ | |
18 | vectors are not used as yet. | |
19 | ||
20 | Status: | |
21 | - Boots up, and the keyboard works | |
22 | ||
23 | 16 | ToDo: |
24 | - Need software that does more than plain text (such as games) | |
25 | - Add masking feature (only used for the UARTs) | |
17 | - Add interrupt vector hardware and masking feature | |
26 | 18 | - Connect devices to the above hardware |
27 | 19 | - Fix the display |
28 | - Connect the PIT to the UARTs | |
20 | - Fix floppy-disk | |
21 | - Connect up the PIT | |
29 | 22 | - Replace the ascii keyboard with the real one, if possible |
30 | 23 | - Probably lots of other things |
31 | 24 | |
r243669 | r243670 | |
45 | 38 | #include "machine/keyboard.h" |
46 | 39 | #include "machine/wd_fdc.h" |
47 | 40 | |
41 | #define KEYBOARD_TAG "keyboard" | |
48 | 42 | |
49 | 43 | class zorba_state : public driver_device |
50 | 44 | { |
r243669 | r243670 | |
83 | 77 | DECLARE_WRITE8_MEMBER(pia0_porta_w); |
84 | 78 | DECLARE_WRITE8_MEMBER(kbd_put); |
85 | 79 | DECLARE_READ8_MEMBER(keyboard_r); |
86 | DECLARE_WRITE_LINE_MEMBER(irq0_w); | |
87 | DECLARE_WRITE_LINE_MEMBER(fdc_drq_w); | |
88 | DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w); | |
89 | I8275_DRAW_CHARACTER_MEMBER(zorba_update_chr); | |
80 | I8275_DRAW_CHARACTER_MEMBER( zorba_update_chr ); | |
90 | 81 | required_device<palette_device> m_palette; |
91 | 82 | |
92 | 83 | private: |
93 | 84 | UINT8 m_term_data; |
94 | UINT8 m_fdc_rq; | |
95 | 85 | required_device<cpu_device> m_maincpu; |
96 | 86 | required_device<beep_device> m_beep; |
97 | 87 | required_device<z80dma_device> m_dma; |
r243669 | r243670 | |
159 | 149 | membank("bankr0")->set_entry(1); |
160 | 150 | } |
161 | 151 | |
162 | WRITE_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 | ||
173 | WRITE_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 | ||
186 | WRITE_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 | ||
199 | 152 | WRITE8_MEMBER( zorba_state::intmask_w ) |
200 | 153 | { |
201 | 154 | } |
r243669 | r243670 | |
220 | 173 | { |
221 | 174 | // since our Z80 has no support for BUSACK, we assume it is granted immediately |
222 | 175 | m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, state); |
176 | m_maincpu->set_input_line(INPUT_LINE_HALT, state); // do we need this? | |
223 | 177 | m_dma->bai_w(state); // tell dma that bus has been granted |
224 | 178 | } |
225 | 179 | |
r243669 | r243670 | |
272 | 226 | m_fdc->set_floppy(floppy); |
273 | 227 | |
274 | 228 | if (floppy) |
275 | floppy->ss_w(!BIT(data, 5)); | |
229 | { | |
230 | floppy->ss_w(!BIT(data, 5)); // might need inverting | |
231 | } | |
276 | 232 | |
277 | 233 | m_floppy0->get_device()->mon_w(BIT(data, 4)); |
278 | 234 | m_floppy1->get_device()->mon_w(BIT(data, 4)); |
r243669 | r243670 | |
319 | 275 | |
320 | 276 | MACHINE_RESET_MEMBER( zorba_state, zorba ) |
321 | 277 | { |
322 | m_fdc_rq = 0; | |
323 | 278 | m_beep->set_frequency(800); |
324 | 279 | m_p_chargen = memregion("chargen")->base(); |
325 | 280 | membank("bankr0")->set_entry(1); // point at rom |
326 | 281 | membank("bankw0")->set_entry(0); // always write to ram |
327 | m_maincpu->reset(); | |
328 | 282 | } |
329 | 283 | |
330 | 284 | READ8_MEMBER( zorba_state::keyboard_r ) |
r243669 | r243670 | |
369 | 323 | MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_24MHz/6) |
370 | 324 | // busack on cpu connects to bai pin |
371 | 325 | MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(zorba_state, busreq_w)) //connects to busreq on cpu |
372 | MCFG_Z80DMA_OUT_INT_CB( | |
326 | MCFG_Z80DMA_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) // connects to IRQ0 on cpu | |
373 | 327 | //ba0 - not connected |
374 | 328 | MCFG_Z80DMA_IN_MREQ_CB(READ8(zorba_state, memory_read_byte)) |
375 | 329 | MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(zorba_state, memory_write_byte)) |
376 | 330 | MCFG_Z80DMA_IN_IORQ_CB(READ8(zorba_state, io_read_byte)) |
377 | 331 | MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(zorba_state, io_write_byte)) |
378 | 332 | |
379 | MCFG_DEVICE_ADD("uart0", I8251, 0) // U32 COM port J2 | |
333 | MCFG_DEVICE_ADD("uart0", I8251, 0) | |
334 | // COM port | |
380 | 335 | |
381 | MCFG_DEVICE_ADD("uart1", I8251, 0) // U31 printer port J3 | |
336 | MCFG_DEVICE_ADD("uart1", I8251, 0) | |
337 | // printer port | |
382 | 338 | |
383 | MCFG_DEVICE_ADD("uart2", I8251, 0) // U30 serial keyboard J6 | |
339 | MCFG_DEVICE_ADD("uart2", I8251, 0) | |
340 | // keyboard | |
384 | 341 | |
385 | // port A - disk select etc, beeper | |
386 | // port B - parallel interface | |
342 | // port A - disk select etc, beeper | |
343 | // port B - parallel interface | |
387 | 344 | MCFG_DEVICE_ADD("pia0", PIA6821, 0) |
388 | 345 | MCFG_PIA_WRITEPA_HANDLER(WRITE8(zorba_state, pia0_porta_w)) |
389 | 346 | |
390 | ||
347 | // IEEE488 interface | |
391 | 348 | MCFG_DEVICE_ADD("pia1", PIA6821, 0) |
392 | 349 | |
393 | 350 | MCFG_DEVICE_ADD("pit", PIT8254, 0) |
394 | MCFG_PIT8253_CLK0(XTAL_24MHz / 3) /* Timer 0: clock to J2 comm port */ | |
395 | MCFG_PIT8253_CLK1(XTAL_24MHz / 3) /* Timer 1: clock to U31 */ | |
396 | MCFG_PIT8253_CLK2(XTAL_24MHz / 3) /* Timer 2: clock to U30 */ | |
351 | MCFG_PIT8253_CLK0(XTAL_24MHz / 3) /* Timer 0: ? */ | |
352 | MCFG_PIT8253_CLK1(XTAL_24MHz / 3) /* Timer 1: ? */ | |
353 | MCFG_PIT8253_CLK2(XTAL_24MHz / 3) /* Timer 2: ? */ | |
397 | 354 | |
398 | 355 | MCFG_DEVICE_ADD("crtc", I8275, XTAL_14_31818MHz/7) |
399 | 356 | MCFG_I8275_CHARACTER_WIDTH(8) |
400 | 357 | MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(zorba_state, zorba_update_chr) |
401 | 358 | MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w)) |
402 | MCFG_I8275_IRQ_CALLBACK( | |
359 | MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) | |
403 | 360 | 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 | |
407 | 361 | MCFG_FLOPPY_DRIVE_ADD("fdc:0", zorba_floppies, "525dd", floppy_image_device::default_floppy_formats) |
408 | 362 | MCFG_FLOPPY_DRIVE_ADD("fdc:1", zorba_floppies, "525dd", floppy_image_device::default_floppy_formats) |
409 | 363 | |
410 | 364 | /* Keyboard */ |
411 | MCFG_DEVICE_ADD( | |
365 | MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) | |
412 | 366 | MCFG_GENERIC_KEYBOARD_CB(WRITE8(zorba_state, kbd_put)) |
413 | 367 | MACHINE_CONFIG_END |
414 | 368 | |
r243669 | r243670 | |
425 | 379 | ROM_REGION( 0x60, "proms", 0 ) |
426 | 380 | ROM_LOAD( "74ls288.u37", 0x0000, 0x0020, CRC(0a67edd6) SHA1(c1ece8978a3a061e0130d43907fa63a71e75e75d) ) |
427 | 381 | ROM_LOAD( "74ls288.u38", 0x0020, 0x0020, CRC(5ec93ea7) SHA1(3a84c098474b05d5cbe1939a3e15f66d06470581) ) |
428 | ROM_LOAD( "74ls288.u77", 0x0040, 0x0020, CRC(946e03b0) SHA1(24240bdd7bdf507a5b51628fb36ad1266fc53a28) ) | |
382 | ROM_LOAD( "74ls288.u77", 0x0040, 0x0020, CRC(946e03b0) SHA1(24240bdd7bdf507a5b51628fb36ad1266fc53a28) ) | |
429 | 383 | ROM_END |
430 | 384 | |
431 | 385 | COMP( 1982, zorba, 0, 0, zorba, zorba, zorba_state, zorba, "Telcon Industries", "Zorba", GAME_NOT_WORKING ) |
r243669 | r243670 | |
---|---|---|
54 | 54 | |
55 | 55 | <!-- score panel --> |
56 | 56 | |
57 | <bezel element="static_white"><bounds x="0" y="0.9" width=" | |
57 | <bezel element="static_white"><bounds x="0" y="0.9" width="5" height="0.1" /></bezel> | |
58 | 58 | <bezel element="static_white"><bounds x="0" y="2" width="11" height="0.1" /></bezel> |
59 | 59 | <bezel element="static_white"><bounds x="0" y="4.4" width="11" height="0.1" /></bezel> |
60 | 60 | |
61 | <bezel element="static_white"><bounds x="0.95" y="0.95" width="0.1" height="1.1" /></bezel> | |
62 | 61 | <bezel element="static_white"><bounds x="1.95" y="0.95" width="0.1" height="1.1" /></bezel> |
63 | 62 | <bezel element="static_white"><bounds x="2.95" y="0.95" width="0.1" height="1.1" /></bezel> |
64 | <bezel element="static_white"><bounds x="3.95" y="0" width="0.1" height="2.05" /></bezel> | |
65 | <bezel element="static_white"><bounds x="6.95" y="0" width="0.1" height="2.05" /></bezel> | |
63 | <bezel element="static_white"><bounds x="3.95" y="0.95" width="0.1" height="1.1" /></bezel> | |
64 | <bezel element="static_white"><bounds x="4.95" y="0" width="0.1" height="2.05" /></bezel> | |
65 | <bezel element="static_white"><bounds x="7.95" y="0" width="0.1" height="2.05" /></bezel> | |
66 | 66 | |
67 | <bezel element="text_1"><bounds x="0" y="1" width="1" height="1" /></bezel> | |
68 | <bezel element="text_2"><bounds x="1" y="1" width="1" height="1" /></bezel> | |
69 | <bezel element="text_3"><bounds x="2" y="1" width="1" height="1" /></bezel> | |
70 | <bezel element="text_4"><bounds x="3" y="1" width="1" height="1" /></bezel> | |
67 | <bezel element="text_1"><bounds x="1" y="1" width="1" height="1" /></bezel> | |
68 | <bezel element="text_2"><bounds x="2" y="1" width="1" height="1" /></bezel> | |
69 | <bezel element="text_3"><bounds x="3" y="1" width="1" height="1" /></bezel> | |
70 | <bezel element="text_4"><bounds x="4" y="1" width="1" height="1" /></bezel> | |
71 | 71 | |
72 | <bezel element="text_home"><bounds x="4" y="1" width="3" height="1" /></bezel> | |
73 | <bezel element="text_visitor"><bounds x="7" y="1" width="4" height="1" /></bezel> | |
72 | <bezel element="text_home"><bounds x="5" y="1" width="3" height="1" /></bezel> | |
73 | <bezel element="text_visitor"><bounds x="8" y="1" width="3" height="1" /></bezel> | |
74 | 74 | |
75 | 75 | |
76 | <bezel name="lamp77" element="led"><bounds x="0" y="3" width="1" height="1" /></bezel> | |
77 | <bezel name="lamp87" element="led"><bounds x="1" y="3" width="1" height="1" /></bezel> | |
78 | <bezel name="lamp97" element="led"><bounds x="2" y="3" width="1" height="1" /></bezel> | |
79 | <bezel name="lamp57" element="led"><bounds x="3" y="3" width="1" height="1" /></bezel> | |
76 | <bezel name="lamp77" element="led"><bounds x="1" y="3" width="1" height="1" /></bezel> | |
77 | <bezel name="lamp87" element="led"><bounds x="2" y="3" width="1" height="1" /></bezel> | |
78 | <bezel name="lamp97" element="led"><bounds x="3" y="3" width="1" height="1" /></bezel> | |
79 | <bezel name="lamp57" element="led"><bounds x="4" y="3" width="1" height="1" /></bezel> | |
80 | 80 | |
81 | <bezel name="digit5" element="digit"><bounds x="4.5" y="2.5" width="1" height="1.5" /></bezel> | |
82 | <bezel name="digit9" element="digit"><bounds x="5.5" y="2.5" width="1" height="1.5" /></bezel> | |
83 | <bezel name="digit8" element="digit"><bounds x="7.5" y="2.5" width="1" height="1.5" /></bezel> | |
84 | <bezel name="digit7" element="digit"><bounds x="8.5" y="2.5" width="1" height="1.5" /></bezel> | |
81 | <bezel name="digit5" element="digit"><bounds x="5.5" y="2.5" width="1" height="1.5" /></bezel> | |
82 | <bezel name="digit9" element="digit"><bounds x="6.5" y="2.5" width="1" height="1.5" /></bezel> | |
83 | <bezel name="digit8" element="digit"><bounds x="8.5" y="2.5" width="1" height="1.5" /></bezel> | |
84 | <bezel name="digit7" element="digit"><bounds x="9.5" y="2.5" width="1" height="1.5" /></bezel> | |
85 | 85 | |
86 | 86 | |
87 | 87 |
r243669 | r243670 | |
---|---|---|
728 | 728 | |
729 | 729 | ifndef NO_USE_QTDEBUG |
730 | 730 | $(OSDOBJ)/%.moc.c: $(OSDSRC)/%.h |
731 | $(MOC) $(MOCINCPATH) $< -o $@ | |
731 | $(MOC) $(MOCINCPATH) $(DEFS) $< -o $@ | |
732 | 732 | |
733 | 733 | DEBUGOBJS = \ |
734 | 734 | $(OSDOBJ)/modules/debugger/qt/debuggerview.o \ |
r243669 | r243670 | |
---|---|---|
58 | 58 | //ddcaps(0), |
59 | 59 | //helcaps(0), |
60 | 60 | membuffer(NULL), |
61 | membuffersize( | |
61 | membuffersize(NULL) | |
62 | 62 | { } |
63 | 63 | |
64 | 64 | virtual ~renderer_dd() { } |
r243669 | r243670 | |
---|---|---|
80 | 80 | // warning C4189: 'xxx' : local variable is initialized but not referenced |
81 | 81 | // warning C4191: 'type cast' : unsafe conversion from 'xxx' to 'xxx' // 64-bit only |
82 | 82 | // 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 | |
84 | 83 | // warning C4242: 'x' : conversion from 'xxx' to 'xxx', possible loss of data |
85 | 84 | // warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data |
86 | 85 | // warning C4250: 'xxx' : inherits 'xxx' via dominance |
r243669 | r243670 | |
109 | 108 | // warning C4805: 'x' : unsafe mix of type 'xxx' and type 'xxx' in operation |
110 | 109 | // warning C4820: 'xxx' : 'x' bytes padding added after data member 'xxx' |
111 | 110 | // warning C4826: Conversion from 'type1 ' to 'type_2' is sign-extended. This may cause unexpected runtime behavior. // 32-bit only |
112 | { VS7, "-Wall", "/Wall /W4 /wd4003 /wd4018 /wd4061 /wd4100 /wd4127 /wd4131 /wd4141 /wd4146 /wd4150 /wd4189 /wd4191 /wd4201 /wd42 | |
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" }, | |
113 | 112 | { 0, "-Wall", "/W0" }, |
114 | 113 | { VS7, "-Wno-unused", "/wd4100 /wd4101 /wd4102 /wd4505" }, |
115 | 114 | { 0, "-Wno-sign-compare", "/wd4365 /wd4389 /wd4245 /wd4388" }, |
r243669 | r243670 | |
---|---|---|
432 | 432 | |
433 | 433 | MOC = @moc |
434 | 434 | $(OSDOBJ)/%.moc.c: $(OSDSRC)/%.h |
435 | $(MOC) $(INCPATH) $< -o $@ | |
435 | $(MOC) $(INCPATH) $(DEFS) $< -o $@ | |
436 | 436 | |
437 | 437 | OSDOBJS += \ |
438 | 438 | $(OSDOBJ)/modules/debugger/qt/debugqtview.o \ |
https://github.com/mamedev/mame/commit/2b307447526a4cf6324221445149bbfb14a9da37 |
Previous | 199869 Revisions | Next |