summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ataxx.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ataxx.c')
-rw-r--r--src/mame/drivers/ataxx.c848
1 files changed, 848 insertions, 0 deletions
diff --git a/src/mame/drivers/ataxx.c b/src/mame/drivers/ataxx.c
new file mode 100644
index 00000000000..f352d3de640
--- /dev/null
+++ b/src/mame/drivers/ataxx.c
@@ -0,0 +1,848 @@
+/***************************************************************************
+
+ Leland Ataxx-era driver
+
+ driver by Aaron Giles and Paul Leaman
+
+ Games supported:
+ * Ataxx
+ * World Soccer Finals
+ * Danny Sullivan's Indy Heat
+ * Brute Force
+ * Asylum (prototype)
+
+****************************************************************************
+
+ To enter service mode in Ataxx and Brute Force, press 1P start and
+ then press the service switch (F2).
+
+ For World Soccer Finals, press the 1P button B and then press the
+ service switch.
+
+ For Indy Heat, press the red turbo button (1P button 1) and then
+ press the service switch.
+
+***************************************************************************/
+
+
+#include "driver.h"
+#include "machine/eeprom.h"
+#include "cpu/z80/z80.h"
+#include "leland.h"
+#include "sound/2151intf.h"
+#include "sound/custom.h"
+
+
+
+/*************************************
+ *
+ * Master CPU memory handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( master_map_program, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x1fff) AM_ROM
+ AM_RANGE(0x2000, 0x9fff) AM_ROMBANK(1)
+ AM_RANGE(0xa000, 0xdfff) AM_ROMBANK(2)
+ AM_RANGE(0xa000, 0xdfff) AM_WRITE(ataxx_battery_ram_w)
+ AM_RANGE(0xe000, 0xf7ff) AM_RAM
+ AM_RANGE(0xf800, 0xffff) AM_READWRITE(ataxx_paletteram_and_misc_r, ataxx_paletteram_and_misc_w) AM_BASE(&paletteram)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( master_map_io, ADDRESS_SPACE_IO, 8 )
+ ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
+ AM_RANGE(0x04, 0x04) AM_READ(leland_80186_response_r)
+ AM_RANGE(0x05, 0x05) AM_WRITE(leland_80186_command_hi_w)
+ AM_RANGE(0x06, 0x06) AM_WRITE(leland_80186_command_lo_w)
+ AM_RANGE(0x0c, 0x0c) AM_WRITE(ataxx_80186_control_w)
+ AM_RANGE(0x20, 0x20) AM_READWRITE(ataxx_eeprom_r, ataxx_eeprom_w)
+ AM_RANGE(0xd0, 0xef) AM_READWRITE(ataxx_mvram_port_r, ataxx_mvram_port_w)
+ AM_RANGE(0xf0, 0xff) AM_READWRITE(ataxx_master_input_r, ataxx_master_output_w)
+ADDRESS_MAP_END
+
+
+
+
+/*************************************
+ *
+ * Slave CPU memory handlers
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( slave_map_program, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x1fff) AM_ROM
+ AM_RANGE(0x2000, 0x9fff) AM_ROMBANK(3)
+ AM_RANGE(0xa000, 0xdfff) AM_ROM
+ AM_RANGE(0xe000, 0xefff) AM_RAM
+ AM_RANGE(0xfffc, 0xfffd) AM_WRITE(leland_slave_video_addr_w)
+ AM_RANGE(0xfffe, 0xfffe) AM_READ(leland_raster_r)
+ AM_RANGE(0xffff, 0xffff) AM_WRITE(ataxx_slave_banksw_w)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( slave_map_io, ADDRESS_SPACE_IO, 8 )
+ ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
+ AM_RANGE(0x60, 0x7f) AM_READWRITE(ataxx_svram_port_r, ataxx_svram_port_w)
+ADDRESS_MAP_END
+
+
+
+/*************************************
+ *
+ * Port definitions
+ *
+ *************************************/
+
+/* Helps document the input ports. */
+#define IPT_SLAVEHALT IPT_SPECIAL
+#define IPT_EEPROM_DATA IPT_SPECIAL
+
+
+static INPUT_PORTS_START( ataxx )
+ PORT_START /* 0xF6 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* huh? affects trackball movement */
+ PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+
+ PORT_START /* 0xF7 */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SLAVEHALT )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_VBLANK )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x20 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_EEPROM_DATA )
+ PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x00 - analog X */
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
+ PORT_START /* 0x01 - analog Y */
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
+ PORT_START /* 0x02 - analog X */
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2)
+ PORT_START /* 0x03 - analog Y */
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( wsf )
+ PORT_START /* 0xF6 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+
+ PORT_START /* 0xF7 */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SLAVEHALT )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_VBLANK )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x20 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_EEPROM_DATA )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
+ PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x0D */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+
+ PORT_START /* 0x0E */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+
+ PORT_START /* 0x0F */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START3 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( indyheat )
+ PORT_START /* 0xF6 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(1)
+ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+
+ PORT_START /* 0xF7 */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SLAVEHALT )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_VBLANK )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x20 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_EEPROM_DATA )
+ PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* Analog wheel 1 */
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
+ PORT_START /* Analog wheel 2 */
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2)
+ PORT_START /* Analog wheel 3 */
+ PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(3)
+ PORT_START /* Analog pedal 1 */
+ PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
+ PORT_START /* Analog pedal 2 */
+ PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2)
+ PORT_START /* Analog pedal 3 */
+ PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(3)
+
+ PORT_START /* 0x0D */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x0E */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x0F */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x7e, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( brutforc )
+ PORT_START /* 0xF6 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_IMPULSE(1)
+ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
+
+ PORT_START /* 0xF7 */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SLAVEHALT )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_VBLANK )
+ PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x20 */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_EEPROM_DATA )
+ PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x0D */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x0E */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START /* 0x0F */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+
+
+/*************************************
+ *
+ * Graphics definitions
+ *
+ *************************************/
+
+static const gfx_layout bklayout =
+{
+ 8,8,
+ RGN_FRAC(1,6),
+ 6,
+ { RGN_FRAC(5,6), RGN_FRAC(4,6), RGN_FRAC(3,6), RGN_FRAC(2,6), RGN_FRAC(1,6), RGN_FRAC(0,6) },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*8
+};
+
+static GFXDECODE_START( ataxx )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, bklayout, 0, 1 )
+GFXDECODE_END
+
+
+
+/*************************************
+ *
+ * Sound definitions
+ *
+ *************************************/
+
+static struct CustomSound_interface i80186_custom_interface =
+{
+ leland_80186_sh_start
+};
+
+
+
+/*************************************
+ *
+ * Machine driver
+ *
+ *************************************/
+
+static MACHINE_DRIVER_START( ataxx )
+
+ /* basic machine hardware */
+ MDRV_CPU_ADD_TAG("master", Z80, 6000000)
+ MDRV_CPU_PROGRAM_MAP(master_map_program,0)
+ MDRV_CPU_IO_MAP(master_map_io,0)
+
+ MDRV_CPU_ADD_TAG("slave", Z80, 6000000)
+ MDRV_CPU_PROGRAM_MAP(slave_map_program,0)
+ MDRV_CPU_IO_MAP(slave_map_io,0)
+
+ MDRV_CPU_ADD_TAG("sound", I80186, 16000000/2)
+ /* audio CPU */
+ MDRV_CPU_PROGRAM_MAP(leland_80186_map_program,0)
+ MDRV_CPU_IO_MAP(ataxx_80186_map_io,0)
+
+ MDRV_SCREEN_REFRESH_RATE(60)
+
+ MDRV_MACHINE_START(ataxx)
+ MDRV_MACHINE_RESET(ataxx)
+ MDRV_NVRAM_HANDLER(ataxx)
+
+ /* video hardware */
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
+ MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MDRV_SCREEN_SIZE(40*8, 32*8)
+ MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
+ MDRV_GFXDECODE(ataxx)
+ MDRV_PALETTE_LENGTH(1024)
+
+ MDRV_VIDEO_START(ataxx)
+ MDRV_VIDEO_EOF(leland)
+ MDRV_VIDEO_UPDATE(ataxx)
+
+ /* sound hardware */
+ MDRV_SPEAKER_STANDARD_MONO("mono")
+
+ MDRV_SOUND_ADD(CUSTOM, 0)
+ MDRV_SOUND_CONFIG(i80186_custom_interface)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_DRIVER_END
+
+
+static MACHINE_DRIVER_START( wsf )
+
+ /* basic machine hardware */
+ MDRV_IMPORT_FROM(ataxx)
+
+ /* sound hardware */
+ MDRV_SOUND_ADD(YM2151, 4000000)
+ MDRV_SOUND_ROUTE(0, "mono", 0.40)
+ MDRV_SOUND_ROUTE(1, "mono", 0.40)
+MACHINE_DRIVER_END
+
+
+
+/*************************************
+ *
+ * ROM definitions
+ *
+ *************************************/
+
+ROM_START( ataxx )
+ ROM_REGION( 0x30000, REGION_CPU1, 0 )
+ ROM_LOAD( "e-302-31005-04.u38", 0x00000, 0x20000, CRC(e1cf6236) SHA1(fabf423a006b1db22273c6fffa03edc148d7d957) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x60000, REGION_CPU2, 0 )
+ ROM_LOAD( "e-302-31012-01.u111", 0x00000, 0x20000, CRC(9a3297cc) SHA1(1dfa0bacd2f2b18d44bfc2d55c40291c1b142f8f) )
+ ROM_LOAD( "e-302-31013-01.u112", 0x20000, 0x20000, CRC(7e7c3e2f) SHA1(a7e31e1f1b09414c40ab9ace5e9bffbdbaee8704) )
+ ROM_LOAD( "e-302-31014-01.u113", 0x40000, 0x20000, CRC(8cf3e101) SHA1(672a3a0ca0f5334cf614bc49cbc1ae5ccea54cbe) )
+
+ ROM_REGION( 0x100000, REGION_CPU3, 0 )
+ ROM_LOAD16_BYTE( "e-302-31003-01.u15", 0x20001, 0x20000, CRC(8bb3233b) SHA1(5131ad78bdf904cde36534e99efa5576fcea25c0) )
+ ROM_LOAD16_BYTE( "e-302-31001-01.u1", 0x20000, 0x20000, CRC(728d75f2) SHA1(d9e8e742cc2d536bd62370c1e474c7036e4392bb) )
+ ROM_LOAD16_BYTE( "e-302-31004-01.u16", 0x60001, 0x20000, CRC(f2bdff48) SHA1(f34eb16ea180effffd81d637acc3d96bffaf81c9) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "e-302-31002-01.u2", 0x60000, 0x20000, CRC(ca06a394) SHA1(0858908bd150dd7354536e10b2a386b45f17ac9f) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "e-302-31006-01.u98", 0x00000, 0x20000, CRC(59d0f2ae) SHA1(8da5dc006e192af98458227e79421b6a07ac1cdc) )
+ ROM_LOAD( "e-302-31007-01.u99", 0x20000, 0x20000, CRC(6ab7db25) SHA1(25c2fa23b99ac4bab5a9b851c2087de44512a5c2) )
+ ROM_LOAD( "e-302-31008-01.u100", 0x40000, 0x20000, CRC(2352849e) SHA1(f49394b6efb6a87d86516ec0a5ddd582f96f7e5d) )
+ ROM_LOAD( "e-302-31009-01.u101", 0x60000, 0x20000, CRC(4c31e02b) SHA1(2d8dd97a2a737bafb44dced7ce3eef22d7d14cbe) )
+ ROM_LOAD( "e-302-31010-01.u102", 0x80000, 0x20000, CRC(a951228c) SHA1(7ec5cf4d0aa3702be9236d155bea373a06c0be03) )
+ ROM_LOAD( "e-302-31011-01.u103", 0xa0000, 0x20000, CRC(ed326164) SHA1(8706192f525ece200587cee7e7beb4a1975bf63e) )
+
+ ROM_REGION( 0x00001, REGION_USER1, ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
+ /* Empty / not used */
+ROM_END
+
+
+ROM_START( ataxxa )
+ ROM_REGION( 0x30000, REGION_CPU1, 0 )
+ ROM_LOAD( "u38.u38", 0x00000, 0x20000, CRC(3378937d) SHA1(3c62da7e11b2860c7fe3a35c077cadcf4d0272ca) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x60000, REGION_CPU2, 0 )
+ ROM_LOAD( "e-302-31012-01.u111", 0x00000, 0x20000, CRC(9a3297cc) SHA1(1dfa0bacd2f2b18d44bfc2d55c40291c1b142f8f) )
+ ROM_LOAD( "e-302-31013-01.u112", 0x20000, 0x20000, CRC(7e7c3e2f) SHA1(a7e31e1f1b09414c40ab9ace5e9bffbdbaee8704) )
+ ROM_LOAD( "e-302-31014-01.u113", 0x40000, 0x20000, CRC(8cf3e101) SHA1(672a3a0ca0f5334cf614bc49cbc1ae5ccea54cbe) )
+
+ ROM_REGION( 0x100000, REGION_CPU3, 0 )
+ ROM_LOAD16_BYTE( "e-302-31003-01.u15", 0x20001, 0x20000, CRC(8bb3233b) SHA1(5131ad78bdf904cde36534e99efa5576fcea25c0) )
+ ROM_LOAD16_BYTE( "e-302-31001-01.u1", 0x20000, 0x20000, CRC(728d75f2) SHA1(d9e8e742cc2d536bd62370c1e474c7036e4392bb) )
+ ROM_LOAD16_BYTE( "e-302-31004-01.u16", 0x60001, 0x20000, CRC(f2bdff48) SHA1(f34eb16ea180effffd81d637acc3d96bffaf81c9) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "e-302-31002-01.u2", 0x60000, 0x20000, CRC(ca06a394) SHA1(0858908bd150dd7354536e10b2a386b45f17ac9f) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "e-302-31006-01.u98", 0x00000, 0x20000, CRC(59d0f2ae) SHA1(8da5dc006e192af98458227e79421b6a07ac1cdc) )
+ ROM_LOAD( "e-302-31007-01.u99", 0x20000, 0x20000, CRC(6ab7db25) SHA1(25c2fa23b99ac4bab5a9b851c2087de44512a5c2) )
+ ROM_LOAD( "e-302-31008-01.u100", 0x40000, 0x20000, CRC(2352849e) SHA1(f49394b6efb6a87d86516ec0a5ddd582f96f7e5d) )
+ ROM_LOAD( "e-302-31009-01.u101", 0x60000, 0x20000, CRC(4c31e02b) SHA1(2d8dd97a2a737bafb44dced7ce3eef22d7d14cbe) )
+ ROM_LOAD( "e-302-31010-01.u102", 0x80000, 0x20000, CRC(a951228c) SHA1(7ec5cf4d0aa3702be9236d155bea373a06c0be03) )
+ ROM_LOAD( "e-302-31011-01.u103", 0xa0000, 0x20000, CRC(ed326164) SHA1(8706192f525ece200587cee7e7beb4a1975bf63e) )
+
+ ROM_REGION( 0x00001, REGION_USER1, ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
+ /* Empty / not used */
+ROM_END
+
+
+ROM_START( ataxxj )
+ ROM_REGION( 0x30000, REGION_CPU1, 0 )
+ ROM_LOAD( "ataxxj.u38", 0x00000, 0x20000, CRC(513fa7d4) SHA1(1aada72214c0165d76667935855bf996a5b3d55b) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+
+ ROM_REGION( 0x60000, REGION_CPU2, 0 )
+ ROM_LOAD( "e-302-31012-01.u111", 0x00000, 0x20000, CRC(9a3297cc) SHA1(1dfa0bacd2f2b18d44bfc2d55c40291c1b142f8f) )
+ ROM_LOAD( "e-302-31013-01.u112", 0x20000, 0x20000, CRC(7e7c3e2f) SHA1(a7e31e1f1b09414c40ab9ace5e9bffbdbaee8704) )
+ ROM_LOAD( "e-302-31014-01.u113", 0x40000, 0x20000, CRC(8cf3e101) SHA1(672a3a0ca0f5334cf614bc49cbc1ae5ccea54cbe) )
+
+ ROM_REGION( 0x100000, REGION_CPU3, 0 )
+ ROM_LOAD16_BYTE( "ataxxj.u15", 0x20001, 0x20000, CRC(db266d3f) SHA1(31c9baf4548b23e1e1939069620a937ee98a7b09) )
+ ROM_LOAD16_BYTE( "ataxxj.u1", 0x20000, 0x20000, CRC(d6db2724) SHA1(d3c7b45b165eb7c9a6369863b273ecac5c31ca65) )
+ ROM_LOAD16_BYTE( "ataxxj.u16", 0x60001, 0x20000, CRC(2b127f56) SHA1(909fed387ad6bb1d83f9cee271e6dc851ac50525) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "ataxxj.u2", 0x60000, 0x20000, CRC(1b63b882) SHA1(cb04e641fc173f787a0f48c98f5198db265c26d8) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "e-302-31006-01.u98", 0x00000, 0x20000, CRC(59d0f2ae) SHA1(8da5dc006e192af98458227e79421b6a07ac1cdc) )
+ ROM_LOAD( "e-302-31007-01.u99", 0x20000, 0x20000, CRC(6ab7db25) SHA1(25c2fa23b99ac4bab5a9b851c2087de44512a5c2) )
+ ROM_LOAD( "e-302-31008-01.u100", 0x40000, 0x20000, CRC(2352849e) SHA1(f49394b6efb6a87d86516ec0a5ddd582f96f7e5d) )
+ ROM_LOAD( "e-302-31009-01.u101", 0x60000, 0x20000, CRC(4c31e02b) SHA1(2d8dd97a2a737bafb44dced7ce3eef22d7d14cbe) )
+ ROM_LOAD( "e-302-31010-01.u102", 0x80000, 0x20000, CRC(a951228c) SHA1(7ec5cf4d0aa3702be9236d155bea373a06c0be03) )
+ ROM_LOAD( "e-302-31011-01.u103", 0xa0000, 0x20000, CRC(ed326164) SHA1(8706192f525ece200587cee7e7beb4a1975bf63e) )
+
+ ROM_REGION( 0x00001, REGION_USER1, ROMREGION_ERASEFF ) /* X-ROM (data used by main processor) */
+ /* Empty / not used */
+ROM_END
+
+
+ROM_START( wsf )
+ ROM_REGION( 0x50000, REGION_CPU1, 0 )
+ ROM_LOAD( "30022-03.u64", 0x00000, 0x20000, CRC(2e7faa96) SHA1(d43915a433133eca650fabece61a4a65642b39f6) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ ROM_LOAD( "30023-03.u65", 0x30000, 0x20000, CRC(7146328f) SHA1(390b98a2cd54a981eb4fafba700ff2fa1e379a32) )
+
+ ROM_REGION( 0x100000, REGION_CPU2, 0 )
+ ROM_LOAD( "30001-01.151", 0x00000, 0x20000, CRC(31c63af5) SHA1(268093ade200241339b6f60a00123bbf73325e38) )
+ ROM_LOAD( "30002-01.152", 0x20000, 0x20000, CRC(a53e88a6) SHA1(0b7748b70d6dd9fcc1a22646e8af20f3baa4aa40) )
+ ROM_LOAD( "30003-01.153", 0x40000, 0x20000, CRC(12afad1d) SHA1(848549db714b46497176e42d6f2088ba3d6ab2f4) )
+ ROM_LOAD( "30004-01.154", 0x60000, 0x20000, CRC(b8b3d59c) SHA1(9ba6e25bb5132c556557a0395ce1d982c0853426) )
+ ROM_LOAD( "30005-01.155", 0x80000, 0x20000, CRC(505724b9) SHA1(f8a29e3e7f0a146f2daf67883de12533b2ed7341) )
+ ROM_LOAD( "30006-01.156", 0xa0000, 0x20000, CRC(c86b5c4d) SHA1(f04d8fc1e8f872f406fcad69ff71ed695f42797a) )
+ ROM_LOAD( "30007-01.157", 0xc0000, 0x20000, CRC(451321ae) SHA1(da82f0bba4341b087136afa17767b64389a0f8f4) )
+ ROM_LOAD( "30008-01.158", 0xe0000, 0x20000, CRC(4d23836f) SHA1(7b5b9419774e7537e69017c4c44a0601b6e93714) )
+
+ ROM_REGION( 0x100000, REGION_CPU3, 0 )
+ ROM_LOAD16_BYTE( "30017-01.u3", 0x20001, 0x20000, CRC(39ec13c1) SHA1(4067da05cbaf205ab7cc14a3370220ad98b394cd) )
+ ROM_LOAD16_BYTE( "30020-01.u6", 0x20000, 0x20000, CRC(532c02bf) SHA1(a2070d57f1ce2a68a064872ea7b77ba418187cfe) )
+ ROM_LOAD16_BYTE( "30018-01.u4", 0x60001, 0x20000, CRC(1ec16735) SHA1(86766742b50edd25cfeef6f808d2733c484eca4e) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "30019-01.u5", 0x60000, 0x20000, CRC(2881f73b) SHA1(414d974018fb4518c46b913184b07add69251724) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0x60000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "30011-02.145", 0x00000, 0x10000, CRC(6153569b) SHA1(b6a106c8b87a9a3f01eff3854d0c1f2c4a64fd94) )
+ ROM_LOAD( "30012-02.146", 0x10000, 0x10000, CRC(52d65e21) SHA1(25f63aa29dc7e7673043e1f43e357a5232a1be9e) )
+ ROM_LOAD( "30013-02.147", 0x20000, 0x10000, CRC(b3afda12) SHA1(52bf780c642f0092114aeb994e6571c034f198a0) )
+ ROM_LOAD( "30014-02.148", 0x30000, 0x10000, CRC(624e6c64) SHA1(02240adcf4433543c8f7ad8904c34400f25409cc) )
+ ROM_LOAD( "30015-01.149", 0x40000, 0x10000, CRC(5d9064f2) SHA1(7a68a379aa6a6cd0518e8a4107b2e646f5700c2b) )
+ ROM_LOAD( "30016-01.150", 0x50000, 0x10000, CRC(d76389cd) SHA1(2b7e6cd662ffde177b110ad0ed2e42fe4ccf811f) )
+
+ ROM_REGION( 0x20000, REGION_USER1, 0 ) /* X-ROM (data used by main processor) */
+ ROM_LOAD( "30009-01.u68", 0x00000, 0x10000, CRC(f2fbfc15) SHA1(712cfa7b11135b1f568f38cc478ef5a3330d0608) )
+ ROM_LOAD( "30010-01.u69", 0x10000, 0x10000, CRC(b4ed2d3b) SHA1(61c9d86b63cf000187a105c6eed967fecb2f3c1c) )
+
+ ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* externally clocked DAC data */
+ ROM_LOAD( "30021-01.u8", 0x00000, 0x20000, CRC(bb91dc10) SHA1(a7d8676867b5cfe1049040e593985af57ef04334) )
+ROM_END
+
+
+ROM_START( indyheat )
+ ROM_REGION( 0x90000, REGION_CPU1, 0 )
+ ROM_LOAD( "u64_27c.010", 0x00000, 0x20000, CRC(2b97a347) SHA1(958a774e9ea3678c0fdd2466e578df8267b4413e) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ ROM_LOAD( "u65_27c.010", 0x30000, 0x20000, CRC(71301d74) SHA1(bbabc71aa8d56f6984de573f0fb5d3fea35421a9) )
+ ROM_LOAD( "u66_27c.010", 0x50000, 0x20000, CRC(c9612072) SHA1(d00bf703ce4ad0a344b3d8afcd1f45c3c82b54fe) )
+ ROM_LOAD( "u67_27c.010", 0x70000, 0x20000, CRC(4c4b25e0) SHA1(f07d347cc844df2d824853af8dbfc557933e7765) )
+
+ ROM_REGION( 0x160000, REGION_CPU2, 0 )
+ ROM_LOAD( "u151_27c.010", 0x00000, 0x20000, CRC(2622dfa4) SHA1(759e46540ad9f2ed540314b174c88f7365214051) )
+ ROM_LOAD( "u152_27c.020", 0x20000, 0x20000, CRC(ad40e4e2) SHA1(58c3df82551199fb3f28c6459aedc2117caf520e) )
+ ROM_CONTINUE( 0x120000, 0x20000 )
+ ROM_LOAD( "u153_27c.020", 0x40000, 0x20000, CRC(1e3803f7) SHA1(e3862ed748cdd0dffdde8e1435c20c7388e698dd) )
+ ROM_CONTINUE( 0x140000, 0x20000 )
+ ROM_LOAD( "u154_27c.010", 0x60000, 0x20000, CRC(76d3c235) SHA1(48b46fe465c6db4dc46a64245a6c69b21b54ab6f) )
+ ROM_LOAD( "u155_27c.010", 0x80000, 0x20000, CRC(d5d866b3) SHA1(2584e2299bdbc50c836ae86a1c4b7e68c65a49cd) )
+ ROM_LOAD( "u156_27c.010", 0xa0000, 0x20000, CRC(7fe71842) SHA1(4ba09ccba29f9feef89ce61155e2508e800cdee8) )
+ ROM_LOAD( "u157_27c.010", 0xc0000, 0x20000, CRC(a6462adc) SHA1(bdc744e3c836715874d40b9e32f509f288ce00fd) )
+ ROM_LOAD( "u158_27c.010", 0xe0000, 0x20000, CRC(d6ef27a3) SHA1(37fcf772ce564a9300f9dd437b9015a2d25b46b5) )
+
+ ROM_REGION( 0x100000, REGION_CPU3, 0 )
+ ROM_LOAD16_BYTE( "u3_27c.010", 0x20001, 0x20000, CRC(97413818) SHA1(64caa14e05dd9ec43ce13f5c738df1f39f5fa75c) )
+ ROM_LOAD16_BYTE( "u6_27c.010", 0x20000, 0x20000, CRC(15a89962) SHA1(52f66e1ccde0ef3fb7959a207cc967237e37833e) )
+ ROM_LOAD16_BYTE( "u4_27c.010", 0x60001, 0x20000, CRC(fa7bfa04) SHA1(0174f5372117d15bf0ecd48b72c9cca4cf8bb75f) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "u5_27c.010", 0x60000, 0x20000, CRC(198285d4) SHA1(8f6b3cba2bc729f2e0623578b13720ead91333e4) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0xc0000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "u145_27c.010", 0x00000, 0x20000, CRC(612d4bf8) SHA1(035cc8723524e2c6aa79ffa7d7c1f6fb0a25cc51) )
+ ROM_LOAD( "u146_27c.010", 0x20000, 0x20000, CRC(77a725f6) SHA1(9bb521ed7202387bbf2670f9b1ae3cbe5064ae03) )
+ ROM_LOAD( "u147_27c.010", 0x40000, 0x20000, CRC(d6aac372) SHA1(49f5f5d6c2a82ea15905086a2f8e3ea061d37dfc) )
+ ROM_LOAD( "u148_27c.010", 0x60000, 0x20000, CRC(5d19723e) SHA1(a6f09b92c95321962f62a17fc0ccdbfbf78b8b88) )
+ ROM_LOAD( "u149_27c.010", 0x80000, 0x20000, CRC(29056791) SHA1(343452b883f139eb09da6b5f384aa680d3a2218c) )
+ ROM_LOAD( "u150_27c.010", 0xa0000, 0x20000, CRC(cb73dd6a) SHA1(60aabedbab409acaf8ba4f2366125290825971a4) )
+
+ ROM_REGION( 0x40000, REGION_USER1, 0 ) /* X-ROM (data used by main processor) */
+ ROM_LOAD( "u68_27c.010", 0x00000, 0x10000, CRC(9e88efb3) SHA1(983bc22c9401b9d6c959dd211b6b7dfa1a6c14e2) )
+ ROM_CONTINUE( 0x20000, 0x10000 )
+ ROM_LOAD( "u69_27c.010", 0x10000, 0x10000, CRC(aa39fcb3) SHA1(0cb328d784cda3e0dff3a018f52f9b06bc5d46b8) )
+ ROM_CONTINUE( 0x30000, 0x10000 )
+
+ ROM_REGION( 0x40000, REGION_SOUND1, 0 ) /* externally clocked DAC data */
+ ROM_LOAD( "u8_27c.010", 0x00000, 0x20000, CRC(9f16e5b6) SHA1(0ea814db7f647f39d11dcde793a17831fca3bddd) )
+ ROM_LOAD( "u9_27c.010", 0x20000, 0x20000, CRC(0dc8f488) SHA1(2ff0f45f17b8a182afdaa5603e7a1af70e6336b7) )
+ROM_END
+
+
+ROM_START( brutforc )
+ ROM_REGION( 0x90000, REGION_CPU1, 0 )
+ ROM_LOAD( "u64", 0x00000, 0x20000, CRC(008ae3b8) SHA1(bc9fdba761501efeaf665ac33ff1ad6935d70638) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ ROM_LOAD( "u65", 0x30000, 0x20000, CRC(6036e3fa) SHA1(eba79e92f3de7afdd6e404cabb4b8cfad09cf50b) )
+ ROM_LOAD( "u66", 0x50000, 0x20000, CRC(7ebf0795) SHA1(6b25ccac88ff61be3c461eb49908fbecf509434f) )
+ ROM_LOAD( "u67", 0x70000, 0x20000, CRC(e3cbf8b4) SHA1(ceaefc454385ee1dfbfe2d211a72af0883967bc0) )
+
+ ROM_REGION( 0x100000, REGION_CPU2, 0 )
+ ROM_LOAD( "u151", 0x00000, 0x20000, CRC(bd3b677b) SHA1(8ac32b9598a97d9910ac31948f166e9474df07fa) )
+ ROM_LOAD( "u152", 0x20000, 0x20000, CRC(5f4434e7) SHA1(2b8eb2f6ede328c88b7977e3bea73d00dcaa8f6f) )
+ ROM_LOAD( "u153", 0x40000, 0x20000, CRC(20f7df53) SHA1(6ea4600a9cffbc414f546fcd8c036faaa6d7fffd) )
+ ROM_LOAD( "u154", 0x60000, 0x20000, CRC(69ce2329) SHA1(24819883631e987a201e7dea0684410e74b9d56d) )
+ ROM_LOAD( "u155", 0x80000, 0x20000, CRC(33d92e25) SHA1(fe47da054e12f7e16631cb7cb0279ace717b945b) )
+ ROM_LOAD( "u156", 0xa0000, 0x20000, CRC(de7eca8b) SHA1(a5d452c0cb52be16560ccd67d423bdf33d58ec58) )
+ ROM_LOAD( "u157", 0xc0000, 0x20000, CRC(e42b3dba) SHA1(ed3707932507bcddd0191e36e2f5479b2ce2e642) )
+ ROM_LOAD( "u158", 0xe0000, 0x20000, CRC(a0aa3220) SHA1(bd9bffa4fcf76e34a72a497d322c0430cbc7c81e) )
+
+ ROM_REGION( 0x100000, REGION_CPU3, 0 )
+ ROM_LOAD16_BYTE( "u3", 0x20001, 0x20000, CRC(9984906c) SHA1(66626ea32fb510a9bb1974e41806fee6a4afa1cf) )
+ ROM_LOAD16_BYTE( "u6", 0x20000, 0x20000, CRC(c9c5a413) SHA1(5d4f8bc895b89267643b41ecad52b886fd88df97) )
+ ROM_LOAD16_BYTE( "u4", 0x60001, 0x20000, CRC(ca8ab3a6) SHA1(2e7c7f50fbaed7e052a97ac7954b634bbc657226) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "u5", 0x60000, 0x20000, CRC(cbdb914b) SHA1(813640fa291c1245d04a628ee62afc95d5c67a03) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "u145", 0x000000, 0x40000, CRC(c3d20d24) SHA1(a75217b0d1887c64bf5570ff7a461c8cf47c5e85) )
+ ROM_LOAD( "u146", 0x040000, 0x40000, CRC(43e9dd87) SHA1(0694803a5b33c074858770c7e4cd884402c263f8) )
+ ROM_LOAD( "u147", 0x080000, 0x40000, CRC(fb855ce8) SHA1(839bca2d8e344d43fad8978b812c9246a89054a8) )
+ ROM_LOAD( "u148", 0x0c0000, 0x40000, CRC(e4b54eae) SHA1(591ee8e0c1b7c2eb8d7834a42548d5b25c79bb26) )
+ ROM_LOAD( "u149", 0x100000, 0x40000, CRC(cf48401c) SHA1(70ba8f2d5f81795c26c2a552c29c913c5d3bd784) )
+ ROM_LOAD( "u150", 0x140000, 0x40000, CRC(ca9e1e33) SHA1(f9889042b536e1fb5521702bc807d5aa0e6a25d1) )
+
+ ROM_REGION( 0x40000, REGION_USER1, 0 ) /* X-ROM (data used by main processor) */
+ ROM_LOAD( "u68", 0x00000, 0x10000, CRC(77c8de62) SHA1(ae15f84b7bf3d6705edf9f41d8de7b6ecab2bcf9) )
+ ROM_CONTINUE( 0x20000, 0x10000 )
+ ROM_LOAD( "u69", 0x10000, 0x10000, CRC(113aa6d5) SHA1(d032a04338e12135ba410afd71cf9538e99eb109) )
+ ROM_CONTINUE( 0x30000, 0x10000 )
+
+ ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* externally clocked DAC data */
+ ROM_LOAD( "u8", 0x00000, 0x20000, CRC(1e0ead72) SHA1(879d5ba244238af21f6a516494c504721570ec15) )
+ ROM_LOAD( "u9", 0x20000, 0x20000, CRC(3195b305) SHA1(7c795a7973e0b8dbeb882777d4bee2accc46cea0) )
+ ROM_LOAD( "u10", 0x40000, 0x20000, CRC(1dc5f375) SHA1(9dd389c30d87fcb02c6a15b67b4b6ea5b555a762) )
+ ROM_LOAD( "u11", 0x60000, 0x20000, CRC(5ed4877f) SHA1(eab9e949b1afd1fa21d87af5abcb1a8dc9bcf0d8) )
+ROM_END
+
+
+ROM_START( asylum )
+ ROM_REGION( 0x90000, REGION_CPU1, 0 )
+ ROM_LOAD( "asy-m0.64", 0x00000, 0x20000, CRC(f5ca36fd) SHA1(8c36ce3ca1c30ffb0a32ff7e9df61901c1ee6151) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ ROM_LOAD( "asy-m1.65", 0x30000, 0x20000, CRC(14d91d09) SHA1(ad227e6f5047f43c421773385f441c634af110e6) )
+ ROM_LOAD( "asy-m2.66", 0x50000, 0x20000, CRC(a34a6ef9) SHA1(c90307024039a7809b7fafb019c9ad4636708a88) )
+ ROM_LOAD( "asy-m3.67", 0x70000, 0x20000, CRC(9db4c2b1) SHA1(cfe78e2fe803c816ed2f79250bbbaf293cb5bf2a) )
+
+ ROM_REGION( 0x1e0000, REGION_CPU2, 0 )
+ ROM_LOAD( "asy-sp0.151", 0x00000, 0x20000, CRC(5ad5e3b0) SHA1(0162b56f63c169825677323dfbbd3ea991a9d9bb) )
+ ROM_LOAD( "asy-sp2.152", 0x20000, 0x20000, CRC(6d2997ec) SHA1(bf97dba0a4a700af0eb753daf598ec8e903dbc7c) )
+ ROM_CONTINUE( 0x120000, 0x20000 )
+ ROM_LOAD( "asy-sp4.153", 0x40000, 0x20000, CRC(7c61973c) SHA1(560ac49f92ddb25b975cbfb3ffc1464fe0c72e90) )
+ ROM_CONTINUE( 0x140000, 0x20000 )
+ ROM_LOAD( "asy-sp6.154", 0x60000, 0x20000, CRC(f0a4f9d3) SHA1(af7737803c909afad0d44f328adf14a9e7b3b108) )
+ ROM_CONTINUE( 0x160000, 0x20000 )
+ ROM_LOAD( "asy-sp8.155", 0x80000, 0x20000, CRC(2ad0640e) SHA1(6be547c297eb09187663bf3302b01c31d2990dac) )
+ ROM_CONTINUE( 0x180000, 0x20000 )
+ ROM_LOAD( "asy-spa.156", 0xa0000, 0x20000, CRC(9d584fb4) SHA1(fb331c63cb3f29ed6925acc1b1e41d63a242af37) )
+ ROM_CONTINUE( 0x1a0000, 0x20000 )
+ ROM_LOAD( "asy-spc.157", 0xc0000, 0x20000, CRC(8485e48c) SHA1(7381b55c96b1fce58e2f8914d603b35b397c881b) )
+ ROM_CONTINUE( 0x1c0000, 0x20000 )
+ ROM_LOAD( "asy-spe.158", 0xe0000, 0x20000, CRC(49d19520) SHA1(6f24221c976e9dacc1ce96dfc1d1e3df4e8a8255) )
+
+ ROM_REGION( 0x100000, REGION_CPU3, 0 )
+ ROM_LOAD16_BYTE( "asy-65.3", 0x20001, 0x20000, CRC(709bdc78) SHA1(ca235c2ab26fbb153ffe775a1a44b31695902d3f) )
+ ROM_LOAD16_BYTE( "asy-65.6", 0x20000, 0x20000, CRC(d019fb2e) SHA1(9d16b0399f03067e7bf79043904a1045119937c6) )
+ ROM_LOAD16_BYTE( "asy-65.4", 0x60001, 0x20000, CRC(1882c3b2) SHA1(71af49d1f59e257e5f8a0fc590d0533dda5bf82b) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "asy-65.5", 0x60000, 0x20000, CRC(5814b307) SHA1(6db97804d58941a5543424d8c4658cb3edab1e43) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0x180000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "asy-chr0.145", 0x000000, 0x40000, CRC(4dbcae49) SHA1(0aa54daa099d6590a41df4a24a27bf6463b3e116) )
+ ROM_LOAD( "asy-chr1.146", 0x040000, 0x40000, CRC(34e7762d) SHA1(2d63971effc237846481bed7d829fa924b4bea31) )
+ ROM_LOAD( "asy-chr2.147", 0x080000, 0x40000, CRC(f9b0d375) SHA1(305172d8cdf390d9566c2c6f32d8da44b165022a) )
+ ROM_LOAD( "asy-chr3.148", 0x0c0000, 0x40000, CRC(5efcae94) SHA1(dd7f903efd15e14c06e8d53cf7021f4323c127d1) )
+ ROM_LOAD( "asy-chr4.149", 0x100000, 0x40000, CRC(dbc2b155) SHA1(ba0d90b5a6acc53ecd02317cb82b630451e9d0e9) )
+ ROM_LOAD( "asy-chr5.150", 0x140000, 0x40000, CRC(9675e44f) SHA1(d2633d21fa9e798b8f96d96fdce5bb99a7dc5ba5) )
+
+ ROM_REGION( 0x40000, REGION_USER1, 0 ) /* X-ROM (data used by main processor) */
+ ROM_LOAD( "asy-m4.68", 0x00000, 0x10000, CRC(77c8de62) SHA1(ae15f84b7bf3d6705edf9f41d8de7b6ecab2bcf9) )
+ ROM_CONTINUE( 0x20000, 0x10000 )
+ ROM_LOAD( "asy-m5.69", 0x10000, 0x10000, CRC(bfc50d6c) SHA1(3239242358e8336354a9bd35f75f9057f079b298) )
+ ROM_CONTINUE( 0x30000, 0x10000 )
+
+ ROM_REGION( 0x80000, REGION_SOUND1, 0 ) /* externally clocked DAC data */
+ ROM_LOAD( "asy-65.8", 0x00000, 0x20000, CRC(624ad02f) SHA1(ce2dd0d11ff39a8e04d1c27cdaca3f068e6fbcf2) )
+ ROM_LOAD( "asy-65.9", 0x20000, 0x20000, CRC(c92ff376) SHA1(0189519101e3b0b464f0bd3af8352c002e45f937) )
+ ROM_LOAD( "asy-65.10", 0x40000, 0x20000, CRC(744dbf25) SHA1(03ea3d6eef94005ec0fbbaf43b59e3063830452e) )
+ ROM_LOAD( "asy-65.11", 0x60000, 0x20000, CRC(4b185d22) SHA1(d59a72d8c6532875f6e31939c5f846da64ba1bdd) )
+ROM_END
+
+
+
+/*************************************
+ *
+ * Driver initialization
+ *
+ *************************************/
+
+static DRIVER_INIT( ataxx )
+{
+ /* initialize the default EEPROM state */
+ static const UINT16 ataxx_eeprom_data[] =
+ {
+ 0x09,0x0101,
+ 0x0a,0x0104,
+ 0x0b,0x0401,
+ 0x0c,0x0101,
+ 0x0d,0x0004,
+ 0x13,0x0100,
+ 0x14,0x5a04,
+ 0xffff
+ };
+ ataxx_init_eeprom(0x00, ataxx_eeprom_data, 0x00);
+
+ leland_rotate_memory(0);
+ leland_rotate_memory(1);
+
+ /* set up additional input ports */
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x00, 0x03, 0, 0, ataxx_trackball_r);
+}
+
+
+static DRIVER_INIT( ataxxj )
+{
+ /* initialize the default EEPROM state */
+ static const UINT16 ataxxj_eeprom_data[] =
+ {
+ 0x09,0x0101,
+ 0x0a,0x0104,
+ 0x0b,0x0001,
+ 0x0c,0x0101,
+ 0x13,0xff00,
+ 0x3f,0x3c0c,
+ 0xffff
+ };
+ ataxx_init_eeprom(0x00, ataxxj_eeprom_data, 0x00);
+
+ leland_rotate_memory(0);
+ leland_rotate_memory(1);
+
+ /* set up additional input ports */
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x00, 0x03, 0, 0, ataxx_trackball_r);
+}
+
+
+static DRIVER_INIT( wsf )
+{
+ /* initialize the default EEPROM state */
+ static const UINT16 wsf_eeprom_data[] =
+ {
+ 0x04,0x0101,
+ 0x0b,0x04ff,
+ 0x0d,0x0500,
+ 0x26,0x26ac,
+ 0x27,0xff0a,
+ 0x28,0xff00,
+ 0xffff
+ };
+ ataxx_init_eeprom(0x00, wsf_eeprom_data, 0x00);
+
+ leland_rotate_memory(0);
+ leland_rotate_memory(1);
+
+ /* set up additional input ports */
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0d, 0x0d, 0, 0, input_port_3_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0e, 0x0e, 0, 0, input_port_4_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0f, 0x0f, 0, 0, input_port_5_r);
+}
+
+
+static DRIVER_INIT( indyheat )
+{
+ /* initialize the default EEPROM state */
+ static const UINT16 indyheat_eeprom_data[] =
+ {
+ 0x2c,0x0100,
+ 0x2d,0x0401,
+ 0x2e,0x05ff,
+ 0x2f,0x4b4b,
+ 0x30,0xfa4b,
+ 0x31,0xfafa,
+ 0xffff
+ };
+ ataxx_init_eeprom(0x00, indyheat_eeprom_data, 0x00);
+
+ leland_rotate_memory(0);
+ leland_rotate_memory(1);
+
+ /* set up additional input ports */
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x00, 0x02, 0, 0, indyheat_wheel_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x08, 0x0b, 0, 0, indyheat_analog_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0d, 0x0d, 0, 0, input_port_9_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0e, 0x0e, 0, 0, input_port_10_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0f, 0x0f, 0, 0, input_port_11_r);
+
+ /* set up additional output ports */
+ memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0x08, 0x0b, 0, 0, indyheat_analog_w);
+}
+
+
+static DRIVER_INIT( brutforc )
+{
+ /* initialize the default EEPROM state */
+ static const UINT16 brutforc_eeprom_data[] =
+ {
+ 0x27,0x0303,
+ 0x28,0x0003,
+ 0x30,0x01ff,
+ 0x31,0x0100,
+ 0x35,0x0404,
+ 0x36,0x0104,
+ 0xffff
+ };
+ ataxx_init_eeprom(0x00, brutforc_eeprom_data, 0x00);
+
+ leland_rotate_memory(0);
+ leland_rotate_memory(1);
+
+ /* set up additional input ports */
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0d, 0x0d, 0, 0, input_port_3_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0e, 0x0e, 0, 0, input_port_4_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0f, 0x0f, 0, 0, input_port_5_r);
+}
+
+
+static DRIVER_INIT( asylum )
+{
+ /* initialize the default EEPROM state */
+ static const UINT16 asylum_eeprom_data[] =
+ {
+ 0x02,0x0101,
+ 0x03,0x0101,
+ 0x04,0x0101,
+ 0x05,0xffff,
+ 0x06,0x0403,
+ 0x07,0x0400,
+ 0xffff
+ };
+ ataxx_init_eeprom(0x00, asylum_eeprom_data, 0x00);
+
+ leland_rotate_memory(0);
+ leland_rotate_memory(1);
+
+ /* asylum appears to have some extra RAM for the slave CPU */
+ memory_install_read8_handler(1, ADDRESS_SPACE_PROGRAM, 0xf000, 0xfffb, 0, 0, MRA8_RAM);
+ memory_install_write8_handler(1, ADDRESS_SPACE_PROGRAM, 0xf000, 0xfffb, 0, 0, MWA8_RAM);
+
+ /* set up additional input ports */
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0d, 0x0d, 0, 0, input_port_3_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0e, 0x0e, 0, 0, input_port_4_r);
+ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0f, 0x0f, 0, 0, input_port_5_r);
+}
+
+
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+GAME( 1990, ataxx, 0, ataxx, ataxx, ataxx, ROT0, "Leland Corp.", "Ataxx (set 1)", 0 )
+GAME( 1990, ataxxa, ataxx, ataxx, ataxx, ataxx, ROT0, "Leland Corp.", "Ataxx (set 2)", 0 )
+GAME( 1990, ataxxj, ataxx, ataxx, ataxx, ataxxj, ROT0, "Leland Corp.", "Ataxx (Japan)", 0 )
+GAME( 1990, wsf, 0, wsf, wsf, wsf, ROT0, "Leland Corp.", "World Soccer Finals", 0 )
+GAME( 1991, indyheat, 0, wsf, indyheat, indyheat, ROT0, "Leland Corp.", "Danny Sullivan's Indy Heat", 0 )
+GAME( 1991, brutforc, 0, wsf, brutforc, brutforc, ROT0, "Leland Corp.", "Brute Force", 0 )
+GAME( 1991, asylum, 0, wsf, brutforc, asylum, ROT270, "Leland Corp.", "Asylum (prototype)", 0 )