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 : Tao Taido : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3:   Tao Taido             (c) 1993 Video System
     4: 
     5: 
     6: 	driver by David Haywood - Dip Switches and Inputs by Stephane Humbert
     7: 	based on other Video System drivers
     8: 
     9: Stephh's notes (based on the games M68000 code and some tests) :
    10: 
    11: 0) all games
    12: 
    13:   - Don't trust the test mode ! It shows inputs for 4 players as well as
    14:     3 buttons for each player, while the game is a 2 players game with only
    15:     2 buttons (punch and kick) for each player.
    16:     IMO, it's a leftover from a previous game.
    17:     If you want to test all inputs, turn TAOTAIDO_SHOW_ALL_INPUTS to 1.
    18: 
    19:   - The "Buy-In" features allows a player to recover some energy and reset timer
    20:     by pressing his "Start" button (provided he has at least one credit).
    21: 
    22:   - 'taotaido' allows to play a 2 players game with a single credit while
    23:     this isn't possible with 'taotaida'.
    24:     Now, telling which version is the newest one is another story ;)
    25: 
    26:   - 'taotaido' seems to show you how to do the special moves, 'taotaida' doesn't
    27:     and they don't seem to work in the same way (unless this is a bug)
    28: 
    29:   - Coin buttons act differently depending on the "Coin Slot" Dip Switch :
    30: 
    31:       * "Coin Slot" Dip Switch set to "Same" :
    32: 
    33:           . COIN1 : adds coin(s)/credit(s) depending on "Coinage" Dip Switch
    34:           . COIN2 : adds 1 credit
    35:           . SERVICE1 : adds coin(s)/credit(s) depending on "Coinage" Dip Switch
    36: 
    37:       * "Coin Slot" Dip Switch set to "Individual" :
    38: 
    39:           . COIN1 : adds coin(s)/credit(s) for player 1 depending on "Coinage" Dip Switch
    40:           . COIN2 : adds coin(s)/credit(s) for player 2 depending on "Coinage" Dip Switch
    41:           . SERVICE1 : adds 1 credit for player 1
    42: 
    43: ***************************************************************************/
    44: 
    45: /* Tao Taido
    46: (c)1993 Video System
    47: 
    48: CPU:	68000-16
    49: Sound:	Z80-B
    50: 		YM2610
    51: OSC:	14.31818MHz
    52: 		20.0000MHz
    53: 		32.0000MHz
    54: Chips:	VS9108
    55: 		VS920B
    56: 		VS9209 x2
    57: 
    58: ****************************************************************************
    59: 
    60: zooming might be wrong
    61: 
    62: ***************************************************************************/
    63: 
    64: 
    65: 
    66: #include "driver.h" 
    67: 
    68: #define TAOTAIDO_SHOW_ALL_INPUTS	0 
    69: 
    70: data16_t *taotaido_spriteram;
    71: data16_t *taotaido_spriteram2;
    72: data16_t *taotaido_scrollram;
    73: data16_t *taotaido_bgram;
    74: 
    75: WRITE16_HANDLER( taotaido_sprite_character_bank_select_w );
    76: WRITE16_HANDLER( taotaido_tileregs_w );
    77: WRITE16_HANDLER( taotaido_bgvideoram_w );
    78: VIDEO_START( taotaido );
    79: VIDEO_UPDATE( taotaido );
    80: VIDEO_EOF( taotaido );
    81: 
    82: int pending_command;
    83: 
    84: static READ16_HANDLER( pending_command_r )
    85: {
    86: 	/* Only bit 0 is tested */
    87: 	return pending_command;
    88: }
    89: 
    90: static WRITE16_HANDLER( sound_command_w )
    91: {
    92: 	if (ACCESSING_LSB)
    93: 	{
    94: 		pending_command = 1;
    95: 		soundlatch_w(offset,data & 0xff);
    96: 		cpu_set_irq_line(1, IRQ_LINE_NMI, PULSE_LINE);
    97: 	}
    98: }
    99: static MEMORY_READ16_START( taotaido_readmem )
   100: 	{ 0x000000, 0x0fffff, MRA16_ROM },
   101: 	{ 0x800000, 0x803fff, MRA16_RAM },			// bg ram?
   102: 	{ 0xa00000, 0xa01fff, MRA16_RAM },			// sprite ram
   103: 	{ 0xc00000, 0xc0ffff, MRA16_RAM },			// sprite tile look up
   104: 	{ 0xfe0000, 0xfeffff, MRA16_RAM },			// main ram
   105: 	{ 0xffc000, 0xffcfff, MRA16_RAM },			// palette ram
   106: 	{ 0xffe000, 0xffe3ff, MRA16_RAM },			// rowscroll / rowselect / scroll ram
   107: 
   108: 	{ 0xffff80, 0xffff81, input_port_0_word_r },	// player 1 inputs
   109: 	{ 0xffff82, 0xffff83, input_port_1_word_r },	// player 2 inputs
   110: 	{ 0xffff84, 0xffff85, input_port_2_word_r },	// system inputs
   111: 	{ 0xffff86, 0xffff87, input_port_3_word_r },	// DSWA
   112: 	{ 0xffff88, 0xffff89, input_port_4_word_r },	// DSWB
   113: 	{ 0xffff8a, 0xffff8b, input_port_5_word_r },	// DSWC
   114: 	{ 0xffff8c, 0xffff8d, MRA16_RAM },			// unknown
   115: 	{ 0xffff8e, 0xffff8f, input_port_6_word_r },	// jumpers
   116: #if TAOTAIDO_SHOW_ALL_INPUTS 
   117: 	{ 0xffffa0, 0xffffa1, input_port_7_word_r },	// player 3 inputs (unused)
   118: 	{ 0xffffa2, 0xffffa3, input_port_8_word_r },	// player 4 inputs (unused)
   119: #endif 
   120: 
   121: 	{ 0xffffe0, 0xffffe1, pending_command_r },	// guess - seems to be needed for all the sounds to work
   122: MEMORY_END
   123: 
   124: static MEMORY_WRITE16_START( taotaido_writemem )
   125: 	{ 0x000000, 0x0fffff, MWA16_ROM },
   126: 	{ 0x800000, 0x803fff, taotaido_bgvideoram_w, &taotaido_bgram },	// bg ram?
   127: 	{ 0xa00000, 0xa01fff, MWA16_RAM, &taotaido_spriteram },		// sprite ram
   128: 	{ 0xc00000, 0xc0ffff, MWA16_RAM, &taotaido_spriteram2 },		// sprite tile lookup ram
   129: 	{ 0xfe0000, 0xfeffff, MWA16_RAM },						// main ram
   130: 	{ 0xffc000, 0xffcfff, paletteram16_xRRRRRGGGGGBBBBB_word_w, &paletteram16 },	// palette ram
   131: 	{ 0xffe000, 0xffe3ff, MWA16_RAM, &taotaido_scrollram },		// rowscroll / rowselect / scroll ram
   132: 
   133: 	{ 0xffff00, 0xffff0f, taotaido_tileregs_w },
   134: 	{ 0xffff10, 0xffff11, MWA16_NOP },						// unknown
   135: 	{ 0xffff20, 0xffff21, MWA16_NOP },						// unknown - flip screen related
   136: 	{ 0xffff40, 0xffff47, taotaido_sprite_character_bank_select_w },
   137: 	{ 0xffffc0, 0xffffc1, sound_command_w },					// seems right
   138: MEMORY_END
   139: 
   140: /* sound cpu - same as aerofgt */
   141: 
   142: 
   143: static WRITE_HANDLER( pending_command_clear_w )
   144: {
   145: 	pending_command = 0;
   146: }
   147: 
   148: static WRITE_HANDLER( taotaido_sh_bankswitch_w )
   149: {
   150: 	data8_t *rom = memory_region(REGION_CPU2) + 0x10000;
   151: 
   152: 	cpu_setbank(1,rom + (data & 0x03) * 0x8000);
   153: }
   154: 
   155: static MEMORY_READ_START( sound_readmem )
   156: 	{ 0x0000, 0x77ff, MRA_ROM },
   157: 	{ 0x7800, 0x7fff, MRA_RAM },
   158: 	{ 0x8000, 0xffff, MRA_BANK1 },
   159: MEMORY_END
   160: 
   161: static MEMORY_WRITE_START( sound_writemem )
   162: 	{ 0x0000, 0x77ff, MWA_ROM },
   163: 	{ 0x7800, 0x7fff, MWA_RAM },
   164: 	{ 0x8000, 0xffff, MWA_ROM },
   165: MEMORY_END
   166: 
   167: static PORT_READ_START( taotaido_sound_readport )
   168: 	{ 0x00, 0x00, YM2610_status_port_0_A_r },
   169: 	{ 0x02, 0x02, YM2610_status_port_0_B_r },
   170: 	{ 0x0c, 0x0c, soundlatch_r },
   171: PORT_END
   172: 
   173: static PORT_WRITE_START( taotaido_sound_writeport )
   174: 	{ 0x00, 0x00, YM2610_control_port_0_A_w },
   175: 	{ 0x01, 0x01, YM2610_data_port_0_A_w },
   176: 	{ 0x02, 0x02, YM2610_control_port_0_B_w },
   177: 	{ 0x03, 0x03, YM2610_data_port_0_B_w },
   178: 	{ 0x04, 0x04, taotaido_sh_bankswitch_w },
   179: 	{ 0x08, 0x08, pending_command_clear_w },
   180: PORT_END
   181: 
   182: 
   183: 
   184: INPUT_PORTS_START( taotaido )
   185: 	PORT_START	/* Player 1 controls (0xffff81.b) */
   186: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
   187: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
   188: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
   189: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   190: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )	// "Punch"
   191: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )	// "Kick"
   192: #if TAOTAIDO_SHOW_ALL_INPUTS 
   193: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   194: #else 
   195: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   196: #endif 
   197: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   198: 
   199: 	PORT_START	/* Player 2 controls (0xffff83.b) */
   200: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
   201: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   202: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   203: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   204: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )	// "Punch"
   205: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )	// "Kick"
   206: #if TAOTAIDO_SHOW_ALL_INPUTS 
   207: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   208: #else 
   209: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
   210: #endif 
   211: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   212: 
   213: 	PORT_START	/* System inputs (0xffff85.b) */
   214: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
   215: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )	// see notes
   216: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
   217: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
   218: #if TAOTAIDO_SHOW_ALL_INPUTS 
   219: 	PORT_BITX(0x10, IP_ACTIVE_LOW, IPT_SERVICE, "Test", KEYCODE_F1, IP_JOY_NONE )
   220: #else 
   221: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE )	// "Test" in "test mode"
   222: #endif 
   223: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )		// not working ?
   224: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 )	// see notes - SERVICE in "test mode"
   225: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )	// VBLANK ? The game freezes when ON
   226: 
   227: 	PORT_START	/* DSW A (0xffff87.b -> !0xfe2f6c.w or !0xfe30d0) */
   228: 	PORT_DIPNAME( 0x01, 0x01, "Coin Slot" )
   229: 	PORT_DIPSETTING(    0x01, "Same" )
   230: 	PORT_DIPSETTING(    0x00, "Individual" )
   231: 	PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Coinage ) )
   232: 	PORT_DIPSETTING(    0x0a, DEF_STR( 3C_1C ) )
   233: 	PORT_DIPSETTING(    0x0c, DEF_STR( 2C_1C ) )
   234: 	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_1C ) )
   235: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
   236: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_3C ) )
   237: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
   238: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_5C ) )
   239: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
   240: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
   241: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   242: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   243: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
   244: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   245: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   246: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
   247: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   248: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   249: 	PORT_DIPNAME( 0x80, 0x80, "2 Coins to Start, 1 to Continue" )
   250: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   251: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   252: 
   253: 	PORT_START	/* DSW B (0xffff89.b -> !0xfe73c2.w or !0xfe751c.w) */
   254: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )	// check code at 0x0963e2 or 0x845e2
   255: 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
   256: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   257: 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) )
   258: 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
   259: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   260: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) )
   261: 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
   262: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   263: 	PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) )
   264: 	PORT_DIPSETTING(    0x10, "Easy" )
   265: 	PORT_DIPSETTING(    0x18, "Normal" )
   266: 	PORT_DIPSETTING(    0x08, "Hard" )
   267: 	PORT_DIPSETTING(    0x00, "Hardest" )
   268: 	PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
   269: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
   270: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   271: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   272: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   273: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   274: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   275: 
   276: 	PORT_START	/* DSW C (0xffff8b.b -> !0xfe2f94.w or !0xfe30f8.w) */
   277: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )	// doesn't seem to be demo sounds
   278: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   279: 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
   280: 	PORT_DIPNAME( 0x02, 0x02, "Buy In" )			// see notes
   281: 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
   282: 	PORT_DIPSETTING(    0x02, DEF_STR( Yes ) )
   283: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )
   284: 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
   285: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   286: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
   287: 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
   288: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   289: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
   290: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   291: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   292: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
   293: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   294: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   295: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
   296: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   297: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   298: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
   299: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   300: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   301: 
   302: 	PORT_START	/* Jumpers (0xffff8f.b) */
   303: 	PORT_DIPNAME( 0x0f, 0x08, "Country" )
   304: 	PORT_DIPSETTING(    0x00, "US" )				// also (c) Mc O'River Inc
   305: 	PORT_DIPSETTING(    0x01, "Japan" )
   306: 	PORT_DIPSETTING(    0x02, "Hong-Kong/Taiwan" )
   307: //	PORT_DIPSETTING(    0x03, "Japan" )
   308: 	PORT_DIPSETTING(    0x04, "Korea" )
   309: //	PORT_DIPSETTING(    0x05, "Japan" )
   310: //	PORT_DIPSETTING(    0x06, "Japan" )
   311: //	PORT_DIPSETTING(    0x07, "Japan" )
   312: 	PORT_DIPSETTING(    0x08, "World" )
   313: 	/* 0x09 to 0x0f : "Japan" */
   314: 
   315: #if TAOTAIDO_SHOW_ALL_INPUTS 
   316: 	/* These inputs are only to fit the test mode - leftover from another game ? */
   317: 	PORT_START	/* Player 3 inputs (0xffffa1.b) */
   318: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER3 )
   319: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3 )
   320: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER3 )
   321: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
   322: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
   323: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
   324: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
   325: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   326: 
   327: 	PORT_START	/* Player 4 inputs (0xffffa3.b) */
   328: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER4 )
   329: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER4 )
   330: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER4 )
   331: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
   332: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
   333: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
   334: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
   335: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   336: #endif 
   337: INPUT_PORTS_END
   338: 
   339: 
   340: static struct GfxLayout taotaido_layout =
   341: {
   342: 	16,16,
   343: 	RGN_FRAC(1,1),
   344: 	4,
   345: 	{ 0, 1, 2, 3 },
   346: 	{ 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4,
   347: 			9*4, 8*4, 11*4, 10*4, 13*4, 12*4, 15*4, 14*4 },
   348: 	{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
   349: 			8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
   350: 	128*8
   351: };
   352: 
   353: static struct GfxDecodeInfo gfxdecodeinfo[] =
   354: {
   355: 	{ REGION_GFX1, 0, &taotaido_layout,  0x000, 256  }, /* sprites */
   356: 	{ REGION_GFX2, 0, &taotaido_layout,  0x300, 256  }, /* bg tiles */
   357: 	{ -1 } /* end of array */
   358: };
   359: 
   360: static void irqhandler(int irq)
   361: {
   362: 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
   363: }
   364: 
   365: static struct YM2610interface ym2610_interface =
   366: {
   367: 	1,
   368: 	8000000,	/* 8 MHz??? */
   369: 	{ 25 },
   370: 	{ 0 },
   371: 	{ 0 },
   372: 	{ 0 },
   373: 	{ 0 },
   374: 	{ irqhandler },
   375: 	{ REGION_SOUND1 },
   376: 	{ REGION_SOUND2 },
   377: 	{ YM3012_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) }
   378: };
   379: 
   380: static MACHINE_DRIVER_START( taotaido )
   381: 	MDRV_CPU_ADD(M68000, 32000000/2)
   382: 	MDRV_CPU_MEMORY(taotaido_readmem,taotaido_writemem)
   383: 	MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
   384: 
   385: 	MDRV_CPU_ADD(Z80,20000000/4) // ??
   386: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
   387: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   388: 	MDRV_CPU_PORTS(taotaido_sound_readport,taotaido_sound_writeport)
   389: 								/* IRQs are triggered by the YM2610 */
   390: 
   391: 	MDRV_FRAMES_PER_SECOND(60)
   392: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   393: 
   394: 	MDRV_GFXDECODE(gfxdecodeinfo)
   395: 
   396: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER )
   397: 	MDRV_SCREEN_SIZE(40*8, 32*8)
   398: 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
   399: 	MDRV_PALETTE_LENGTH(0x800)
   400: 
   401: 	MDRV_VIDEO_START(taotaido)
   402: 	MDRV_VIDEO_UPDATE(taotaido)
   403: 	MDRV_VIDEO_EOF( taotaido )
   404: 
   405: 	/* sound hardware */
   406: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   407: 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
   408: MACHINE_DRIVER_END
   409: 
   410: 
   411: ROM_START( taotaido )
   412: 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */
   413: 	ROM_LOAD16_WORD_SWAP( "1-u90.bin", 0x00000, 0x80000, CRC(a3ee30da) SHA1(920a83ce9192bf785bffdc041e280f1a420de4c9) )
   414: 	ROM_LOAD16_WORD_SWAP( "2-u91.bin", 0x80000, 0x80000, CRC(30b7e4fb) SHA1(15e1f6d252c736fdee33b691a0a1a45f0307bffb) )
   415: 
   416: 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* z80 Code */
   417: 	ROM_LOAD( "3-u113.bin", 0x000000, 0x20000, CRC(a167c4e4) SHA1(d32184e7040935cd440d4d82c66491b710ec87a8) )
   418: 	ROM_RELOAD ( 0x10000, 0x20000 )
   419: 
   420: 	ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* sound samples */
   421: 	ROM_LOAD( "u104.bin",     0x000000, 0x100000, CRC(e89387a9) SHA1(1deeee056af367d1a5aa0722dd3d6c68a82d0489) )
   422: 
   423: 	ROM_REGION( 0x200000, REGION_SOUND2, 0 ) /* sound samples */
   424: 	ROM_LOAD( "u127.bin",     0x00000, 0x200000, CRC(0cf0cb23) SHA1(a87e7159db2fa0d50446cbf45ec9fbf585b8f396) )
   425: 
   426: 	ROM_REGION( 0x600000, REGION_GFX1, 0 ) /* Sprites */
   427: 	ROM_LOAD( "u86.bin", 0x000000, 0x200000, CRC(908e251e) SHA1(5a135787f3263bfb195f8fd1e814c580d840531f) )
   428: 	ROM_LOAD( "u87.bin", 0x200000, 0x200000, CRC(c4290ba6) SHA1(4132ffad4668f1dd3f708f009e18435e7dd60120) )
   429: 	ROM_LOAD( "u88.bin", 0x400000, 0x200000, CRC(407d9aeb) SHA1(d532c7b80f6c192dba86542fb6eb3ef24fbbbdb9) )
   430: 
   431: 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* BG Tiles */
   432: 	ROM_LOAD( "u15.bin", 0x000000, 0x200000, CRC(e95823e9) SHA1(362583944ad4fdde4f9e29928cf34376c7ad931f) )
   433: ROM_END
   434: 
   435: ROM_START( taotaida )
   436: 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */
   437: 	ROM_LOAD16_WORD_SWAP( "tt0-u90.bin", 0x00000, 0x80000, CRC(69d4cca7) SHA1(f1aba74fef8fe4271d19763f428fc0e2674d08b3) )
   438: 	ROM_LOAD16_WORD_SWAP( "tt1-u91.bin", 0x80000, 0x80000, CRC(41025469) SHA1(fa3a424ca3ecb513f418e436e4191ff76f6a0de1) )
   439: 
   440: 	ROM_REGION( 0x30000, REGION_CPU2, 0 ) /* z80 Code */
   441: 	ROM_LOAD( "3-u113.bin", 0x000000, 0x20000, CRC(a167c4e4) SHA1(d32184e7040935cd440d4d82c66491b710ec87a8) )
   442: 	ROM_RELOAD ( 0x10000, 0x20000 )
   443: 
   444: 	ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* sound samples */
   445: 	ROM_LOAD( "u104.bin",     0x000000, 0x100000, CRC(e89387a9) SHA1(1deeee056af367d1a5aa0722dd3d6c68a82d0489) )
   446: 
   447: 	ROM_REGION( 0x200000, REGION_SOUND2, 0 ) /* sound samples */
   448: 	ROM_LOAD( "u127.bin",     0x00000, 0x200000, CRC(0cf0cb23) SHA1(a87e7159db2fa0d50446cbf45ec9fbf585b8f396) )
   449: 
   450: 	ROM_REGION( 0x600000, REGION_GFX1, 0 ) /* Sprites */
   451: 	ROM_LOAD( "u86.bin", 0x000000, 0x200000, CRC(908e251e) SHA1(5a135787f3263bfb195f8fd1e814c580d840531f) )
   452: 	ROM_LOAD( "u87.bin", 0x200000, 0x200000, CRC(c4290ba6) SHA1(4132ffad4668f1dd3f708f009e18435e7dd60120) )
   453: 	ROM_LOAD( "u88.bin", 0x400000, 0x200000, CRC(407d9aeb) SHA1(d532c7b80f6c192dba86542fb6eb3ef24fbbbdb9) )
   454: 
   455: 	ROM_REGION( 0x200000, REGION_GFX2, 0 ) /* BG Tiles */
   456: 	ROM_LOAD( "u15.bin", 0x000000, 0x200000, CRC(e95823e9) SHA1(362583944ad4fdde4f9e29928cf34376c7ad931f) )
   457: ROM_END
   458: 
   459: GAMEX( 1993, taotaido, 0,        taotaido, taotaido, 0, ROT0, "Video System Co.", "Tao Taido (set 1)", GAME_NO_COCKTAIL )
   460: GAMEX( 1993, taotaida, taotaido, taotaido, taotaido, 0, ROT0, "Video System Co.", "Tao Taido (set 2)", GAME_NO_COCKTAIL )
   461: 




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