mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
Merge pull request #2723 from JoakimLarsson/prodigy_2
Prodigy clickable layout
This commit is contained in:
commit
c18aec6ee6
@ -347,12 +347,17 @@ void via6522_device::clear_int(int data)
|
||||
{
|
||||
if (m_ifr & data)
|
||||
{
|
||||
LOGINT("cleared\n");
|
||||
m_ifr &= ~data;
|
||||
|
||||
output_irq();
|
||||
|
||||
LOG("%s:6522VIA chip %s: IFR = %02X\n", machine().describe_context(), tag(), m_ifr);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGINT("not cleared\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -559,6 +564,7 @@ READ8_MEMBER( via6522_device::read )
|
||||
val = m_latch_b;
|
||||
}
|
||||
|
||||
LOGINT("PB INT ");
|
||||
CLR_PB_INT();
|
||||
break;
|
||||
|
||||
@ -573,6 +579,7 @@ READ8_MEMBER( via6522_device::read )
|
||||
val = m_latch_a;
|
||||
}
|
||||
|
||||
LOGINT("PA INT ");
|
||||
CLR_PA_INT();
|
||||
|
||||
if (m_out_ca2 && (CA2_PULSE_OUTPUT(m_pcr) || CA2_AUTO_HS(m_pcr)))
|
||||
@ -607,6 +614,7 @@ READ8_MEMBER( via6522_device::read )
|
||||
break;
|
||||
|
||||
case VIA_T1CL:
|
||||
LOGINT("T1CL INT ");
|
||||
clear_int(INT_T1);
|
||||
val = get_counter1_value() & 0xFF;
|
||||
break;
|
||||
@ -624,6 +632,7 @@ READ8_MEMBER( via6522_device::read )
|
||||
break;
|
||||
|
||||
case VIA_T2CL:
|
||||
LOGINT("T2CL INT ");
|
||||
clear_int(INT_T2);
|
||||
if (m_t2_active)
|
||||
{
|
||||
@ -666,6 +675,7 @@ READ8_MEMBER( via6522_device::read )
|
||||
m_out_cb1 = 1;
|
||||
m_cb1_handler(m_out_cb1);
|
||||
m_shift_counter = 0x0f;
|
||||
LOGINT("SR INT ");
|
||||
clear_int(INT_SR);
|
||||
LOGSHIFT(" - ACR: %02x ", m_acr);
|
||||
if (SI_O2_CONTROL(m_acr) || SO_O2_CONTROL(m_acr))
|
||||
@ -730,6 +740,7 @@ WRITE8_MEMBER( via6522_device::write )
|
||||
output_pb();
|
||||
}
|
||||
|
||||
LOGINT("PB INT ");
|
||||
CLR_PB_INT();
|
||||
|
||||
if (m_out_cb2 && CB2_AUTO_HS(m_pcr))
|
||||
@ -747,6 +758,7 @@ WRITE8_MEMBER( via6522_device::write )
|
||||
output_pa();
|
||||
}
|
||||
|
||||
LOGINT("PA INT ");
|
||||
CLR_PA_INT();
|
||||
|
||||
if (m_out_ca2 && (CA2_PULSE_OUTPUT(m_pcr) || CA2_AUTO_HS(m_pcr)))
|
||||
@ -795,6 +807,7 @@ WRITE8_MEMBER( via6522_device::write )
|
||||
|
||||
case VIA_T1LH:
|
||||
m_t1lh = data;
|
||||
LOGINT("T1LH INT ");
|
||||
clear_int(INT_T1);
|
||||
break;
|
||||
|
||||
@ -802,6 +815,7 @@ WRITE8_MEMBER( via6522_device::write )
|
||||
m_t1ch = m_t1lh = data;
|
||||
m_t1cl = m_t1ll;
|
||||
|
||||
LOGINT("T1CH INT ");
|
||||
clear_int(INT_T1);
|
||||
|
||||
m_t1_pb7 = 0;
|
||||
@ -823,6 +837,7 @@ WRITE8_MEMBER( via6522_device::write )
|
||||
m_t2ch = m_t2lh = data;
|
||||
m_t2cl = m_t2ll;
|
||||
|
||||
LOGINT("T2 INT ");
|
||||
clear_int(INT_T2);
|
||||
|
||||
if (!T2_COUNT_PB6(m_acr))
|
||||
@ -851,6 +866,7 @@ WRITE8_MEMBER( via6522_device::write )
|
||||
}
|
||||
|
||||
m_shift_counter = 0x0f;
|
||||
LOGINT("SR INT ");
|
||||
clear_int(INT_SR);
|
||||
LOGSHIFT(" - ACR is: %02x ", m_acr);
|
||||
if (SO_O2_CONTROL(m_acr) || SI_O2_CONTROL(m_acr))
|
||||
@ -940,6 +956,7 @@ WRITE8_MEMBER( via6522_device::write )
|
||||
{
|
||||
data = 0x7f;
|
||||
}
|
||||
LOGINT("IFR INT ");
|
||||
clear_int(data);
|
||||
break;
|
||||
}
|
||||
|
@ -2,9 +2,16 @@
|
||||
// copyright-holders:Joakim Larsson Edstrom
|
||||
/******************************************************************************
|
||||
|
||||
ACI Prodigy chess computer driver
|
||||
ACI Prodigy chess computer driver.
|
||||
|
||||
TODO: Everything
|
||||
http://www.spacious-mind.com/html/destiny_prodigy.html
|
||||
Morphy software ELO rating: 1559
|
||||
|
||||
TODO:
|
||||
- Sound
|
||||
- Row/column LEDs
|
||||
- Chess board sensors
|
||||
- Support for SVG/CSS based browser UI
|
||||
|
||||
+-------------------------------------------------------------------------------------+
|
||||
|LEDS--------------------------------------------+ +-----------------+ |
|
||||
@ -28,7 +35,7 @@
|
||||
| | || 74145N | | RAM | |LS| |
|
||||
| | A B C D E F G H |+--------+ | M58725P | |00| |
|
||||
| +--------------------------------------------+ +-------------+ +--+ |
|
||||
|LEDS-> O O O O O O O O OOOOOOOOOOO KPDCN |
|
||||
|LEDS-> O O O O O O O O OOOOOOOOOOOO KPDCN |
|
||||
+-------------------------------------------------------------------------------------+
|
||||
|
||||
Tracing the image shows that VIA Port A is used on the ROWCN and Port B on COLCN
|
||||
@ -49,6 +56,15 @@
|
||||
||||||||||||||||||| PB2--->|145|=/4/=/R/=>b(4x )c=/4/==============>
|
||||
+---+ (PN2907)e=+ anodes
|
||||
|+5v
|
||||
|
||||
The keypad is connected to the 12 pin KPDCN connector left to right KP1:
|
||||
|
||||
Pin #: KP1 KP2 KP3 KP4 KP5 KP6 KP7 KP8 KP9 KP10 KP11 K12
|
||||
VIA : PB4 PB5 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7
|
||||
74145: Q8 Q9 - used to decode/ground one half of the KPAD at a time
|
||||
|
||||
Q7 is suspected to be ground for the chessboard buttons
|
||||
|
||||
*******************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -57,6 +73,7 @@
|
||||
#include "machine/netlist.h"
|
||||
#include "machine/nl_prodigy.h"
|
||||
#include "machine/6522via.h"
|
||||
|
||||
// Generated artwork includes
|
||||
#include "prodigy.lh"
|
||||
|
||||
@ -65,9 +82,11 @@
|
||||
#define LOG_BCD (1U << 3)
|
||||
#define LOG_NETLIST (1U << 4)
|
||||
#define LOG_CLK (1U << 5)
|
||||
#define LOG_KBD (1U << 6)
|
||||
#define LOG_AW (1U << 7)
|
||||
|
||||
//#define VERBOSE (LOG_BCD|LOG_NETLIST|LOG_SETUP)
|
||||
//#define LOG_OUTPUT_FUNC printf
|
||||
//#define VERBOSE (LOG_KBD|LOG_AW) // (LOG_BCD|LOG_NETLIST|LOG_SETUP)
|
||||
//#define LOG_OUTPUT_STREAM std::cout
|
||||
|
||||
#include "logmacro.h"
|
||||
|
||||
@ -76,6 +95,8 @@
|
||||
#define LOGBCD(...) LOGMASKED(LOG_BCD, __VA_ARGS__)
|
||||
#define LOGNL(...) LOGMASKED(LOG_NETLIST, __VA_ARGS__)
|
||||
#define LOGCLK(...) LOGMASKED(LOG_CLK, __VA_ARGS__)
|
||||
#define LOGKBD(...) LOGMASKED(LOG_KBD, __VA_ARGS__)
|
||||
#define LOGAW(...) LOGMASKED(LOG_AW, __VA_ARGS__)
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define FUNCNAME __func__
|
||||
@ -84,7 +105,6 @@
|
||||
#endif
|
||||
|
||||
#define NETLIST_TAG "bcd"
|
||||
#define TTL74164DEV 0
|
||||
|
||||
class prodigy_state : public driver_device
|
||||
{
|
||||
@ -99,6 +119,7 @@ public:
|
||||
, m_cb1(*this, "bcd:cb1")
|
||||
, m_cb2(*this, "bcd:cb2")
|
||||
, m_digit(0.0)
|
||||
, m_io_line(*this, "LINE%u", 0)
|
||||
{ }
|
||||
|
||||
NETDEV_LOGIC_CALLBACK_MEMBER(bcd_bit0_cb);
|
||||
@ -110,6 +131,9 @@ public:
|
||||
NETDEV_LOGIC_CALLBACK_MEMBER(bcd_bit6_cb);
|
||||
NETDEV_LOGIC_CALLBACK_MEMBER(bcd_bit7_cb);
|
||||
|
||||
DECLARE_READ8_MEMBER( via_pa_r );
|
||||
DECLARE_READ8_MEMBER( via_pb_r );
|
||||
DECLARE_WRITE8_MEMBER( via_pa_w );
|
||||
DECLARE_WRITE8_MEMBER( via_pb_w );
|
||||
DECLARE_WRITE_LINE_MEMBER(via_cb1_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(via_cb2_w);
|
||||
@ -120,17 +144,15 @@ private:
|
||||
required_device<ttl74145_device> m_74145;
|
||||
uint8_t m_segments;
|
||||
required_device<via6522_device> m_via;
|
||||
#if TTL74164DEV
|
||||
required_device<ttl74164_device> m_shift;
|
||||
#else
|
||||
required_device<netlist_mame_device> m_bcd;
|
||||
required_device<netlist_mame_logic_input_device> m_cb1;
|
||||
required_device<netlist_mame_logic_input_device> m_cb2;
|
||||
#endif
|
||||
uint8_t m_digit;
|
||||
void update_bcd();
|
||||
|
||||
virtual void device_reset() override;
|
||||
virtual void device_start() override;
|
||||
required_ioport_array<5> m_io_line;
|
||||
uint16_t m_line[5];
|
||||
};
|
||||
|
||||
NETDEV_LOGIC_CALLBACK_MEMBER(prodigy_state::bcd_bit0_cb) { if (data != 0) m_digit |= 0x01; else m_digit &= ~(0x01); LOGBCD("%s: %d m_digit: %02x\n", FUNCNAME, data, m_digit); }
|
||||
@ -142,12 +164,9 @@ NETDEV_LOGIC_CALLBACK_MEMBER(prodigy_state::bcd_bit5_cb) { if (data != 0) m_digi
|
||||
NETDEV_LOGIC_CALLBACK_MEMBER(prodigy_state::bcd_bit6_cb) { if (data != 0) m_digit |= 0x40; else m_digit &= ~(0x40); LOGBCD("%s: %d m_digit: %02x\n", FUNCNAME, data, m_digit); }
|
||||
NETDEV_LOGIC_CALLBACK_MEMBER(prodigy_state::bcd_bit7_cb) { if (data != 0) m_digit |= 0x80; else m_digit &= ~(0x80); LOGBCD("%s: %d m_digit: %02x\n", FUNCNAME, data, m_digit); }
|
||||
|
||||
void prodigy_state::device_reset()
|
||||
void prodigy_state::device_start()
|
||||
{
|
||||
#if TTL74164DEV
|
||||
m_shift->b_w(1);
|
||||
m_shift->clear_w(1);
|
||||
#endif
|
||||
memset(m_line, 0, sizeof(m_line));
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(prodigy_state::via_cb1_w)
|
||||
@ -175,20 +194,61 @@ WRITE_LINE_MEMBER(prodigy_state::irq_handler)
|
||||
|
||||
PB2 and PB3 is also connected to the 74145, usage to be traced....
|
||||
*/
|
||||
WRITE8_MEMBER( prodigy_state::via_pb_w ) // Needs to trace which port decides what digit
|
||||
|
||||
READ8_MEMBER( prodigy_state::via_pa_r )
|
||||
{
|
||||
LOGBCD("%s: %02x ANODE %02x\n", FUNCNAME, data, data & 0x03);
|
||||
m_74145->write( data & 0x0f ); // Write PB0-PB3 to the 74145
|
||||
LOGKBD("%s: Port A <- %02x\n", FUNCNAME, 0);
|
||||
uint16_t ttl74145_data = m_74145->read();
|
||||
|
||||
LOGKBD(" - 74145: %03x\n", ttl74145_data);
|
||||
if (ttl74145_data & 0x100) return (m_line[0] | m_line[1]);
|
||||
if (ttl74145_data & 0x200) return (m_line[4] | m_line[3]);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
READ8_MEMBER( prodigy_state::via_pb_r )
|
||||
{
|
||||
LOGKBD("%s: Port B <- %02x\n", FUNCNAME, 0);
|
||||
uint16_t ttl74145_data = m_74145->read();
|
||||
if (ttl74145_data & 0x100) return (((m_line[2] >> 8) & 3) << 4);
|
||||
if (ttl74145_data & 0x200) return (((m_line[2] >> 10) & 3) << 4);
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( prodigy_state::via_pa_w )
|
||||
{
|
||||
LOGKBD("%s: Port A -> %02x\n", FUNCNAME, data);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( prodigy_state::via_pb_w )
|
||||
{
|
||||
LOGBCD("%s: %02x ANODE %c\n", FUNCNAME, data, (data & 0x0f) <= 3 ? ('0' + (data & 0x03)) : 'x');
|
||||
LOGKBD("%s: %02x KBD Q8:%c Q9:%c\n", FUNCNAME, data, (data & 0x0f) == 8 ? '0' : '1', (data & 0x0f) == 9 ? '0' : '1');
|
||||
// Write PB0-PB3 to the 74145
|
||||
// Q0-Q3 => BCD0-BCD3 (PB0-PB1, PB2=0 PB3=0)
|
||||
// Q8-Q9 => KPDCN (PB0:0=Q8 1=Q9, PB1=0 PB2=0 PB3=1)
|
||||
m_74145->write( data & 0x0f );
|
||||
|
||||
// Read the artwork
|
||||
int i = 0;
|
||||
for (auto & elem : m_io_line)
|
||||
{
|
||||
m_line[i] = elem->read();
|
||||
LOGAW("-LINE%u: %02x\n", i, m_line[i]);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void prodigy_state::update_bcd()
|
||||
{
|
||||
LOGBCD("%s\n", FUNCNAME);
|
||||
uint8_t ttl74145_data;
|
||||
uint16_t ttl74145_data;
|
||||
uint8_t digit_nbr = 4;
|
||||
|
||||
ttl74145_data = m_74145->read();
|
||||
LOGBCD(" - 74145: %02x\n", ttl74145_data);
|
||||
LOGBCD(" - 74145: %03x\n", ttl74145_data);
|
||||
|
||||
if ((ttl74145_data & 0x0f) != 0x00)
|
||||
{
|
||||
@ -215,7 +275,64 @@ static ADDRESS_MAP_START( maincpu_map, AS_PROGRAM, 8, prodigy_state )
|
||||
AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0x0000) AM_MIRROR(0x8000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/*
|
||||
* The keypad was modelled after the physical appearance but altered after finding out how it was working so
|
||||
* LINE0 to LINE4 has no correlation to the actual keypad anymore, which is connected like this:
|
||||
*
|
||||
* con KP1/KP11
|
||||
*-----------------------
|
||||
* KP1 GND/HIZ
|
||||
* KP2 GO/BLACK
|
||||
* KP3 A1/B2
|
||||
* KP4 D4/E5
|
||||
* KP5 G7/E8
|
||||
* KP6 RESTORE/HALT&HINT
|
||||
* KP7 CE/AUDIO
|
||||
* KP8 LEVEL/TIME&NUMBER
|
||||
* KP9 CHANGE BOARD/F6
|
||||
* KP10 VERIFY/C3
|
||||
* KP11 HIZ/GND
|
||||
* KP12 ENTER/WHITE
|
||||
*-----------------------
|
||||
* KP1 and KP11 alternates as GND enabling 10 pads at a time which are read on VIA port A and B.
|
||||
* TODO: Refactor as two 10 bit LINEs rather then matrix in order to match circuit
|
||||
*
|
||||
*/
|
||||
static INPUT_PORTS_START( prodigy )
|
||||
PORT_START("LINE0") /* KEY ROW 0 */
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D_4") PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('4')
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G_7") PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('7')
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RESTORE") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CE") PORT_CODE(KEYCODE_T) PORT_CHAR('T')
|
||||
PORT_BIT(0xc00, 0x00, IPT_UNUSED )
|
||||
|
||||
PORT_START("LINE1") /* KEY ROW 1 */
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LEVEL") PORT_CODE(KEYCODE_L) PORT_CHAR('L')
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CHANGE_BOARD") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("VERIFY") PORT_CODE(KEYCODE_V) PORT_CHAR('V')
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_S) PORT_CHAR('S')
|
||||
PORT_BIT(0xc00, 0x00, IPT_UNUSED )
|
||||
|
||||
PORT_START("LINE2") /* KEY ROW 2 */
|
||||
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("GO") PORT_CODE(KEYCODE_O) PORT_CHAR('O')
|
||||
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A_1") PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('1')
|
||||
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BLACK") PORT_CODE(KEYCODE_P) PORT_CHAR('P')
|
||||
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B_2") PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('2')
|
||||
PORT_BIT(0x000, 0x00, IPT_UNUSED )
|
||||
|
||||
PORT_START("LINE3") /* KEY ROW 3 */
|
||||
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E_5") PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('5')
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H_8") PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('8')
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("HALT_HINT") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("AUDIO") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
|
||||
PORT_BIT(0xc00, 0x00, IPT_UNUSED )
|
||||
|
||||
PORT_START("LINE4") /* KEY ROW 4 */
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TIME_NUMBER") PORT_CODE(KEYCODE_N) PORT_CHAR('N')
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F_6") PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('6')
|
||||
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C_3") PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('3')
|
||||
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("WHITE") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
|
||||
PORT_BIT(0xc00, 0x00, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_CONFIG_START( prodigy )
|
||||
@ -228,7 +345,10 @@ static MACHINE_CONFIG_START( prodigy )
|
||||
|
||||
MCFG_DEVICE_ADD("via", VIA6522, XTAL_2MHz)
|
||||
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(prodigy_state, irq_handler));
|
||||
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(prodigy_state, via_pa_w))
|
||||
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(prodigy_state, via_pb_w))
|
||||
MCFG_VIA6522_READPA_HANDLER(READ8(prodigy_state, via_pa_r))
|
||||
MCFG_VIA6522_READPB_HANDLER(READ8(prodigy_state, via_pb_r))
|
||||
MCFG_VIA6522_CB1_HANDLER(WRITELINE(prodigy_state, via_cb1_w))
|
||||
MCFG_VIA6522_CB2_HANDLER(WRITELINE(prodigy_state, via_cb2_w))
|
||||
|
||||
@ -294,4 +414,4 @@ ROM_START(prodigy)
|
||||
ROM_END
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
||||
CONS( 1981, prodigy, 0, 0, prodigy, prodigy, prodigy_state, 0, "Applied Concepts Inc", "ACI Destiny Prodigy", MACHINE_IS_SKELETON )
|
||||
CONS( 1981, prodigy, 0, 0, prodigy, prodigy, prodigy_state, 0, "Applied Concepts Inc", "ACI Destiny Prodigy", MACHINE_NO_SOUND )
|
||||
|
@ -1,25 +1,268 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet type="text/xsl" href="layout.xsl"?>
|
||||
<mamelayout version="2">
|
||||
<element name="digit" defstate="1">
|
||||
<led7seg>
|
||||
<color red="0.75" green="0.0" blue="0.0" />
|
||||
</led7seg>
|
||||
</element>
|
||||
<element name="led" defstate="0">
|
||||
<disk state="0">
|
||||
<color red="0.35" green="0.0" blue="0.0" />
|
||||
</disk>
|
||||
<disk state="1">
|
||||
<color red="0.95" green="0.0" blue="0.0" />
|
||||
</disk>
|
||||
</element>
|
||||
<element name="text_destiny"><text string="DESTINY"><color red="0.21" green="0.19" blue="0.20" /></text></element>
|
||||
<element name="text_prodigy"><text string="PRODIGY"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
|
||||
<element name="text_restore"><text string="RESTORE"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_halt"><text string="HALT"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_hint"><text string="HINT"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_audio"><text string="AUDIO"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_ce"><text string="CE"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
|
||||
<element name="text_g_7"><text string="G 7"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_h_8"><text string="H 8"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_time"><text string="TIME"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_number"><text string="NUMBER"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_level"><text string="LEVEL"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
|
||||
<element name="text_d_4"><text string="D 4"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_e_5"><text string="E 5"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_f_6"><text string="F 6"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_change"><text string="CHANGE"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_board"><text string="BOARD"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
|
||||
<element name="text_a_1"><text string="A 1"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_b_2"><text string="B 2"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_c_3"><text string="C 3"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_verify"><text string="VERIFY"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
|
||||
<element name="text_go"><text string="GO"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_black"><text string="BLACK"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_white"><text string="WHITE"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
<element name="text_enter"><text string="ENTER"><color red="0.67" green="0.65" blue="0.67" /></text></element>
|
||||
|
||||
<element name="text_a"><text string="A"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_b"><text string="B"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_c"><text string="C"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_d"><text string="D"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_e"><text string="E"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_f"><text string="F"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_g"><text string="G"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_h"><text string="H"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
|
||||
<element name="text_1"><text string="1"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_2"><text string="2"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_3"><text string="3"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_4"><text string="4"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_5"><text string="5"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_6"><text string="6"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_7"><text string="7"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
<element name="text_8"><text string="8"><color red="0.68" green="0.63" blue="0.49" /></text></element>
|
||||
|
||||
<element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
|
||||
<element name="white"><rect><color red="0.67" green="0.65" blue="0.67" /></rect></element>
|
||||
<element name="brown"><rect><color red="0.21" green="0.17" blue="0.17" /></rect></element>
|
||||
<element name="darkbrown"><rect><color red="0.11" green="0.07" blue="0.07" /></rect></element>
|
||||
<element name="gold"> <rect><color red="0.68" green="0.63" blue="0.49" /></rect></element>
|
||||
|
||||
<view name="Full Artwork">
|
||||
<bounds left="0" top="0" right="840" bottom="1105" />
|
||||
<bounds left="0" top="0" right="800" bottom="670" />
|
||||
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds left="70" top="840" right="100" bottom="885" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds left="100" top="840" right="125" bottom="885" />
|
||||
</bezel>
|
||||
<bezel name="digit2" element="digit">
|
||||
<bounds left="125" top="840" right="150" bottom="885" />
|
||||
</bezel>
|
||||
<bezel name="digit3" element="digit">
|
||||
<bounds left="150" top="840" right="175" bottom="885" />
|
||||
</bezel>
|
||||
<!-- chessboard bezel -->
|
||||
|
||||
</view>
|
||||
<bezel element="brown"><bounds x="0" y="0" width="800" height="670" /></bezel>
|
||||
<bezel element="darkbrown"><bounds x="25" y="175" width="760" height="460" /></bezel>
|
||||
<bezel element="white"><bounds x="30" y="180" width="750" height="450" /></bezel>
|
||||
<bezel element="gold"><bounds x="32" y="184" width="746" height="444" /></bezel>
|
||||
<bezel element="white"><bounds x="36" y="188" width="738" height="436" /></bezel>
|
||||
<bezel element="gold"><bounds x="57" y="197" width="404" height="404" /></bezel>
|
||||
<!-- bezel element="white"><bounds x="60" y="200" width="400" height="400" /></bezel -->
|
||||
<!-- bezel element="white"><bounds x="3" y="3" width="80" height="80" /></bezel -->
|
||||
|
||||
<!-- chess board -->
|
||||
<bezel element="gold"><bounds x="57" y="197" width="404" height="404" /></bezel>
|
||||
<bezel element="brown"><bounds x="110" y="200" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="210" y="200" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="310" y="200" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="410" y="200" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="brown"><bounds x="60" y="250" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="160" y="250" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="260" y="250" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="360" y="250" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="brown"><bounds x="110" y="300" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="210" y="300" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="310" y="300" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="410" y="300" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="brown"><bounds x="60" y="350" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="160" y="350" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="260" y="350" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="360" y="350" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="brown"><bounds x="110" y="400" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="210" y="400" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="310" y="400" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="410" y="400" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="brown"><bounds x="60" y="450" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="160" y="450" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="260" y="450" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="360" y="450" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="brown"><bounds x="110" y="500" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="210" y="500" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="310" y="500" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="410" y="500" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="brown"><bounds x="60" y="550" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="160" y="550" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="260" y="550" width="48" height="48" /></bezel>
|
||||
<bezel element="brown"><bounds x="360" y="550" width="48" height="48" /></bezel>
|
||||
|
||||
|
||||
<bezel element="white"><bounds x="110" y="250" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="210" y="250" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="310" y="250" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="410" y="250" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="white"><bounds x="60" y="200" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="160" y="200" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="260" y="200" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="360" y="200" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="white"><bounds x="110" y="350" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="210" y="350" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="310" y="350" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="410" y="350" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="white"><bounds x="60" y="300" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="160" y="300" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="260" y="300" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="360" y="300" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="white"><bounds x="110" y="450" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="210" y="450" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="310" y="450" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="410" y="450" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="white"><bounds x="60" y="400" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="160" y="400" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="260" y="400" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="360" y="400" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="white"><bounds x="110" y="550" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="210" y="550" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="310" y="550" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="410" y="550" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="white"><bounds x="60" y="500" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="160" y="500" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="260" y="500" width="48" height="48" /></bezel>
|
||||
<bezel element="white"><bounds x="360" y="500" width="48" height="48" /></bezel>
|
||||
|
||||
<bezel element="text_a"><bounds x="75" y="600" width="14" height="14" /></bezel>
|
||||
<bezel element="text_b"><bounds x="125" y="600" width="14" height="14" /></bezel>
|
||||
<bezel element="text_c"><bounds x="175" y="600" width="14" height="14" /></bezel>
|
||||
<bezel element="text_d"><bounds x="225" y="600" width="14" height="14" /></bezel>
|
||||
<bezel element="text_e"><bounds x="275" y="600" width="14" height="14" /></bezel>
|
||||
<bezel element="text_f"><bounds x="325" y="600" width="14" height="14" /></bezel>
|
||||
<bezel element="text_g"><bounds x="375" y="600" width="14" height="14" /></bezel>
|
||||
<bezel element="text_h"><bounds x="425" y="600" width="14" height="14" /></bezel>
|
||||
|
||||
<bezel element="text_8"><bounds x="45" y="215" width="14" height="14" /></bezel>
|
||||
<bezel element="text_7"><bounds x="45" y="265" width="14" height="14" /></bezel>
|
||||
<bezel element="text_6"><bounds x="45" y="315" width="14" height="14" /></bezel>
|
||||
<bezel element="text_5"><bounds x="45" y="365" width="14" height="14" /></bezel>
|
||||
<bezel element="text_4"><bounds x="45" y="415" width="14" height="14" /></bezel>
|
||||
<bezel element="text_3"><bounds x="45" y="465" width="14" height="14" /></bezel>
|
||||
<bezel element="text_2"><bounds x="45" y="515" width="14" height="14" /></bezel>
|
||||
<bezel element="text_1"><bounds x="45" y="565" width="14" height="14" /></bezel>
|
||||
|
||||
<bezel name="leda" element="led"><bounds x="78" y="614" width="10" height="10" /></bezel>
|
||||
<bezel name="ledb" element="led"><bounds x="128" y="614" width="10" height="10" /></bezel>
|
||||
<bezel name="ledc" element="led"><bounds x="178" y="614" width="10" height="10" /></bezel>
|
||||
<bezel name="ledd" element="led"><bounds x="228" y="614" width="10" height="10" /></bezel>
|
||||
<bezel name="lede" element="led"><bounds x="278" y="614" width="10" height="10" /></bezel>
|
||||
<bezel name="ledf" element="led"><bounds x="328" y="614" width="10" height="10" /></bezel>
|
||||
<bezel name="ledg" element="led"><bounds x="378" y="614" width="10" height="10" /></bezel>
|
||||
<bezel name="ledh" element="led"><bounds x="428" y="614" width="10" height="10" /></bezel>
|
||||
|
||||
<bezel name="led8" element="led"><bounds x="37" y="217" width="10" height="10" /></bezel>
|
||||
<bezel name="led7" element="led"><bounds x="37" y="267" width="10" height="10" /></bezel>
|
||||
<bezel name="led6" element="led"><bounds x="37" y="317" width="10" height="10" /></bezel>
|
||||
<bezel name="led5" element="led"><bounds x="37" y="367" width="10" height="10" /></bezel>
|
||||
<bezel name="led4" element="led"><bounds x="37" y="417" width="10" height="10" /></bezel>
|
||||
<bezel name="led3" element="led"><bounds x="37" y="467" width="10" height="10" /></bezel>
|
||||
<bezel name="led2" element="led"><bounds x="37" y="517" width="10" height="10" /></bezel>
|
||||
<bezel name="led1" element="led"><bounds x="37" y="567" width="10" height="10" /></bezel>
|
||||
|
||||
<!-- display -->
|
||||
<bezel element="gold"><bounds x="471" y="197" width="283" height="135" /></bezel>
|
||||
<bezel element="brown"><bounds x="474" y="200" width="276" height="129" /></bezel>
|
||||
<bezel element="black"><bounds x="520" y="235" width="170" height="40" /></bezel>
|
||||
<bezel name="digit0" element="digit"><bounds x="540" y="240" width="25" height="30" /></bezel>
|
||||
<bezel name="digit1" element="digit"><bounds x="575" y="240" width="25" height="30" /></bezel>
|
||||
<bezel name="digit2" element="digit"><bounds x="610" y="240" width="25" height="30" /></bezel>
|
||||
<bezel name="digit3" element="digit"><bounds x="645" y="240" width="25" height="30" /></bezel>
|
||||
|
||||
<!-- front text -->
|
||||
<bezel element="text_prodigy"><bounds x="550" y="290" width="115" height="30" /></bezel>
|
||||
<bezel element="text_destiny"><bounds x="580" y="600" width="85" height="20" /></bezel>
|
||||
|
||||
<!-- keypad -->
|
||||
<bezel element="gold"><bounds x="471" y="343" width="283" height="258" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE0" inputmask="0x004"><bounds x="474" y="345" width="68" height="48" /></bezel>
|
||||
<bezel element="text_restore"><bounds x="462" y="360" width="90" height="16" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE3" inputmask="0x004"><bounds x="544" y="345" width="68" height="48" /></bezel>
|
||||
<bezel element="text_halt"><bounds x="554" y="352" width="40" height="16" /></bezel>
|
||||
<bezel element="text_hint"><bounds x="554" y="372" width="40" height="16" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE3" inputmask="0x08"><bounds x="614" y="345" width="68" height="48" /></bezel>
|
||||
<bezel element="text_audio"><bounds x="624" y="360" width="40" height="16" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE0" inputmask="0x08"><bounds x="684" y="345" width="68" height="48" /></bezel>
|
||||
<bezel element="text_ce"><bounds x="695" y="360" width="40" height="16" /></bezel>
|
||||
|
||||
<bezel element="brown" inputtag="LINE0" inputmask="0x02"><bounds x="474" y="396" width="68" height="48" /></bezel>
|
||||
<bezel element="text_g_7"><bounds x="487" y="410" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE3" inputmask="0x02"><bounds x="544" y="396" width="68" height="48" /></bezel>
|
||||
<bezel element="text_h_8"><bounds x="557" y="410" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE4" inputmask="0x10"><bounds x="614" y="396" width="68" height="48" /></bezel>
|
||||
<bezel element="text_time"><bounds x="618" y="400" width="60" height="16" /></bezel>
|
||||
<bezel element="text_number"><bounds x="618" y="420" width="60" height="16" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE1" inputmask="0x10"><bounds x="684" y="396" width="68" height="48" /></bezel>
|
||||
<bezel element="text_level"><bounds x="693" y="410" width="40" height="18" /></bezel>
|
||||
|
||||
<bezel element="brown" inputtag="LINE0" inputmask="0x001"><bounds x="474" y="447" width="68" height="48" /></bezel>
|
||||
<bezel element="text_d_4"><bounds x="485" y="453" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE3" inputmask="0x001"><bounds x="544" y="447" width="68" height="48" /></bezel>
|
||||
<bezel element="text_e_5"><bounds x="553" y="453" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE4" inputmask="0x020"><bounds x="614" y="447" width="68" height="48" /></bezel>
|
||||
<bezel element="text_f_6"><bounds x="621" y="453" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE1" inputmask="0x020"><bounds x="684" y="447" width="68" height="48" /></bezel>
|
||||
<bezel element="text_change"><bounds x="695" y="455" width="40" height="18" /></bezel>
|
||||
<bezel element="text_board"><bounds x="695" y="470" width="40" height="18" /></bezel>
|
||||
|
||||
<bezel element="brown" inputtag="LINE2" inputmask="0x200"><bounds x="474" y="498" width="68" height="48" /></bezel>
|
||||
<bezel element="text_a_1"><bounds x="485" y="503" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE2" inputmask="0x800"><bounds x="544" y="498" width="68" height="48" /></bezel>
|
||||
<bezel element="text_b_2"><bounds x="553" y="503" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE4" inputmask="0x40"><bounds x="614" y="498" width="68" height="48" /></bezel>
|
||||
<bezel element="text_c_3"><bounds x="621" y="503" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE1" inputmask="0x40"><bounds x="684" y="498" width="68" height="48" /></bezel>
|
||||
<bezel element="text_verify"><bounds x="695" y="510" width="40" height="18" /></bezel>
|
||||
|
||||
<bezel element="brown" inputtag="LINE2" inputmask="0x100"><bounds x="474" y="549" width="68" height="48" /></bezel>
|
||||
<bezel element="text_go"><bounds x="485" y="565" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE2" inputmask="0x400"><bounds x="544" y="549" width="68" height="48" /></bezel>
|
||||
<bezel element="text_black"><bounds x="553" y="565" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE4" inputmask="0x80"><bounds x="614" y="549" width="68" height="48" /></bezel>
|
||||
<bezel element="text_white"><bounds x="621" y="565" width="40" height="18" /></bezel>
|
||||
<bezel element="brown" inputtag="LINE1" inputmask="0x80"><bounds x="684" y="549" width="68" height="48" /></bezel>
|
||||
<bezel element="text_enter"><bounds x="695" y="565" width="40" height="18" /></bezel>
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
Loading…
Reference in New Issue
Block a user