hh_tms1k: added switches to simon layout, added buttons to zodiac layout, changed inputs to sliders in alphie (nw)

This commit is contained in:
hap 2019-03-23 16:48:09 +01:00
parent c8d551a362
commit 32c155ee38
7 changed files with 325 additions and 51 deletions

View File

@ -852,6 +852,7 @@ public:
std::string m_input_tag; // input tag of this item
ioport_port * m_input_port; // input port of this item
ioport_value m_input_mask; // input mask of this item
u8 m_input_shift; // input mask rightshift for raw (trailing 0s)
bool m_input_raw; // get raw data from input port
screen_device * m_screen; // pointer to screen
int m_orientation; // orientation of this item

View File

@ -3283,6 +3283,7 @@ layout_view::item::item(
, m_input_tag(env.get_attribute_string(itemnode, "inputtag", ""))
, m_input_port(nullptr)
, m_input_mask(0)
, m_input_shift(0)
, m_input_raw(false)
, m_screen(nullptr)
, m_orientation(orientation_add(env.parse_orientation(itemnode.get_child("orientation")), orientation))
@ -3309,6 +3310,7 @@ layout_view::item::item(
if (index != -1)
m_screen = screen_device_iterator(env.machine().root_device()).byindex(index);
m_input_mask = env.get_attribute_int(itemnode, "inputmask", 0);
for (u32 mask = m_input_mask; (mask != 0) && (~mask & 1); mask >>= 1) m_input_shift++;
m_input_raw = env.get_attribute_int(itemnode, "inputraw", 0) == 1;
if (m_have_output && m_element)
m_output = m_element->default_state();
@ -3384,7 +3386,7 @@ int layout_view::item::state() const
{
if (m_input_raw)
{
return m_input_port->read() & m_input_mask;
return (m_input_port->read() & m_input_mask) >> m_input_shift;
}
else
{

View File

@ -228,7 +228,7 @@
#include "tcfballa.lh"
#include "timaze.lh"
#include "xl25.lh" // clickable
#include "zodiac.lh"
#include "zodiac.lh" // clickable
//#include "hh_tms1k_test.lh" // common test-layout - use external artwork
@ -394,6 +394,17 @@ u8 hh_tms1k_state::read_rotated_inputs(int columns, u8 rowmask)
return ret;
}
void hh_tms1k_state::switch_change(int sel, u32 mask, bool next)
{
// config switches (for direct control)
ioport_field *inp = m_inp_matrix[sel]->field(mask);
if (next && inp->has_next_setting())
inp->select_next_setting();
else if (!next && inp->has_previous_setting())
inp->select_previous_setting();
}
INPUT_CHANGED_MEMBER(hh_tms1k_state::reset_button)
{
// when an input is directly wired to MCU INIT pin
@ -1213,7 +1224,7 @@ static INPUT_PORTS_START( zodiac )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter") PORT_CHAR(13)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Clear") PORT_CHAR(8)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Clear") PORT_CHAR(8)
PORT_START("IN.5") // R8
PORT_CONFNAME( 0x03, 0x01, "Mode")
@ -6724,6 +6735,12 @@ static INPUT_PORTS_START( simon )
PORT_CONFSETTING( 0x04, "2" )
PORT_CONFSETTING( 0x08, "3" )
PORT_CONFSETTING( 0x01, "4" )
PORT_START("SWITCH") // fake
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<0>, 0x07)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<0>, 0x07)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<3>, 0x0f)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<3>, 0x0f)
INPUT_PORTS_END
void simon_state::simon(machine_config &config)
@ -8373,8 +8390,6 @@ public:
hh_tms1k_state(mconfig, type, tag)
{ }
TIMER_DEVICE_CALLBACK_MEMBER(show_arm_position);
DECLARE_WRITE16_MEMBER(write_r);
DECLARE_WRITE16_MEMBER(write_o);
DECLARE_READ8_MEMBER(read_k);
@ -8383,13 +8398,6 @@ public:
// handlers
TIMER_DEVICE_CALLBACK_MEMBER(alphie_state::show_arm_position)
{
// arm position 1(up) to 5(down)
output().set_value("q_pos", 32 - count_leading_zeros(m_inp_matrix[1]->read()));
output().set_value("a_pos", 32 - count_leading_zeros(m_inp_matrix[2]->read()));
}
WRITE16_MEMBER(alphie_state::write_r)
{
// R1-R5, input mux (using d5 for Vss)
@ -8419,17 +8427,25 @@ READ8_MEMBER(alphie_state::read_k)
// config
static const ioport_value alphie_armpos_table[5] = { 0x01, 0x02, 0x04, 0x08, 0x10 };
static INPUT_PORTS_START( alphie )
PORT_START("IN.0") // K1
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
PORT_START("IN.1") // K2
PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_PLAYER(2) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Question Arm")
PORT_CONFNAME( 0x1f, 0x01, "Question" )
PORT_CONFSETTING( 0x01, "1" )
PORT_CONFSETTING( 0x02, "2" )
PORT_CONFSETTING( 0x04, "3" )
PORT_CONFSETTING( 0x08, "4" )
PORT_CONFSETTING( 0x10, "5" )
PORT_START("IN.2") // K4
PORT_BIT( 0x1f, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(5) PORT_REMAP_TABLE(alphie_armpos_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Answer Arm")
PORT_CONFNAME( 0x1f, 0x01, "Answer" )
PORT_CONFSETTING( 0x01, "1" )
PORT_CONFSETTING( 0x02, "2" )
PORT_CONFSETTING( 0x04, "3" )
PORT_CONFSETTING( 0x08, "4" )
PORT_CONFSETTING( 0x10, "5" )
PORT_START("IN.3") // K8
PORT_CONFNAME( 0x0f, 0x01, "Activity" )
@ -8437,6 +8453,14 @@ static INPUT_PORTS_START( alphie )
PORT_CONFSETTING( 0x02, "Lunar Landing" )
PORT_CONFSETTING( 0x04, "Robot Land" )
PORT_CONFSETTING( 0x08, "Tunes" )
PORT_START("SWITCH") // fake
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<1>, 0x1f) PORT_NAME("Question Arm Up")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<1>, 0x1f) PORT_NAME("Question Arm Down")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<2>, 0x1f) PORT_NAME("Answer Arm Up")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<2>, 0x1f) PORT_NAME("Answer Arm Down")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_prev<3>, 0x0f) PORT_NAME("Activity Selector Left")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, switch_next<3>, 0x0f) PORT_NAME("Activity Selector Right")
INPUT_PORTS_END
// output PLA is guessed
@ -8455,7 +8479,6 @@ void alphie_state::alphie(machine_config &config)
m_maincpu->r().set(FUNC(alphie_state::write_r));
m_maincpu->o().set(FUNC(alphie_state::write_o));
TIMER(config, "arm_position").configure_periodic(FUNC(alphie_state::show_arm_position), attotime::from_msec(50));
TIMER(config, "display_decay").configure_periodic(FUNC(hh_tms1k_state::display_decay_tick), attotime::from_msec(1));
config.set_default_layout(layout_alphie);
@ -10326,7 +10349,7 @@ COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, mathmagi_state, emp
CONS( 1979, bcheetah, 0, 0, bcheetah, bcheetah, bcheetah_state, empty_init, "Bandai", "System Control Car: Cheetah", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_MECHANICAL ) // ***
CONS( 1978, amaztron, 0, 0, amaztron, amaztron, amaztron_state, empty_init, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // ***
COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, empty_init, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE )
COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, empty_init, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1978, cqback, 0, 0, cqback, cqback, cqback_state, empty_init, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE )
CONS( 1979, h2hfootb, 0, 0, h2hfootb, h2hfootb, h2hfootb_state, empty_init, "Coleco", "Head to Head: Electronic Football", MACHINE_SUPPORTS_SAVE )
CONS( 1979, h2hbaskb, 0, 0, h2hbaskb, h2hbaskb, h2hbaskb_state, empty_init, "Coleco", "Head to Head: Electronic Basketball (TMS1000 version)", MACHINE_SUPPORTS_SAVE )

View File

@ -62,6 +62,10 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER(auto_power_off);
virtual void power_off();
void switch_change(int sel, u32 mask, bool next);
template<int Sel> DECLARE_INPUT_CHANGED_MEMBER(switch_next) { if (newval) switch_change(Sel, (u32)(uintptr_t)param, true); }
template<int Sel> DECLARE_INPUT_CHANGED_MEMBER(switch_prev) { if (newval) switch_change(Sel, (u32)(uintptr_t)param, false); }
// display common
int m_display_wait; // led/lamp off-delay in milliseconds (default 33ms)
int m_display_maxy; // display matrix number of rows

View File

@ -10,19 +10,34 @@
<disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
</element>
<element name="nothing" defstate="0">
<text string=" "><color red="0" green="0" blue="0" /></text>
</element>
<element name="switch_qa" defstate="0">
<text string=" "><color red="0" green="0" blue="0" /></text>
<text state="0x01" string="1"><color red="0.95" green="0.95" blue="0.95" /></text>
<text state="0x02" string="2"><color red="0.95" green="0.95" blue="0.95" /></text>
<text state="0x04" string="3"><color red="0.95" green="0.95" blue="0.95" /></text>
<text state="0x08" string="4"><color red="0.95" green="0.95" blue="0.95" /></text>
<text state="0x10" string="5"><color red="0.95" green="0.95" blue="0.95" /></text>
</element>
<element name="switch_act" defstate="0">
<text string=" "><color red="0" green="0" blue="0" /></text>
<text state="0x01" string="S"><color red="0.95" green="0.95" blue="0.95" /></text>
<text state="0x02" string="*"><color red="0.95" green="0.95" blue="0.95" /></text>
<text state="0x04" string="X"><color red="0.95" green="0.95" blue="0.95" /></text>
<text state="0x08" string="&#x266a;"><color red="0.95" green="0.95" blue="0.95" /></text> <!-- music note -->
</element>
<element name="text_1"><text string="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="text_2"><text string="2"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="text_3"><text string="3"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="text_4"><text string="4"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="text_5"><text string="5"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="text_q"><text string="Question:" align="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="text_a"><text string="Answer:" align="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="counter" defstate="1">
<simplecounter maxstate="9" digits="1">
<color red="0.95" green="0.95" blue="0.95" />
</simplecounter>
</element>
<element name="text_ans"><text string="Answer:" align="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<element name="text_act"><text string="Activity:" align="1"><color red="0.75" green="0.75" blue="0.75" /></text></element>
<!-- build screen -->
@ -45,9 +60,12 @@
<bezel element="static_gray"><bounds x="6" y="0.5" width="0.2" height="13" /></bezel>
<bezel element="text_q"><bounds x="8" y="0" width="10" height="2" /></bezel>
<bezel element="text_a"><bounds x="8" y="3" width="10" height="2" /></bezel>
<bezel name="q_pos" element="counter"><bounds x="15" y="0" width="2" height="2" /></bezel>
<bezel name="a_pos" element="counter"><bounds x="15" y="3" width="2" height="2" /></bezel>
<bezel element="text_ans"><bounds x="8" y="3" width="10" height="2" /></bezel>
<bezel element="text_act"><bounds x="8" y="6" width="10" height="2" /></bezel>
<bezel element="nothing" inputtag="DUMMY" inputmask="0x01"><bounds x="14" y="-1" width="4" height="10" /></bezel>
<bezel element="switch_qa" inputtag="IN.1" inputmask="0x1f" inputraw="1"><bounds x="15" y="0" width="2" height="2" /></bezel>
<bezel element="switch_qa" inputtag="IN.2" inputmask="0x1f" inputraw="1"><bounds x="15" y="3" width="2" height="2" /></bezel>
<bezel element="switch_act" inputtag="IN.3" inputmask="0x0f" inputraw="1"><bounds x="15" y="6" width="2" height="2" /></bezel>
</view>
</mamelayout>

View File

@ -7,16 +7,15 @@
<element name="disk_black"><disk><color red="0.0" green="0.0" blue="0.0" /></disk></element>
<element name="disk_grey"><disk><color red="0.6" green="0.6" blue="0.6" /></disk></element>
<!-- TODO: add these, maybe -->
<element name="text_game">
<rect><color red="0.6" green="0.6" blue="0.6" /></rect>
<text string="GAME">
<text string="GAME (1-3)" align="1">
<color red="0.0" green="0.0" blue="0.0" />
</text>
</element>
<element name="text_skill">
<rect><color red="0.6" green="0.6" blue="0.6" /></rect>
<text string="SKILL LEVEL">
<text string="SKILL LEVEL (1-4)" align="1">
<color red="0.0" green="0.0" blue="0.0" />
</text>
</element>
@ -40,6 +39,49 @@
</text>
</element>
<element name="text_lb">
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
<text string="&#x25c4;">
<color red="0.3" green="0.4" blue="0.85" />
</text>
</element>
<element name="text_rb">
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
<text string="&#x25ba;">
<color red="0.3" green="0.4" blue="0.85" />
</text>
</element>
<element name="text_lg">
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
<text string="&#x25c4;">
<color red="0.33" green="0.8" blue="0.25" />
</text>
</element>
<element name="text_rg">
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
<text string="&#x25ba;">
<color red="0.33" green="0.8" blue="0.25" />
</text>
</element>
<element name="switch_game" defstate="0">
<rect><color red="0.6" green="0.6" blue="0.6" /></rect>
<text state="0x02" string="1"><color red="0.0" green="0.0" blue="0.0" /></text>
<text state="0x01" string="2"><color red="0.0" green="0.0" blue="0.0" /></text>
<text state="0x04" string="3"><color red="0.0" green="0.0" blue="0.0" /></text>
</element>
<element name="switch_skill" defstate="0">
<rect><color red="0.6" green="0.6" blue="0.6" /></rect>
<text state="0x02" string="1"><color red="0.0" green="0.0" blue="0.0" /></text>
<text state="0x04" string="2"><color red="0.0" green="0.0" blue="0.0" /></text>
<text state="0x08" string="3"><color red="0.0" green="0.0" blue="0.0" /></text>
<text state="0x01" string="4"><color red="0.0" green="0.0" blue="0.0" /></text>
</element>
<element name="nothing" defstate="0">
<text string=" "><color red="0" green="0" blue="0" /></text>
</element>
<element name="button_r" defstate="0">
<disk><color red="0.0" green="0.0" blue="0.0" /></disk>
<disk state="0">
@ -131,7 +173,6 @@
<bounds x="140" y="140" width="20" height="20" />
</bezel>
<bezel element="static_black">
<bounds x="0" y="90" width="200" height="20" />
</bezel>
@ -149,6 +190,51 @@
<bounds x="52" y="90" width="96" height="1" />
</bezel>
<!-- switches -->
<bezel element="text_game">
<bounds x="68" y="93" width="20" height="4" />
</bezel>
<bezel element="nothing" inputtag="DUMMY" inputmask="0x01">
<bounds x="73.9" y="97.9" width="3.2" height="4.2" />
</bezel>
<bezel element="switch_game" inputtag="IN.0" inputmask="0x07" inputraw="1">
<bounds x="74" y="98" width="3" height="4" />
</bezel>
<bezel element="text_lg">
<bounds x="66.5" y="97" width="6" height="6" />
</bezel>
<bezel element="nothing" inputtag="SWITCH" inputmask="0x01">
<bounds x="65.5" y="96" width="8" height="8" />
</bezel>
<bezel element="text_rg">
<bounds x="78" y="97" width="6" height="6" />
</bezel>
<bezel element="nothing" inputtag="SWITCH" inputmask="0x02">
<bounds x="77" y="96" width="8" height="8" />
</bezel>
<bezel element="text_skill">
<bounds x="112" y="93" width="30" height="4" />
</bezel>
<bezel element="nothing" inputtag="DUMMY" inputmask="0x01">
<bounds x="122.9" y="97.9" width="3.2" height="4.2" />
</bezel>
<bezel element="switch_skill" inputtag="IN.3" inputmask="0x0f" inputraw="1">
<bounds x="123" y="98" width="3" height="4" />
</bezel>
<bezel element="text_lb">
<bounds x="115.5" y="97" width="6" height="6" />
</bezel>
<bezel element="nothing" inputtag="SWITCH" inputmask="0x04">
<bounds x="114.5" y="96" width="8" height="8" />
</bezel>
<bezel element="text_rb">
<bounds x="127" y="97" width="6" height="6" />
</bezel>
<bezel element="nothing" inputtag="SWITCH" inputmask="0x08">
<bounds x="126" y="96" width="8" height="8" />
</bezel>
<!-- other controls -->

View File

@ -3,40 +3,131 @@
<!-- define elements -->
<element name="static_black"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="static_white"><rect><color red="0.77" green="0.77" blue="0.77" /></rect></element>
<element name="disk_black"><disk><color red="0" green="0" blue="0" /></disk></element>
<element name="disk_red"><disk><color red="0.2" green="0.02" blue="0.05" /></disk></element>
<element name="disk_red"><disk><color red="0.16" green="0.02" blue="0.05" /></disk></element>
<element name="led" defstate="0">
<disk state="0"><color red="0.2" green="0.04" blue="0.046" /></disk>
<disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
<disk state="0"><color red="0.15" green="0.02" blue="0.01" /></disk>
<disk state="1"><color red="1.0" green="0.15" blue="0.08" /></disk>
</element>
<element name="digit" defstate="0">
<led7seg><color red="1.0" green="0.15" blue="0.08" /></led7seg>
</element>
<element name="text_z1"><text string="Aries" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♈ "&#x2648;" -->
<element name="text_z2"><text string="Taurus" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♉ "&#x2649;" -->
<element name="text_z3"><text string="Gemini" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♊ "&#x264a;" -->
<element name="text_z4"><text string="Cancer" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♋ "&#x264b;" -->
<element name="text_z5"><text string="Leo" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♌ "&#x264c;" -->
<element name="text_z6"><text string="Virgo" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♍ "&#x264d;" -->
<element name="text_z7"><text string="Libra" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♎ "&#x264e;" -->
<element name="text_z8"><text string="Scorpio" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♏ "&#x264f;" -->
<element name="text_z9"><text string="Sagittarius" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♐ "&#x2650;" -->
<element name="text_z10"><text string="Capricorn" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♑ "&#x2651;" -->
<element name="text_z11"><text string="Aquarius" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♒ "&#x2652;" -->
<element name="text_z12"><text string="Pisces" align="1"><color red="0.7" green="0.7" blue="0.7" /></text></element> <!-- ♓ "&#x2653;" -->
<element name="hl" defstate="0">
<text string=" ">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.0" green="0.0" blue="0.0" />
</text>
<rect state="1">
<bounds x="0.0" y="0.0" width="1.0" height="1.0" />
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<element name="switch_mode" defstate="0">
<disk><color red="0.77" green="0.77" blue="0.77" /></disk>
<text state="0x01" string="H"><color red="0.07" green="0.07" blue="0.07" /></text>
<text state="0x02" string="P"><color red="0.07" green="0.07" blue="0.07" /></text>
<text state="0x00" string="A"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b1">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="1"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b2">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="2"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b3">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="3"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b4">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="4"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b5">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="5"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b6">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="6"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b7">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="7"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b8">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="8"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b9">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="9"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_b0">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="0"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_bent">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="ENT"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_bclr">
<rect><color red="0.77" green="0.77" blue="0.77" /></rect>
<text string="CLR"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_bp">
<disk><color red="0.77" green="0.77" blue="0.77" /></disk>
<text string="P"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_bl">
<disk><color red="0.77" green="0.77" blue="0.77" /></disk>
<text string="L"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_bj">
<disk><color red="0.77" green="0.77" blue="0.77" /></disk>
<text string="J"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_ba">
<disk><color red="0.77" green="0.77" blue="0.77" /></disk>
<text string="A"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_bd">
<disk><color red="0.77" green="0.77" blue="0.77" /></disk>
<text string="D"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_be">
<disk><color red="0.77" green="0.77" blue="0.77" /></disk>
<text string="E"><color red="0.07" green="0.07" blue="0.07" /></text>
</element>
<element name="text_z1"><text string="Aries" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♈ "&#x2648;" -->
<element name="text_z2"><text string="Taurus" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♉ "&#x2649;" -->
<element name="text_z3"><text string="Gemini" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♊ "&#x264a;" -->
<element name="text_z4"><text string="Cancer" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♋ "&#x264b;" -->
<element name="text_z5"><text string="Leo" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♌ "&#x264c;" -->
<element name="text_z6"><text string="Virgo" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♍ "&#x264d;" -->
<element name="text_z7"><text string="Libra" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♎ "&#x264e;" -->
<element name="text_z8"><text string="Scorpio" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♏ "&#x264f;" -->
<element name="text_z9"><text string="Sagittarius" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♐ "&#x2650;" -->
<element name="text_z10"><text string="Capricorn" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♑ "&#x2651;" -->
<element name="text_z11"><text string="Aquarius" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♒ "&#x2652;" -->
<element name="text_z12"><text string="Pisces" align="1"><color red="0.77" green="0.77" blue="0.77" /></text></element> <!-- ♓ "&#x2653;" -->
<element name="text_mode"><text string="Mode (H-P-A)"><color red="0.77" green="0.77" blue="0.77" /></text></element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="-35" right="158" top="5" bottom="198" />
<bezel element="static_black">
<bounds left="-35" right="158" top="5" bottom="198" />
</bezel>
<bezel element="disk_red"><bounds x="-40" y="0" width="203" height="203" /></bezel>
<bezel element="disk_black"><bounds x="-15" y="25" width="153" height="153" /></bezel>
@ -50,6 +141,8 @@
<bezel name="digit1" element="digit"><bounds x="80" y="70" width="10" height="15" /></bezel>
<bezel name="digit0" element="digit"><bounds x="90" y="70" width="10" height="15" /></bezel>
<!-- edgy leds -->
<bezel name="9.7" element="led"><bounds x="15" y="145" width="3" height="3" /></bezel>
<bezel name="9.2" element="led"><bounds x="40" y="160" width="3" height="3" /></bezel>
<bezel name="9.4" element="led"><bounds x="80" y="160" width="3" height="3" /></bezel>
@ -78,5 +171,52 @@
<bezel element="text_z11"><bounds x="4" y="79" width="20" height="4" /></bezel>
<bezel element="text_z12"><bounds x="4" y="119" width="20" height="4" /></bezel>
<!-- buttons -->
<bezel element="text_b1"><bounds x="46.5" y="93" width="7" height="7" /></bezel>
<bezel element="text_b4"><bounds x="46.5" y="103" width="7" height="7" /></bezel>
<bezel element="text_b7"><bounds x="46.5" y="113" width="7" height="7" /></bezel>
<bezel element="text_b0"><bounds x="46.5" y="123" width="7" height="7" /></bezel>
<bezel element="text_b2"><bounds x="56.5" y="93" width="7" height="7" /></bezel>
<bezel element="text_b5"><bounds x="56.5" y="103" width="7" height="7" /></bezel>
<bezel element="text_b8"><bounds x="56.5" y="113" width="7" height="7" /></bezel>
<bezel element="static_white"><bounds x="56.5" y="123" width="7" height="7" /></bezel>
<bezel element="text_bent"><bounds x="56.6" y="124.3" width="6.8" height="4.1" /></bezel>
<bezel element="text_b3"><bounds x="66.5" y="93" width="7" height="7" /></bezel>
<bezel element="text_b6"><bounds x="66.5" y="103" width="7" height="7" /></bezel>
<bezel element="text_b9"><bounds x="66.5" y="113" width="7" height="7" /></bezel>
<bezel element="static_white"><bounds x="66.5" y="123" width="7" height="7" /></bezel>
<bezel element="text_bclr"><bounds x="66.6" y="124.3" width="6.8" height="4.1" /></bezel>
<bezel element="text_bp"><bounds x="26.5" y="89.5" width="7" height="7" /></bezel>
<bezel element="text_bl"><bounds x="19.5" y="106.25" width="7" height="7" /></bezel>
<bezel element="text_bj"><bounds x="26.5" y="123" width="7" height="7" /></bezel>
<bezel element="text_ba"><bounds x="86.5" y="89.5" width="7" height="7" /></bezel>
<bezel element="text_bd"><bounds x="93.5" y="106.25" width="7" height="7" /></bezel>
<bezel element="text_be"><bounds x="86.5" y="123" width="7" height="7" /></bezel>
<bezel element="hl" inputtag="IN.0" inputmask="0x04"><bounds x="46.5" y="93" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.1" inputmask="0x08"><bounds x="46.5" y="103" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.1" inputmask="0x01"><bounds x="46.5" y="113" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.0" inputmask="0x08"><bounds x="46.5" y="123" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.0" inputmask="0x02"><bounds x="56.5" y="93" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.1" inputmask="0x04"><bounds x="56.5" y="103" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.2" inputmask="0x08"><bounds x="56.5" y="113" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.4" inputmask="0x01"><bounds x="56.5" y="123" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.0" inputmask="0x01"><bounds x="66.5" y="93" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.1" inputmask="0x02"><bounds x="66.5" y="103" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.2" inputmask="0x04"><bounds x="66.5" y="113" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.4" inputmask="0x08"><bounds x="66.5" y="123" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.3" inputmask="0x01"><bounds x="26.5" y="89.5" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.3" inputmask="0x02"><bounds x="19.5" y="106.25" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.3" inputmask="0x04"><bounds x="26.5" y="123" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.2" inputmask="0x02"><bounds x="86.5" y="89.5" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.2" inputmask="0x01"><bounds x="93.5" y="106.25" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="hl" inputtag="IN.3" inputmask="0x08"><bounds x="86.5" y="123" width="7" height="7" /><color alpha="0.2" /></bezel>
<bezel element="switch_mode" inputtag="IN.5" inputmask="0x03" inputraw="1"><bounds x="56.5" y="140" width="7" height="7" /></bezel>
<bezel element="text_mode"><bounds x="45" y="148" width="30" height="4" /></bezel>
</view>
</mamelayout>