From ca18b72f6fc954741c2d7fd5e72f82ac9e454daf Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Wed, 4 Dec 2013 00:47:22 +0000 Subject: [PATCH] New games marked as GAME_NOT_WORKING ------------------------------------ Super Six Plus II English Mark Darts [Jim Stolis] --- .gitattributes | 1 + src/mame/drivers/arachnid.c | 512 ++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 4 + src/mame/mame.mak | 1 + 4 files changed, 518 insertions(+) create mode 100644 src/mame/drivers/arachnid.c diff --git a/.gitattributes b/.gitattributes index e645a5b5c45..c7bd1cc6f61 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3433,6 +3433,7 @@ src/mame/drivers/angelkds.c svneol=native#text/plain src/mame/drivers/appoooh.c svneol=native#text/plain src/mame/drivers/aquarium.c svneol=native#text/plain src/mame/drivers/arabian.c svneol=native#text/plain +src/mame/drivers/arachnid.c svneol=native#text/plain src/mame/drivers/arcadecl.c svneol=native#text/plain src/mame/drivers/arcadia.c svneol=native#text/plain src/mame/drivers/argus.c svneol=native#text/plain diff --git a/src/mame/drivers/arachnid.c b/src/mame/drivers/arachnid.c new file mode 100644 index 00000000000..0521ad711b9 --- /dev/null +++ b/src/mame/drivers/arachnid.c @@ -0,0 +1,512 @@ +/* + Arachnid - English Mark Darts + + Driver by Jim Stolis. + + --- Technical Notes --- + Name: English Mark Darts + Company: Arachnid, Inc. + Year: 1987/88/89/90 + + --- Hardware --- + A 6809 CPU (U3) is clocked by a 556 (U2) circuit with 3 Pin addressing decoding via a 74LS138 (U14) + Program ROM is a 27256 (U15) + Two 6821 PIAs (U4/U17) are used for I/O + Video is processed via a TMS9118 (U11) with two TMS4416 (U12/U13) as RAM + Main RAM is a 2K 6116 (U23) chip + Sound is generated via a PTM 6840 (U16) directly to an amplified speaker + + --- Target Interface Board --- + The target interface board is used to combine 33 conductors from the switch matrix + into 16 conductors. The middle 13 pin connector is common to all switches. + + 3 connectors and their labels + EFBHDACGH NMPLMNJOMIKOP EBACFDCEAHB + + Switch Matrix Table + Score Single Double Triple + 1 DN EN FN + 2 AL BL CL + 3 AN BN CN + 4 DL EL FL + 5 AP BP CP + 6 GL HL GP + 7 DO EO FO + 8 GI HI GM + 9 AO BO CO + 10 AI BI CI + 11 AK BK CK + 12 DP EP FP + 13 AM BM CM + 14 GK HK GO + 15 GJ HJ GN + 16 AJ BJ CJ + 17 DM EM FM + 18 DI EI FI + 19 DJ EJ FJ + 20 DK EK FK + Bull -- HM -- + + + TODO: + - Dip Switches (Controls credits per coin), Currently 2 coins per credit + - Test Mode Won't Activate + - Layout with Lamps +*/ + +#include "emu.h" +#include "cpu/m6809/m6809.h" +#include "machine/6821pia.h" +#include "machine/ram.h" +#include "machine/6840ptm.h" +#include "video/tms9928a.h" +#include "sound/speaker.h" + +#define SCREEN_TAG "screen" +#define M6809_TAG "u3" +#define TMS9118_TAG "u11" +#define PIA6821_U4_TAG "u4" +#define PIA6821_U17_TAG "u17" +#define PTM6840_TAG "u16" +#define SPEAKER_TAG "speaker" + +class arachnid_state : public driver_device +{ +public: + arachnid_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, M6809_TAG), + m_pia_u4(*this, PIA6821_U4_TAG), + m_pia_u17(*this, PIA6821_U17_TAG), + m_speaker(*this, SPEAKER_TAG) + { } + + required_device m_maincpu; + required_device m_pia_u4; + required_device m_pia_u17; + required_device m_speaker; + + virtual void machine_start(); + DECLARE_READ8_MEMBER( pia_u4_pa_r ); + DECLARE_READ8_MEMBER( pia_u4_pb_r ); + DECLARE_READ8_MEMBER( pia_u4_pca_r ); + DECLARE_READ8_MEMBER( pia_u4_pcb_r ); + DECLARE_WRITE8_MEMBER( pia_u4_pa_w ); + DECLARE_WRITE8_MEMBER( pia_u4_pb_w ); + DECLARE_WRITE8_MEMBER( pia_u4_pca_w ); + DECLARE_WRITE8_MEMBER( pia_u4_pcb_w ); + + DECLARE_READ8_MEMBER( pia_u17_pa_r ); + DECLARE_READ8_MEMBER( pia_u17_pca_r ); + DECLARE_WRITE8_MEMBER( pia_u17_pb_w ); + DECLARE_WRITE8_MEMBER( pia_u17_pcb_w ); + + DECLARE_WRITE8_MEMBER(ptm_o1_callback); + + UINT8 read_keyboard(int pa); +}; + +/*************************************************************************** + MEMORY MAPS +***************************************************************************/ + +/*------------------------------------------------- + ADDRESS_MAP( arachnid_map ) +-------------------------------------------------*/ + +static ADDRESS_MAP_START( arachnid_map, AS_PROGRAM, 8, arachnid_state ) + AM_RANGE(0x0000, 0x1fff) AM_RAM + AM_RANGE(0x2000, 0x2007) AM_DEVREADWRITE(PTM6840_TAG, ptm6840_device, read, write) + AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE(PIA6821_U4_TAG, pia6821_device, read, write) + AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE(PIA6821_U17_TAG, pia6821_device, read, write) + AM_RANGE(0x6000, 0x6000) AM_DEVWRITE(TMS9118_TAG, tms9928a_device, vram_write) + AM_RANGE(0x6002, 0x6002) AM_DEVWRITE(TMS9118_TAG, tms9928a_device, register_write) + AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(M6809_TAG, 0) +ADDRESS_MAP_END + +/*************************************************************************** + INPUT PORTS +***************************************************************************/ + +/*------------------------------------------------- + INPUT_PORTS( arachnid ) +-------------------------------------------------*/ + +static INPUT_PORTS_START( arachnid ) + PORT_START("PA0-0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') // SELECT + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA0-1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W') // PLAYER + PORT_BIT( 0xfd, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA0-2") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN + PORT_BIT( 0xfb, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA0-3") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T') // TEST + PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA0-4") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA0-5") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA0-6") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA0-7") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("SW1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_TOGGLE + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("SW2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_TOGGLE + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + + // Matrix Switch Part I + PORT_START("PA1-0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('G') + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA1-1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('H') + PORT_BIT( 0xfd, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA1-2") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E') + PORT_BIT( 0xfb, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA1-3") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F') + PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA1-4") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C') + PORT_BIT( 0xef, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA1-5") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D') + PORT_BIT( 0xdf, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA1-6") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A') + PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PA1-7") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B') + PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) + + // Matrix Switch Part II + PORT_START("PB1-0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('J') + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PB1-1") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('I') + PORT_BIT( 0xfd, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PB1-2") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('L') + PORT_BIT( 0xfb, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PB1-3") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('K') + PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PB1-4") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('N') + PORT_BIT( 0xef, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PB1-5") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('M') + PORT_BIT( 0xdf, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PB1-6") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('P') + PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("PB1-7") + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('O') + PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +/*************************************************************************** + DEVICE CONFIGURATION +***************************************************************************/ + +/*------------------------------------------------- + TMS9928a_interface tms9918_intf +-------------------------------------------------*/ + +static TMS9928A_INTERFACE( vdp_intf ) +{ + 0x4000, + DEVCB_CPU_INPUT_LINE(M6809_TAG, INPUT_LINE_IRQ0) +}; + +/*------------------------------------------------- + ptm6840_interface ptm_intf +-------------------------------------------------*/ + +WRITE8_MEMBER(arachnid_state::ptm_o1_callback) +{ +// Commented line below to compile: TODO +// speaker_level_w(m_speaker, data); +} + +static const ptm6840_interface ptm_intf = +{ + XTAL_8MHz / 4, + { 0, 0, 0 }, + { DEVCB_DRIVER_MEMBER(arachnid_state, ptm_o1_callback), DEVCB_NULL, DEVCB_NULL }, + DEVCB_NULL +}; + + +/*------------------------------------------------- + pia6821_interface pia_xx_intf +-------------------------------------------------*/ + +UINT8 arachnid_state::read_keyboard(int pa) +{ + int i; + UINT8 value; + static const char *const keynames[3][8] = + { + { "PA0-0", "PA0-1", "PA0-2", "PA0-3", "PA0-4", "PA0-5", "PA0-6", "PA0-7" }, + { "PA1-0", "PA1-1", "PA1-2", "PA1-3", "PA1-4", "PA1-5", "PA1-6", "PA1-7" }, + { "PB1-0", "PB1-1", "PB1-2", "PB1-3", "PB1-4", "PB1-5", "PB1-6", "PB1-7" } + }; + + for (i = 0; i < 8; i++) + { + value = ioport(keynames[pa][i])->read(); + + if (value != 0xff) + { + if (value == 0xff - (1 << i)) + return value; + else + return value - (1 << i); + } + } + + return 0xff; +} + +/*------------------------------------------------- + pia6821_interface pia_u4_intf +-------------------------------------------------*/ + +READ8_MEMBER( arachnid_state::pia_u4_pa_r ) +{ + // Pulses from Switch Matrix Part I + // PA0 - G + // PA1 - H + // PA2 - E + // PA3 - F + // PA4 - C + // PA5 - D + // PA6 - A + // PA7 - B + + UINT8 data = 0xff; + data &= read_keyboard(1); + + return data; +} + +READ8_MEMBER( arachnid_state::pia_u4_pb_r ) +{ + // Pulses from Switch Matrix Part II + // PB0 - J + // PB1 - I + // PB2 - L + // PB3 - K + // PB4 - N + // PB5 - M + // PB6 - P + // PB7 - O + + UINT8 data = 0xff; + data &= read_keyboard(2); + + return data; +} + +READ8_MEMBER( arachnid_state::pia_u4_pca_r ) +{ + // CA1 - SW1 Coin In (Coin Door) + + UINT8 data = 0xff; + data &= ioport("SW1")->read(); + + return data; +} + +READ8_MEMBER( arachnid_state::pia_u4_pcb_r ) +{ + // CB1 - SW2 Test Mode (Coin Door) + + UINT8 data = 0xff; + data &= ioport("SW2")->read(); + + return data; +} + +READ8_MEMBER( arachnid_state::pia_u17_pa_r ) +{ + // PA0 - Select + // PA1 - Player Change + // PA2 - Coin + // PA3 - Test + // PA4 thru PA7 - DIP SW1 + + UINT8 data = 0xff; + data &= read_keyboard(0); + + return data; +} + +READ8_MEMBER( arachnid_state::pia_u17_pca_r ) +{ + // CA1 - 1000 HZ Input + + UINT8 data = 0xff; + + return data; +} + +WRITE8_MEMBER( arachnid_state::pia_u4_pa_w ) +{ + // PA0 thru PA7 Pulses to Switch Matrix Part I +} + +WRITE8_MEMBER( arachnid_state::pia_u4_pb_w ) +{ + // PA0 thru PA7 Pulses to Switch Matrix Part II +} + +WRITE8_MEMBER( arachnid_state::pia_u4_pca_w ) +{ + // CA1 - Remove Darts Lamp +} + +WRITE8_MEMBER( arachnid_state::pia_u4_pcb_w ) +{ + // CB2 - Throw Darts Lamp +} + +WRITE8_MEMBER( arachnid_state::pia_u17_pb_w ) +{ + // PB0 - Select Lamp + // PB1 - Player Change Lamp + // PB2 - Not Used + // PB3 - Not Used + // PB4 - Not Used + // PB5 - Not Used + // PB6 - Not Used + // PB7 - N/C +} + +WRITE8_MEMBER( arachnid_state::pia_u17_pcb_w ) +{ + // CB2 - Target Lamp +} + +static const pia6821_interface pia_u4_intf = +{ + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pa_r), // input A - From Switch Matrix + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pb_r), // input B - From Switch Matrix + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pca_r), // input CA1 - SW1 Coin In (Coin Door) + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pcb_r), // input CB1 - SW2 Test Mode (Coin Door) + DEVCB_NULL, // input CA2 + DEVCB_NULL, // input CB2 + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pa_w), // output A - To Switch Matrix + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pb_w), // output B - To Switch Matrix + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pca_w), // output CA2 - Remove Darts Lamp + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u4_pcb_w), // output CB2 - Throw Darts Lamp + DEVCB_NULL, // irq A + DEVCB_NULL // irq B +}; + +static const pia6821_interface pia_u17_intf = +{ + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u17_pa_r), // input A - Select, Player Change, Coin, Test, DIPSW1 + DEVCB_NULL, // input B + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u17_pca_r), // input CA1 - 1000 Hz Input + DEVCB_NULL, // input CB1 + DEVCB_NULL, // input CA2 + DEVCB_NULL, // input CB2 + DEVCB_NULL, // output A + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u17_pb_w), // output B - Select Lamp, Player Change Lamp + DEVCB_NULL, // output CA2 + DEVCB_DRIVER_MEMBER(arachnid_state, pia_u17_pcb_w), // output CB2 - Target Lamp + DEVCB_NULL, // irq A + DEVCB_NULL // irq B +}; + +/*************************************************************************** + MACHINE INITIALIZATION +***************************************************************************/ + +/*------------------------------------------------- + MACHINE_START( arachnid ) +-------------------------------------------------*/ + +void arachnid_state::machine_start() +{ + +} + +/*************************************************************************** + MACHINE DRIVERS +***************************************************************************/ + +/*------------------------------------------------- + MACHINE_CONFIG_START( arachnid, arachnid_state ) +-------------------------------------------------*/ + +static MACHINE_CONFIG_START( arachnid, arachnid_state ) + // basic machine hardware + MCFG_CPU_ADD(M6809_TAG, M6809, XTAL_1MHz) + MCFG_CPU_PROGRAM_MAP(arachnid_map) + + // devices + MCFG_PIA6821_ADD(PIA6821_U4_TAG, pia_u4_intf) + MCFG_PIA6821_ADD(PIA6821_U17_TAG, pia_u17_intf) + + // video hardware + MCFG_TMS9928A_ADD( TMS9118_TAG, TMS9118, vdp_intf ) + MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) + MCFG_SCREEN_UPDATE_DEVICE( TMS9118_TAG, tms9118_device, screen_update ) + + // sound hardware + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + + MCFG_PTM6840_ADD(PTM6840_TAG, ptm_intf) +MACHINE_CONFIG_END + +/*************************************************************************** + ROMS +***************************************************************************/ + +ROM_START( arac6000 ) + ROM_REGION( 0x8000, M6809_TAG, 0 ) + ROM_LOAD( "01-0140-6300-v2.7-19910208.u15", 0x0000, 0x8000, CRC(f1c4412d) SHA1(6ff9a8f25f315c2df5c0785043521d036ec0964e) ) +ROM_END + +/*************************************************************************** + SYSTEM DRIVERS +***************************************************************************/ + +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ +CONS( 1990, arac6000, 0, 0, arachnid, arachnid, driver_device, 0, "Arachnid", "Super Six Plus II English Mark Darts", GAME_MECHANICAL | GAME_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 180ebf35408..17cc72f34de 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -30932,5 +30932,9 @@ fruitstb bingoman bingomana +// Arachnid - Super Six Plus II English Mark Darts 6000 +arac6000 + +// number1 // 1996 San Remo Games gluck2 // 1992 Yung Yu / CYE diff --git a/src/mame/mame.mak b/src/mame/mame.mak index 3a3b56a52dc..f523e340b6f 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -2026,6 +2026,7 @@ $(MAMEOBJ)/misc.a: \ $(DRIVERS)/amaticmg.o \ $(DRIVERS)/ampoker2.o $(VIDEO)/ampoker2.o \ $(DRIVERS)/amspdwy.o $(VIDEO)/amspdwy.o \ + $(DRIVERS)/arachnid.o \ $(DRIVERS)/artmagic.o $(VIDEO)/artmagic.o \ $(DRIVERS)/astrafr.o \ $(DRIVERS)/astrcorp.o \