by17.c : WIP

This commit is contained in:
Robbbert 2014-07-27 12:13:14 +00:00
parent 3457a0b80d
commit 4ca32baa67
5 changed files with 642 additions and 66 deletions

1
.gitattributes vendored
View File

@ -6455,6 +6455,7 @@ src/mame/layout/buckrog.lay svneol=native#text/xml
src/mame/layout/buggybjr.lay svneol=native#text/xml
src/mame/layout/buggyboy.lay svneol=native#text/xml
src/mame/layout/buggychl.lay svneol=native#text/xml
src/mame/layout/by17.lay svneol=native#text/plain
src/mame/layout/bzone.lay svneol=native#text/xml
src/mame/layout/cardline.lay svneol=native#text/xml
src/mame/layout/cbombers.lay svneol=native#text/xml

View File

@ -1,146 +1,578 @@
/*
/********************************************************************************************
PINBALL
Bally MPU AS-2518-17
*/
These are some very early and well known SS machines, such as 'Eight Ball'.
They have an orange digital display, and a chime unit.
#include "emu.h"
ToDo:
- Display to fix
- Bow & Arrow fails the PIA test and doesn't boot
- Dips, Inputs, Solenoids vary per game
- Mechanical
*********************************************************************************************/
#include "machine/genpin.h"
#include "cpu/m6800/m6800.h"
#include "machine/6821pia.h"
#include "machine/nvram.h"
#include "by17.lh"
class by17_state : public driver_device
class by17_state : public genpin_class
{
public:
by17_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pia_u10(*this, "pia_u10")
, m_pia_u11(*this, "pia_u11")
, m_io_test(*this, "TEST")
, m_io_dsw0(*this, "DSW0")
, m_io_dsw1(*this, "DSW1")
, m_io_dsw2(*this, "DSW2")
, m_io_dsw3(*this, "DSW3")
, m_io_x0(*this, "X0")
, m_io_x1(*this, "X1")
, m_io_x2(*this, "X2")
, m_io_x3(*this, "X3")
, m_io_x4(*this, "X4")
{ }
protected:
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
virtual void machine_reset();
public:
DECLARE_DRIVER_INIT(by17);
DECLARE_READ8_MEMBER(u10_a_r);
DECLARE_WRITE8_MEMBER(u10_a_w);
DECLARE_READ8_MEMBER(u10_b_r);
DECLARE_WRITE8_MEMBER(u10_b_w);
DECLARE_READ8_MEMBER(u11_a_r);
DECLARE_WRITE8_MEMBER(u11_a_w);
DECLARE_WRITE8_MEMBER(u11_b_w);
DECLARE_WRITE_LINE_MEMBER(u10_ca2_w);
DECLARE_WRITE_LINE_MEMBER(u10_cb2_w);
DECLARE_WRITE_LINE_MEMBER(u11_ca2_w);
DECLARE_WRITE_LINE_MEMBER(u11_cb2_w);
DECLARE_INPUT_CHANGED_MEMBER(activity_test);
DECLARE_INPUT_CHANGED_MEMBER(self_test);
TIMER_DEVICE_CALLBACK_MEMBER(u10_timer);
TIMER_DEVICE_CALLBACK_MEMBER(u11_timer);
private:
UINT8 m_u10;
UINT8 m_u10_a;
UINT8 m_u10_b;
UINT8 m_u11_a;
UINT8 m_u11_b;
bool m_u10_cb2;
bool m_u10_timer;
bool m_u11_timer;
UINT8 m_digit;
UINT8 m_segment;
UINT8 m_disp_info[3];
virtual void machine_reset();
required_device<m6800_cpu_device> m_maincpu;
required_device<pia6821_device> m_pia_u10;
required_device<pia6821_device> m_pia_u11;
required_ioport m_io_test;
required_ioport m_io_dsw0;
required_ioport m_io_dsw1;
required_ioport m_io_dsw2;
required_ioport m_io_dsw3;
required_ioport m_io_x0;
required_ioport m_io_x1;
required_ioport m_io_x2;
required_ioport m_io_x3;
required_ioport m_io_x4;
};
static ADDRESS_MAP_START( by17_map, AS_PROGRAM, 8, by17_state )
AM_RANGE(0x0000, 0xffff) AM_NOP
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x007f) AM_RAM
AM_RANGE(0x0200, 0x02ff) AM_RAM // CMOS NVRAM
AM_RANGE(0x1000, 0x7fff) AM_ROM
ADDRESS_MAP_GLOBAL_MASK(0x1fff)
AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu
AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write)
AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write)
AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0 )
ADDRESS_MAP_END
static INPUT_PORTS_START( by17 )
PORT_START("TEST")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by17_state, self_test, 0)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Activity") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, by17_state, activity_test, 0)
PORT_START("DSW0")
PORT_DIPNAME( 0x01, 0x00, "S01") // S1-5: 32 combinations of coins/credits of a coin slot. S9-13 other slot.
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x01, DEF_STR( On ))
PORT_DIPNAME( 0x02, 0x00, "S02")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x02, DEF_STR( On ))
PORT_DIPNAME( 0x04, 0x00, "S03")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x04, DEF_STR( On ))
PORT_DIPNAME( 0x08, 0x00, "S04")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x08, DEF_STR( On ))
PORT_DIPNAME( 0x10, 0x00, "S05")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x10, DEF_STR( On ))
PORT_DIPNAME( 0x20, 0x20, "S06")
PORT_DIPSETTING( 0x00, DEF_STR( No ))
PORT_DIPSETTING( 0x20, DEF_STR( Yes ))
PORT_DIPNAME( 0x40, 0x40, "S07")
PORT_DIPSETTING( 0x00, DEF_STR( No ))
PORT_DIPSETTING( 0x40, DEF_STR( Yes ))
PORT_DIPNAME( 0x80, 0x80, "S08")
PORT_DIPSETTING( 0x00, DEF_STR( No ))
PORT_DIPSETTING( 0x80, DEF_STR( Yes ))
PORT_START("DSW1")
PORT_DIPNAME( 0x01, 0x00, "S09")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x01, DEF_STR( On ))
PORT_DIPNAME( 0x02, 0x00, "S10")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x02, DEF_STR( On ))
PORT_DIPNAME( 0x04, 0x00, "S11")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x04, DEF_STR( On ))
PORT_DIPNAME( 0x08, 0x00, "S12")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x08, DEF_STR( On ))
PORT_DIPNAME( 0x10, 0x00, "S13")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x10, DEF_STR( On ))
PORT_DIPNAME( 0x20, 0x00, "S14")
PORT_DIPSETTING( 0x00, DEF_STR( Yes ))
PORT_DIPSETTING( 0x20, DEF_STR( No ))
PORT_DIPNAME( 0x40, 0x40, "S15")
PORT_DIPSETTING( 0x00, DEF_STR( No ))
PORT_DIPSETTING( 0x40, DEF_STR( Yes ))
PORT_DIPNAME( 0x80, 0x00, "S16")
PORT_DIPSETTING( 0x00, DEF_STR( No ))
PORT_DIPSETTING( 0x80, DEF_STR( Yes ))
PORT_START("DSW2")
PORT_DIPNAME( 0x01, 0x00, "S17")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x01, DEF_STR( On ))
PORT_DIPNAME( 0x02, 0x00, "S18")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x02, DEF_STR( On ))
PORT_DIPNAME( 0x04, 0x00, "S19")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x04, DEF_STR( On ))
PORT_DIPNAME( 0x08, 0x00, "S20")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x08, DEF_STR( On ))
PORT_DIPNAME( 0x10, 0x00, "S21")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x10, DEF_STR( On ))
PORT_DIPNAME( 0x20, 0x00, "S22")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x20, DEF_STR( On ))
PORT_DIPNAME( 0x40, 0x00, "S23")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x40, DEF_STR( On ))
PORT_DIPNAME( 0x80, 0x00, "S24")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x80, DEF_STR( On ))
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "Maximum Credits")
PORT_DIPSETTING( 0x00, "10")
PORT_DIPSETTING( 0x01, "15")
PORT_DIPSETTING( 0x02, "25")
PORT_DIPSETTING( 0x03, "40")
PORT_DIPNAME( 0x04, 0x04, "Credits displayed")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x04, DEF_STR( On ))
PORT_DIPNAME( 0x08, 0x08, "Match")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x08, DEF_STR( On ))
PORT_DIPNAME( 0x10, 0x00, "Keep all replays")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x10, DEF_STR( On ))
PORT_DIPNAME( 0x20, 0x00, "Voice" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x20, DEF_STR( On ))
PORT_DIPNAME( 0xC0, 0x40, "Balls")
PORT_DIPSETTING( 0xC0, "2")
PORT_DIPSETTING( 0x00, "3")
PORT_DIPSETTING( 0x80, "4")
PORT_DIPSETTING( 0x40, "5")
PORT_START("X0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER )
PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X)
PORT_START("X1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
PORT_BIT( 0x38, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT1 ) PORT_NAME("Slam Tilt")
// from here, vary per game
PORT_START("X2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K)
PORT_START("X3")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
PORT_START("X4")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
INPUT_PORTS_END
INPUT_CHANGED_MEMBER( by17_state::activity_test )
{
if(newval)
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
INPUT_CHANGED_MEMBER( by17_state::self_test )
{
m_pia_u10->ca1_w(newval);
}
WRITE_LINE_MEMBER( by17_state::u10_ca2_w )
{
if (m_u10 == 15)
{
m_disp_info[0] = 1;
m_disp_info[1] = m_digit;
m_disp_info[2] = m_segment;
}
else
m_disp_info[0] = 0;
}
WRITE_LINE_MEMBER( by17_state::u10_cb2_w )
{
}
WRITE_LINE_MEMBER( by17_state::u11_ca2_w )
{
output_set_value("led0", !state);
}
WRITE_LINE_MEMBER( by17_state::u11_cb2_w )
{
}
READ8_MEMBER( by17_state::u10_a_r )
{
return m_u10_a;
}
WRITE8_MEMBER( by17_state::u10_a_w )
{
m_segment = data >> 4;
m_u10_a = data;
m_u10 = (data & 15) | (BIT(m_u11_a, 0) << 4);
//if (m_disp_info[0]) if (m_disp_info[2] < 15) printf("%X:%X:%X:%X ",m_u10,m_disp_info[0],m_disp_info[1],m_disp_info[2]);
if ((m_disp_info[0]) && (BIT(m_u10, 4)))
{
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
output_set_digit_value(m_disp_info[1]+(m_u10&15)*8, patterns[m_disp_info[2]]);
}
}
READ8_MEMBER( by17_state::u10_b_r )
{
UINT8 data = 0;
if (BIT(m_u10_a, 0))
data |= m_io_x0->read();
if (BIT(m_u10_a, 1))
data |= m_io_x1->read();
if (BIT(m_u10_a, 2))
data |= m_io_x2->read();
if (BIT(m_u10_a, 3))
data |= m_io_x3->read();
if (BIT(m_u10_a, 4))
data |= m_io_x4->read();
if (BIT(m_u10_a, 5))
data |= m_io_dsw0->read();
if (BIT(m_u10_a, 6))
data |= m_io_dsw1->read();
if (BIT(m_u10_a, 7))
data |= m_io_dsw2->read();
if (m_u10_cb2)
data |= m_io_dsw3->read();
return data;
}
WRITE8_MEMBER( by17_state::u10_b_w )
{
m_u10_b = data;
}
READ8_MEMBER( by17_state::u11_a_r )
{
return m_u11_a;
}
WRITE8_MEMBER( by17_state::u11_a_w )
{
m_u11_a = data;
m_digit = 0xff;
if BIT(data, 2)
m_digit = 5;
else
if BIT(data, 3)
m_digit = 4;
else
if BIT(data, 4)
m_digit = 3;
else
if BIT(data, 5)
m_digit = 2;
else
if BIT(data, 6)
m_digit = 1;
else
if BIT(data, 7)
m_digit = 0;
}
WRITE8_MEMBER( by17_state::u11_b_w )
{
m_u11_b = data;
switch (data & 15)
{
case 0x0: //
//m_samples->start(0, 3);
break;
case 0x1: // chime 10
m_samples->start(1, 1);
break;
case 0x2: // chime 100
m_samples->start(2, 2);
break;
case 0x3: // chime 1000
m_samples->start(3, 3);
break;
case 0x4: // chime 10000
m_samples->start(0, 4);
break;
case 0x5: // knocker
m_samples->start(0, 6);
break;
case 0x6: // outhole
m_samples->start(0, 5);
break;
// from here, vary per game
case 0x7:
case 0x8:
case 0x9:
//m_samples->start(0, 5);
break;
case 0xa:
//m_samples->start(0, 5);
break;
case 0xb:
//m_samples->start(0, 0);
break;
case 0xc:
//m_samples->start(0, 5);
break;
case 0xd:
//m_samples->start(0, 0);
break;
case 0xe:
//m_samples->start(0, 5);
break;
case 0xf: // not used
break;
}
}
void by17_state::machine_reset()
{
m_u10_a = 0;
m_u10_b = 0;
m_u10_cb2 = 0;
m_u11_a = 0;
m_u11_b = 0;
}
DRIVER_INIT_MEMBER(by17_state,by17)
{
}
// zero-cross detection
TIMER_DEVICE_CALLBACK_MEMBER( by17_state::u10_timer )
{
m_u10_timer ^= 1;
m_pia_u10->cb1_w(m_u10_timer);
}
// 555 timer for display refresh
TIMER_DEVICE_CALLBACK_MEMBER( by17_state::u11_timer )
{
m_u11_timer ^= 1;
m_pia_u11->ca1_w(m_u11_timer);
}
static MACHINE_CONFIG_START( by17, by17_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6800, 1000000)
MCFG_CPU_ADD("maincpu", M6800, 1000000) // no xtal, just 2 chips forming a random oscillator
MCFG_CPU_PROGRAM_MAP(by17_map)
MCFG_NVRAM_ADD_0FILL("nvram")
/* Video */
MCFG_DEFAULT_LAYOUT(layout_by17)
/* Sound */
MCFG_FRAGMENT_ADD( genpin_audio )
/* Devices */
MCFG_DEVICE_ADD("pia_u10", PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(by17_state, u10_a_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(by17_state, u10_a_w))
MCFG_PIA_READPB_HANDLER(READ8(by17_state, u10_b_r))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(by17_state, u10_b_w))
MCFG_PIA_CA2_HANDLER(WRITELINE(by17_state, u10_ca2_w))
MCFG_PIA_CB2_HANDLER(WRITELINE(by17_state, u10_cb2_w))
MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z", by17_state, u10_timer, attotime::from_hz(120)) // mains freq*2
MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(by17_state, u11_a_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(by17_state, u11_a_w))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(by17_state, u11_b_w))
MCFG_PIA_CA2_HANDLER(WRITELINE(by17_state, u11_ca2_w))
MCFG_PIA_CB2_HANDLER(WRITELINE(by17_state, u11_cb2_w))
MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_d", by17_state, u11_timer, attotime::from_hz(634)) // 555 timer*2
MACHINE_CONFIG_END
/*--------------------------------
/ Black Jack
/-------------------------------*/
ROM_START(blackjck)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "728-32_2.716", 0x1000, 0x0800, CRC(1333c9d1) SHA1(1fbb60d84db47ffaf7f291575b2705783a110678))
ROM_LOAD( "720-20_6.716", 0x1800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "728-32_2.716", 0x0000, 0x0800, CRC(1333c9d1) SHA1(1fbb60d84db47ffaf7f291575b2705783a110678))
ROM_LOAD( "720-20_6.716", 0x0800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_END
/*--------------------------------
/ Bow and Arrow
/-------------------------------*/
ROM_START(bowarrow)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("b14.bin", 0x1400, 0x0200, CRC(d4d0f92a) SHA1(b996cbe9762fafd64115dc78e24626cf08f8abf7))
ROM_LOAD("b16.bin", 0x1600, 0x0200, CRC(ad2102e7) SHA1(86887beea5e03e80f60c947d6d71431e5eab3d1b))
ROM_LOAD("b18.bin", 0x1800, 0x0200, CRC(5d84656b) SHA1(d17350f5a0cc0cd00b60df4903034489dce7ade5))
ROM_LOAD("b1a.bin", 0x1a00, 0x0200, CRC(6f083ce6) SHA1(624b00e72e223c6b9fbf38b831200c9a7aa0d8f7))
ROM_LOAD("b1c.bin", 0x1c00, 0x0200, CRC(6ed4d39e) SHA1(1f6c57c7274c76246dd2f0b70ec459857a5cf1eb))
ROM_LOAD("b1e.bin", 0x1e00, 0x0200, CRC(ff2f97de) SHA1(28a8fdeccb1382d3a1153c97466426459c9fa075))
ROM_RELOAD( 0xfe00, 0x0200)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD("b14.bin", 0x0400, 0x0200, CRC(d4d0f92a) SHA1(b996cbe9762fafd64115dc78e24626cf08f8abf7))
ROM_LOAD("b16.bin", 0x0600, 0x0200, CRC(ad2102e7) SHA1(86887beea5e03e80f60c947d6d71431e5eab3d1b))
ROM_LOAD("b18.bin", 0x0800, 0x0200, CRC(5d84656b) SHA1(d17350f5a0cc0cd00b60df4903034489dce7ade5))
ROM_LOAD("b1a.bin", 0x0a00, 0x0200, CRC(6f083ce6) SHA1(624b00e72e223c6b9fbf38b831200c9a7aa0d8f7))
ROM_LOAD("b1c.bin", 0x0c00, 0x0200, CRC(6ed4d39e) SHA1(1f6c57c7274c76246dd2f0b70ec459857a5cf1eb))
ROM_LOAD("b1e.bin", 0x0e00, 0x0200, CRC(ff2f97de) SHA1(28a8fdeccb1382d3a1153c97466426459c9fa075))
ROM_END
/*--------------------------------
/ Eight Ball
/-------------------------------*/
ROM_START(eightbll)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "723-20_2.716", 0x1000, 0x0800, CRC(33559e7b) SHA1(49008db95c8f012e7e3b613e6eee811512207fa9))
ROM_LOAD( "720-20_6.716", 0x1800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "723-20_2.716", 0x0000, 0x0800, CRC(33559e7b) SHA1(49008db95c8f012e7e3b613e6eee811512207fa9))
ROM_LOAD( "720-20_6.716", 0x0800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_END
/*--------------------------------
/ Evel Knievel
/-------------------------------*/
ROM_START(evelknie)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "722-17_2.716", 0x1000, 0x0800, CRC(b6d9a3fa) SHA1(1939e13f73a324e3d2fd269a54446f48cf530f50))
ROM_LOAD( "720-20_6.716", 0x1800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "722-17_2.716", 0x0000, 0x0800, CRC(b6d9a3fa) SHA1(1939e13f73a324e3d2fd269a54446f48cf530f50))
ROM_LOAD( "720-20_6.716", 0x0800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_END
/*--------------------------------
/ Freedom
/-------------------------------*/
ROM_START(freedom)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "720-08_1.474", 0x1400, 0x0200, CRC(b78bceeb) SHA1(acf6f1a497ada344211f12dbf4be619bee559950))
ROM_LOAD( "720-10_2.474", 0x1600, 0x0200, CRC(ca90c8a7) SHA1(d9b5e95247e846e50a2a43c85ad5eb1fc761ab67))
ROM_LOAD( "720-07_6.716", 0x1800, 0x0800, CRC(0f4e8b83) SHA1(faa05dde24eb60be0cdc4456ae2e660a15ed85ac))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "720-08_1.474", 0x0400, 0x0200, CRC(b78bceeb) SHA1(acf6f1a497ada344211f12dbf4be619bee559950))
ROM_LOAD( "720-10_2.474", 0x0600, 0x0200, CRC(ca90c8a7) SHA1(d9b5e95247e846e50a2a43c85ad5eb1fc761ab67))
ROM_LOAD( "720-07_6.716", 0x0800, 0x0800, CRC(0f4e8b83) SHA1(faa05dde24eb60be0cdc4456ae2e660a15ed85ac))
ROM_END
/*--------------------------------
/ Mata Hari
/-------------------------------*/
ROM_START(matahari)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "725-21_2.716", 0x1000, 0x0800, CRC(63acd9b0) SHA1(2347342f1281c097ea39c79236d85b00a1dfc7b2))
ROM_LOAD( "720-20_6.716", 0x1800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "725-21_2.716", 0x0000, 0x0800, CRC(63acd9b0) SHA1(2347342f1281c097ea39c79236d85b00a1dfc7b2))
ROM_LOAD( "720-20_6.716", 0x0800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_END
/*--------------------------------
/ Night Rider
/-------------------------------*/
ROM_START(nightrdr)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "721-21_1.716", 0x1000, 0x0800, CRC(237c4060) SHA1(4ce3dba9189fe7666fc76a2c8ee7fff9b12d4c00))
ROM_LOAD( "720-20_6.716", 0x1800, 0x0800, CRC(f394e357) SHA1(73444f848825a398515153d18de027792b57bcc7))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "721-21_1.716", 0x0000, 0x0800, CRC(237c4060) SHA1(4ce3dba9189fe7666fc76a2c8ee7fff9b12d4c00))
ROM_LOAD( "720-20_6.716", 0x0800, 0x0800, CRC(f394e357) SHA1(73444f848825a398515153d18de027792b57bcc7))
ROM_END
ROM_START(nightr20)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "721-21_1.716", 0x1000, 0x0800, CRC(237c4060) SHA1(4ce3dba9189fe7666fc76a2c8ee7fff9b12d4c00))
ROM_LOAD( "720-20_6(__rev20).716", 0x1800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "721-21_1.716", 0x0000, 0x0800, CRC(237c4060) SHA1(4ce3dba9189fe7666fc76a2c8ee7fff9b12d4c00))
ROM_LOAD( "720-20_6(__rev20).716", 0x0800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_END
/*--------------------------------
/ Power Play
/-------------------------------*/
ROM_START(pwerplay)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "724-25_2.716", 0x1000, 0x0800, CRC(43012f35) SHA1(f90d582e3394d949a637a09882ffdad7664c44c0))
ROM_LOAD( "720-20_6.716", 0x1800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "724-25_2.716", 0x0000, 0x0800, CRC(43012f35) SHA1(f90d582e3394d949a637a09882ffdad7664c44c0))
ROM_LOAD( "720-20_6.716", 0x0800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_END
/*--------------------------------
@ -151,10 +583,9 @@ ROM_END
/ Strikes and Spares
/-------------------------------*/
ROM_START(stk_sprs)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD( "740-16_2.716", 0x1000, 0x0800, CRC(2be27024) SHA1(266dee3a5c4c115acc20543df2eb172f1e85dacb))
ROM_LOAD( "720-20_6.716", 0x1800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_RELOAD( 0xf800, 0x0800)
ROM_REGION(0x1000, "roms", 0)
ROM_LOAD( "740-16_2.716", 0x0000, 0x0800, CRC(2be27024) SHA1(266dee3a5c4c115acc20543df2eb172f1e85dacb))
ROM_LOAD( "720-20_6.716", 0x0800, 0x0800, CRC(0c17aa4d) SHA1(729e61a29691857112579efcdb96a35e8e5b1279))
ROM_END

View File

@ -210,7 +210,7 @@ WRITE8_MEMBER( g627_state::portc_w )
// save segments until we can write the digits
WRITE8_MEMBER( g627_state::disp_w )
{
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 };
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0 }; // 7448
offset <<= 1;
m_seg[offset] = patterns[data>>4];
m_seg[++offset] = patterns[data&15];

142
src/mame/layout/by17.lay Normal file
View File

@ -0,0 +1,142 @@
<!-- BY17 copied from gp_1.lay -->
<!-- 2014-07-26: Initial version. [Robbbert] -->
<mamelayout version="2">
<element name="digit" defstate="0">
<led7seg>
<color red="1.0" green="0.75" blue="0.0" />
</led7seg>
</element>
<element name="red_led">
<disk><color red="1.0" green="0.0" blue="0.0" /></disk>
</element>
<element name="background">
<rect>
<bounds left="0" top="0" right="1" bottom="1" />
<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="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="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>
<element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<view name="Default Layout">
<!-- Background -->
<backdrop element="background">
<bounds left="0" top="20" right="274" bottom="394" />
</backdrop>
<!-- LEDs -->
<!-- Player 1 Score -->
<bezel name="digit5" element="digit">
<bounds left="10" top="45" right="44" bottom="84" />
</bezel>
<bezel name="digit4" element="digit">
<bounds left="54" top="45" right="88" bottom="84" />
</bezel>
<bezel name="digit3" element="digit">
<bounds left="98" top="45" right="132" bottom="84" />
</bezel>
<bezel name="digit2" element="digit">
<bounds left="142" top="45" right="176" bottom="84" />
</bezel>
<bezel name="digit1" element="digit">
<bounds left="186" top="45" right="220" bottom="84" />
</bezel>
<bezel name="digit0" element="digit">
<bounds left="230" top="45" right="264" bottom="84" />
</bezel>
<!-- Player 2 Score -->
<bezel name="digit13" element="digit">
<bounds left="10" top="105" right="44" bottom="144" />
</bezel>
<bezel name="digit12" element="digit">
<bounds left="54" top="105" right="88" bottom="144" />
</bezel>
<bezel name="digit11" element="digit">
<bounds left="98" top="105" right="132" bottom="144" />
</bezel>
<bezel name="digit10" element="digit">
<bounds left="142" top="105" right="176" bottom="144" />
</bezel>
<bezel name="digit9" element="digit">
<bounds left="186" top="105" right="220" bottom="144" />
</bezel>
<bezel name="digit8" element="digit">
<bounds left="230" top="105" right="264" bottom="144" />
</bezel>
<!-- Player 3 Score -->
<bezel name="digit21" element="digit">
<bounds left="10" top="165" right="44" bottom="204" />
</bezel>
<bezel name="digit20" element="digit">
<bounds left="54" top="165" right="88" bottom="204" />
</bezel>
<bezel name="digit19" element="digit">
<bounds left="98" top="165" right="132" bottom="204" />
</bezel>
<bezel name="digit18" element="digit">
<bounds left="142" top="165" right="176" bottom="204" />
</bezel>
<bezel name="digit17" element="digit">
<bounds left="186" top="165" right="220" bottom="204" />
</bezel>
<bezel name="digit16" element="digit">
<bounds left="230" top="165" right="264" bottom="204" />
</bezel>
<!-- Player 4 Score -->
<bezel name="digit29" element="digit">
<bounds left="10" top="225" right="44" bottom="264" />
</bezel>
<bezel name="digit28" element="digit">
<bounds left="54" top="225" right="88" bottom="264" />
</bezel>
<bezel name="digit27" element="digit">
<bounds left="98" top="225" right="132" bottom="264" />
</bezel>
<bezel name="digit26" element="digit">
<bounds left="142" top="225" right="176" bottom="264" />
</bezel>
<bezel name="digit25" element="digit">
<bounds left="186" top="225" right="220" bottom="264" />
</bezel>
<bezel name="digit24" element="digit">
<bounds left="230" top="225" right="264" bottom="264" />
</bezel>
<!-- Credits and Balls -->
<bezel name="digit14" element="digit">
<bounds left="39" top="345" right="73" bottom="384" />
</bezel>
<bezel name="digit6" element="digit">
<bounds left="110" top="345" right="144" bottom="384" />
</bezel>
<bezel name="digit30" element="digit">
<bounds left="171" top="345" right="205" bottom="384" />
</bezel>
<bezel name="digit22" 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 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>
</view>
</mamelayout>

View File

@ -2531,6 +2531,8 @@ $(DRIVERS)/blockade.o: $(LAYOUT)/blockade.lh
$(DRIVERS)/buggychl.o: $(LAYOUT)/buggychl.lh
$(DRIVERS)/by17.o: $(LAYOUT)/by17.lh
$(DRIVERS)/bzone.o: $(LAYOUT)/bzone.lh \
$(LAYOUT)/redbaron.lh