QuarterArcade Coin-Op Tech Net

Quick Nav: # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Coin-Op : Arcade : Frisky Tom : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: Seicross memory map (preliminary)
     4: 
     5: driver by Nicola Salmoria
     6: 
     7: 
     8: 0000-77ff ROM
     9: 7800-7fff RAM
    10: 9000-93ff videoram
    11: 9c00-9fff colorram
    12: 
    13: Read:
    14: A000      Joystick + Players start button
    15: A800      player #2 controls + coin + ?
    16: B000      test switches
    17: B800      watchdog reset
    18: 
    19: Write:
    20: 8820-887f Sprite ram
    21: 9800-981f Scroll control
    22: 9880-989f ? (always 0?)
    23: 
    24: I/O ports:
    25: 0         8910 control
    26: 1         8910 write
    27: 4         8910 read
    28: 
    29: 
    30: There is a microcontroller on the board. Nichibutsu custom part marked
    31: NSC81050-102  8127 E37 and labeled No. 00363.  It's a 40-pin IC at location 4F
    32: on the (Seicross-) board. Looks like it is linked to the dips (and those are
    33: on a very small daughterboard).
    34: 
    35: 
    36: Differences in new/old version of Frisky Tom
    37: - The lady wears bikini in new version
    38: - Game config is backed up by 4.5v battery in old version
    39: - Old version uses larger board
    40: 
    41: This info came from http://www.ne.jp/asahi/cc-sakura/akkun/old/fryski.html
    42: 
    43: ***************************************************************************/
    44: 
    45: #include "driver.h" 
    46: #include "vidhrdw/generic.h" 
    47: 
    48: extern UINT8 *seicross_row_scroll;
    49: 
    50: extern WRITE_HANDLER( seicross_videoram_w );
    51: extern WRITE_HANDLER( seicross_colorram_w );
    52: 
    53: extern PALETTE_INIT( seicross );
    54: extern VIDEO_START( seicross );
    55: extern VIDEO_UPDATE( seicross );
    56: 
    57: static UINT8 *nvram;
    58: static size_t nvram_size;
    59: 
    60: static NVRAM_HANDLER( seicross )
    61: {
    62: 	if (read_or_write)
    63: 		mame_fwrite(file,nvram,nvram_size);
    64: 	else
    65: 	{
    66: 		if (file)
    67: 			mame_fread(file,nvram,nvram_size);
    68: 		else
    69: 		{
    70: 			/* fill in the default values */
    71: 			memset(nvram,0,nvram_size);
    72: 			nvram[0x0d] = nvram[0x0f] = nvram[0x11] = nvram[0x13] = nvram[0x15] = nvram[0x19] = 1;
    73: 			nvram[0x17] = 3;
    74: 		}
    75: 	}
    76: }
    77: 
    78: 
    79: 
    80: static MACHINE_INIT( friskyt )
    81: {
    82: 	/* start with the protection mcu halted */
    83: 	cpu_set_halt_line(1, ASSERT_LINE);
    84: }
    85: 
    86: 
    87: 
    88: static int portb;
    89: 
    90: static READ_HANDLER( friskyt_portB_r )
    91: {
    92: 	return (portb & 0x9f) | (readinputport(6) & 0x60);
    93: }
    94: 
    95: static WRITE_HANDLER( friskyt_portB_w )
    96: {
    97: //logerror("PC %04x: 8910 port B = %02x\n",activecpu_get_pc(),data);
    98: 	/* bit 0 is IRQ enable */
    99: 	interrupt_enable_w(0,data & 1);
   100: 
   101: 	/* bit 1 flips screen */
   102: 
   103: 	/* bit 2 resets the microcontroller */
   104: 	if (((portb & 4) == 0) && (data & 4))
   105: 	{
   106: 		/* reset and start the protection mcu */
   107: 		cpu_set_reset_line(1, PULSE_LINE);
   108: 		cpu_set_halt_line(1, CLEAR_LINE);
   109: 	}
   110: 
   111: 	/* other bits unknown */
   112: 	portb = data;
   113: }
   114: 
   115: 
   116: static UINT8 *sharedram;
   117: 
   118: static READ_HANDLER( sharedram_r )
   119: {
   120: 	return sharedram[offset];
   121: }
   122: 
   123: static WRITE_HANDLER( sharedram_w )
   124: {
   125: 	sharedram[offset] = data;
   126: }
   127: 
   128: 
   129: static MEMORY_READ_START( readmem )
   130: 	{ 0x0000, 0x77ff, MRA_ROM },
   131: 	{ 0x7800, 0x7fff, sharedram_r },
   132: 	{ 0x8820, 0x887f, MRA_RAM },
   133: 	{ 0x9000, 0x93ff, MRA_RAM },	/* video RAM */
   134: 	{ 0x9800, 0x981f, MRA_RAM },
   135: 	{ 0x9c00, 0x9fff, MRA_RAM },	/* color RAM */
   136: 	{ 0xa000, 0xa000, input_port_0_r },	/* IN0 */
   137: 	{ 0xa800, 0xa800, input_port_1_r },	/* IN1 */
   138: 	{ 0xb000, 0xb000, input_port_2_r },	/* test */
   139: 	{ 0xb800, 0xb800, watchdog_reset_r },
   140: MEMORY_END
   141: 
   142: static MEMORY_WRITE_START( writemem )
   143: 	{ 0x0000, 0x77ff, MWA_ROM },
   144: 	{ 0x7800, 0x7fff, sharedram_w, &sharedram },
   145: 	{ 0x8820, 0x887f, MWA_RAM, &spriteram, &spriteram_size },
   146: 	{ 0x9000, 0x93ff, seicross_videoram_w, &videoram },
   147: 	{ 0x9800, 0x981f, MWA_RAM, &seicross_row_scroll },
   148: 	{ 0x9880, 0x989f, MWA_RAM, &spriteram_2, &spriteram_2_size },
   149: 	{ 0x9c00, 0x9fff, seicross_colorram_w, &colorram },
   150: MEMORY_END
   151: 
   152: static PORT_READ_START( readport )
   153: 	{ 0x04, 0x04, AY8910_read_port_0_r },
   154: 	{ 0x0c, 0x0c, AY8910_read_port_0_r },
   155: PORT_END
   156: 
   157: static PORT_WRITE_START( writeport )
   158: 	{ 0x00, 0x00, AY8910_control_port_0_w },
   159: 	{ 0x01, 0x01, AY8910_write_port_0_w },
   160: 	{ 0x08, 0x08, AY8910_control_port_0_w },
   161: 	{ 0x09, 0x09, AY8910_write_port_0_w },
   162: PORT_END
   163: 
   164: static MEMORY_READ_START( mcu_nvram_readmem )
   165: 	{ 0x0000, 0x007f, MRA_RAM },
   166: 	{ 0x1000, 0x10ff, MRA_RAM },
   167: 	{ 0x8000, 0xf7ff, MRA_ROM },
   168: 	{ 0xf800, 0xffff, sharedram_r },
   169: MEMORY_END
   170: 
   171: static MEMORY_READ_START( mcu_no_nvram_readmem )
   172: 	{ 0x0000, 0x007f, MRA_RAM },
   173: 	{ 0x1003, 0x1003, input_port_3_r },	/* DSW1 */
   174: 	{ 0x1005, 0x1005, input_port_4_r },	/* DSW2 */
   175: 	{ 0x1006, 0x1006, input_port_5_r },	/* DSW3 */
   176: 	{ 0x8000, 0xf7ff, MRA_ROM },
   177: 	{ 0xf800, 0xffff, sharedram_r },
   178: MEMORY_END
   179: 
   180: static MEMORY_WRITE_START( mcu_nvram_writemem )
   181: 	{ 0x0000, 0x007f, MWA_RAM },
   182: 	{ 0x1000, 0x10ff, MWA_RAM, &nvram, &nvram_size },
   183: 	{ 0x2000, 0x2000, DAC_0_data_w },
   184: 	{ 0x8000, 0xf7ff, MWA_ROM },
   185: 	{ 0xf800, 0xffff, sharedram_w },
   186: MEMORY_END
   187: 
   188: static MEMORY_WRITE_START( mcu_no_nvram_writemem )
   189: 	{ 0x0000, 0x007f, MWA_RAM },
   190: 	{ 0x2000, 0x2000, DAC_0_data_w },
   191: 	{ 0x8000, 0xf7ff, MWA_ROM },
   192: 	{ 0xf800, 0xffff, sharedram_w },
   193: MEMORY_END
   194: 
   195: 
   196: 
   197: 
   198: INPUT_PORTS_START( friskyt )
   199: 	PORT_START      /* IN0 */
   200: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
   201: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   202: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   203: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   204: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
   205: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
   206: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
   207: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
   208: 
   209: 	PORT_START      /* IN1 */
   210: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
   211: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
   212: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
   213: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   214: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN3 )
   215: 	PORT_SERVICE( 0x20, IP_ACTIVE_HIGH )
   216: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   217: 	PORT_DIPNAME( 0x80, 0x00, "Counter Check" )
   218: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   219: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   220: 
   221: 	PORT_START      /* Test */
   222: 	PORT_DIPNAME( 0x01, 0x00, "Test Mode" )
   223: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   224: 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
   225: 	PORT_DIPNAME( 0x02, 0x00, "Connection Error" )
   226: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   227: 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
   228: 	PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* probably unused */
   229: INPUT_PORTS_END
   230: 
   231: INPUT_PORTS_START( radrad )
   232: 	PORT_START      /* IN0 */
   233: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
   234: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   235: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   236: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   237: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   238: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 )
   239: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
   240: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
   241: 
   242: 	PORT_START      /* IN1 */
   243: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
   244: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
   245: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
   246: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   247: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN3 )
   248: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
   249: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 )
   250: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   251: 
   252: 	PORT_START      /* Test */
   253: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
   254: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
   255: 	PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* probably unused */
   256: 
   257: 	PORT_START	/* DSW1 */
   258: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
   259: 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
   260: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   261: 	PORT_DIPNAME( 0x06, 0x02, DEF_STR( Lives ) )
   262: 	PORT_DIPSETTING(    0x00, "2" )
   263: 	PORT_DIPSETTING(    0x02, "3" )
   264: 	PORT_DIPSETTING(    0x04, "4" )
   265: 	PORT_DIPSETTING(    0x06, "5" )
   266: 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
   267: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   268: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   269: 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
   270: 
   271: 	PORT_START	/* DSW2 */
   272: 	PORT_DIPNAME( 0x07, 0x00, DEF_STR( Unknown ) )
   273: 	PORT_DIPSETTING(    0x00, "0" )
   274: 	PORT_DIPSETTING(    0x01, "1" )
   275: 	PORT_DIPSETTING(    0x02, "2" )
   276: 	PORT_DIPSETTING(    0x03, "3" )
   277: 	PORT_DIPSETTING(    0x04, "4" )
   278: 	PORT_DIPSETTING(    0x05, "5" )
   279: 	PORT_DIPSETTING(    0x06, "6" )
   280: 	PORT_DIPSETTING(    0x07, "7" )
   281: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Free_Play ) )
   282: 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
   283: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   284: 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
   285: 
   286: 	PORT_START	/* DSW3 */
   287: 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coinage ) )
   288: 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
   289: 	PORT_DIPSETTING(    0x09, DEF_STR( 2C_2C ) )
   290: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   291: 	PORT_DIPSETTING(    0x0a, DEF_STR( 2C_3C ) )
   292: 	PORT_DIPSETTING(    0x0b, DEF_STR( 2C_4C ) )
   293: 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
   294: 	PORT_DIPSETTING(    0x0c, DEF_STR( 2C_5C ) )
   295: 	PORT_DIPSETTING(    0x0d, DEF_STR( 2C_6C ) )
   296: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
   297: 	PORT_DIPSETTING(    0x0e, DEF_STR( 2C_7C ) )
   298: 	PORT_DIPSETTING(    0x0f, DEF_STR( 2C_8C ) )
   299: 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
   300: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
   301: 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_6C ) )
   302: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_7C ) )
   303: 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_8C ) )
   304: 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
   305: INPUT_PORTS_END
   306: 
   307: INPUT_PORTS_START( seicross )
   308: 	PORT_START      /* IN0 */
   309: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
   310: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   311: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   312: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   313: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
   314: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
   315: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 )
   316: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 )
   317: 
   318: 	PORT_START      /* IN1 */
   319: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
   320: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
   321: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
   322: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
   323: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN3 )
   324: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* probably unused */
   325: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 )
   326: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
   327: 
   328: 	PORT_START      /* Test */
   329: 	PORT_SERVICE( 0x01, IP_ACTIVE_HIGH )
   330: 	PORT_DIPNAME( 0x02, 0x00, "Connection Error" )
   331: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   332: 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
   333: 	PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* probably unused */
   334: 
   335: 	PORT_START	/* DSW1 */
   336: 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
   337: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   338: 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
   339: 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Free_Play ) )
   340: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   341: 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
   342: 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Unknown ) )
   343: 	PORT_DIPSETTING(    0x00, "0" )
   344: 	PORT_DIPSETTING(    0x04, "1" )
   345: 	PORT_DIPSETTING(    0x08, "2" )
   346: 	PORT_DIPSETTING(    0x0c, "3" )
   347: 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
   348: 
   349: 	PORT_START	/* DSW2 */
   350: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
   351: 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
   352: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
   353: 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
   354: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   355: 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
   356: 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Lives ) )
   357: 	PORT_DIPSETTING(    0x08, "2" )
   358: 	PORT_DIPSETTING(    0x00, "3" )
   359: 	PORT_DIPSETTING(    0x04, "4" )
   360: 	PORT_DIPSETTING(    0x0c, "5" )
   361: 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
   362: 
   363: 	PORT_START	/* DSW3 */
   364: 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
   365: 	PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ) )
   366: 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
   367: 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
   368: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   369: 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_A ) )
   370: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   371: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
   372: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
   373: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_6C ) )
   374: 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
   375: 
   376: 	PORT_START	/* Debug */
   377: 	PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   378: 	PORT_DIPNAME( 0x20, 0x20, "Debug Mode" )
   379: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   380: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   381: 	PORT_BITX(    0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
   382: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   383: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   384: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   385: INPUT_PORTS_END
   386: 
   387: 
   388: 
   389: static struct GfxLayout charlayout =
   390: {
   391: 	8,8,	/* 8*8 characters */
   392: 	512,	/* 512 characters */
   393: 	2,	/* 2 bits per pixel */
   394: 	{ 0, 4 },	/* the two bitplanes are packed in one byte */
   395: 	{ 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 },
   396: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
   397: 	16*8	/* every char takes 16 consecutive bytes */
   398: };
   399: static struct GfxLayout spritelayout =
   400: {
   401: 	16,16,	/* 16*16 sprites */
   402: 	256,	/* 256 sprites */
   403: 	2,	/* 2 bits per pixel */
   404: 	{ 0, 4 },	/* the two bitplanes are packed in one byte */
   405: 	{ 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3,
   406: 			16*8+0, 16*8+1, 16*8+2, 16*8+3, 17*8+0, 17*8+1, 17*8+2, 17*8+3 },
   407: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
   408: 			16*16, 17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16 },
   409: 	64*8	/* every sprite takes 64 consecutive bytes */
   410: };
   411: 
   412: 
   413: 
   414: static struct GfxDecodeInfo gfxdecodeinfo[] =
   415: {
   416: 	{ REGION_GFX1, 0, &charlayout,   0, 16 },
   417: 	{ REGION_GFX1, 0, &spritelayout, 0, 16 },
   418: 	{ -1 } /* end of array */
   419: };
   420: 
   421: 
   422: 
   423: static struct AY8910interface ay8910_interface =
   424: {
   425: 	1,	/* 1 chip */
   426: 	1536000,	/* 1.536 MHz ?? */
   427: 	{ 25 },
   428: 	{ 0 },
   429: 	{ friskyt_portB_r },
   430: 	{ 0 },
   431: 	{ friskyt_portB_w }
   432: };
   433: 
   434: static struct DACinterface dac_interface =
   435: {
   436: 	1,
   437: 	{ 25 }
   438: };
   439: 
   440: 
   441: static MACHINE_DRIVER_START( nvram )
   442: 
   443: 	/* basic machine hardware */
   444: 	MDRV_CPU_ADD(Z80, 3072000)	/* 3.072 MHz? */
   445: 	MDRV_CPU_MEMORY(readmem,writemem)
   446: 	MDRV_CPU_PORTS(readport,writeport)
   447: 	MDRV_CPU_VBLANK_INT(irq0_line_hold,1)
   448: 
   449: 	MDRV_CPU_ADD_TAG("mcu", NSC8105, 6000000/4)	/* ??? */
   450: 	MDRV_CPU_MEMORY(mcu_nvram_readmem,mcu_nvram_writemem)
   451: 
   452: 	MDRV_FRAMES_PER_SECOND(60)
   453: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)	/* frames per second, vblank duration */
   454: 	MDRV_INTERLEAVE(20)	/* 20 CPU slices per frame - an high value to ensure proper */
   455: 						/* synchronization of the CPUs */
   456: 	MDRV_MACHINE_INIT(friskyt)
   457: 	MDRV_NVRAM_HANDLER(seicross)
   458: 
   459: 	/* video hardware */
   460: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   461: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   462: 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
   463: 	MDRV_GFXDECODE(gfxdecodeinfo)
   464: 	MDRV_PALETTE_LENGTH(64)
   465: 
   466: 	MDRV_PALETTE_INIT(seicross)
   467: 	MDRV_VIDEO_START(seicross)
   468: 	MDRV_VIDEO_UPDATE(seicross)
   469: 
   470: 	/* sound hardware */
   471: 	MDRV_SOUND_ADD(AY8910, ay8910_interface)
   472: 	MDRV_SOUND_ADD(DAC, dac_interface)
   473: MACHINE_DRIVER_END
   474: 
   475: 
   476: static MACHINE_DRIVER_START( no_nvram )
   477: 
   478: 	/* basic machine hardware */
   479: 	MDRV_IMPORT_FROM(nvram)
   480: 	MDRV_CPU_MODIFY("mcu")
   481: 	MDRV_CPU_MEMORY(mcu_no_nvram_readmem,mcu_no_nvram_writemem)
   482: 
   483: 	MDRV_NVRAM_HANDLER(NULL)
   484: MACHINE_DRIVER_END
   485: 
   486: 
   487: /***************************************************************************
   488: 
   489:   Game driver(s)
   490: 
   491: ***************************************************************************/
   492: 
   493: ROM_START( friskyt )
   494: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   495: 	ROM_LOAD( "ftom.01",      0x0000, 0x1000, CRC(bce5d486) SHA1(b3226d5737490f18092227a663e89ad48f39d82c) )
   496: 	ROM_LOAD( "ftom.02",      0x1000, 0x1000, CRC(63157d6e) SHA1(2792f3d918ffee3818eca98f52192a069ab60678) )
   497: 	ROM_LOAD( "ftom.03",      0x2000, 0x1000, CRC(c8d9ef2c) SHA1(43dd6bfd93188004b977b97120df28c028e8582b) )
   498: 	ROM_LOAD( "ftom.04",      0x3000, 0x1000, CRC(23a01aac) SHA1(db514c54c1a089a900abf954035ae4d1093e778d) )
   499: 	ROM_LOAD( "ftom.05",      0x4000, 0x1000, CRC(bfaf702a) SHA1(d42fa3e935bfc5bfbab582343aaafc86ebcbfda2) )
   500: 	ROM_LOAD( "ftom.06",      0x5000, 0x1000, CRC(bce70b9c) SHA1(85d2811f15cba7d0424d5ca024c0c26ee0b2a32a) )
   501: 	ROM_LOAD( "ftom.07",      0x6000, 0x1000, CRC(b2ef303a) SHA1(a7150457b454e15c06fa832d42dd1f0e165fcd6e) )
   502: 	ROM_LOAD( "ft8_8.rom",    0x7000, 0x0800, CRC(10461a24) SHA1(c1f98316a4e90a2a6ef4953708b90c9546caaedd) )
   503: 
   504: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the protection mcu */
   505: 	/* filled in later */
   506: 
   507: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
   508: 	ROM_LOAD( "ftom.11",      0x0000, 0x1000, CRC(1ec6ff65) SHA1(aab589c89cd14549b35f4dece5d3c231033c0c1a) )
   509: 	ROM_LOAD( "ftom.12",      0x1000, 0x1000, CRC(3b8f40b5) SHA1(08e0c1fce11ee6c507c28b0d659c5b010f2f2b6f) )
   510: 	ROM_LOAD( "ftom.09",      0x2000, 0x1000, CRC(60642f25) SHA1(2d179a9ea99014065f578bbec4fbfbda5aead98b) )
   511: 	ROM_LOAD( "ftom.10",      0x3000, 0x1000, CRC(07b9dcfc) SHA1(0a573065b6b08745b91fb47ce477d76be7a01750) )
   512: 
   513: 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
   514: 	ROM_LOAD( "ft.9c",        0x0000, 0x0020, CRC(0032167e) SHA1(9df3c7bbf6b700bfa51b8b82c45b60c10bdcd1a0) )
   515: 	ROM_LOAD( "ft.9b",        0x0020, 0x0020, CRC(6b364e69) SHA1(abfcab884e8a50f872f862a421b8e8c5e16ff62c) )
   516: ROM_END
   517: 
   518: ROM_START( friskyta )
   519: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   520: 	ROM_LOAD( "ft.01",        0x0000, 0x1000, CRC(0ea46e19) SHA1(3feb3ee882926c0efa602cf92e6879e84a6050ed) )
   521: 	ROM_LOAD( "ft.02",        0x1000, 0x1000, CRC(4f7b8662) SHA1(400c47d7ab5f3a749dbadb2286255b969ec48348) )
   522: 	ROM_LOAD( "ft.03",        0x2000, 0x1000, CRC(1eb1b77c) SHA1(c08d6c1f1bbe2d41b0f6336a0c53ec993556e6b4) )
   523: 	ROM_LOAD( "ft.04",        0x3000, 0x1000, CRC(b5c5400d) SHA1(9fa87dd287457c61599214469aad095ddb5f8742) )
   524: 	ROM_LOAD( "ft.05",        0x4000, 0x1000, CRC(b465be8a) SHA1(0b0da2c83c2362d062b12312285076956d62e4b4) )
   525: 	ROM_LOAD( "ft.06",        0x5000, 0x1000, CRC(90141317) SHA1(d59489e4e35308858e0548d5861b1781acfc3c05) )
   526: 	ROM_LOAD( "ft.07",        0x6000, 0x1000, CRC(0ba02b2e) SHA1(1260c16d589fca37bf58ee28a4795f4b6333d0b9) )
   527: 	ROM_LOAD( "ft8_8.rom",    0x7000, 0x0800, CRC(10461a24) SHA1(c1f98316a4e90a2a6ef4953708b90c9546caaedd) )
   528: 
   529: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the protection mcu */
   530: 	/* filled in later */
   531: 
   532: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
   533: 	ROM_LOAD( "ft.11",        0x0000, 0x1000, CRC(956d924a) SHA1(e61bf5f187932c6cb676b4120cd95fe422f6a1a6) )
   534: 	ROM_LOAD( "ft.12",        0x1000, 0x1000, CRC(c028d3b8) SHA1(9e8768b9658f8b05ade4dd5fb2ecde4a52627bc1) )
   535: 	ROM_LOAD( "ftom.09",      0x2000, 0x1000, CRC(60642f25) SHA1(2d179a9ea99014065f578bbec4fbfbda5aead98b) )
   536: 	ROM_LOAD( "ftom.10",      0x3000, 0x1000, CRC(07b9dcfc) SHA1(0a573065b6b08745b91fb47ce477d76be7a01750) )
   537: 
   538: 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
   539: 	ROM_LOAD( "ft.9c",        0x0000, 0x0020, CRC(0032167e) SHA1(9df3c7bbf6b700bfa51b8b82c45b60c10bdcd1a0) )
   540: 	ROM_LOAD( "ft.9b",        0x0020, 0x0020, CRC(6b364e69) SHA1(abfcab884e8a50f872f862a421b8e8c5e16ff62c) )
   541: ROM_END
   542: 
   543: ROM_START( radrad )
   544: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   545: 	ROM_LOAD( "1.3a",         0x0000, 0x1000, CRC(b1e958ca) SHA1(3ab5fc3314f202ba527470eacbb76d52fe969bca) )
   546: 	ROM_LOAD( "2.3b",         0x1000, 0x1000, CRC(30ba76b3) SHA1(e6af1fc35fdc71d5436f0d29e5722cbcb4409196) )
   547: 	ROM_LOAD( "3.3c",         0x2000, 0x1000, CRC(1c9f397b) SHA1(7f556c5bef5309d5048c3b9671b88ad646a8b648) )
   548: 	ROM_LOAD( "4.3d",         0x3000, 0x1000, CRC(453966a3) SHA1(dd1bfeb8956c4670a5d4a5e981413b47701f6233) )
   549: 	ROM_LOAD( "5.3e",         0x4000, 0x1000, CRC(c337c4bd) SHA1(a5d29e9ba629d23f8c084fdb0ce4a83513648e82) )
   550: 	ROM_LOAD( "6.3f",         0x5000, 0x1000, CRC(06e15b59) SHA1(0c7748abba29362c92724e601d90ad1711b23f86) )
   551: 	ROM_LOAD( "7.3g",         0x6000, 0x1000, CRC(02b1f9c9) SHA1(6b857ae477d3c92a58494140ffa3337dba8e77cc) )
   552: 	ROM_LOAD( "8.3h",         0x7000, 0x0800, CRC(911c90e8) SHA1(94fa91e767ab27a1616f1768f97a44a59a3f3294) )
   553: 
   554: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the protection mcu */
   555: 	/* filled in later */
   556: 
   557: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
   558: 	ROM_LOAD( "11.l7",        0x0000, 0x1000, CRC(4ace7afb) SHA1(3c495f106505d5dfed93393db1f1b3842f603448) )
   559: 	ROM_LOAD( "12.n7",        0x1000, 0x1000, CRC(b19b8473) SHA1(42160f978f8e209a89be097b5cfc7ac0aeec49c5) )
   560: 	ROM_LOAD( "9.j7",         0x2000, 0x1000, CRC(229939a3) SHA1(4ee050798871823314952e34938233e2cf9e7341) )
   561: 	ROM_LOAD( "10.j7",        0x3000, 0x1000, CRC(79237913) SHA1(b07dd531d06ef01f756169e87a8cccda35ed38d3) )
   562: 
   563: 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
   564: 	ROM_LOAD( "clr.9c",       0x0000, 0x0020, CRC(c9d88422) SHA1(626216bac1a6317a32f2a51b89375043f58b5503) )
   565: 	ROM_LOAD( "clr.9b",       0x0020, 0x0020, CRC(ee81af16) SHA1(e1bab9738d37dea0473a7184a4303234b75e6cc6) )
   566: ROM_END
   567: 
   568: ROM_START( seicross )
   569: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   570: 	ROM_LOAD( "smc1",         0x0000, 0x1000, CRC(f6c3aeca) SHA1(d57019e80f7e3d47ca74f54604e92d40ba9819fc) )
   571: 	ROM_LOAD( "smc2",         0x1000, 0x1000, CRC(0ec6c218) SHA1(d8cffea48d8afd229f2008399afe3858c13653e5) )
   572: 	ROM_LOAD( "smc3",         0x2000, 0x1000, CRC(ceb3c8f4) SHA1(e49f834637b4addcf362cd010e31802c3e145cbe) )
   573: 	ROM_LOAD( "smc4",         0x3000, 0x1000, CRC(3112af59) SHA1(3d4e5a74a13bdeaf07f059f8c3a0d2ca8cbb3d32) )
   574: 	ROM_LOAD( "smc5",         0x4000, 0x1000, CRC(b494a993) SHA1(ed60cbaef2ac780c11426d29a612d34e76b29a0e) )
   575: 	ROM_LOAD( "smc6",         0x5000, 0x1000, CRC(09d5b9da) SHA1(636a8d4717df4ed1fc02fa83782fa8d96b88f969) )
   576: 	ROM_LOAD( "smc7",         0x6000, 0x1000, CRC(13052b03) SHA1(2866f2533a788f734310a74789f762f3fa17a57a) )
   577: 	ROM_LOAD( "smc8",         0x7000, 0x0800, CRC(2093461d) SHA1(0d640bc7ee1e9ffe32580e3143677475145b06d2) )
   578: 
   579: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the protection mcu */
   580: 	/* filled in later */
   581: 
   582: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
   583: 	ROM_LOAD( "sz11.7k",      0x0000, 0x1000, CRC(fbd9b91d) SHA1(6b3581f4b518c058b970d569ced07dd7dc6a87e6) )
   584: 	ROM_LOAD( "smcd",         0x1000, 0x1000, CRC(c3c953c4) SHA1(a96937a48b59b7e992e53d279c10a5f3ea7f9a6f) )
   585: 	ROM_LOAD( "sz9.7j",       0x2000, 0x1000, CRC(4819f0cd) SHA1(fa8d371efc3198daf76ff1264e22673c5521becf) )
   586: 	ROM_LOAD( "sz10.7h",      0x3000, 0x1000, CRC(4c268778) SHA1(a1444fb3eb397c8167d769aa1f935c5f19df4d6d) )
   587: 
   588: 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
   589: 	ROM_LOAD( "sz73.10c",     0x0000, 0x0020, CRC(4d218a3c) SHA1(26364dfdb7e13080357328a06c3bcf504778defd) )
   590: 	ROM_LOAD( "sz74.10b",     0x0020, 0x0020, CRC(c550531c) SHA1(d564aeb8a99861d29e00cf968242fe6c6cec478b) )
   591: ROM_END
   592: 
   593: ROM_START( sectrzon )
   594: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   595: 	ROM_LOAD( "sz1.3a",       0x0000, 0x1000, CRC(f0a45cb4) SHA1(ab3b8d78e25cdbb2fd6a6c0718ae13767364994d) )
   596: 	ROM_LOAD( "sz2.3c",       0x1000, 0x1000, CRC(fea68ddb) SHA1(b9ed0cad9a2ded04bcc7042d975b77be63313070) )
   597: 	ROM_LOAD( "sz3.3d",       0x2000, 0x1000, CRC(baad4294) SHA1(e7fc3ccc940de6df8d786c986b602127c9db9ebb) )
   598: 	ROM_LOAD( "sz4.3e",       0x3000, 0x1000, CRC(75f2ca75) SHA1(fbf990edcb7b5a58f8dcee160883fde5e222ca6b) )
   599: 	ROM_LOAD( "sz5.3fg",      0x4000, 0x1000, CRC(dc14f2c8) SHA1(dcda8d6f7be458d0adcddc37bbe0eb636a5b0b06) )
   600: 	ROM_LOAD( "sz6.3h",       0x5000, 0x1000, CRC(397a38c5) SHA1(6189028376c1781aae107c5fe0aec181a1d885e1) )
   601: 	ROM_LOAD( "sz7.3i",       0x6000, 0x1000, CRC(7b34dc1c) SHA1(fb163a908c991cd214e0d2d685e74563a460a929) )
   602: 	ROM_LOAD( "sz8.3j",       0x7000, 0x0800, CRC(9933526a) SHA1(2178ef8653f1d60be28bcaebe1033ef7ae480157) )
   603: 
   604: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the protection mcu */
   605: 	/* filled in later */
   606: 
   607: 	ROM_REGION( 0x4000, REGION_GFX1, ROMREGION_DISPOSE )
   608: 	ROM_LOAD( "sz11.7k",      0x0000, 0x1000, CRC(fbd9b91d) SHA1(6b3581f4b518c058b970d569ced07dd7dc6a87e6) )
   609: 	ROM_LOAD( "sz12.7m",      0x1000, 0x1000, CRC(2bdef9ad) SHA1(50fe41e81c1307317b4fb6b47bf0619d141c42ff) )
   610: 	ROM_LOAD( "sz9.7j",       0x2000, 0x1000, CRC(4819f0cd) SHA1(fa8d371efc3198daf76ff1264e22673c5521becf) )
   611: 	ROM_LOAD( "sz10.7h",      0x3000, 0x1000, CRC(4c268778) SHA1(a1444fb3eb397c8167d769aa1f935c5f19df4d6d) )
   612: 
   613: 	ROM_REGION( 0x0040, REGION_PROMS, 0 )
   614: 	ROM_LOAD( "sz73.10c",     0x0000, 0x0020, CRC(4d218a3c) SHA1(26364dfdb7e13080357328a06c3bcf504778defd) )
   615: 	ROM_LOAD( "sz74.10b",     0x0020, 0x0020, CRC(c550531c) SHA1(d564aeb8a99861d29e00cf968242fe6c6cec478b) )
   616: ROM_END
   617: 
   618: 
   619: 
   620: static DRIVER_INIT( friskyt )
   621: {
   622: 	int A;
   623: 	UINT8 *src,*dest;
   624: 
   625: 	/* the protection mcu shares the main program ROMs and RAM with the main CPU. */
   626: 
   627: 	/* copy over the ROMs */
   628: 	src = memory_region(REGION_CPU1);
   629: 	dest = memory_region(REGION_CPU2);
   630: 	for (A = 0;A < 0x8000;A++)
   631: 		 dest[A + 0x8000] = src[A];
   632: }
   633: 
   634: 
   635: 
   636: GAMEX( 1981, friskyt,  0,        nvram,    friskyt,  friskyt, ROT0,  "Nichibutsu", "Frisky Tom (set 1)", GAME_NO_COCKTAIL )
   637: GAMEX( 1981, friskyta, friskyt,  nvram,    friskyt,  friskyt, ROT0,  "Nichibutsu", "Frisky Tom (set 2)", GAME_NO_COCKTAIL )
   638: GAMEX( 1982, radrad,   0,        no_nvram, radrad,   friskyt, ROT0,  "Nichibutsu USA", "Radical Radial", GAME_NO_COCKTAIL )
   639: GAMEX( 1984, seicross, 0,        no_nvram, seicross, friskyt, ROT90, "Nichibutsu + Alice", "Seicross", GAME_NO_COCKTAIL )
   640: GAMEX( 1984, sectrzon, seicross, no_nvram, seicross, friskyt, ROT90, "Nichibutsu + Alice", "Sector Zone", GAME_NO_COCKTAIL )
   641: 




powered by ggdb.com this page took approx. 0.005s