mirror of
https://github.com/holub/mame
synced 2025-07-01 00:09:18 +03:00
leonardo: fix lockup and add buttonpanel leds (nw)
This commit is contained in:
parent
c09370d784
commit
6600710c7a
@ -462,7 +462,7 @@ void m6801_cpu_device::set_timer_event()
|
||||
void hd6301x_cpu_device::set_timer_event()
|
||||
{
|
||||
m6801_cpu_device::set_timer_event();
|
||||
if (OC2D - CTD < m_timer_next)
|
||||
if (OC2D - CTD < OCD - CTD && OC2D - CTD < TOD - CTD)
|
||||
m_timer_next = OC2D;
|
||||
}
|
||||
|
||||
|
@ -42,15 +42,8 @@ Expansion modules released:
|
||||
- Sparc (SPARClite, Spracklen's)
|
||||
|
||||
TODO:
|
||||
- It locks up a short time after you make an input error (eg. on computer's
|
||||
turn, enter the wrong move so it will give a low pitch error beep, then hold
|
||||
INS to fast-forward and it will lock up) - happens with leonardoa too, but
|
||||
after a longer delay. At first glance, it looks like it's caused by inaccurate
|
||||
6801 timer emulation. It also locks up when you get checkmated, seems to be
|
||||
the same problem as above.
|
||||
- OSA module support (softwarelist, devices/bus)
|
||||
- OSA PC link (probably uses MCU serial interface)
|
||||
- unsure about white/black/check/end/module/comm leds
|
||||
- add nvram
|
||||
- finish internal artwork
|
||||
|
||||
@ -134,13 +127,14 @@ void leo_state::machine_start()
|
||||
void leo_state::update_display()
|
||||
{
|
||||
m_display->matrix_partial(0, 8, 1 << (m_inp_mux & 0xf), m_led_data[0], false);
|
||||
m_display->matrix_partial(8, 3, ~m_inp_mux >> 5 & 7, (~m_inp_mux << 3 & 0x700) | m_led_data[1], true);
|
||||
m_display->matrix_partial(8, 2, 1 << BIT(m_inp_mux, 5), (~m_inp_mux << 2 & 0x300) | m_led_data[1], true);
|
||||
}
|
||||
|
||||
void leo_state::mux_w(u8 data)
|
||||
{
|
||||
// d0-d3: input/chessboard leds mux
|
||||
// d5-d7: button leds mux
|
||||
// d0-d3: input/chessboard led mux
|
||||
// d5: button led select
|
||||
// d6,d7: button led data
|
||||
m_inp_mux = data;
|
||||
update_display();
|
||||
|
||||
@ -150,7 +144,7 @@ void leo_state::mux_w(u8 data)
|
||||
|
||||
void leo_state::leds_w(u8 data)
|
||||
{
|
||||
// button leds data
|
||||
// button led data
|
||||
m_led_data[1] = ~data;
|
||||
update_display();
|
||||
}
|
||||
@ -253,17 +247,17 @@ static INPUT_PORTS_START( leo )
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) // pawn
|
||||
|
||||
PORT_START("IN.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) // n
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) // tab/color
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_9) // +
|
||||
|
||||
PORT_START("IN.3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) // freq
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_CUSTOM) // freq sel
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) // function?
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) // sound
|
||||
|
||||
PORT_START("IN.4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) // freq
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) // freq sel
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) // stop?
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) // library?
|
||||
|
||||
@ -278,14 +272,16 @@ static INPUT_PORTS_START( leo )
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) // analysis?
|
||||
|
||||
PORT_START("IN.7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_F) // n
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G) // new game
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) // setup?
|
||||
|
||||
PORT_START("IN.8")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_L) // low battery
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN)
|
||||
PORT_CONFNAME( 0x04, 0x04, "Battery Status" )
|
||||
PORT_CONFSETTING( 0x00, "Low" )
|
||||
PORT_CONFSETTING( 0x04, DEF_STR( Normal ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -311,7 +307,7 @@ void leo_state::leo(machine_config &config)
|
||||
m_board->set_delay(attotime::from_msec(150));
|
||||
|
||||
/* video hardware */
|
||||
PWM_DISPLAY(config, m_display).set_size(8+3, 8+3);
|
||||
PWM_DISPLAY(config, m_display).set_size(8+2, 8+2);
|
||||
config.set_default_layout(layout_saitek_leonardo);
|
||||
|
||||
/* sound hardware */
|
||||
|
@ -67,7 +67,7 @@ private:
|
||||
void update_display();
|
||||
template<int N> void seg_w(u8 data);
|
||||
void mux_w(u16 data);
|
||||
u16 input_r(offs_t offset);
|
||||
u16 input_r();
|
||||
|
||||
u8 m_inp_mux = 0;
|
||||
u8 m_lcd_select = 0;
|
||||
@ -124,7 +124,7 @@ void mini_state::mux_w(u16 data)
|
||||
update_display();
|
||||
}
|
||||
|
||||
u16 mini_state::input_r(offs_t offset)
|
||||
u16 mini_state::input_r()
|
||||
{
|
||||
// D0,D2: switches
|
||||
u16 data = m_inputs[4]->read() & 5;
|
||||
|
@ -643,6 +643,10 @@ license:CC0
|
||||
<bezel element="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></bezel>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Brikett)">
|
||||
<group ref="brikett"><bounds x="0" y="0" width="58.5" height="32" /></group>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Board)">
|
||||
<bounds left="-13" right="88" top="-1.5" bottom="87.5" />
|
||||
|
||||
@ -671,7 +675,4 @@ license:CC0
|
||||
<bezel element="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></bezel>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Brikett)">
|
||||
<group ref="brikett"><bounds x="0" y="0" width="58.5" height="32" /></group>
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
@ -640,6 +640,10 @@ license:CC0
|
||||
<bezel element="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></bezel>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Brikett)">
|
||||
<group ref="brikett"><bounds x="0" y="0" width="58.5" height="32" /></group>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Board)">
|
||||
<bounds left="-13" right="88" top="-1.5" bottom="87.5" />
|
||||
|
||||
@ -668,7 +672,4 @@ license:CC0
|
||||
<bezel element="text_h"><bounds x="77.5" y="84.5" width="2" height="2" /></bezel>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Brikett)">
|
||||
<group ref="brikett"><bounds x="0" y="0" width="58.5" height="32" /></group>
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
@ -9,8 +9,20 @@ license:CC0
|
||||
<element name="black"><rect><color red="0.17" green="0.15" blue="0.15" /></rect></element>
|
||||
|
||||
<element name="led" defstate="0">
|
||||
<disk state="0"><color red="0.2" green="0" blue="0" /></disk>
|
||||
<disk state="1"><color red="1" green="0" blue="0" /></disk>
|
||||
<rect state="0"><color red="0.15" green="0" blue="0" /></rect>
|
||||
<rect state="1"><color red="1" green="0" blue="0" /></rect>
|
||||
</element>
|
||||
|
||||
<element name="ledro">
|
||||
<rect><color red="0.1" green="0.1" blue="0.1" /></rect>
|
||||
</element>
|
||||
<element name="ledrr" defstate="0">
|
||||
<rect state="0"><color red="0" green="0" blue="0" /></rect>
|
||||
<rect state="1"><color red="1" green="0" blue="0" /></rect>
|
||||
</element>
|
||||
<element name="ledrg" defstate="0">
|
||||
<rect state="0"><color red="0" green="0" blue="0" /></rect>
|
||||
<rect state="1"><color red="0" green="1" blue="0" /></rect>
|
||||
</element>
|
||||
|
||||
<element name="ledo">
|
||||
@ -374,7 +386,7 @@ license:CC0
|
||||
<!-- build screen -->
|
||||
|
||||
<view name="Internal Layout">
|
||||
<bounds left="-13" right="88" top="-1.5" bottom="95.5" />
|
||||
<bounds left="-13" right="88" top="-1.5" bottom="99" />
|
||||
|
||||
<element ref="cblack"><bounds x="-1" y="-1.5" width="89" height="89" /></element>
|
||||
<element ref="black"><bounds x="3" y="2.5" width="81" height="81" /></element>
|
||||
@ -456,42 +468,39 @@ license:CC0
|
||||
<element name="6.1" ref="ledr" blend="add"><bounds x="67.75" y="84.75" width="1.5" height="1.5" /></element>
|
||||
<element name="7.1" ref="ledr" blend="add"><bounds x="77.75" y="84.75" width="1.5" height="1.5" /></element>
|
||||
|
||||
<!-- button panel -->
|
||||
<element ref="ledro"><bounds x="0" y="90" width="2" height="1" /></element>
|
||||
<element ref="ledro"><bounds x="0" y="93" width="2" height="1" /></element>
|
||||
<element ref="ledro"><bounds x="0" y="96" width="2" height="1" /></element>
|
||||
|
||||
<element name="8.0" ref="led" blend="add"><bounds x="0.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.1" ref="led" blend="add"><bounds x="2.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.2" ref="led" blend="add"><bounds x="4.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.3" ref="led" blend="add"><bounds x="6.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.4" ref="led" blend="add"><bounds x="8.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.5" ref="led" blend="add"><bounds x="10.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.6" ref="led" blend="add"><bounds x="12.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.7" ref="led" blend="add"><bounds x="14.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.8" ref="led" blend="add"><bounds x="16.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.9" ref="led" blend="add"><bounds x="18.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.10" ref="led" blend="add"><bounds x="20.25" y="89" width="1.5" height="1.5" /></element>
|
||||
<element name="8.3" ref="ledrr" blend="add"><bounds x="0" y="90" width="2" height="1" /></element>
|
||||
<element name="8.5" ref="ledrr" blend="add"><bounds x="0" y="93" width="2" height="1" /></element>
|
||||
<element name="8.4" ref="ledrr" blend="add"><bounds x="0" y="96" width="2" height="1" /></element>
|
||||
<element name="9.3" ref="ledrg" blend="add"><bounds x="0" y="90" width="2" height="1" /></element>
|
||||
<element name="9.5" ref="ledrg" blend="add"><bounds x="0" y="93" width="2" height="1" /></element>
|
||||
<element name="9.4" ref="ledrg" blend="add"><bounds x="0" y="96" width="2" height="1" /></element>
|
||||
|
||||
<element name="9.0" ref="led" blend="add"><bounds x="0.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.1" ref="led" blend="add"><bounds x="2.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.2" ref="led" blend="add"><bounds x="4.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.3" ref="led" blend="add"><bounds x="6.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.4" ref="led" blend="add"><bounds x="8.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.5" ref="led" blend="add"><bounds x="10.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.6" ref="led" blend="add"><bounds x="12.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.7" ref="led" blend="add"><bounds x="14.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.8" ref="led" blend="add"><bounds x="16.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.9" ref="led" blend="add"><bounds x="18.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element name="9.10" ref="led" blend="add"><bounds x="20.25" y="91" width="1.5" height="1.5" /></element>
|
||||
<element ref="ledro"><bounds x="10" y="90" width="2" height="1" /></element>
|
||||
<element ref="ledro"><bounds x="10" y="93" width="2" height="1" /></element>
|
||||
<element ref="ledro"><bounds x="10" y="96" width="2" height="1" /></element>
|
||||
|
||||
<element name="10.0" ref="led" blend="add"><bounds x="0.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.1" ref="led" blend="add"><bounds x="2.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.2" ref="led" blend="add"><bounds x="4.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.3" ref="led" blend="add"><bounds x="6.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.4" ref="led" blend="add"><bounds x="8.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.5" ref="led" blend="add"><bounds x="10.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.6" ref="led" blend="add"><bounds x="12.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.7" ref="led" blend="add"><bounds x="14.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.8" ref="led" blend="add"><bounds x="16.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.9" ref="led" blend="add"><bounds x="18.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="10.10" ref="led" blend="add"><bounds x="20.25" y="93" width="1.5" height="1.5" /></element>
|
||||
<element name="8.6" ref="ledrr" blend="add"><bounds x="10" y="90" width="2" height="1" /></element>
|
||||
<element name="8.2" ref="ledrr" blend="add"><bounds x="10" y="93" width="2" height="1" /></element>
|
||||
<element name="8.0" ref="ledrr" blend="add"><bounds x="10" y="96" width="2" height="1" /></element>
|
||||
<element name="9.6" ref="ledrg" blend="add"><bounds x="10" y="90" width="2" height="1" /></element>
|
||||
<element name="9.2" ref="ledrg" blend="add"><bounds x="10" y="93" width="2" height="1" /></element>
|
||||
<element name="9.0" ref="ledrg" blend="add"><bounds x="10" y="96" width="2" height="1" /></element>
|
||||
|
||||
<element name="9.9" ref="led"><bounds x="20" y="90" width="2" height="1" /></element>
|
||||
<element name="8.9" ref="led"><bounds x="24" y="90" width="2" height="1" /></element>
|
||||
<element name="9.8" ref="led"><bounds x="20" y="93" width="2" height="1" /></element>
|
||||
<element name="8.8" ref="led"><bounds x="24" y="93" width="2" height="1" /></element>
|
||||
<element name="9.1" ref="led"><bounds x="20" y="96" width="2" height="1" /></element>
|
||||
<element name="8.1" ref="led"><bounds x="24" y="96" width="2" height="1" /></element>
|
||||
|
||||
<element ref="ledro"><bounds x="40" y="90" width="2" height="1" /></element>
|
||||
<element name="8.7" ref="ledrr" blend="add"><bounds x="40" y="90" width="2" height="1" /></element>
|
||||
<element name="9.7" ref="ledrg" blend="add"><bounds x="40" y="90" width="2" height="1" /></element>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
@ -781,6 +781,21 @@ license:CC0
|
||||
<group ref="displayc"><bounds x="136.5" y="17.6" width="35" height="40.03" /></group>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Main Unit)">
|
||||
<bounds left="99" right="171.5" top="17.5" bottom="88" />
|
||||
|
||||
<element ref="black"><bounds x="100" y="19" width="35" height="40.75" /></element>
|
||||
<element ref="blackb"><bounds x="99.5" y="19.5" width="35" height="50" /></element>
|
||||
|
||||
<group ref="buttons"><bounds x="100" y="20" width="59" height="69" /></group>
|
||||
<group ref="displayc"><bounds x="136.5" y="17.6" width="35" height="40.03" /></group>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Screen)">
|
||||
<group ref="display"><bounds x="20" y="20" width="100" height="114.65" /></group>
|
||||
<element ref="white"><bounds x="20" y="124.5" width="100" height="2" /></element>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Board)">
|
||||
<bounds left="21.5" right="100.5" top="18.5" bottom="88" />
|
||||
|
||||
@ -799,19 +814,4 @@ license:CC0
|
||||
</repeat>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Main Unit)">
|
||||
<bounds left="99" right="171.5" top="17.5" bottom="88" />
|
||||
|
||||
<element ref="black"><bounds x="100" y="19" width="35" height="40.75" /></element>
|
||||
<element ref="blackb"><bounds x="99.5" y="19.5" width="35" height="50" /></element>
|
||||
|
||||
<group ref="buttons"><bounds x="100" y="20" width="59" height="69" /></group>
|
||||
<group ref="displayc"><bounds x="136.5" y="17.6" width="35" height="40.03" /></group>
|
||||
</view>
|
||||
|
||||
<view name="Internal Layout (Screen)">
|
||||
<group ref="display"><bounds x="20" y="20" width="100" height="114.65" /></group>
|
||||
<element ref="white"><bounds x="20" y="124.5" width="100" height="2" /></element>
|
||||
</view>
|
||||
|
||||
</mamelayout>
|
||||
|
Loading…
Reference in New Issue
Block a user