mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
segaufo update: added better layouts + made ufo800 work + added upd sound to ufo21 + misc fixes
This commit is contained in:
parent
d5fa81a5db
commit
a729656807
@ -23,7 +23,7 @@
|
||||
- # School Kids (1993)
|
||||
|
||||
4th gen - EX brd
|
||||
* Z80, 2 Sega 315-5296(I/O), YM3438, NEC uPD71054C, optional NEC uPD7759C
|
||||
* Z80, 2 Sega 315-5296(I/O), 315-5338A, YM3438, NEC uPD71054C, optional NEC uPD7759C
|
||||
- # Dream Palace (1992)
|
||||
- # Dream Kitchen (1994)
|
||||
- # UFO Catcher Excellent (1994)
|
||||
@ -35,12 +35,9 @@
|
||||
|
||||
More games were released after 2000, assumed to be on more modern hardware.
|
||||
|
||||
|
||||
TODO:
|
||||
- why doesn't ufo800 work?
|
||||
- add layout
|
||||
- add dipswitches
|
||||
- add upd sound for ufo21
|
||||
- prize sensor for ufo21/ufo800
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -51,14 +48,18 @@
|
||||
#include "sound/2612intf.h"
|
||||
#include "sound/upd7759.h"
|
||||
|
||||
#include "segaufo.lh"
|
||||
// the layouts are very similar to eachother
|
||||
#include "newufo.lh"
|
||||
#include "ufomini.lh"
|
||||
#include "ufo21.lh"
|
||||
#include "ufo800.lh"
|
||||
|
||||
|
||||
/* simulation parameters */
|
||||
// x/y/z cabinet dimensions per player (motor range)
|
||||
#define CABINET_WIDTH 400
|
||||
#define CABINET_DEPTH 400
|
||||
#define CABINET_HEIGHT 250
|
||||
#define CABINET_HEIGHT 300
|
||||
|
||||
// x/y/z motor speed in hertz
|
||||
#define MOTOR_SPEED 100
|
||||
@ -104,17 +105,22 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(pit_out1);
|
||||
DECLARE_WRITE_LINE_MEMBER(pit_out2);
|
||||
DECLARE_WRITE_LINE_MEMBER(ym3438_irq);
|
||||
DECLARE_READ8_MEMBER(ufo_0_r) { return 0; }
|
||||
DECLARE_READ8_MEMBER(crane_limits_r);
|
||||
DECLARE_READ8_MEMBER(ex_crane_limits_r);
|
||||
DECLARE_READ8_MEMBER(ex_crane_open_r);
|
||||
DECLARE_WRITE8_MEMBER(stepper_w);
|
||||
DECLARE_WRITE8_MEMBER(ex_stepper_w);
|
||||
DECLARE_WRITE8_MEMBER(cp_lamps_w);
|
||||
DECLARE_WRITE8_MEMBER(cp_digits_w);
|
||||
DECLARE_WRITE8_MEMBER(crane_xyz_w);
|
||||
DECLARE_WRITE8_MEMBER(ex_crane_xyz_w);
|
||||
DECLARE_WRITE8_MEMBER(ufo_lamps_w);
|
||||
|
||||
DECLARE_READ8_MEMBER(ex_crane_limits_r);
|
||||
DECLARE_READ8_MEMBER(ex_crane_open_r);
|
||||
DECLARE_WRITE8_MEMBER(ex_stepper_w);
|
||||
DECLARE_WRITE8_MEMBER(ex_cp_lamps_w);
|
||||
DECLARE_WRITE8_MEMBER(ex_crane_xyz_w);
|
||||
DECLARE_WRITE8_MEMBER(ex_ufo21_lamps_w);
|
||||
DECLARE_WRITE8_MEMBER(ex_ufo800_lamps_w);
|
||||
DECLARE_READ8_MEMBER(ex_upd_busy_r);
|
||||
DECLARE_WRITE8_MEMBER(ex_upd_start_w);
|
||||
|
||||
virtual void machine_reset();
|
||||
virtual void machine_start();
|
||||
@ -149,19 +155,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::simulate_xyz)
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(ufo_state::update_info)
|
||||
{
|
||||
// output ufo motor positions
|
||||
// 0 X: 000 = right, 100 = left (player 1)
|
||||
// 1 Y: 000 = front, 100 = back
|
||||
// 2 Z: 000 = up, 100 = down
|
||||
// 3 C: 000 = closed, 100 = open
|
||||
for (int p = 0; p < 2; p++)
|
||||
for (int m = 0; m < 4; m++)
|
||||
output_set_indexed_value("counter", p*4 + m, (UINT8)(m_player[p].motor[m].position * 100));
|
||||
|
||||
#if 0
|
||||
char msg1[0x100]={0};
|
||||
char msg2[0x100]={0};
|
||||
char msg1[0x100] = {0};
|
||||
char msg2[0x100] = {0};
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
sprintf(msg2, "%02X ", m_io2->debug_peek_output(i));
|
||||
strcat(msg1, msg2);
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
sprintf(msg2, "\n%d %05f", i, m_player[0].motor[i].position);
|
||||
strcat(msg1, msg2);
|
||||
}
|
||||
popmessage("%s", msg1);
|
||||
#endif
|
||||
}
|
||||
@ -194,6 +204,37 @@ WRITE_LINE_MEMBER(ufo_state::pit_out2)
|
||||
|
||||
/* generic / UFO board handlers */
|
||||
|
||||
/* io1 */
|
||||
|
||||
READ8_MEMBER(ufo_state::crane_limits_r)
|
||||
{
|
||||
int p = offset & 1;
|
||||
UINT8 ret = 0x7f;
|
||||
|
||||
// d0: left limit sw (right for p2)
|
||||
// d1: right limit sw (left for p2)
|
||||
// d2: back limit sw
|
||||
// d3: front limit sw
|
||||
// d4: down limit sw
|
||||
// d5: up limit sw
|
||||
for (int m = 0; m < 3; m++)
|
||||
{
|
||||
ret ^= (m_player[p].motor[m].position >= 1) << (m*2 + 0);
|
||||
ret ^= (m_player[p].motor[m].position <= 0) << (m*2 + 1);
|
||||
}
|
||||
|
||||
// d6: crane open sensor (reflective sticker on the stepper motor rotation disc)
|
||||
if (m_player[p].motor[3].position >= 0.97)
|
||||
ret ^= 0x40;
|
||||
|
||||
// d7: prize sensor (mirror?)
|
||||
ret |= (ioport(p ? "IN2" : "IN1")->read() & 0x80);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* io2 */
|
||||
|
||||
WRITE8_MEMBER(ufo_state::stepper_w)
|
||||
{
|
||||
for (int p = 0; p < 2; p++)
|
||||
@ -266,40 +307,69 @@ WRITE8_MEMBER(ufo_state::crane_xyz_w)
|
||||
|
||||
WRITE8_MEMBER(ufo_state::ufo_lamps_w)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(ufo_state::crane_limits_r)
|
||||
{
|
||||
int p = offset & 1;
|
||||
UINT8 ret = 0x7f;
|
||||
|
||||
// d0: left limit sw (right for p2)
|
||||
// d1: right limit sw (left for p2)
|
||||
// d2: back limit sw
|
||||
// d3: front limit sw
|
||||
// d4: down limit sw
|
||||
// d5: up limit sw
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
ret ^= (m_player[p].motor[i].position >= 1) << (i*2 + 0);
|
||||
ret ^= (m_player[p].motor[i].position <= 0) << (i*2 + 1);
|
||||
}
|
||||
|
||||
// d6: crane open sensor (reflective sticker on the stepper motor rotation disc)
|
||||
if (m_player[p].motor[3].position >= 0.97)
|
||||
ret ^= 0x40;
|
||||
// d0-d3: ufo leds (2 bits per player)
|
||||
// 3 sets of two red/green leds, each set is wired to the same control 2 bits
|
||||
// 00 = off, off
|
||||
// 11 = red, red
|
||||
// 01 = green, red
|
||||
// 10 = red, green
|
||||
output_set_lamp_value(10, data & 3);
|
||||
output_set_lamp_value(11, data >> 2 & 3);
|
||||
|
||||
// d7: prize sensor (mirror?)
|
||||
ret |= (ioport(p ? "IN2" : "IN1")->read() & 0x80);
|
||||
|
||||
return ret;
|
||||
// d4,d5: ?
|
||||
// d6,d7: coincounters
|
||||
coin_counter_w(machine(), 0, data & 0x40); // 100 Y
|
||||
coin_counter_w(machine(), 1, data & 0x80); // 500 Y
|
||||
}
|
||||
|
||||
|
||||
/* EX board specific handlers */
|
||||
|
||||
/* io1 */
|
||||
|
||||
READ8_MEMBER(ufo_state::ex_crane_limits_r)
|
||||
{
|
||||
int p = offset & 1;
|
||||
UINT8 ret = 0xf0;
|
||||
|
||||
// d0: left limit sw (invert)
|
||||
// d1: right limit sw (invert)
|
||||
// d2: back limit sw (invert)
|
||||
// d3: front limit sw (invert)
|
||||
// d4: ?
|
||||
// d5: down limit sw
|
||||
// d6: up limit sw
|
||||
// d7: ?
|
||||
for (int m = 0; m < 3; m++)
|
||||
{
|
||||
int shift = (m*2) + (m == 2);
|
||||
ret ^= (m_player[p].motor[m].position >= 1) << shift;
|
||||
ret ^= (m_player[p].motor[m].position <= 0) << (shift+1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ufo_state::ex_crane_open_r)
|
||||
{
|
||||
// d0-d3: p1, d4-d7: p2
|
||||
UINT8 ret = 0xff;
|
||||
|
||||
for (int p = 0; p < 2; p++)
|
||||
{
|
||||
// d0: crane open sensor
|
||||
if (m_player[p].motor[3].position >= 0.97)
|
||||
ret ^= (1 << (p*4));
|
||||
|
||||
// d1: coincounter is plugged in (ufo800 gives error 14 otherwise)
|
||||
// d2,d3: ?
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* io2 */
|
||||
|
||||
WRITE8_MEMBER(ufo_state::ex_stepper_w)
|
||||
{
|
||||
// stepper motor sequence is: 6 c 9 3 6 c 9 3..
|
||||
@ -307,6 +377,17 @@ WRITE8_MEMBER(ufo_state::ex_stepper_w)
|
||||
stepper_w(space, offset, BITSWAP8(data,4,6,5,7,0,2,1,3));
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ufo_state::ex_cp_lamps_w)
|
||||
{
|
||||
// d0,d1,d4,d5: p1/p2 button lamps
|
||||
for (int i = 0; i < 4; i++)
|
||||
output_set_lamp_value(i, ~data >> ((i&1) + (i&2) * 2) & 1);
|
||||
|
||||
// d2,d3,d6,d7: p1/p2 coincounters
|
||||
for (int i = 0; i < 4; i++)
|
||||
coin_counter_w(machine(), i, data >> (2 + (i&1) + (i&2) * 2) & 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ufo_state::ex_crane_xyz_w)
|
||||
{
|
||||
int p = offset & 1;
|
||||
@ -318,65 +399,50 @@ WRITE8_MEMBER(ufo_state::ex_crane_xyz_w)
|
||||
// d3: move front
|
||||
// d4: move down
|
||||
// d5: move up
|
||||
for (int i = 0; i < 3; i++)
|
||||
for (int m = 0; m < 3; m++)
|
||||
{
|
||||
int bits = data >> (i*2) & 3;
|
||||
m_player[p].motor[i].running = (bits == 1 || bits == 2) ? 1 : 0;
|
||||
m_player[p].motor[i].direction = bits & 2;
|
||||
int bits = data >> (m*2) & 3;
|
||||
m_player[p].motor[m].running = (bits == 1 || bits == 2) ? 1 : 0;
|
||||
m_player[p].motor[m].direction = bits & 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(ufo_state::ex_crane_limits_r)
|
||||
WRITE8_MEMBER(ufo_state::ex_ufo800_lamps_w)
|
||||
{
|
||||
int p = offset & 1;
|
||||
UINT8 ret = 0xf0;
|
||||
|
||||
// d0: left limit sw (invert)
|
||||
// d1: right limit sw (invert)
|
||||
// d2: back limit sw (invert)
|
||||
// d3: front limit sw (invert)
|
||||
// d4: ..
|
||||
// d5: down limit sw
|
||||
// d6: up limit sw
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int shift = (i*2) + (i == 2);
|
||||
ret ^= (m_player[p].motor[i].position >= 1) << (shift + 0);
|
||||
ret ^= (m_player[p].motor[i].position <= 0) << (shift + 1);
|
||||
}
|
||||
|
||||
// d4: crane open or closed sensor
|
||||
// d7: crane open or closed sensor (another one?)
|
||||
if (m_player[p].motor[3].position >= 0.97)
|
||||
ret ^= 0x10;
|
||||
if (m_player[p].motor[3].position <= 0.03)
|
||||
ret ^= 0x80;
|
||||
|
||||
return ret;
|
||||
// d0-d4: 5 red leds on ufo
|
||||
// other bits: ?
|
||||
for (int i = 0; i < 5; i++)
|
||||
output_set_lamp_value(10 + i, data >> i & 1);
|
||||
}
|
||||
|
||||
READ8_MEMBER(ufo_state::ex_crane_open_r)
|
||||
/* 315-5338A */
|
||||
|
||||
WRITE8_MEMBER(ufo_state::ex_ufo21_lamps_w)
|
||||
{
|
||||
// d0-d3: p1, d4-d7: p2
|
||||
UINT8 ret = 0xff;
|
||||
|
||||
for (int p = 0; p < 2; p++)
|
||||
{
|
||||
// unlike ex_crane_limits_r, this sensor can determine whether the crane is open or closed
|
||||
if (m_player[p].motor[3].position >= 0.97)
|
||||
ret ^= (1 << (p*4));
|
||||
if (m_player[p].motor[3].position <= 0.03)
|
||||
ret ^= (2 << (p*4));
|
||||
|
||||
// d2,d3: ?
|
||||
}
|
||||
|
||||
return ret;
|
||||
// d0: ? (ufo21 reads from it too, but value is discarded)
|
||||
// d1-d6 are the 6 red leds on each ufo
|
||||
// d7: ?
|
||||
for (int i = 1; i < 7; i++)
|
||||
output_set_lamp_value(10 + offset * 10 + i, data >> i & 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ufo_state::ex_upd_start_w)
|
||||
{
|
||||
// d0: upd7759c start sample
|
||||
// other bits: unused?
|
||||
m_upd->start_w(~data & 1);
|
||||
}
|
||||
|
||||
READ8_MEMBER(ufo_state::ex_upd_busy_r)
|
||||
{
|
||||
// d0: upd7759c busy
|
||||
// other bits: unused?
|
||||
int d0 = m_upd->busy_r() ? 1 : 0;
|
||||
return 0xfe | d0;
|
||||
}
|
||||
|
||||
|
||||
/* memory maps */
|
||||
/* Memory maps */
|
||||
|
||||
static ADDRESS_MAP_START( ufo_map, AS_PROGRAM, 8, ufo_state )
|
||||
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
||||
@ -393,6 +459,22 @@ static ADDRESS_MAP_START( ufo_portmap, AS_IO, 8, ufo_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( ex_ufo21_portmap, AS_IO, 8, ufo_state )
|
||||
AM_RANGE(0x20, 0x20) AM_DEVWRITE("upd", upd7759_device, port_w)
|
||||
AM_RANGE(0x60, 0x60) AM_WRITE(ex_upd_start_w) AM_READNOP
|
||||
AM_RANGE(0x61, 0x61) AM_READ(ex_upd_busy_r)
|
||||
AM_RANGE(0x64, 0x65) AM_WRITE(ex_ufo21_lamps_w) AM_READNOP
|
||||
// AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
|
||||
AM_IMPORT_FROM( ufo_portmap )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ex_ufo800_portmap, AS_IO, 8, ufo_state )
|
||||
// AM_RANGE(0x60, 0x67) AM_NOP // unused?
|
||||
// AM_RANGE(0x68, 0x68) AM_WRITENOP // ?
|
||||
AM_IMPORT_FROM( ufo_portmap )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
@ -402,24 +484,24 @@ ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( newufo )
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin 1") // 100 Y
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("P1 Coin 2") // 500 Y
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("P1 Test")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Coin")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("P1 Credit Clear")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Fell")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Prize Sensor")
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("P2 Coin 2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin 1") // 100 Y
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("P2 Coin 2") // 500 Y
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Test") PORT_CODE(KEYCODE_F1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Coin")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("P2 Credit Clear")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Fell")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Prize Sensor")
|
||||
|
||||
PORT_START("DSW1") // coinage
|
||||
PORT_DIPNAME( 0x01, 0x01, "UNK1-01" )
|
||||
@ -673,14 +755,14 @@ WRITE_LINE_MEMBER(ufo_state::ym3438_irq)
|
||||
static MACHINE_CONFIG_START( newufo, ufo_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, 8000000)
|
||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2)
|
||||
MCFG_CPU_PROGRAM_MAP(ufo_map)
|
||||
MCFG_CPU_IO_MAP(ufo_portmap)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("motor_timer", ufo_state, simulate_xyz, attotime::from_hz(MOTOR_SPEED))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("update_timer", ufo_state, update_info, attotime::from_hz(60))
|
||||
|
||||
MCFG_DEVICE_ADD("io1", SEGA_315_5296, 16000000)
|
||||
MCFG_DEVICE_ADD("io1", SEGA_315_5296, XTAL_16MHz)
|
||||
// all ports set to input
|
||||
MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, crane_limits_r))
|
||||
MCFG_315_5296_IN_PORTB_CB(READ8(ufo_state, crane_limits_r))
|
||||
@ -689,7 +771,7 @@ static MACHINE_CONFIG_START( newufo, ufo_state )
|
||||
MCFG_315_5296_IN_PORTG_CB(IOPORT("DSW2"))
|
||||
MCFG_315_5296_IN_PORTH_CB(IOPORT("IN2"))
|
||||
|
||||
MCFG_DEVICE_ADD("io2", SEGA_315_5296, 16000000)
|
||||
MCFG_DEVICE_ADD("io2", SEGA_315_5296, XTAL_16MHz)
|
||||
// all ports set to output
|
||||
MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, stepper_w))
|
||||
MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, cp_lamps_w))
|
||||
@ -699,12 +781,12 @@ static MACHINE_CONFIG_START( newufo, ufo_state )
|
||||
MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, crane_xyz_w))
|
||||
MCFG_315_5296_OUT_PORTG_CB(WRITE8(ufo_state, ufo_lamps_w))
|
||||
|
||||
MCFG_DEVICE_ADD("pit", PIT8254, 0) // uPD71054C, configuration is unknown
|
||||
MCFG_PIT8253_CLK0(8000000/256)
|
||||
MCFG_DEVICE_ADD("pit", PIT8254, XTAL_16MHz/2) // uPD71054C, configuration is unknown
|
||||
MCFG_PIT8253_CLK0(XTAL_16MHz/2/256)
|
||||
MCFG_PIT8253_OUT0_HANDLER(WRITELINE(ufo_state, pit_out0))
|
||||
MCFG_PIT8253_CLK1(8000000/256)
|
||||
MCFG_PIT8253_CLK1(XTAL_16MHz/2/256)
|
||||
MCFG_PIT8253_OUT1_HANDLER(WRITELINE(ufo_state, pit_out1))
|
||||
MCFG_PIT8253_CLK2(8000000/256)
|
||||
MCFG_PIT8253_CLK2(XTAL_16MHz/2/256)
|
||||
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(ufo_state, pit_out2))
|
||||
|
||||
/* no video! */
|
||||
@ -712,7 +794,7 @@ static MACHINE_CONFIG_START( newufo, ufo_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ym", YM3438, 8000000)
|
||||
MCFG_SOUND_ADD("ym", YM3438, XTAL_16MHz/2)
|
||||
MCFG_YM2612_IRQ_HANDLER(WRITELINE(ufo_state, ym3438_irq))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.40)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.40)
|
||||
@ -731,6 +813,9 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_DERIVED( ufo21, newufo )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_IO_MAP(ex_ufo21_portmap)
|
||||
|
||||
MCFG_DEVICE_MODIFY("io1")
|
||||
MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, ex_crane_limits_r))
|
||||
MCFG_315_5296_IN_PORTB_CB(READ8(ufo_state, ex_crane_limits_r))
|
||||
@ -738,21 +823,36 @@ static MACHINE_CONFIG_DERIVED( ufo21, newufo )
|
||||
|
||||
MCFG_DEVICE_MODIFY("io2")
|
||||
MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, ex_stepper_w))
|
||||
MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, ex_cp_lamps_w))
|
||||
MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, ex_crane_xyz_w))
|
||||
MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, ex_crane_xyz_w))
|
||||
MCFG_315_5296_OUT_PORTG_CB(NULL)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( ufo800, ufo21 )
|
||||
static MACHINE_CONFIG_DERIVED( ufo800, newufo )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_IO_MAP(ex_ufo800_portmap)
|
||||
|
||||
MCFG_DEVICE_MODIFY("io1")
|
||||
MCFG_315_5296_IN_PORTA_CB(READ8(ufo_state, ex_crane_limits_r))
|
||||
MCFG_315_5296_IN_PORTB_CB(IOPORT("IN2"))
|
||||
MCFG_315_5296_IN_PORTC_CB(READ8(ufo_state, ex_crane_open_r))
|
||||
MCFG_315_5296_IN_PORTD_CB(IOPORT("IN1"))
|
||||
MCFG_315_5296_IN_PORTE_CB(NULL)
|
||||
MCFG_315_5296_IN_PORTH_CB(NULL)
|
||||
|
||||
MCFG_DEVICE_MODIFY("io2")
|
||||
MCFG_315_5296_OUT_PORTF_CB(NULL) // ufo lamps?
|
||||
MCFG_315_5296_OUT_PORTA_CB(WRITE8(ufo_state, ex_stepper_w))
|
||||
MCFG_315_5296_OUT_PORTB_CB(WRITE8(ufo_state, ex_cp_lamps_w))
|
||||
MCFG_315_5296_OUT_PORTE_CB(WRITE8(ufo_state, ex_crane_xyz_w))
|
||||
MCFG_315_5296_OUT_PORTF_CB(WRITE8(ufo_state, ex_ufo800_lamps_w))
|
||||
MCFG_315_5296_OUT_PORTG_CB(NULL)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -804,10 +904,10 @@ ROM_START( ufo800 )
|
||||
ROM_END
|
||||
|
||||
|
||||
GAMEL( 1991, newufo, 0, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_segaufo )
|
||||
GAMEL( 1991, newufo_sonic, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_segaufo )
|
||||
GAMEL( 1991, newufo_nfl, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_segaufo )
|
||||
GAMEL( 1991, newufo_xmas, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_segaufo )
|
||||
GAMEL( 1991, ufomini, 0, ufomini, ufomini, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_segaufo )
|
||||
GAMEL( 1996, ufo21, 0, ufo21, ufo21, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_IMPERFECT_SOUND | GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_segaufo )
|
||||
GAMEL( 1998, ufo800, 0, ufo800, ufo800, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_NOT_WORKING | GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_segaufo )
|
||||
GAMEL( 1991, newufo, 0, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (standard)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
|
||||
GAMEL( 1991, newufo_sonic, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Sonic The Hedgehog)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
|
||||
GAMEL( 1991, newufo_nfl, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Team NFL)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
|
||||
GAMEL( 1991, newufo_xmas, newufo, newufo, newufo, driver_device, 0, ROT0, "Sega", "New UFO Catcher (Christmas season ROM kit)", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_newufo )
|
||||
GAMEL( 1991, ufomini, 0, ufomini, ufomini, driver_device, 0, ROT0, "Sega", "UFO Catcher Mini", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufomini )
|
||||
GAMEL( 1996, ufo21, 0, ufo21, ufo21, driver_device, 0, ROT0, "Sega", "UFO Catcher 21", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo21 )
|
||||
GAMEL( 1998, ufo800, 0, ufo800, ufo800, driver_device, 0, ROT0, "Sega", "UFO Catcher 800", GAME_MECHANICAL | GAME_SUPPORTS_SAVE, layout_ufo800 )
|
||||
|
267
src/mame/layout/newufo.lay
Normal file
267
src/mame/layout/newufo.lay
Normal file
@ -0,0 +1,267 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||
<element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
|
||||
<element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
|
||||
|
||||
<element name="text_ufored">
|
||||
<text string="~UFO~">
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_ufoblue">
|
||||
<text string="~UFO~">
|
||||
<color red="0.2" green="0.3" blue="1.0" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="text_x">
|
||||
<text string="X:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_y">
|
||||
<text string="Y:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_z">
|
||||
<text string="Z:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_c">
|
||||
<text string="C:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</led7seg>
|
||||
</element>
|
||||
|
||||
<element name="counter" defstate="0">
|
||||
<simplecounter maxstate="999" digits="3" align="1">
|
||||
<color red="0.95" green="0.95" blue="0.95" />
|
||||
</simplecounter>
|
||||
</element>
|
||||
|
||||
<element name="lamp_b1" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="lamp_b2" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="2">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="lamp_rg0" defstate="0">
|
||||
<disk state="0">
|
||||
<color red="0.2" green="0.05" blue="0.0" />
|
||||
</disk>
|
||||
<disk state="1">
|
||||
<color red="0.4" green="1.0" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="2">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="3">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
</element>
|
||||
<element name="lamp_rg1" defstate="0">
|
||||
<disk state="0">
|
||||
<color red="0.2" green="0.05" blue="0.0" />
|
||||
</disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="2">
|
||||
<color red="0.4" green="1.0" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="3">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="0" right="200" top="0" bottom="90" />
|
||||
<bezel element="static_black">
|
||||
<bounds left="0" right="200" top="0" bottom="90" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_grey">
|
||||
<bounds x="99" y="0" width="2" height="80" />
|
||||
</bezel>
|
||||
|
||||
<!-- control panel -->
|
||||
|
||||
<bezel element="static_pink">
|
||||
<bounds x="0" y="60" width="200" height="30" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp0" element="lamp_b1" inputtag="IN1" inputmask="0x20" >
|
||||
<bounds x="30" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
<bezel name="lamp1" element="lamp_b2" inputtag="IN1" inputmask="0x40" >
|
||||
<bounds x="43" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp2" element="lamp_b1" inputtag="IN2" inputmask="0x20" >
|
||||
<bounds x="147" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
<bezel name="lamp3" element="lamp_b2" inputtag="IN2" inputmask="0x40" >
|
||||
<bounds x="160" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_black">
|
||||
<bounds x="60" y="70" width="12" height="17" />
|
||||
</bezel>
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds x="61" y="71" width="10" height="15" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_black">
|
||||
<bounds x="128" y="70" width="12" height="17" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds x="129" y="71" width="10" height="15" />
|
||||
</bezel>
|
||||
|
||||
|
||||
<!-- left ufo info -->
|
||||
|
||||
<bezel element="text_x">
|
||||
<bounds x="5" y="5" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_y">
|
||||
<bounds x="5" y="10" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_z">
|
||||
<bounds x="5" y="15" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_c">
|
||||
<bounds x="5" y="20" width="10" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="counter0" element="counter">
|
||||
<bounds x="12" y="5" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter1" element="counter">
|
||||
<bounds x="12" y="10" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter2" element="counter">
|
||||
<bounds x="12" y="15" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter3" element="counter">
|
||||
<bounds x="12" y="20" width="20" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="text_ufored">
|
||||
<bounds x="25" y="25" width="50" height="14" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp10" element="lamp_rg0">
|
||||
<bounds x="31" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg1">
|
||||
<bounds x="38" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg0">
|
||||
<bounds x="45" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg1">
|
||||
<bounds x="52" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg0">
|
||||
<bounds x="59" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg1">
|
||||
<bounds x="66" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
|
||||
<!-- right ufo info -->
|
||||
|
||||
<bezel element="text_x">
|
||||
<bounds x="105" y="5" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_y">
|
||||
<bounds x="105" y="10" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_z">
|
||||
<bounds x="105" y="15" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_c">
|
||||
<bounds x="105" y="20" width="10" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="counter4" element="counter">
|
||||
<bounds x="112" y="5" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter5" element="counter">
|
||||
<bounds x="112" y="10" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter6" element="counter">
|
||||
<bounds x="112" y="15" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter7" element="counter">
|
||||
<bounds x="112" y="20" width="20" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="text_ufoblue">
|
||||
<bounds x="125" y="25" width="50" height="14" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp11" element="lamp_rg0">
|
||||
<bounds x="131" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp11" element="lamp_rg1">
|
||||
<bounds x="138" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp11" element="lamp_rg0">
|
||||
<bounds x="145" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp11" element="lamp_rg1">
|
||||
<bounds x="152" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp11" element="lamp_rg0">
|
||||
<bounds x="159" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp11" element="lamp_rg1">
|
||||
<bounds x="166" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</led7seg>
|
||||
</element>
|
||||
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="0" right="100" top="0" bottom="50" />
|
||||
<bezel element="static_black">
|
||||
<bounds left="0" right="100" top="0" bottom="50" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds x="10" y="10" width="10" height="15" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds x="20" y="10" width="10" height="15" />
|
||||
</bezel>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
247
src/mame/layout/ufo21.lay
Normal file
247
src/mame/layout/ufo21.lay
Normal file
@ -0,0 +1,247 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||
<element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
|
||||
<element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
|
||||
|
||||
<element name="text_ufored">
|
||||
<text string="~UFO~">
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_ufoblue">
|
||||
<text string="~UFO~">
|
||||
<color red="0.2" green="0.3" blue="1.0" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="text_x">
|
||||
<text string="X:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_y">
|
||||
<text string="Y:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_z">
|
||||
<text string="Z:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_c">
|
||||
<text string="C:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</led7seg>
|
||||
</element>
|
||||
|
||||
<element name="counter" defstate="0">
|
||||
<simplecounter maxstate="999" digits="3" align="1">
|
||||
<color red="0.95" green="0.95" blue="0.95" />
|
||||
</simplecounter>
|
||||
</element>
|
||||
|
||||
<element name="lamp_b1" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="lamp_b2" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="2">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="lamp_red" defstate="0">
|
||||
<disk state="0">
|
||||
<color red="0.2" green="0.05" blue="0.0" />
|
||||
</disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="0" right="200" top="0" bottom="90" />
|
||||
<bezel element="static_black">
|
||||
<bounds left="0" right="200" top="0" bottom="90" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_grey">
|
||||
<bounds x="99" y="0" width="2" height="80" />
|
||||
</bezel>
|
||||
|
||||
<!-- control panel -->
|
||||
|
||||
<bezel element="static_pink">
|
||||
<bounds x="0" y="60" width="200" height="30" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp0" element="lamp_b1" inputtag="IN2" inputmask="0x01" >
|
||||
<bounds x="30" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
<bezel name="lamp1" element="lamp_b2" inputtag="IN2" inputmask="0x02" >
|
||||
<bounds x="43" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp2" element="lamp_b1" inputtag="IN2" inputmask="0x10" >
|
||||
<bounds x="147" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
<bezel name="lamp3" element="lamp_b2" inputtag="IN2" inputmask="0x20" >
|
||||
<bounds x="160" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_black">
|
||||
<bounds x="60" y="70" width="12" height="17" />
|
||||
</bezel>
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds x="61" y="71" width="10" height="15" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_black">
|
||||
<bounds x="128" y="70" width="12" height="17" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds x="129" y="71" width="10" height="15" />
|
||||
</bezel>
|
||||
|
||||
|
||||
<!-- left ufo info -->
|
||||
|
||||
<bezel element="text_x">
|
||||
<bounds x="5" y="5" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_y">
|
||||
<bounds x="5" y="10" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_z">
|
||||
<bounds x="5" y="15" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_c">
|
||||
<bounds x="5" y="20" width="10" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="counter0" element="counter">
|
||||
<bounds x="12" y="5" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter1" element="counter">
|
||||
<bounds x="12" y="10" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter2" element="counter">
|
||||
<bounds x="12" y="15" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter3" element="counter">
|
||||
<bounds x="12" y="20" width="20" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="text_ufored">
|
||||
<bounds x="25" y="25" width="50" height="14" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp11" element="lamp_red">
|
||||
<bounds x="31" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp12" element="lamp_red">
|
||||
<bounds x="38" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp13" element="lamp_red">
|
||||
<bounds x="45" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp14" element="lamp_red">
|
||||
<bounds x="52" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp15" element="lamp_red">
|
||||
<bounds x="59" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp16" element="lamp_red">
|
||||
<bounds x="66" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
|
||||
<!-- right ufo info -->
|
||||
|
||||
<bezel element="text_x">
|
||||
<bounds x="105" y="5" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_y">
|
||||
<bounds x="105" y="10" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_z">
|
||||
<bounds x="105" y="15" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_c">
|
||||
<bounds x="105" y="20" width="10" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="counter4" element="counter">
|
||||
<bounds x="112" y="5" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter5" element="counter">
|
||||
<bounds x="112" y="10" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter6" element="counter">
|
||||
<bounds x="112" y="15" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter7" element="counter">
|
||||
<bounds x="112" y="20" width="20" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="text_ufoblue">
|
||||
<bounds x="125" y="25" width="50" height="14" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp21" element="lamp_red">
|
||||
<bounds x="131" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp22" element="lamp_red">
|
||||
<bounds x="138" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp23" element="lamp_red">
|
||||
<bounds x="145" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp24" element="lamp_red">
|
||||
<bounds x="152" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp25" element="lamp_red">
|
||||
<bounds x="159" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp26" element="lamp_red">
|
||||
<bounds x="166" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
175
src/mame/layout/ufo800.lay
Normal file
175
src/mame/layout/ufo800.lay
Normal file
@ -0,0 +1,175 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||
<element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
|
||||
<element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
|
||||
|
||||
<element name="text_ufored">
|
||||
<text string="~UFO~">
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_ufoblue">
|
||||
<text string="~UFO~">
|
||||
<color red="0.2" green="0.3" blue="1.0" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="text_x">
|
||||
<text string="X:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_y">
|
||||
<text string="Y:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_z">
|
||||
<text string="Z:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_c">
|
||||
<text string="C:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</led7seg>
|
||||
</element>
|
||||
|
||||
<element name="counter" defstate="0">
|
||||
<simplecounter maxstate="999" digits="3" align="1">
|
||||
<color red="0.95" green="0.95" blue="0.95" />
|
||||
</simplecounter>
|
||||
</element>
|
||||
|
||||
<element name="lamp_b1" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="lamp_b2" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="2">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="lamp_red" defstate="0">
|
||||
<disk state="0">
|
||||
<color red="0.2" green="0.05" blue="0.0" />
|
||||
</disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="0" right="100" top="0" bottom="90" />
|
||||
<bezel element="static_black">
|
||||
<bounds left="0" right="100" top="0" bottom="90" />
|
||||
</bezel>
|
||||
|
||||
<!-- control panel -->
|
||||
|
||||
<bezel element="static_pink">
|
||||
<bounds x="0" y="60" width="100" height="30" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp0" element="lamp_b1" inputtag="IN2" inputmask="0x01" >
|
||||
<bounds x="30" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
<bezel name="lamp1" element="lamp_b2" inputtag="IN2" inputmask="0x02" >
|
||||
<bounds x="43" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_black">
|
||||
<bounds x="60" y="70" width="12" height="17" />
|
||||
</bezel>
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds x="61" y="71" width="10" height="15" />
|
||||
</bezel>
|
||||
|
||||
|
||||
<!-- left ufo info -->
|
||||
|
||||
<bezel element="text_x">
|
||||
<bounds x="5" y="5" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_y">
|
||||
<bounds x="5" y="10" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_z">
|
||||
<bounds x="5" y="15" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_c">
|
||||
<bounds x="5" y="20" width="10" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="counter0" element="counter">
|
||||
<bounds x="12" y="5" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter1" element="counter">
|
||||
<bounds x="12" y="10" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter2" element="counter">
|
||||
<bounds x="12" y="15" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter3" element="counter">
|
||||
<bounds x="12" y="20" width="20" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="text_ufored">
|
||||
<bounds x="25" y="25" width="50" height="14" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp10" element="lamp_red">
|
||||
<bounds x="34" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp11" element="lamp_red">
|
||||
<bounds x="41" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp12" element="lamp_red">
|
||||
<bounds x="48" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp13" element="lamp_red">
|
||||
<bounds x="55" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp14" element="lamp_red">
|
||||
<bounds x="62" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
198
src/mame/layout/ufomini.lay
Normal file
198
src/mame/layout/ufomini.lay
Normal file
@ -0,0 +1,198 @@
|
||||
<?xml version="1.0"?>
|
||||
<mamelayout version="2">
|
||||
|
||||
|
||||
<!-- define elements -->
|
||||
|
||||
<element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||
<element name="static_grey"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
|
||||
<element name="static_pink"><rect><color red="0.9" green="0.55" blue="0.75" /></rect></element>
|
||||
|
||||
<element name="text_ufored">
|
||||
<text string="~UFO~">
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_ufoblue">
|
||||
<text string="~UFO~">
|
||||
<color red="0.2" green="0.3" blue="1.0" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="text_x">
|
||||
<text string="X:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_y">
|
||||
<text string="Y:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_z">
|
||||
<text string="Z:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="text_c">
|
||||
<text string="C:" align="1">
|
||||
<color red="0.85" green="0.85" blue="0.85" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.3" blue="0.2" />
|
||||
</led7seg>
|
||||
</element>
|
||||
|
||||
<element name="counter" defstate="0">
|
||||
<simplecounter maxstate="999" digits="3" align="1">
|
||||
<color red="0.95" green="0.95" blue="0.95" />
|
||||
</simplecounter>
|
||||
</element>
|
||||
|
||||
<element name="lamp_b1" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="lamp_b2" defstate="0">
|
||||
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<disk state="0">
|
||||
<color red="0.7" green="0.7" blue="0.7" />
|
||||
<bounds x="0.05" y="0.05" width="0.9" height="0.9" />
|
||||
</disk>
|
||||
<text string="2">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.2" width="1.0" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="lamp_rg0" defstate="0">
|
||||
<disk state="0">
|
||||
<color red="0.2" green="0.05" blue="0.0" />
|
||||
</disk>
|
||||
<disk state="1">
|
||||
<color red="0.4" green="1.0" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="2">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="3">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
</element>
|
||||
<element name="lamp_rg1" defstate="0">
|
||||
<disk state="0">
|
||||
<color red="0.2" green="0.05" blue="0.0" />
|
||||
</disk>
|
||||
<disk state="1">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="2">
|
||||
<color red="0.4" green="1.0" blue="0.3" />
|
||||
</disk>
|
||||
<disk state="3">
|
||||
<color red="1.0" green="0.4" blue="0.3" />
|
||||
</disk>
|
||||
</element>
|
||||
|
||||
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="0" right="100" top="0" bottom="90" />
|
||||
<bezel element="static_black">
|
||||
<bounds left="0" right="100" top="0" bottom="90" />
|
||||
</bezel>
|
||||
|
||||
<!-- control panel -->
|
||||
|
||||
<bezel element="static_pink">
|
||||
<bounds x="0" y="60" width="100" height="30" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp0" element="lamp_b1" inputtag="IN1" inputmask="0x20" >
|
||||
<bounds x="30" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
<bezel name="lamp1" element="lamp_b2" inputtag="IN1" inputmask="0x40" >
|
||||
<bounds x="43" y="70" width="10" height="10"/>
|
||||
</bezel>
|
||||
|
||||
<bezel element="static_black">
|
||||
<bounds x="60" y="70" width="12" height="17" />
|
||||
</bezel>
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds x="61" y="71" width="10" height="15" />
|
||||
</bezel>
|
||||
|
||||
|
||||
<!-- left ufo info -->
|
||||
|
||||
<bezel element="text_x">
|
||||
<bounds x="5" y="5" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_y">
|
||||
<bounds x="5" y="10" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_z">
|
||||
<bounds x="5" y="15" width="10" height="4" />
|
||||
</bezel>
|
||||
<bezel element="text_c">
|
||||
<bounds x="5" y="20" width="10" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="counter0" element="counter">
|
||||
<bounds x="12" y="5" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter1" element="counter">
|
||||
<bounds x="12" y="10" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter2" element="counter">
|
||||
<bounds x="12" y="15" width="20" height="4" />
|
||||
</bezel>
|
||||
<bezel name="counter3" element="counter">
|
||||
<bounds x="12" y="20" width="20" height="4" />
|
||||
</bezel>
|
||||
|
||||
<bezel element="text_ufored">
|
||||
<bounds x="25" y="25" width="50" height="14" />
|
||||
</bezel>
|
||||
|
||||
<bezel name="lamp10" element="lamp_rg0">
|
||||
<bounds x="31" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg1">
|
||||
<bounds x="38" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg0">
|
||||
<bounds x="45" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg1">
|
||||
<bounds x="52" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg0">
|
||||
<bounds x="59" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
<bezel name="lamp10" element="lamp_rg1">
|
||||
<bounds x="66" y="44" width="3" height="3" />
|
||||
</bezel>
|
||||
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -2833,7 +2833,10 @@ $(DRIVERS)/segaorun.o: $(LAYOUT)/outrun.lh
|
||||
|
||||
$(DRIVERS)/segas32.o: $(LAYOUT)/radr.lh
|
||||
|
||||
$(DRIVERS)/segaufo.o: $(LAYOUT)/segaufo.lh
|
||||
$(DRIVERS)/segaufo.o: $(LAYOUT)/newufo.lh \
|
||||
$(LAYOUT)/ufomini.lh \
|
||||
$(LAYOUT)/ufo21.lh \
|
||||
$(LAYOUT)/ufo800.lh
|
||||
|
||||
$(DRIVERS)/segaybd.o: $(LAYOUT)/pdrift.lh
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user