allied.c : everything works except for coin input.

This commit is contained in:
Robbbert 2014-08-13 09:28:35 +00:00
parent adad28e41d
commit 17f73c6a07
2 changed files with 431 additions and 44 deletions

View File

@ -18,9 +18,26 @@
while IC4PBx is high, then displayed when the line goes low. IC7portB
selects which player's display to update.
There are no dipswitches; instead there are a number of jumper wires
which can be pushed onto one of up to ten connector pins each. There
are 15 10-pin connectors, a 5-pin connector and 2 2-pin connectors.
For some reason the 'rol $46' instruction outputs the original data
followed by the new result, so I've had to employ a horrible hack.
When playing, you must hit Z at the start of each ball, or you'll get
no points. When the ball indicator goes out, your game is over.
Game doesn't have any backup battery, so all info is lost at poweroff.
If required, a fake nvram could be used at 00-3F (like PinMAME does).
Mechanical meters are used to store accounting information.
ToDo:
- Insert coins doesn't register (if you use debug to enter the number of
credits into $1A, then the game is playable).
***************************************************************************/
#include "machine/genpin.h"
@ -35,9 +52,15 @@ public:
allied_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_ic1(*this, "ic1")
, m_ic2(*this, "ic2")
, m_ic4(*this, "ic4")
, m_ic5(*this, "ic5")
, m_ic6(*this, "ic6")
, m_ic7(*this, "ic7")
{ }
DECLARE_DRIVER_INIT(allied);
DECLARE_WRITE8_MEMBER(ic1_b_w);
DECLARE_WRITE8_MEMBER(ic2_b_w);
DECLARE_WRITE_LINE_MEMBER(ic2_cb2_w);
DECLARE_WRITE8_MEMBER(ic3_b_w);
@ -48,13 +71,31 @@ public:
DECLARE_WRITE8_MEMBER(ic7_b_w);
DECLARE_WRITE8_MEMBER(ic8_a_w);
DECLARE_WRITE8_MEMBER(ic8_b_w);
DECLARE_READ8_MEMBER(ic1_a_r);
DECLARE_READ8_MEMBER(ic2_a_r);
DECLARE_READ8_MEMBER(ic4_a_r);
DECLARE_READ8_MEMBER(ic5_a_r);
DECLARE_READ8_MEMBER(ic6_a_r);
DECLARE_READ8_MEMBER(ic6_b_r);
DECLARE_READ8_MEMBER(ic7_a_r);
private:
UINT32 m_player_score[6];
UINT8 m_display;
UINT8 m_bit_counter;
bool m_disp_data;
UINT8 m_ic5a;
UINT8 m_ic6a0;
UINT8 m_ic6a1;
UINT8 m_ic6a2;
UINT8 m_ic6b4;
virtual void machine_reset();
required_device<m6504_device> m_maincpu;
required_device<pia6821_device> m_ic1;
required_device<pia6821_device> m_ic2;
required_device<pia6821_device> m_ic4;
required_device<mos6530_device> m_ic5;
required_device<mos6530_device> m_ic6;
required_device<pia6821_device> m_ic7;
};
@ -72,11 +113,260 @@ static ADDRESS_MAP_START( allied_map, AS_PROGRAM, 8, allied_state )
ADDRESS_MAP_END
static INPUT_PORTS_START( allied )
PORT_START("TEST")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test")
PORT_START("R11")
PORT_CONFNAME( 0x0f, 0x00, "1st Replay 1000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R12")
PORT_CONFNAME( 0x0f, 0x05, "1st Replay 10000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R13")
PORT_CONFNAME( 0x0f, 0x00, "1st Replay 100000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R21")
PORT_CONFNAME( 0x0f, 0x00, "2nd Replay 1000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R22")
PORT_CONFNAME( 0x0f, 0x00, "2nd Replay 10000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R23")
PORT_CONFNAME( 0x0f, 0x01, "2nd Replay 100000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R31")
PORT_CONFNAME( 0x0f, 0x00, "3rd Replay 1000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R32")
PORT_CONFNAME( 0x0f, 0x06, "3rd Replay 10000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("R33")
PORT_CONFNAME( 0x0f, 0x01, "3rd Replay 100000")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("CM1")
PORT_CONFNAME( 0x0f, 0x05, "Credits Max 1")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("CM2")
PORT_CONFNAME( 0x0f, 0x01, "Credits Max 10")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("CS1")
PORT_CONFNAME( 0x0f, 0x01, "Coin Slot 1")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("CS2")
PORT_CONFNAME( 0x0f, 0x01, "Coin Slot 2")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("CS3")
PORT_CONFNAME( 0x0f, 0x01, "Coin Slot 3")
PORT_CONFSETTING( 0x00, "0")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_CONFSETTING( 0x06, "6")
PORT_CONFSETTING( 0x07, "7")
PORT_CONFSETTING( 0x08, "8")
PORT_CONFSETTING( 0x09, "9")
PORT_START("CR")
PORT_CONFNAME( 0x0f, 0x01, "Credits Option")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_START("B")
PORT_CONFNAME( 0x07, 0x03, "Balls")
PORT_CONFSETTING( 0x01, "1")
PORT_CONFSETTING( 0x02, "2")
PORT_CONFSETTING( 0x03, "3")
PORT_CONFSETTING( 0x04, "4")
PORT_CONFSETTING( 0x05, "5")
PORT_START("A")
PORT_CONFNAME( 0x04, 0x04, "Award")
PORT_CONFSETTING( 0x04, "Replay")
PORT_CONFSETTING( 0x00, "Extra Ball")
PORT_CONFNAME( 0x08, 0x08, "Line Up Inhibit")
PORT_CONFSETTING( 0x08, DEF_STR(No))
PORT_CONFSETTING( 0x00, DEF_STR(Yes))
PORT_START("N")
PORT_CONFNAME( 0x01, 0x01, "Number of Players")
PORT_CONFSETTING( 0x00, "2")
PORT_CONFSETTING( 0x01, "4")
PORT_START("X1A") // ic1_a
PORT_BIT( 0x5f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) PORT_NAME("Bullseye target")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) PORT_NAME("Ball in play")
PORT_START("X2A") // ic2_a
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("L Bumper")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("C Bumper")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("R Bumper")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) PORT_NAME("L Bullseye")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) PORT_NAME("R Bullseye")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) PORT_NAME("L Sling")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) PORT_NAME("R Sling")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole")
PORT_START("X4A") // ic4_a
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) PORT_NAME("Target A")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) PORT_NAME("Target B")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) PORT_NAME("Target C")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) PORT_NAME("Target D")
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START )
PORT_START("X6A") // ic6_a
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_TILT1 ) PORT_NAME("Slam Tilt")
PORT_START("X7A") // ic7_a
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) PORT_NAME("Raise Target A")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) PORT_NAME("Raise Target D")
PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) PORT_NAME("500 point rollover")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) PORT_NAME("Raise Target B")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) PORT_NAME("Raise Target C")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_NAME("Extra Ball when Lit")
INPUT_PORTS_END
// 1 target, 1 rollover
READ8_MEMBER( allied_state::ic1_a_r )
{
return ioport("X1A")->read();
}
// 6 lamps
WRITE8_MEMBER( allied_state::ic1_b_w )
{
}
// 8 switches
READ8_MEMBER( allied_state::ic2_a_r )
{
return ioport("X2A")->read();
}
WRITE8_MEMBER( allied_state::ic2_b_w )
{
//printf("%s:IC2B:%X ",machine().describe_context(),data);
// PB0-4,6 - lamps
m_disp_data = !BIT(data, 7);
}
@ -97,11 +387,16 @@ WRITE8_MEMBER( allied_state::ic3_b_w )
m_maincpu->set_input_line(M6504_IRQ_LINE, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE );
}
// 6 switches
READ8_MEMBER( allied_state::ic4_a_r )
{
return ioport("X4A")->read();
}
WRITE8_MEMBER( allied_state::ic4_b_w )
{
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7446A
UINT8 segment, i;
//printf("%s:IC4B:%X ",machine().describe_context(),data);
for (i = 0; i < 4; i++)
{
if (!BIT(data, i+4))
@ -119,15 +414,32 @@ WRITE8_MEMBER( allied_state::ic4_b_w )
output_set_digit_value(i*10+5, patterns[segment]);
}
}
// doesn't seem to be a strobe for the credits display
segment = (m_player_score[4] >> 0) & 15;
output_set_digit_value(40, patterns[segment]);
segment = (m_player_score[4] >> 4) & 15;
output_set_digit_value(41, patterns[segment]);
// PB0-3 - player 1-4 LED - to do
}
WRITE_LINE_MEMBER( allied_state::ic4_cb2_w )
{
}
// 8 of the adjustment connectors
READ8_MEMBER( allied_state::ic5_a_r )
{
return m_ic5a;
}
// cabinet solenoids
WRITE8_MEMBER( allied_state::ic5_b_w )
{
// PB0 - play meter
// PB1 - replay meter
if (!BIT(data, 2)) // chime C
m_samples->start(1, 1);
@ -143,19 +455,86 @@ WRITE8_MEMBER( allied_state::ic5_b_w )
m_maincpu->set_input_line(M6504_IRQ_LINE, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE );
}
// 4 adjustments, 3 coin slots, slam tilt
READ8_MEMBER( allied_state::ic6_a_r )
{
return m_ic6a0 | m_ic6a1 | m_ic6a2 | ioport("X6A")->read();
}
// 1 adjustment, test switch
READ8_MEMBER( allied_state::ic6_b_r )
{
return m_ic6b4 | ioport("TEST")->read() | 0xcf;
}
WRITE8_MEMBER( allied_state::ic6_b_w )
{
// PB0-3 to drop targets
m_maincpu->set_input_line(M6504_IRQ_LINE, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE );
}
// 6 inputs
READ8_MEMBER( allied_state::ic7_a_r )
{
return ioport("X7A")->read();
}
WRITE8_MEMBER( allied_state::ic7_b_w )
{
//if (m_display) printf(" %X=%X",m_display,m_player_score[m_display-1]>>1);
//printf("%s:IC7B:%X ",machine().describe_context(),data);
// PB7 - tilt lamp
// PB4-6 display select
m_display = data >> 4;
if (m_display > 5)
m_display = 0;
m_bit_counter = 0;
// PB0-3 switch matrix
data &= 15;
bool res;
// IC1CA1 = 3rd 100,000 replay
res = (ioport("R33")->read() == data);
m_ic1->ca1_w(!res);
// IC1CB1 = Number of balls
res = (ioport("B")->read() == data);
m_ic1->cb1_w(!res);
// IC2CA1 = Max. credit tens
res = (ioport("CM2")->read() == data);
m_ic2->ca1_w(!res);
// IC2CB1 = Max. credit units
res = (ioport("CM1")->read() == data);
m_ic2->cb1_w(!res);
// IC4CA1 = Credit 1 prog.
res = (ioport("CS1")->read() == data);
m_ic4->ca1_w(!res);
// IC5PA0 = 1st 1,000 replay
m_ic5a = (ioport("R11")->read() == data) ? 0 : 1;
// IC5PA1 = 1st 10,000 replay
m_ic5a |= (ioport("R12")->read() == data) ? 0 : 2;
// IC5PA2 = 1st 100,000 replay
m_ic5a |= (ioport("R13")->read() == data) ? 0 : 4;
// IC5PA3 = 2nd 1,000 replay
m_ic5a |= (ioport("R21")->read() == data) ? 0 : 8;
// IC5PA4 = 2nd 10,000 replay
m_ic5a |= (ioport("R22")->read() == data) ? 0 : 16;
// IC5PA5 = 2nd 100,000 replay
m_ic5a |= (ioport("R23")->read() == data) ? 0 : 32;
// IC5PA6 = 3rd 1,000 replay
m_ic5a |= (ioport("R31")->read() == data) ? 0 : 64;
// IC5PA7 = 3rd 10,000 replay
m_ic5a |= (ioport("R32")->read() == data) ? 0 : 128;
// IC6PA0 = Credit options
m_ic6a0 = (ioport("CR")->read() == data) ? 0 : 1;
// IC6PA1 = Credit 2 prog.
m_ic6a1 = (ioport("CS2")->read() == data) ? 0 : 2;
// IC6PA2 = Replay / Add-a-ball / Match inhibit
m_ic6a2 = ioport("A")->read();
// IC6PB4 = Credit 3 prog.
m_ic6b4 = (ioport("CS3")->read() == data) ? 0 : 16;
// IC7CA1 = 2/4 Players
res = ((ioport("N")->read() ? 4 : 2) == data);
m_ic7->ca1_w(!res);
}
// playfield solenoids
@ -174,15 +553,17 @@ WRITE8_MEMBER( allied_state::ic8_a_w )
// PB0-4 = ball 1-5 LED; PB5 = shoot again lamp
WRITE8_MEMBER( allied_state::ic8_b_w )
{
//printf("%s:IC8B:%X ",machine().describe_context(),data);
output_set_value("led1", !BIT(data, 0));
output_set_value("led2", !BIT(data, 1));
output_set_value("led3", !BIT(data, 2));
output_set_value("led4", !BIT(data, 3));
output_set_value("led5", !BIT(data, 4));
output_set_value("led6", !BIT(data, 5));
}
void allied_state::machine_reset()
{
}
DRIVER_INIT_MEMBER(allied_state,allied)
{
output_set_value("led0", 1); //1=off (diagnostic led still to be hooked up)
}
static MACHINE_CONFIG_START( allied, allied_state )
@ -198,17 +579,17 @@ static MACHINE_CONFIG_START( allied, allied_state )
/* Devices */
MCFG_DEVICE_ADD("ic1", PIA6821, 0)
//MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic1_a_r))
MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic1_a_r))
//MCFG_PIA_WRITEPA_HANDLER(WRITE8(allied_state, ic1_a_w))
//MCFG_PIA_READPB_HANDLER(READ8(allied_state, ic1_b_r))
//MCFG_PIA_WRITEPB_HANDLER(WRITE8(allied_state, ic1_b_w))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(allied_state, ic1_b_w))
//MCFG_PIA_CA2_HANDLER(WRITELINE(allied_state, ic1_ca2_w))
//MCFG_PIA_CB2_HANDLER(WRITELINE(allied_state, ic1_cb2_w))
MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6504_device, irq_line))
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6504_device, irq_line))
MCFG_DEVICE_ADD("ic2", PIA6821, 0)
//MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic2_a_r))
MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic2_a_r))
//MCFG_PIA_WRITEPA_HANDLER(WRITE8(allied_state, ic2_a_w))
//MCFG_PIA_READPB_HANDLER(READ8(allied_state, ic2_b_r))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(allied_state, ic2_b_w))
@ -218,7 +599,7 @@ static MACHINE_CONFIG_START( allied, allied_state )
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6504_device, irq_line))
MCFG_DEVICE_ADD("ic4", PIA6821, 0)
//MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic4_a_r))
MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic4_a_r))
//MCFG_PIA_WRITEPA_HANDLER(WRITE8(allied_state, ic4_a_w))
//MCFG_PIA_READPB_HANDLER(READ8(allied_state, ic4_b_r))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(allied_state, ic4_b_w))
@ -228,7 +609,7 @@ static MACHINE_CONFIG_START( allied, allied_state )
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6504_device, irq_line))
MCFG_DEVICE_ADD("ic7", PIA6821, 0)
//MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic7_a_r))
MCFG_PIA_READPA_HANDLER(READ8(allied_state, ic7_a_r))
//MCFG_PIA_WRITEPA_HANDLER(WRITE8(allied_state, ic7_a_w))
//MCFG_PIA_READPB_HANDLER(READ8(allied_state, ic7_b_r))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(allied_state, ic7_b_w))
@ -251,24 +632,24 @@ static MACHINE_CONFIG_START( allied, allied_state )
MCFG_MOS6530_OUT_PB_CB(WRITE8(allied_state, ic3_b_w))
MCFG_DEVICE_ADD("ic5", MOS6530, 3572549/4)
//MCFG_MOS6530_IN_PA_CB(READ8(allied_state, ic5_a_r))
MCFG_MOS6530_IN_PA_CB(READ8(allied_state, ic5_a_r))
//MCFG_MOS6530_OUT_PA_CB(WRITE8(allied_state, ic5_a_w))
//MCFG_MOS6530_IN_PB_CB(READ8(allied_state, ic5_b_r))
MCFG_MOS6530_OUT_PB_CB(WRITE8(allied_state, ic5_b_w))
MCFG_DEVICE_ADD("ic6", MOS6530, 3572549/4)
//MCFG_MOS6530_IN_PA_CB(READ8(allied_state, ic6_a_r))
MCFG_MOS6530_IN_PA_CB(READ8(allied_state, ic6_a_r))
//MCFG_MOS6530_OUT_PA_CB(WRITE8(allied_state, ic6_a_w))
//MCFG_MOS6530_IN_PB_CB(READ8(allied_state, ic6_b_r))
MCFG_MOS6530_IN_PB_CB(READ8(allied_state, ic6_b_r))
MCFG_MOS6530_OUT_PB_CB(WRITE8(allied_state, ic6_b_w))
MACHINE_CONFIG_END
ROM_START( allied )
ROM_REGION( 0x2000, "maincpu", 0 )
ROM_LOAD( "r6530-009.u5", 0x1400, 0x0400, CRC(e4fb64fb) SHA1(a3d9de7cbfb42180a860e0bbbeaeba96d8bd1e20))
ROM_LOAD( "r6530-010.u6", 0x1800, 0x0400, CRC(dca980dd) SHA1(3817d75413854d889fc1ce4fd6a51d820d1e0534))
ROM_LOAD( "r6530-011.u3", 0x1c00, 0x0400, CRC(13f42789) SHA1(baa0f73fda08a3c5d6f1423fb329e4febb07ef97))
ROM_LOAD( "6530-009.u5", 0x1400, 0x0400, CRC(e4fb64fb) SHA1(a3d9de7cbfb42180a860e0bbbeaeba96d8bd1e20))
ROM_LOAD( "6530-010.u6", 0x1800, 0x0400, CRC(dca980dd) SHA1(3817d75413854d889fc1ce4fd6a51d820d1e0534))
ROM_LOAD( "6530-011.u3", 0x1c00, 0x0400, CRC(13f42789) SHA1(baa0f73fda08a3c5d6f1423fb329e4febb07ef97))
ROM_END
#define rom_suprpick rom_allied
@ -284,15 +665,15 @@ ROM_END
#define rom_starshot rom_allied
GAME(1977, allied, 0, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Allied System", GAME_IS_BIOS_ROOT)
GAME(1977, suprpick, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Super Picker", GAME_IS_SKELETON_MECHANICAL)
GAME(1977, royclark, allied, allied, allied, allied_state, allied, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", GAME_IS_SKELETON_MECHANICAL)
GAME(1977, thndbolt, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Thunderbolt", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, hoedown, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Hoe Down", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, takefive, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Take Five", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, heartspd, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Hearts & Spades", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, foathens, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Flame of Athens", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, disco79, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Disco '79", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, erosone, allied, allied, allied, allied_state, allied, ROT0, "Fascination Int.", "Eros One", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, circa33, allied, allied, allied, allied_state, allied, ROT0, "Fascination Int.", "Circa 1933", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, starshot, allied, allied, allied, allied_state, allied, ROT0, "Allied Leisure", "Star Shooter", GAME_IS_SKELETON_MECHANICAL)
GAME(1977, allied, 0, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Allied System", GAME_IS_BIOS_ROOT)
GAME(1977, suprpick, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Super Picker", GAME_IS_SKELETON_MECHANICAL)
GAME(1977, royclark, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", GAME_IS_SKELETON_MECHANICAL)
GAME(1977, thndbolt, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Thunderbolt", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, hoedown, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hoe Down", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, takefive, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Take Five", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, heartspd, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hearts & Spades", GAME_IS_SKELETON_MECHANICAL)
GAME(1978, foathens, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Flame of Athens", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, disco79, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Disco '79", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, erosone, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Eros One", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, circa33, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Circa 1933", GAME_IS_SKELETON_MECHANICAL)
GAME(1979, starshot, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Star Shooter", GAME_IS_SKELETON_MECHANICAL)

View File

@ -18,9 +18,9 @@
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P0"><text string="Ball"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P2"><text string="Players"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P2"><text string="1 2 3 4 5"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
@ -117,26 +117,32 @@
</bezel>
<!-- Credits and Balls -->
<bezel name="digit45" element="digit">
<bounds left="39" top="345" right="73" bottom="384" />
</bezel>
<bezel name="digit44" element="digit">
<bounds left="110" top="345" right="144" bottom="384" />
</bezel>
<bezel name="digit43" element="digit">
<bezel name="digit41" element="digit">
<bounds left="171" top="345" right="205" bottom="384" />
</bezel>
<bezel name="digit42" element="digit">
<bezel name="digit40" element="digit">
<bounds left="210" top="345" right="244" bottom="384" />
</bezel>
<bezel element="P2"><bounds left="100" right="158" top="330" bottom="342" /></bezel>
<bezel element="P1"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
<bezel element="P0"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
<bezel element="P2"><bounds left="30" right="88" top="350" bottom="362" /></bezel>
<bezel name="text3" element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
<bezel name="text2" element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
<bezel name="text1" element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
<bezel name="text0" element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
<bezel name="led0" element="red_led">
<bounds left="10" right="25" top="360" bottom="375" /></bezel>
<bezel name="led1" element="red_led">
<bounds left="34" right="39" top="365" bottom="370" /></bezel>
<bezel name="led2" element="red_led">
<bounds left="44" right="49" top="365" bottom="370" /></bezel>
<bezel name="led3" element="red_led">
<bounds left="54" right="59" top="365" bottom="370" /></bezel>
<bezel name="led4" element="red_led">
<bounds left="65" right="70" top="365" bottom="370" /></bezel>
<bezel name="led5" element="red_led">
<bounds left="75" right="80" top="365" bottom="370" /></bezel>
<bezel name="led6" element="red_led">
<bounds left="130" right="135" top="365" bottom="370" /></bezel>
</view>
</mamelayout>