mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Atari_s1: wip
This commit is contained in:
parent
31387945c8
commit
c09cf1e9b2
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -4257,6 +4257,7 @@ src/mame/layout/arcwins.lay svneol=native#text/plain
|
||||
src/mame/layout/arimk4nz.lay svneol=native#text/plain
|
||||
src/mame/layout/aristmk4.lay svneol=native#text/plain
|
||||
src/mame/layout/armora.lay svneol=native#text/plain
|
||||
src/mame/layout/atari_s1.lay svneol=native#text/plain
|
||||
src/mame/layout/atarifb.lay svneol=native#text/plain
|
||||
src/mame/layout/atarifb4.lay svneol=native#text/plain
|
||||
src/mame/layout/avalnche.lay svneol=native#text/plain
|
||||
|
@ -2,63 +2,320 @@
|
||||
|
||||
Pinball
|
||||
Atari Generation/System 1
|
||||
These were the first widebody pinball machines.
|
||||
Unfortunately they tended to be boring.
|
||||
|
||||
The design of having the circuit boards under the playfield wasn't such a good
|
||||
idea, because it allowed debris and loose screws that could fall off the
|
||||
playfield to cause havoc among the electronics.
|
||||
|
||||
Schematics and PinMAME used as references.
|
||||
|
||||
ToDo:
|
||||
- Inputs per game; the ones there are for Airborne Avenger
|
||||
- Link up switches where 2 or more act together
|
||||
- Sound
|
||||
- Lamps, solenoids
|
||||
|
||||
|
||||
************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "machine/genpin.h"
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "atari_s1.lh"
|
||||
|
||||
// looking at chip '29 74', this could be /8
|
||||
#define MASTER_CLK XTAL_4MHz / 4
|
||||
#define DMA_CLK MASTER_CLK / 2
|
||||
//#define AUDIO_CLK DMA_CLK / 4
|
||||
#define DMA_INT DMA_CLK / 128
|
||||
#define NMI_INT DMA_INT / 16
|
||||
//#define BIT6_CLK NMI_INT / 4
|
||||
|
||||
//extern const char layout_pinball[];
|
||||
class atari_s1_state : public driver_device
|
||||
{
|
||||
public:
|
||||
atari_s1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu")
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_p_ram(*this, "ram"),
|
||||
m_samples(*this, "samples")
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(switch_r);
|
||||
DECLARE_READ8_MEMBER(latch_r);
|
||||
DECLARE_WRITE8_MEMBER(latch_w);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(nmi);
|
||||
|
||||
protected:
|
||||
|
||||
// devices
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_shared_ptr<UINT8> m_p_ram;
|
||||
required_device<samples_device> m_samples;
|
||||
|
||||
// driver_device overrides
|
||||
virtual void machine_reset();
|
||||
public:
|
||||
DECLARE_DRIVER_INIT(atari_s1);
|
||||
private:
|
||||
UINT8 m_bit6;
|
||||
UINT8 m_out_offs;
|
||||
};
|
||||
|
||||
static ADDRESS_MAP_START( atari_s1_map, AS_PROGRAM, 8, atari_s1_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
|
||||
AM_RANGE(0x0000, 0x01ff) AM_RAM
|
||||
//AM_RANGE(0x1080, 0x1080) AM_READWRITE(latch1080_r,latch1080_w)
|
||||
//AM_RANGE(0x1084, 0x1084) AM_READWRITE(latch1084_r,latch1084_w)
|
||||
//AM_RANGE(0x1088, 0x1088) AM_READWRITE(latch1088_r,latch1088_w)
|
||||
//AM_RANGE(0x108c, 0x108c) AM_READWRITE(latch108c_r,latch108c_w)
|
||||
//AM_RANGE(0x2000, 0x200f) AM_READWRITE(dipg1_r,dipg1_w)
|
||||
//AM_RANGE(0x2010, 0x204f) AM_READ(swg1_r)
|
||||
//AM_RANGE(0x3000, 0x3000) AM_WRITE(soundg1_w)
|
||||
//AM_RANGE(0x4000, 0x4000) AM_WRITE(watchdog_w)
|
||||
AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("ram")
|
||||
//AM_RANGE(0x1000, 0x100f) AM_MIRROR(0x0F70) AM_WRITE(latch1000_w) // lamps
|
||||
AM_RANGE(0x1080, 0x108f) AM_MIRROR(0x0F70) AM_READWRITE(latch_r,latch_w)
|
||||
//AM_RANGE(0x2000, 0x200f) AM_WRITE(dipg1_w)
|
||||
AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r)
|
||||
//AM_RANGE(0x3000, 0x3fff) AM_WRITE(soundg1_w) // audio enable
|
||||
AM_RANGE(0x4000, 0x4fff) AM_WRITE(watchdog_reset_w)
|
||||
//AM_RANGE(0x508c, 0x508c) AM_WRITE(latch508c_w)
|
||||
//AM_RANGE(0x6000, 0x6000) AM_WRITE(audiog1_w)
|
||||
//AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiog1_w) // audio reset
|
||||
AM_RANGE(0x7000, 0x7fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( atari_s1 )
|
||||
// need to fix these, the manual has a lot of mistakes
|
||||
PORT_START("INP00")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Test") PORT_CODE(KEYCODE_0)
|
||||
PORT_START("INP01")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Spelling Award" )
|
||||
PORT_DIPSETTING( 0x80, "Extra Ball" )
|
||||
PORT_DIPSETTING( 0x00, "20,000 points" )
|
||||
PORT_START("INP02")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Last Ball double bonus" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP03")
|
||||
// This switch together with INP4C thru 4F, sets the scores at which a replay is awarded
|
||||
PORT_DIPNAME( 0x80, 0x80, "Replay score" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
// These 2 dips control max number of credits (both off = 8; then 12, 15, both on=20)
|
||||
PORT_START("INP04")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Max Credits-a" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP05")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Max Credits-b" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP06")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Exceed replay score" )
|
||||
PORT_DIPSETTING( 0x80, "Nothing" )
|
||||
PORT_DIPSETTING( 0x00, "Extra Ball" )
|
||||
PORT_START("INP07")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Replay when Exceed replay score" ) // overrides INP06 if on
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP08")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Balls" )
|
||||
PORT_DIPSETTING( 0x80, "5" )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_START("INP09")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Match" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
// next 4 dips control coins and credits. Leave them all off for 1coin=1credit.
|
||||
PORT_START("INP0A")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Coins-a" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP0B")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Coins-b" ) // this is actually the test button
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP0C")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Coins-c" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP0D")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Coins-d" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP0E")
|
||||
PORT_DIPNAME( 0x80, 0x80, "Special" )
|
||||
PORT_DIPSETTING( 0x80, "Extra Ball" )
|
||||
PORT_DIPSETTING( 0x00, "Free Game" )
|
||||
PORT_START("INP0F")
|
||||
PORT_DIPNAME( 0x80, 0x80, "20000 points for special" ) // overrides INP0E if on
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_START("INP10")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_START("INP11")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_START("INP12")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START )
|
||||
PORT_START("INP13")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Slam Tilt")
|
||||
PORT_START("INP14")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP15")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP16")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP17")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP18")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP19")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP1A")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP1B")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP1C")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP1D")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP1E")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP1F")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP20")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Cabinet Tilt")
|
||||
PORT_START("INP21")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT ) PORT_NAME("Pendulum Tilt")
|
||||
PORT_START("INP22")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Left Flipper") PORT_CODE(KEYCODE_LSHIFT)
|
||||
PORT_START("INP23")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Right Flipper") PORT_CODE(KEYCODE_RSHIFT)
|
||||
PORT_START("INP24")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 4")
|
||||
PORT_START("INP25")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 3")
|
||||
PORT_START("INP26")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 2")
|
||||
PORT_START("INP27")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 1")
|
||||
PORT_START("INP28")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP29")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP2A")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP2B")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP2C")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP2D")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP2E")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP2F")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP30")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP31")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 3") PORT_CODE(KEYCODE_Q)
|
||||
PORT_START("INP32")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 2") PORT_CODE(KEYCODE_W)
|
||||
PORT_START("INP33")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 1") PORT_CODE(KEYCODE_E)
|
||||
PORT_START("INP34")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 8") PORT_CODE(KEYCODE_R)
|
||||
PORT_START("INP35")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 7") PORT_CODE(KEYCODE_Y)
|
||||
PORT_START("INP36")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 6") PORT_CODE(KEYCODE_U)
|
||||
PORT_START("INP37")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 5") PORT_CODE(KEYCODE_I)
|
||||
PORT_START("INP38")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L Hole") PORT_CODE(KEYCODE_O)
|
||||
PORT_START("INP39")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Bumper 1") PORT_CODE(KEYCODE_V)
|
||||
PORT_START("INP3A")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Bumper 2") PORT_CODE(KEYCODE_B)
|
||||
PORT_START("INP3B")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Bumper 3") PORT_CODE(KEYCODE_N)
|
||||
PORT_START("INP3C")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner") PORT_CODE(KEYCODE_M)
|
||||
PORT_START("INP3D")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R Pocket") PORT_CODE(KEYCODE_A)
|
||||
PORT_START("INP3E")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L Pocket") PORT_CODE(KEYCODE_S)
|
||||
PORT_START("INP3F")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R Hole") PORT_CODE(KEYCODE_D)
|
||||
PORT_START("INP40")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L Triangle") PORT_CODE(KEYCODE_F)
|
||||
PORT_START("INP41")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("10 points") PORT_CODE(KEYCODE_G)
|
||||
PORT_START("INP42")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("50 points") PORT_CODE(KEYCODE_H)
|
||||
PORT_START("INP43")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("OutHole") PORT_CODE(KEYCODE_X)
|
||||
PORT_START("INP44")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP45")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP46")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP47")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R Triangle") PORT_CODE(KEYCODE_J)
|
||||
PORT_START("INP48")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("50 points and adv letter") PORT_CODE(KEYCODE_K)
|
||||
PORT_START("INP49")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Captive ball rollovers") PORT_CODE(KEYCODE_L)
|
||||
PORT_START("INP4A")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 'B' centre") PORT_CODE(KEYCODE_Z)
|
||||
PORT_START("INP4B")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Roll thru upper right") PORT_CODE(KEYCODE_C)
|
||||
PORT_START("INP4C")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP4D")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP4E")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
PORT_START("INP4F")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
|
||||
INPUT_PORTS_END
|
||||
|
||||
void atari_s1_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(atari_s1_state,atari_s1)
|
||||
READ8_MEMBER( atari_s1_state::latch_r )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( atari_s1_state::latch_w )
|
||||
{
|
||||
}
|
||||
|
||||
READ8_MEMBER( atari_s1_state::switch_r )
|
||||
{
|
||||
char kbdrow[8];
|
||||
sprintf(kbdrow,"INP%02X",offset);
|
||||
return ioport(kbdrow)->read() | (BIT(m_bit6, 1) << 6);
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( atari_s1_state::nmi )
|
||||
{
|
||||
m_bit6++;
|
||||
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
|
||||
static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 };
|
||||
m_out_offs++;
|
||||
m_out_offs &= 0x1f;
|
||||
output_set_digit_value(m_out_offs << 1, patterns[m_p_ram[m_out_offs]>>4]);
|
||||
output_set_digit_value((m_out_offs << 1)+1, patterns[m_p_ram[m_out_offs]&15]);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( atari_s1, atari_s1_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M6800, 1000000)
|
||||
MCFG_CPU_ADD("maincpu", M6800, MASTER_CLK)
|
||||
MCFG_CPU_PROGRAM_MAP(atari_s1_map)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi", atari_s1_state, nmi, attotime::from_hz(NMI_INT))
|
||||
|
||||
/* Sound */
|
||||
MCFG_FRAGMENT_ADD( genpin_audio )
|
||||
|
||||
/* Video */
|
||||
MCFG_DEFAULT_LAYOUT(layout_atari_s1)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
@ -116,9 +373,9 @@ ROM_START(spcrider)
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 1976, atarians, 0, atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","The Atarians", GAME_IS_SKELETON_MECHANICAL)
|
||||
//GAME( 2002, atarianb, atarians, atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari / Gaston","The Atarians (working bootleg)", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1977, time2000, 0, atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Time 2000", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1977, aavenger, 0, atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Airborne Avenger", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1978, midearth, 0, atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Middle Earth", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1978, spcrider, 0, atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Space Riders", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1976, atarians, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","The Atarians", GAME_IS_SKELETON_MECHANICAL)
|
||||
//GAME( 2002, atarianb, atarians, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari / Gaston","The Atarians (working bootleg)", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1977, time2000, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Time 2000", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1977, aavenger, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Airborne Avenger", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1978, midearth, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Middle Earth", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1978, spcrider, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Space Riders", GAME_IS_SKELETON_MECHANICAL)
|
||||
|
142
src/mame/layout/atari_s1.lay
Normal file
142
src/mame/layout/atari_s1.lay
Normal file
@ -0,0 +1,142 @@
|
||||
<!-- atari_s1.lay -->
|
||||
|
||||
<!-- 2012-10-07: Initial version. [Robbbert] -->
|
||||
|
||||
<mamelayout version="2">
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.25" blue="0.0" />
|
||||
</led7seg>
|
||||
</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="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="digit28" element="digit">
|
||||
<bounds left="10" top="45" right="44" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit29" element="digit">
|
||||
<bounds left="54" top="45" right="88" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit26" element="digit">
|
||||
<bounds left="98" top="45" right="132" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit27" element="digit">
|
||||
<bounds left="142" top="45" right="176" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit24" element="digit">
|
||||
<bounds left="186" top="45" right="220" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit25" element="digit">
|
||||
<bounds left="230" top="45" right="264" bottom="84" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 2 Score -->
|
||||
<bezel name="digit20" element="digit">
|
||||
<bounds left="10" top="105" right="44" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit21" element="digit">
|
||||
<bounds left="54" top="105" right="88" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit18" element="digit">
|
||||
<bounds left="98" top="105" right="132" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit19" element="digit">
|
||||
<bounds left="142" top="105" right="176" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit16" element="digit">
|
||||
<bounds left="186" top="105" right="220" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit17" element="digit">
|
||||
<bounds left="230" top="105" right="264" bottom="144" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 3 Score -->
|
||||
<bezel name="digit12" element="digit">
|
||||
<bounds left="10" top="165" right="44" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit13" element="digit">
|
||||
<bounds left="54" top="165" right="88" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit10" element="digit">
|
||||
<bounds left="98" top="165" right="132" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit11" element="digit">
|
||||
<bounds left="142" top="165" right="176" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit8" element="digit">
|
||||
<bounds left="186" top="165" right="220" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit9" element="digit">
|
||||
<bounds left="230" top="165" right="264" bottom="204" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 4 Score -->
|
||||
<bezel name="digit4" element="digit">
|
||||
<bounds left="10" top="225" right="44" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit5" element="digit">
|
||||
<bounds left="54" top="225" right="88" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit2" element="digit">
|
||||
<bounds left="98" top="225" right="132" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit3" element="digit">
|
||||
<bounds left="142" top="225" right="176" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds left="186" top="225" right="220" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds left="230" top="225" right="264" bottom="264" />
|
||||
</bezel>
|
||||
|
||||
<!-- Credits and Balls -->
|
||||
<bezel name="digit58" element="digit">
|
||||
<bounds left="10" top="345" right="44" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit59" element="digit">
|
||||
<bounds left="54" top="345" right="88" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit70" element="digit">
|
||||
<bounds left="98" top="345" right="132" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit71" element="digit">
|
||||
<bounds left="142" top="345" right="176" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit56" element="digit">
|
||||
<bounds left="186" top="345" right="220" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit57" element="digit">
|
||||
<bounds left="230" top="345" right="264" bottom="384" />
|
||||
</bezel>
|
||||
<bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
|
||||
<bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
|
||||
<bezel element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
|
||||
<bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
|
||||
<bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
|
||||
<bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
|
||||
</view>
|
||||
</mamelayout>
|
@ -1976,6 +1976,8 @@ $(DRIVERS)/atarifb.o: $(LAYOUT)/atarifb.lh \
|
||||
$(LAYOUT)/atarifb4.lh \
|
||||
$(LAYOUT)/abaseb.lh
|
||||
|
||||
$(DRIVERS)/atari_s1.o: $(LAYOUT)/atari_s1.lh
|
||||
|
||||
$(DRIVERS)/avalnche.o: $(LAYOUT)/avalnche.lh
|
||||
|
||||
$(DRIVERS)/balsente.o: $(LAYOUT)/stocker.lh
|
||||
|
Loading…
Reference in New Issue
Block a user