mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
Added Williams DAC sound card device. Added this to s3,s4,wms_shuffle.
Fixed wms_shuffle inputs.
This commit is contained in:
parent
7581379b98
commit
7c70628506
5 changed files with 301 additions and 237 deletions
|
@ -33,8 +33,10 @@
|
|||
#include "emu.h"
|
||||
#include "williams.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/input_merger.h"
|
||||
#include "machine/rescap.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/hc55516.h"
|
||||
#include "sound/okim6295.h"
|
||||
|
@ -59,6 +61,7 @@
|
|||
DEFINE_DEVICE_TYPE(WILLIAMS_CVSD_SOUND, williams_cvsd_sound_device, "wmscvsd", "Williams CVSD Sound Board")
|
||||
DEFINE_DEVICE_TYPE(WILLIAMS_NARC_SOUND, williams_narc_sound_device, "wmsnarc", "Williams NARC Sound Board")
|
||||
DEFINE_DEVICE_TYPE(WILLIAMS_ADPCM_SOUND, williams_adpcm_sound_device, "wmsadpcm", "Williams ADPCM Sound Board")
|
||||
DEFINE_DEVICE_TYPE(WILLIAMS_S4_SOUND, williams_s4_sound_device, "wmss4", "Williams System 4 Sound Board")
|
||||
|
||||
|
||||
|
||||
|
@ -836,3 +839,120 @@ void williams_adpcm_sound_device::device_timer(emu_timer &timer, device_timer_id
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// S4 SOUND BOARD (simple sound card used in system 3/4 pinballs)
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// williams_s4_sound_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
williams_s4_sound_device::williams_s4_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, WILLIAMS_S4_SOUND, tag, owner, clock)
|
||||
, device_mixer_interface(mconfig, *this)
|
||||
, m_cpu(*this, "cpu")
|
||||
, m_pia(*this, "pia")
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// write - handle an external write
|
||||
//-------------------------------------------------
|
||||
|
||||
void williams_s4_sound_device::write(u8 data)
|
||||
{
|
||||
// If bit 7 low, make bit 4 low, to make the startup tune work
|
||||
if (~data & 0x80)
|
||||
data &= 0xef;
|
||||
// Handle S2 (electronic or tones)
|
||||
data ^= (ioport("S4")->read() & 0x40);
|
||||
if ((data & 0x1f) != 0x1f)
|
||||
{
|
||||
m_pia->portb_w(data);
|
||||
m_pia->cb1_w(0);
|
||||
}
|
||||
m_pia->cb1_w(1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// audio CPU map
|
||||
//-------------------------------------------------
|
||||
|
||||
void williams_s4_sound_device::williams_s4_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0x0fff);
|
||||
map(0x0000, 0x00ff).ram();
|
||||
map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
|
||||
map(0x0800, 0x0fff).rom().region("audiocpu", 0);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_add_mconfig - add device configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
void williams_s4_sound_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
M6808(config, m_cpu, 3580000);
|
||||
m_cpu->set_addrmap(AS_PROGRAM, &williams_s4_sound_device::williams_s4_map);
|
||||
|
||||
MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, *this, 0.5);
|
||||
|
||||
PIA6821(config, m_pia, 0);
|
||||
m_pia->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
|
||||
m_pia->irqa_handler().set("audioirq", FUNC(input_merger_device::in_w<1>));
|
||||
m_pia->irqb_handler().set("audioirq", FUNC(input_merger_device::in_w<2>));
|
||||
|
||||
INPUT_MERGER_ANY_HIGH(config, "audioirq").output_handler().set_inputline(m_cpu, M6808_IRQ_LINE);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void williams_s4_sound_device::device_start()
|
||||
{
|
||||
// register for save states
|
||||
save_item(NAME(m_dummy));
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void williams_s4_sound_device::device_reset()
|
||||
{
|
||||
// reset interrupt states
|
||||
m_cpu->set_input_line(M6808_IRQ_LINE, CLEAR_LINE);
|
||||
}
|
||||
|
||||
INPUT_PORTS_START( williams_s4 )
|
||||
PORT_START("S4")
|
||||
PORT_DIPNAME( 0x40, 0x00, "Sounds" )
|
||||
PORT_DIPSETTING( 0x00, "Set 1" )
|
||||
PORT_DIPSETTING( 0x40, "Set 2" )
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_9_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, williams_s4_sound_device, audio_nmi, 1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_CHANGED_MEMBER( williams_s4_sound_device::audio_nmi )
|
||||
{
|
||||
// Diagnostic button sends a pulse to NMI pin
|
||||
if (newval==CLEAR_LINE)
|
||||
m_cpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_input_ports - return a pointer to
|
||||
// the device's I/O ports
|
||||
//-------------------------------------------------
|
||||
|
||||
ioport_constructor williams_s4_sound_device::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME( williams_s4 );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
****************************************************************************/
|
||||
|
||||
#include "machine/6821pia.h"
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "cpu/m6809/m6809.h"
|
||||
#include "sound/hc55516.h"
|
||||
#include "sound/okim6295.h"
|
||||
|
@ -23,6 +24,7 @@
|
|||
DECLARE_DEVICE_TYPE(WILLIAMS_CVSD_SOUND, williams_cvsd_sound_device)
|
||||
DECLARE_DEVICE_TYPE(WILLIAMS_NARC_SOUND, williams_narc_sound_device)
|
||||
DECLARE_DEVICE_TYPE(WILLIAMS_ADPCM_SOUND, williams_adpcm_sound_device)
|
||||
DECLARE_DEVICE_TYPE(WILLIAMS_S4_SOUND, williams_s4_sound_device)
|
||||
|
||||
|
||||
|
||||
|
@ -190,3 +192,32 @@ private:
|
|||
u8 m_talkback;
|
||||
u8 m_sound_int_state;
|
||||
};
|
||||
|
||||
|
||||
// ======================> williams_s4_sound_device
|
||||
|
||||
class williams_s4_sound_device : public device_t, public device_mixer_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
williams_s4_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||
|
||||
// read/write
|
||||
void write(u8 data);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
protected:
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
// devices
|
||||
void williams_s4_map(address_map &map);
|
||||
required_device<m6808_cpu_device> m_cpu;
|
||||
required_device<pia6821_device> m_pia;
|
||||
u8 m_dummy = 0; // needed for save-state support
|
||||
};
|
||||
|
|
|
@ -22,8 +22,18 @@ Games:
|
|||
|
||||
When first used, it appears frozen (the score should alternate). Press F3 to fix.
|
||||
|
||||
For those games with a sound card, pressing NUM-8 will select a different set of
|
||||
sounds. This is switch SW2 on the real board.
|
||||
Sound:
|
||||
- All games have a knocker.
|
||||
- Hot Tip and Lucky Seven use chimes. There was a noise drum to simulate the sound
|
||||
of EM score reels.
|
||||
- Hot Tip, Lucky Seven, World Cup, Disco Fever have a dedicated tilt line to operate
|
||||
a mechanical buzzer.
|
||||
- World Cup and Disco Fever, being chime-based internally, would activate one sound
|
||||
line per sound. There's 4 "chime" lines and the tilt line.
|
||||
- The later games could send any of 15 codes (but never did), so only needed 4 lines.
|
||||
- All soundcard games also have an "alternator" line. By activating this, followed by
|
||||
activating bit 0, the startup tune would play. For it to work properly, both bit
|
||||
4 and 7 must operate at the same time, otherwise the tune gets cut off.
|
||||
|
||||
Status:
|
||||
- All games are playable
|
||||
|
@ -37,10 +47,10 @@ ToDo:
|
|||
#include "machine/genpin.h"
|
||||
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "audio/williams.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/input_merger.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/dac.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#include "s3.lh"
|
||||
|
@ -91,6 +101,7 @@ protected:
|
|||
bool m_data_ok = 0;
|
||||
u8 m_lamp_data = 0;
|
||||
u8 m_game = 0;
|
||||
bool m_disco = false;
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { } //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { } //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { } //ST2
|
||||
|
@ -125,24 +136,15 @@ class s3a_state : public s3_state
|
|||
public:
|
||||
s3a_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: s3_state(mconfig, type, tag)
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_pias(*this, "pias")
|
||||
, m_io_snd(*this, "SND")
|
||||
, m_s4sound(*this, "s4sound")
|
||||
{ }
|
||||
|
||||
void s3a(machine_config &config);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
private:
|
||||
virtual void machine_start() override;
|
||||
u8 sound_r();
|
||||
u8 m_sound_data = 0;
|
||||
void s3a_sol0_w(u8 data);
|
||||
void s3a_sol1_w(u8 data);
|
||||
void audio_map(address_map &map);
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<pia6821_device> m_pias;
|
||||
required_ioport m_io_snd;
|
||||
required_device<williams_s4_sound_device> m_s4sound;
|
||||
};
|
||||
|
||||
|
||||
|
@ -158,13 +160,6 @@ void s3_state::main_map(address_map &map)
|
|||
map(0x6000, 0x7fff).rom().region("maincpu", 0);
|
||||
}
|
||||
|
||||
void s3a_state::audio_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xfff);
|
||||
map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds
|
||||
map(0x0800, 0x0fff).rom().region("audiocpu", 0);
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START( s3 )
|
||||
PORT_START("X0")
|
||||
|
@ -296,16 +291,6 @@ static INPUT_PORTS_START( s3 )
|
|||
PORT_DIPSETTING( 0x07, "31" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( s3a )
|
||||
PORT_INCLUDE(s3)
|
||||
|
||||
PORT_START("SND")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Music") PORT_CODE(KEYCODE_8_PAD) PORT_TOGGLE
|
||||
|
||||
PORT_MODIFY("DIAGS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_9_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s3a_state, audio_nmi, 1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
// Unassigned inputs will tilt or reset the machine, so remove them
|
||||
static INPUT_PORTS_START( httip )
|
||||
PORT_INCLUDE(s3)
|
||||
|
@ -333,7 +318,7 @@ static INPUT_PORTS_START( lucky )
|
|||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( wldcp )
|
||||
PORT_INCLUDE(s3a)
|
||||
PORT_INCLUDE(s3)
|
||||
PORT_MODIFY("X0")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_MODIFY("X1")
|
||||
|
@ -346,7 +331,7 @@ static INPUT_PORTS_START( wldcp )
|
|||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( cntct )
|
||||
PORT_INCLUDE(s3a)
|
||||
PORT_INCLUDE(s3)
|
||||
PORT_MODIFY("X0")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_MODIFY("X2")
|
||||
|
@ -357,7 +342,7 @@ static INPUT_PORTS_START( cntct )
|
|||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( disco )
|
||||
PORT_INCLUDE(s3a)
|
||||
PORT_INCLUDE(s3)
|
||||
PORT_MODIFY("X0")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_MODIFY("X2")
|
||||
|
@ -371,7 +356,7 @@ static INPUT_PORTS_START( disco )
|
|||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( phnix )
|
||||
PORT_INCLUDE(s3a)
|
||||
PORT_INCLUDE(s3)
|
||||
PORT_MODIFY("X2")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) // Playfield tilt
|
||||
PORT_MODIFY("X4")
|
||||
|
@ -380,7 +365,7 @@ static INPUT_PORTS_START( phnix )
|
|||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( pkrno )
|
||||
PORT_INCLUDE(s3a)
|
||||
PORT_INCLUDE(s3)
|
||||
PORT_MODIFY("X2")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) // Playfield tilt
|
||||
PORT_MODIFY("X3")
|
||||
|
@ -404,12 +389,6 @@ void s3_state::machine_start()
|
|||
save_item(NAME(m_game));
|
||||
}
|
||||
|
||||
void s3a_state::machine_start()
|
||||
{
|
||||
s3_state::machine_start();
|
||||
save_item(NAME(m_sound_data));
|
||||
}
|
||||
|
||||
void s3_state::machine_reset()
|
||||
{
|
||||
genpin_class::machine_reset();
|
||||
|
@ -426,13 +405,6 @@ INPUT_CHANGED_MEMBER( s3_state::main_nmi )
|
|||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( s3a_state::audio_nmi )
|
||||
{
|
||||
// Diagnostic button sends a pulse to NMI pin
|
||||
if (newval==CLEAR_LINE)
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
void s3_state::sol0_w(u8 data)
|
||||
{
|
||||
if (m_game == 4) // lucky
|
||||
|
@ -462,11 +434,20 @@ void s3a_state::s3a_sol0_w(u8 data)
|
|||
for (u8 i = 0; i < 8; i++)
|
||||
m_io_outputs[i] = BIT(data, i);
|
||||
|
||||
if ((m_game == 3) && BIT(data, 4)) // disco
|
||||
// disco has the sound-alternator in a different place
|
||||
if (m_game == 3)
|
||||
{
|
||||
m_sound_data = 0x3f | m_io_snd->read();
|
||||
m_pias->cb1_w(1);
|
||||
m_pias->cb1_w(0);
|
||||
if (data == 0x10)
|
||||
{
|
||||
m_disco = true;
|
||||
m_s4sound->write(0x30);
|
||||
}
|
||||
else
|
||||
if (m_disco)
|
||||
{
|
||||
m_disco = false;
|
||||
m_s4sound->write(0xff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -493,17 +474,17 @@ void s3_state::sol1_w(u8 data)
|
|||
|
||||
void s3a_state::s3a_sol1_w(u8 data)
|
||||
{
|
||||
u8 sound_data = m_io_snd->read() | (data & 15);
|
||||
u8 sound_data = data & 15;
|
||||
|
||||
if (!BIT(m_game, 0) && BIT(data, 4))
|
||||
sound_data |= 0x80; // cntct, phnix, pkrno
|
||||
// wldcp and disco have a dedicated tilt line
|
||||
if (((m_game == 1) || (m_game == 3))&& BIT(data, 6))
|
||||
sound_data = 0x10;
|
||||
|
||||
bool cb1 = (sound_data & 0x8f);
|
||||
// enable alternator line (all except disco)
|
||||
if (BIT(data, 4))
|
||||
sound_data |= 0x80;
|
||||
|
||||
if (cb1)
|
||||
m_sound_data = ~sound_data;
|
||||
|
||||
m_pias->cb1_w(cb1);
|
||||
m_s4sound->write(~sound_data);
|
||||
|
||||
if (BIT(data, 5))
|
||||
m_samples->start(0, 6); // knocker
|
||||
|
@ -570,11 +551,6 @@ void s3_state::switch_w(u8 data)
|
|||
m_row = data;
|
||||
}
|
||||
|
||||
u8 s3a_state::sound_r()
|
||||
{
|
||||
return m_sound_data;
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( s3_state::irq )
|
||||
{
|
||||
if (m_t_c > 0x70)
|
||||
|
@ -645,21 +621,10 @@ void s3a_state::s3a(machine_config &config)
|
|||
|
||||
m_pia22->writepa_handler().set(FUNC(s3a_state::s3a_sol0_w));
|
||||
m_pia22->writepb_handler().set(FUNC(s3a_state::s3a_sol1_w));
|
||||
|
||||
|
||||
// Add the soundcard
|
||||
M6802(config, m_audiocpu, 3580000);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &s3a_state::audio_map);
|
||||
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
|
||||
|
||||
PIA6821(config, m_pias, 0);
|
||||
m_pias->readpb_handler().set(FUNC(s3a_state::sound_r));
|
||||
m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
|
||||
m_pias->irqa_handler().set("audioirq", FUNC(input_merger_device::in_w<1>));
|
||||
m_pias->irqb_handler().set("audioirq", FUNC(input_merger_device::in_w<2>));
|
||||
|
||||
INPUT_MERGER_ANY_HIGH(config, "audioirq").output_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE);
|
||||
SPEAKER(config, "mono").front_center();
|
||||
WILLIAMS_S4_SOUND(config, m_s4sound, 0).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -695,7 +660,7 @@ ROM_START(wldcp_l1)
|
|||
ROM_LOAD("white1.716", 0x1000, 0x0800, CRC(9bbbf14f) SHA1(b0542ffdd683fa0ea4a9819576f3789cd5a4b2eb))
|
||||
ROM_LOAD("white2wc.716", 0x1800, 0x0800, CRC(618d15b5) SHA1(527387893eeb2cd4aa563a4cfb1948a15d2ed741))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("481_s0_world_cup.716", 0x0000, 0x0800, CRC(cf012812) SHA1(26074f6a44075a94e6f91de1dbf92f8ec3ff8ca4))
|
||||
ROM_END
|
||||
|
||||
|
@ -708,7 +673,7 @@ ROM_START(cntct_l1)
|
|||
ROM_LOAD("white1.716", 0x1000, 0x0800, CRC(9bbbf14f) SHA1(b0542ffdd683fa0ea4a9819576f3789cd5a4b2eb))
|
||||
ROM_LOAD("white2.716", 0x1800, 0x0800, CRC(4d4010dd) SHA1(11221124fef3b7bf82d353d65ce851495f6946a7))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("482_s0_contact.716", 0x0000, 0x0800, CRC(d3c713da) SHA1(1fc4a8fadf472e9a04b3a86f60a9d625d07764e1))
|
||||
ROM_END
|
||||
|
||||
|
@ -721,7 +686,7 @@ ROM_START(disco_l1)
|
|||
ROM_LOAD("white1.716", 0x1000, 0x0800, CRC(9bbbf14f) SHA1(b0542ffdd683fa0ea4a9819576f3789cd5a4b2eb))
|
||||
ROM_LOAD("white2.716", 0x1800, 0x0800, CRC(4d4010dd) SHA1(11221124fef3b7bf82d353d65ce851495f6946a7))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("483_s0_disco_fever.716", 0x0000, 0x0800, CRC(d1cb5047) SHA1(7f36296975df19feecc6456ffb91f4a23bcad037))
|
||||
ROM_END
|
||||
|
||||
|
@ -734,7 +699,7 @@ ROM_START(phnix_l1)
|
|||
ROM_LOAD("white1.716", 0x1000, 0x0800, CRC(9bbbf14f) SHA1(b0542ffdd683fa0ea4a9819576f3789cd5a4b2eb))
|
||||
ROM_LOAD("white2.716", 0x1800, 0x0800, CRC(4d4010dd) SHA1(11221124fef3b7bf82d353d65ce851495f6946a7))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("485_s0_phoenix.716", 0x0000, 0x0800, CRC(1c3dea6e) SHA1(04bfe952be2eab66f023b204c21a1bd461ea572f))
|
||||
ROM_END
|
||||
|
||||
|
@ -747,7 +712,7 @@ ROM_START(pkrno_l1)
|
|||
ROM_LOAD("white1.716", 0x1000, 0x0800, CRC(9bbbf14f) SHA1(b0542ffdd683fa0ea4a9819576f3789cd5a4b2eb))
|
||||
ROM_LOAD("white2.716", 0x1800, 0x0800, CRC(4d4010dd) SHA1(11221124fef3b7bf82d353d65ce851495f6946a7))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("488_s0_pokerino.716", 0x0000, 0x0800, CRC(5de02e62) SHA1(f838439a731511a264e508a576ae7193d9fed1af))
|
||||
ROM_END
|
||||
|
||||
|
@ -756,7 +721,7 @@ ROM_END
|
|||
GAME( 1977, httip_l1, 0, s3, httip, s3_state, empty_init, ROT0, "Williams", "Hot Tip (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1977, lucky_l1, 0, s3, lucky, s3_state, init_4, ROT0, "Williams", "Lucky Seven (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, wldcp_l1, 0, s3a, wldcp, s3a_state, init_1, ROT0, "Williams", "World Cup (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, cntct_l1, 0, s3a, cntct, s3a_state, init_2, ROT0, "Williams", "Contact (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, disco_l1, 0, s3a, disco, s3a_state, init_3, ROT0, "Williams", "Disco Fever (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, cntct_l1, 0, s3a, cntct, s3a_state, init_2, ROT0, "Williams", "Contact (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, phnix_l1, 0, s3a, phnix, s3a_state, init_2, ROT0, "Williams", "Phoenix (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, pkrno_l1, 0, s3a, pkrno, s3a_state, empty_init, ROT0, "Williams", "Pokerino (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
|
|
|
@ -36,11 +36,11 @@ ToDo:
|
|||
#include "machine/genpin.h"
|
||||
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "audio/williams.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/clock.h"
|
||||
#include "machine/input_merger.h"
|
||||
#include "machine/ripple_counter.h"
|
||||
#include "sound/dac.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#include "s4.lh"
|
||||
|
@ -54,16 +54,14 @@ public:
|
|||
s4_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: genpin_class(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_mainirq(*this, "mainirq")
|
||||
, m_pias(*this, "pias")
|
||||
, m_s4sound(*this, "s4sound")
|
||||
, m_pia22(*this, "pia22")
|
||||
, m_pia24(*this, "pia24")
|
||||
, m_pia28(*this, "pia28")
|
||||
, m_pia30(*this, "pia30")
|
||||
, m_4020(*this, "4020")
|
||||
, m_io_keyboard(*this, "X%d", 0U)
|
||||
, m_io_snd(*this, "SND")
|
||||
, m_dips(*this, "DS%d", 1U)
|
||||
, m_digits(*this, "digit%d", 0U)
|
||||
, m_leds(*this, "led%d", 0U)
|
||||
|
@ -73,7 +71,6 @@ public:
|
|||
void s4(machine_config &config);
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
|
||||
|
||||
private:
|
||||
virtual void machine_start() override;
|
||||
|
@ -95,7 +92,6 @@ private:
|
|||
bool m_data_ok = 0;
|
||||
u8 m_lamp_data = 0;
|
||||
bool m_irq_in_progress = 0;
|
||||
u8 m_sound_data = 0;
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { } //ST5
|
||||
DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { } //ST-solenoids enable
|
||||
DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { } //ST2
|
||||
|
@ -106,19 +102,16 @@ private:
|
|||
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { } //ST3
|
||||
DECLARE_WRITE_LINE_MEMBER(irq_w);
|
||||
void main_map(address_map &map);
|
||||
void audio_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<input_merger_device> m_mainirq;
|
||||
required_device<pia6821_device> m_pias;
|
||||
required_device<williams_s4_sound_device> m_s4sound;
|
||||
required_device<pia6821_device> m_pia22;
|
||||
required_device<pia6821_device> m_pia24;
|
||||
required_device<pia6821_device> m_pia28;
|
||||
required_device<pia6821_device> m_pia30;
|
||||
required_device<ripple_counter_device> m_4020;
|
||||
required_ioport_array<8> m_io_keyboard;
|
||||
required_ioport m_io_snd;
|
||||
required_ioport_array<2> m_dips;
|
||||
output_finder<32> m_digits;
|
||||
output_finder<2> m_leds;
|
||||
|
@ -137,15 +130,6 @@ void s4_state::main_map(address_map &map)
|
|||
map(0x6000, 0x7fff).rom().region("maincpu", 0);
|
||||
}
|
||||
|
||||
void s4_state::audio_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0x0fff);
|
||||
map(0x0000, 0x00ff).ram();
|
||||
map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds
|
||||
map(0x0800, 0x0fff).rom().region("audiocpu", 0);
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START( s4 )
|
||||
PORT_START("X0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_NAME("Plumb Tilt") // 3 touches before it tilts
|
||||
|
@ -274,12 +258,6 @@ static INPUT_PORTS_START( s4 )
|
|||
PORT_DIPSETTING( 0x47, "29" )
|
||||
PORT_DIPSETTING( 0x87, "30" )
|
||||
PORT_DIPSETTING( 0x07, "31" )
|
||||
|
||||
PORT_START("SND")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("Music") PORT_CODE(KEYCODE_8_PAD) PORT_TOGGLE
|
||||
|
||||
PORT_MODIFY("DIAGS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_9_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s4_state, audio_nmi, 1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( flash )
|
||||
|
@ -321,8 +299,9 @@ INPUT_PORTS_END
|
|||
|
||||
void s4_state::clockcnt_w(u16 data)
|
||||
{
|
||||
if (data >= 1536)
|
||||
m_mainirq->in_set<0>();
|
||||
// A wire jumper allows selection of 7,8,9, or 8,9,10
|
||||
m_mainirq->in_w<0>(BIT(data, 7, 3)==7);
|
||||
|
||||
if (BIT(data, 5) && m_irq_in_progress)
|
||||
m_4020->reset_w(1);
|
||||
else
|
||||
|
@ -341,7 +320,6 @@ void s4_state::machine_start()
|
|||
save_item(NAME(m_row));
|
||||
save_item(NAME(m_data_ok));
|
||||
save_item(NAME(m_lamp_data));
|
||||
save_item(NAME(m_sound_data));
|
||||
}
|
||||
|
||||
void s4_state::machine_reset()
|
||||
|
@ -360,13 +338,6 @@ INPUT_CHANGED_MEMBER( s4_state::main_nmi )
|
|||
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER( s4_state::audio_nmi )
|
||||
{
|
||||
// Diagnostic button sends a pulse to NMI pin
|
||||
if (newval==CLEAR_LINE)
|
||||
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
|
||||
void s4_state::sol0_w(u8 data)
|
||||
{
|
||||
if (BIT(data, 0))
|
||||
|
@ -378,14 +349,9 @@ void s4_state::sol0_w(u8 data)
|
|||
|
||||
void s4_state::sol1_w(u8 data)
|
||||
{
|
||||
u8 sound_data = m_io_snd->read() | (data & 0x1f);
|
||||
u8 sound_data = data & 0x1f;
|
||||
|
||||
bool cb1 = (sound_data & 0x1f);
|
||||
|
||||
if (cb1)
|
||||
m_sound_data = ~sound_data;
|
||||
|
||||
m_pias->cb1_w(cb1);
|
||||
m_s4sound->write(~sound_data);
|
||||
|
||||
if (BIT(data, 5))
|
||||
m_samples->start(0, 6); // knocker
|
||||
|
@ -452,11 +418,6 @@ void s4_state::switch_w(u8 data)
|
|||
m_row = data;
|
||||
}
|
||||
|
||||
u8 s4_state::sound_r()
|
||||
{
|
||||
return m_sound_data;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( s4_state::irq_w )
|
||||
{
|
||||
m_irq_in_progress = state;
|
||||
|
@ -524,19 +485,8 @@ void s4_state::s4(machine_config &config)
|
|||
CLOCK(config, "rclock", 3580000/4).signal_handler().set(m_4020, FUNC(ripple_counter_device::clock_w));
|
||||
|
||||
// Add the soundcard
|
||||
M6808(config, m_audiocpu, 3580000);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &s4_state::audio_map);
|
||||
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
|
||||
|
||||
PIA6821(config, m_pias, 0);
|
||||
m_pias->readpb_handler().set(FUNC(s4_state::sound_r));
|
||||
m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w));
|
||||
m_pias->irqa_handler().set("audioirq", FUNC(input_merger_device::in_w<1>));
|
||||
m_pias->irqb_handler().set("audioirq", FUNC(input_merger_device::in_w<2>));
|
||||
|
||||
INPUT_MERGER_ANY_HIGH(config, "audioirq").output_handler().set_inputline(m_audiocpu, M6808_IRQ_LINE);
|
||||
SPEAKER(config, "mono").front_center();
|
||||
WILLIAMS_S4_SOUND(config, m_s4sound, 0).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -549,7 +499,7 @@ ROM_START(flash_l1)
|
|||
ROM_LOAD("green1.716", 0x1000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
|
||||
ROM_LOAD("green2.716", 0x1800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -559,7 +509,7 @@ ROM_START(flash_l2)
|
|||
ROM_LOAD("yellow1.716", 0x1000, 0x0800, CRC(d251738c) SHA1(65ddbf5c36e429243331a4c5d2339df87a8a7f64))
|
||||
ROM_LOAD("yellow2.716", 0x1800, 0x0800, CRC(5049326d) SHA1(3b2f4ea054962bf4ba41d46663b7d3d9a77590ef))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -569,7 +519,7 @@ ROM_START(flash_t1)
|
|||
ROM_LOAD("green1.716", 0x1000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
|
||||
ROM_LOAD("green2a.716", 0x1800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -582,7 +532,7 @@ ROM_START(trizn_l1)
|
|||
ROM_LOAD("green1.716", 0x1000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
|
||||
ROM_LOAD("green2.716", 0x1800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -592,7 +542,7 @@ ROM_START(trizn_t1)
|
|||
ROM_LOAD("green1.716", 0x1000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
|
||||
ROM_LOAD("green2a.716", 0x1800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -605,7 +555,7 @@ ROM_START(tmwrp_l3)
|
|||
ROM_LOAD("green1.716", 0x1000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
|
||||
ROM_LOAD("green2.716", 0x1800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -615,7 +565,7 @@ ROM_START(tmwrp_l2)
|
|||
ROM_LOAD("green1.716", 0x1000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
|
||||
ROM_LOAD("green2.716", 0x1800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -625,7 +575,7 @@ ROM_START(tmwrp_t2)
|
|||
ROM_LOAD("green1.716", 0x1000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
|
||||
ROM_LOAD("green2a.716", 0x1800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -638,7 +588,7 @@ ROM_START(stlwr_l2)
|
|||
ROM_LOAD("yellow1.716", 0x1000, 0x0800, CRC(d251738c) SHA1(65ddbf5c36e429243331a4c5d2339df87a8a7f64))
|
||||
ROM_LOAD("yellow2.716", 0x1800, 0x0800, CRC(5049326d) SHA1(3b2f4ea054962bf4ba41d46663b7d3d9a77590ef))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
|
|
@ -30,29 +30,27 @@ Each game consists of a flat board with an air-driven puck and 10 bowling pins.
|
|||
way, so in fact the puck never touches the pins at all.
|
||||
|
||||
Status:
|
||||
- All games (except s11a/b) seem to be playable, but no sound, and the inputs
|
||||
aren't known.
|
||||
- s4 games: 6 to insert coin, 9 to start, various keys on bottom 2 rows act as puck
|
||||
detectors, period key to signal end of ball. Press it twice to end a frame.
|
||||
- Strike Zone, Alley Cats: 5 to insert coin, 1 to start, then same as above.
|
||||
- s11a/b games: stuck in the boot-up sequence.
|
||||
- All games (except s11a/b) are playable.
|
||||
- s9,s11/a/b: No sound.
|
||||
- To play: 5,1,(optional: 3 to select game type), any of keys A-W,Y,Z,comma,period
|
||||
to activate puck detectors, X to signal end. Press it twice to end a frame.
|
||||
- s11a/b games: stuck in the boot-up sequence, non-functional.
|
||||
- To score a strike, press ABCDFGIX one at a time.
|
||||
|
||||
ToDo:
|
||||
- Only 2 manuals found, and only one schematic, so it's largely guesswork.
|
||||
- Layout (s11a/b)
|
||||
- Inputs
|
||||
- Outputs
|
||||
- Displays (s11/a/b)
|
||||
- Sound
|
||||
- Displays (s11a/b)
|
||||
- Sound (s9/s11/a/b)
|
||||
- Roms missing
|
||||
- Remove all mechanical sounds (no chimes or knocker in these games)
|
||||
|
||||
************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "machine/genpin.h"
|
||||
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "audio/williams.h"
|
||||
#include "machine/6821pia.h"
|
||||
#include "machine/clock.h"
|
||||
#include "machine/input_merger.h"
|
||||
|
@ -74,6 +72,7 @@ public:
|
|||
: genpin_class(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_mainirq(*this, "mainirq")
|
||||
, m_s4sound(*this, "s4sound")
|
||||
, m_pia21(*this, "pia21")
|
||||
, m_pia22(*this, "pia22")
|
||||
, m_pia24(*this, "pia24")
|
||||
|
@ -138,6 +137,7 @@ private:
|
|||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<input_merger_device> m_mainirq;
|
||||
optional_device<williams_s4_sound_device> m_s4sound;
|
||||
optional_device<pia6821_device> m_pia21;
|
||||
optional_device<pia6821_device> m_pia22;
|
||||
required_device<pia6821_device> m_pia24;
|
||||
|
@ -192,16 +192,15 @@ void shuffle_state::s11_map(address_map &map)
|
|||
map(0x4000, 0x7fff).rom().region("maincpu", 0);
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( shuffle )
|
||||
static INPUT_PORTS_START( s4 )
|
||||
PORT_START("X0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_NAME("Plumb Tilt") // 3 touches before it tilts
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN3 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("High Score Reset")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Select Game")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("High Score Reset")
|
||||
|
||||
PORT_START("X1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP09")
|
||||
|
@ -231,30 +230,17 @@ static INPUT_PORTS_START( shuffle )
|
|||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP29")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP30")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP31")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("INP32")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP32")
|
||||
|
||||
PORT_START("X4")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP33")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP34")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP35")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP36")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP37")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP38")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP39")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP40")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP33")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP34")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP35")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("Back Row")
|
||||
|
||||
PORT_START("X5")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP41")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP42")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP43")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("INP44")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("INP45")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("INP46")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_NAME("INP47")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_NAME("INP48")
|
||||
|
||||
PORT_START("X6") // not used?
|
||||
PORT_START("X7") // not used?
|
||||
PORT_START("X5") // not used
|
||||
PORT_START("X6") // not used
|
||||
PORT_START("X7") // not used
|
||||
|
||||
PORT_START("DIAGS")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, shuffle_state, main_nmi, 1)
|
||||
|
@ -322,6 +308,22 @@ static INPUT_PORTS_START( shuffle )
|
|||
PORT_DIPSETTING( 0x07, "31" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( s9 )
|
||||
PORT_INCLUDE(s4)
|
||||
PORT_MODIFY("X0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("Select Game")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN3 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("High Score Reset")
|
||||
|
||||
PORT_MODIFY("X4")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Ticket Dispenser")
|
||||
INPUT_PORTS_END
|
||||
|
||||
void shuffle_state::clockcnt_w(u16 data)
|
||||
{
|
||||
// A wire jumper allows selection of 7,8,9, or 8,9,10
|
||||
|
@ -348,20 +350,11 @@ void shuffle_state::sol0_w(u8 data)
|
|||
|
||||
void shuffle_state::sol1_w(u8 data)
|
||||
{
|
||||
if (BIT(data, 0))
|
||||
m_samples->start(4, 4); // 10 chime
|
||||
|
||||
if (BIT(data, 1))
|
||||
m_samples->start(1, 1); // 100 chime
|
||||
|
||||
if (BIT(data, 2))
|
||||
m_samples->start(2, 2); // 1000 chime
|
||||
|
||||
if (BIT(data, 3))
|
||||
m_samples->start(3, 3); // 10k chime
|
||||
|
||||
if (BIT(data, 5))
|
||||
m_samples->start(0, 6); // knocker
|
||||
if (m_s4sound)
|
||||
{
|
||||
u8 sound_data = BIT(data, 4, 4);
|
||||
m_s4sound->write(~sound_data);
|
||||
}
|
||||
|
||||
for (u8 i = 0; i < 8; i++)
|
||||
m_io_outputs[8U+i] = BIT(data, i);
|
||||
|
@ -523,12 +516,17 @@ void shuffle_state::s4(machine_config &config)
|
|||
m_4020->count_out_cb().set(FUNC(shuffle_state::clockcnt_w));
|
||||
|
||||
CLOCK(config, "rclock", 3580000/4).signal_handler().set(m_4020, FUNC(ripple_counter_device::clock_w));
|
||||
|
||||
// Add the soundcard
|
||||
SPEAKER(config, "mono").front_center();
|
||||
WILLIAMS_S4_SOUND(config, m_s4sound, 0).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
void shuffle_state::s9(machine_config &config)
|
||||
{
|
||||
s4(config);
|
||||
config.device_remove("pia22");
|
||||
config.device_remove("s4sound");
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &shuffle_state::s9_map);
|
||||
|
||||
config.set_default_layout(layout_shuffle9);
|
||||
|
@ -575,7 +573,7 @@ ROM_START(topaz_l1)
|
|||
ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound1.716", 0x0000, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
|
||||
ROM_END
|
||||
|
||||
|
@ -588,20 +586,20 @@ ROM_START(pomp_l1)
|
|||
ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8))
|
||||
ROM_END
|
||||
|
||||
/*----------------------------
|
||||
/ Aristocrat same roms as Pompeii
|
||||
/----------------------------*/
|
||||
/*----------------------------------
|
||||
/ Aristocrat (same roms as Pompeii)
|
||||
/----------------------------------*/
|
||||
ROM_START(arist_l1)
|
||||
ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
|
||||
ROM_LOAD("gamerom.716", 0x2000, 0x0800, CRC(0f069ac2) SHA1(d651d49cdb50cf444e420241a1f9ed48c878feee))
|
||||
ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8))
|
||||
ROM_END
|
||||
|
||||
|
@ -614,7 +612,7 @@ ROM_START(taurs_l1)
|
|||
ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8))
|
||||
ROM_END
|
||||
|
||||
|
@ -627,7 +625,7 @@ ROM_START(kingt_l1)
|
|||
ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("soundx.716", 0x0000, 0x0800, CRC(539d64fb) SHA1(ff0d09c8d7c65e1072691b5b9e4fcaa3f38d67e8))
|
||||
ROM_END
|
||||
|
||||
|
@ -640,7 +638,7 @@ ROM_START(omni_l1)
|
|||
ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", 0)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound.716", 0x0000, 0x0800, CRC(db085cbb) SHA1(9a57abbad183ba16b3dba16d16923c3bfc46a0c3))
|
||||
ROM_END
|
||||
|
||||
|
@ -653,7 +651,7 @@ ROM_START(bstrk_l1)
|
|||
ROM_LOAD("b_ic20.716", 0x3000, 0x0800, CRC(c6f8e3b1) SHA1(cb78d42e1265162132a1ab2320148b6857106b0e))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound.716", 0x0000, 0x0800, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
|
@ -666,7 +664,7 @@ ROM_START(tstrk_l1)
|
|||
ROM_LOAD("ic20.716", 0x3000, 0x0800, CRC(f163fc88) SHA1(988b60626f3d4dc8f4a1dbd0c99282418bc53aae))
|
||||
ROM_LOAD("b_ic17.716", 0x3800, 0x0800, CRC(cfc2518a) SHA1(5e99e40dcb7e178137db8d7d7d6da82ba87130fa))
|
||||
|
||||
ROM_REGION(0x0800, "audiocpu", ROMREGION_ERASEFF)
|
||||
ROM_REGION(0x0800, "s4sound:audiocpu", 0)
|
||||
ROM_LOAD("sound.716", 0x0000, 0x0800, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
|
@ -763,19 +761,19 @@ ROM_END
|
|||
|
||||
} // Anonymous namespace
|
||||
|
||||
GAME( 1978, topaz_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, pomp_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Pompeii (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, arist_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Aristocrat (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1979, taurs_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1979, kingt_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "King Tut (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1980, omni_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Omni (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1983, bstrk_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Big Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1983, tstrk_l1, 0, s4, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Triple Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1984, szone_l5, 0, s9, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Strike Zone (Shuffle) (L-5)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1984, szone_l2, szone_l5, s9, shuffle, shuffle_state, empty_init, ROT0, "Williams/United", "Strike Zone (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1985, alcat_l7, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Alley Cats (Shuffle) (L-7)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1986, tts_l2, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1986, tts_l1, tts_l2, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1987, gmine_l2, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1987, tdawg_l1, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1987, shfin_l1, 0, s11, shuffle, shuffle_state, empty_init, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, topaz_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams", "Topaz (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, pomp_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams/United", "Pompeii (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1978, arist_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams/United", "Aristocrat (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1979, taurs_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams", "Taurus (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1979, kingt_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams/United", "King Tut (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1980, omni_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams/United", "Omni (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1983, bstrk_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams/United", "Big Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1983, tstrk_l1, 0, s4, s4, shuffle_state, empty_init, ROT0, "Williams/United", "Triple Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1984, szone_l5, 0, s9, s9, shuffle_state, empty_init, ROT0, "Williams/United", "Strike Zone (Shuffle) (L-5)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1984, szone_l2, szone_l5, s9, s9, shuffle_state, empty_init, ROT0, "Williams/United", "Strike Zone (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1985, alcat_l7, 0, s11, s9, shuffle_state, empty_init, ROT0, "Williams", "Alley Cats (Shuffle) (L-7)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1986, tts_l2, 0, s11, s9, shuffle_state, empty_init, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1986, tts_l1, tts_l2, s11, s9, shuffle_state, empty_init, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1987, gmine_l2, 0, s11, s9, shuffle_state, empty_init, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1987, tdawg_l1, 0, s11, s9, shuffle_state, empty_init, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
GAME( 1987, shfin_l1, 0, s11, s9, shuffle_state, empty_init, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", MACHINE_IS_SKELETON_MECHANICAL )
|
||||
|
|
Loading…
Reference in a new issue