mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
allied.c : everything works except for coin input.
This commit is contained in:
parent
adad28e41d
commit
17f73c6a07
@ -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)
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user