chess* misc cleanup (nw)

This commit is contained in:
hap 2020-05-07 17:02:21 +02:00
parent 838d82d5db
commit c570c55e2a
8 changed files with 197 additions and 193 deletions

View File

@ -160,7 +160,7 @@ void dominator_state::main_map(address_map &map)
map(0x0000, 0x1fff).ram().share("nvram");
map(0x4000, 0x400f).rw(FUNC(dominator_state::input_r), FUNC(dominator_state::leds_w));
map(0x4010, 0x4010).w(FUNC(dominator_state::control_w));
//map(0x7f00, 0x7fff).nopr(); // mid-opcode dummy read
map(0x7f00, 0x7fff).nopr(); // dummy read on 6502 absolute X page wrap
map(0x8000, 0xffff).rom();
}

View File

@ -96,12 +96,13 @@ protected:
template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
// I/O handlers
void update_lcd();
virtual DECLARE_WRITE8_MEMBER(control_w);
virtual DECLARE_WRITE8_MEMBER(lcd_w);
virtual DECLARE_READ8_MEMBER(input_r);
u8 m_select;
u32 m_lcd_data;
u8 m_select = 0;
u32 m_lcd_data = 0;
};
void desdis_state::init_fdes2100d()
@ -111,10 +112,6 @@ void desdis_state::init_fdes2100d()
void desdis_state::machine_start()
{
// zerofill
m_select = 0;
m_lcd_data = 0;
// register for savestates
save_item(NAME(m_select));
save_item(NAME(m_lcd_data));
@ -140,9 +137,8 @@ private:
void fdes2265_map(address_map &map);
void fdes2325_map(address_map &map);
// I/O handlers, slightly different (control_w is d0 instead of d7, lcd_w is inverted)
// I/O handlers, slightly different (control_w is d0 instead of d7)
virtual DECLARE_WRITE8_MEMBER(control_w) override { desdis_state::control_w(space, offset, data << 7); }
virtual DECLARE_WRITE8_MEMBER(lcd_w) override { desdis_state::lcd_w(space, offset, ~data); }
};
void desmas_state::init_fdes2265()
@ -169,10 +165,17 @@ void desmas_state::init_fdes2265()
// TTL/generic
void desdis_state::update_lcd()
{
u8 mask = (m_select & 8) ? 0 : 0xff;
for (int i = 0; i < 4; i++)
m_display->write_row(i+2, (m_lcd_data >> (8*i) & 0xff) ^ mask);
m_display->update();
}
WRITE8_MEMBER(desdis_state::control_w)
{
u8 q3_old = m_select & 8;
// a0-a2,d7: 74259
u8 mask = 1 << offset;
m_select = (m_select & ~mask) | ((data & 0x80) ? mask : 0);
@ -192,13 +195,8 @@ WRITE8_MEMBER(desdis_state::control_w)
if (m_rombank != nullptr)
m_rombank->set_entry(~m_select >> 2 & 1);
// 74259 Q3: lcd common, update on rising edge
if (~q3_old & m_select & 8)
{
for (int i = 0; i < 4; i++)
m_display->write_row(i+2, m_lcd_data >> (8*i) & 0xff);
}
m_display->update();
// 74259 Q3: lcd polarity
update_lcd();
}
WRITE8_MEMBER(desdis_state::lcd_w)
@ -210,6 +208,8 @@ WRITE8_MEMBER(desdis_state::lcd_w)
m_lcd_data = (m_lcd_data & ~mask) | ((data >> i & 1) ? 0 : mask);
mask <<= 8;
}
update_lcd();
}
READ8_MEMBER(desdis_state::input_r)

View File

@ -76,12 +76,10 @@ private:
void main_map(address_map &map);
TIMER_DEVICE_CALLBACK_MEMBER(motors_timer);
DECLARE_WRITE8_MEMBER(mux_w);
void update_lcd();
DECLARE_WRITE8_MEMBER(control_w);
DECLARE_WRITE8_MEMBER(lcd_w);
DECLARE_WRITE8_MEMBER(lcd_mask_w);
DECLARE_WRITE8_MEMBER(motors_w);
DECLARE_WRITE8_MEMBER(led_w);
DECLARE_WRITE8_MEMBER(rombank_w);
DECLARE_READ8_MEMBER(input_r);
DECLARE_READ8_MEMBER(motors_r);
DECLARE_READ8_MEMBER(irq_ack_r);
@ -89,8 +87,7 @@ private:
DECLARE_READ8_MEMBER(vmotor_ff_clear_r);
void update_pieces_position(int state);
uint8_t m_mux;
uint8_t m_lcd_mask;
uint8_t m_select;
uint32_t m_lcd_data;
uint8_t m_motors_ctrl;
uint8_t m_hmotor_pos;
@ -108,8 +105,7 @@ void phantom_state::machine_start()
{
m_out_motor.resolve();
save_item(NAME(m_mux));
save_item(NAME(m_lcd_mask));
save_item(NAME(m_select));
save_item(NAME(m_lcd_data));
save_item(NAME(m_motors_ctrl));
save_item(NAME(m_hmotor_pos));
@ -125,8 +121,7 @@ void phantom_state::machine_start()
void phantom_state::machine_reset()
{
m_mux = 0;
m_lcd_mask = 0;
m_select = 0;
m_lcd_data = 0;
m_motors_ctrl = 0;
m_hmotor_pos = 0xff;
@ -148,6 +143,10 @@ void phantom_state::init_fphantom()
}
/******************************************************************************
Motor Sim
******************************************************************************/
TIMER_DEVICE_CALLBACK_MEMBER(phantom_state::motors_timer)
{
if (m_motors_ctrl & 0x03) m_vmotor_sensor0_ff = true;
@ -212,25 +211,31 @@ void phantom_state::update_pieces_position(int state)
I/O
******************************************************************************/
WRITE8_MEMBER(phantom_state::mux_w)
void phantom_state::update_lcd()
{
u8 mask = (m_select & 0x80) ? 0xff : 0;
for (int i = 0; i < 4; i++)
m_display->write_row(i+2, (m_lcd_data >> (8*i) & 0xff) ^ mask);
m_display->update();
}
WRITE8_MEMBER(phantom_state::control_w)
{
// a0-a2,d1: 74259
uint8_t mask = 1 << offset;
m_mux = (m_mux & ~mask) | ((data & 0x02) ? mask : 0);
}
m_select = (m_select & ~mask) | ((data & 0x02) ? mask : 0);
WRITE8_MEMBER(phantom_state::lcd_mask_w)
{
m_lcd_mask = (data & 0x02) ? 0x00 : 0xff;
}
// 74259 Q0-Q3: 7442 a0-a3
// 7442 0-8: led data, input mux
// 74259 Q4: led select
m_display->matrix_partial(0, 1, BIT(~m_select, 4), 1 << (m_select & 0xf), false);
WRITE8_MEMBER(phantom_state::led_w)
{
m_display->matrix_partial(0, 2, 1, BIT(~data, 7) << m_mux);
}
// 74259 Q6: bookrom bank
m_rombank->set_entry(BIT(m_select, 6));
WRITE8_MEMBER(phantom_state::rombank_w)
{
m_rombank->set_entry(data & 1);
// 74259 Q7: lcd polarity
update_lcd();
}
WRITE8_MEMBER(phantom_state::motors_w)
@ -254,38 +259,36 @@ WRITE8_MEMBER(phantom_state::motors_w)
WRITE8_MEMBER(phantom_state::lcd_w)
{
data ^= m_lcd_mask;
// a0-a2,d0,d2,d4,d6: 4*74259 to lcd digit segments
u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5);
for (int i = 0; i < 4; i++)
{
m_lcd_data = (m_lcd_data & ~mask) | (BIT(data, i * 2) ? mask : 0);
mask <<= 8;
m_display->write_row(i+2, m_lcd_data >> (8*i) & 0xff);
}
m_display->update();
update_lcd();
}
READ8_MEMBER(phantom_state::input_r)
{
uint8_t mux = m_select & 0xf;
uint8_t data = 0xff;
if (m_mux == 8)
if (mux == 8)
{
if (BIT(m_input->read(), offset * 2 + 1)) data &= ~0x40;
if (BIT(m_input->read(), offset * 2 + 0)) data &= ~0x80;
}
else if (offset < 4)
{
if (BIT(m_board->read_file(offset * 2 + 1), m_mux)) data &= ~0x40;
if (BIT(m_board->read_file(offset * 2 + 0), m_mux)) data &= ~0x80;
if (BIT(m_board->read_file(offset * 2 + 1), mux)) data &= ~0x40;
if (BIT(m_board->read_file(offset * 2 + 0), mux)) data &= ~0x80;
}
else
{
if (BIT(m_board->read_file( 8 + (offset & 1)), m_mux)) data &= ~0x40; // black captured pieces
if (BIT(m_board->read_file(11 - (offset & 1)), m_mux)) data &= ~0x80; // white captured pieces
if (BIT(m_board->read_file( 8 + (offset & 1)), mux)) data &= ~0x40; // black captured pieces
if (BIT(m_board->read_file(11 - (offset & 1)), mux)) data &= ~0x80; // white captured pieces
}
return data;
@ -341,10 +344,7 @@ READ8_MEMBER(phantom_state::vmotor_ff_clear_r)
void phantom_state::main_map(address_map &map)
{
map(0x0000, 0x1fff).ram();
map(0x2000, 0x2003).w(FUNC(phantom_state::mux_w));
map(0x2004, 0x2004).w(FUNC(phantom_state::led_w));
map(0x2006, 0x2006).w(FUNC(phantom_state::rombank_w));
map(0x20ff, 0x20ff).w(FUNC(phantom_state::lcd_mask_w));
map(0x2000, 0x2007).mirror(0x00f8).w(FUNC(phantom_state::control_w));
map(0x2100, 0x2107).w(FUNC(phantom_state::lcd_w)).nopr();
map(0x2200, 0x2200).w(FUNC(phantom_state::motors_w));
map(0x2400, 0x2405).r(FUNC(phantom_state::input_r));
@ -399,8 +399,8 @@ void phantom_state::fphantom(machine_config &config)
TIMER(config, "motors_timer").configure_periodic(FUNC(phantom_state::motors_timer), attotime::from_hz(120));
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(2+4, 9);
m_display->set_segmask(0x3c, 0x7f);
PWM_DISPLAY(config, m_display).set_size(1+4, 9);
m_display->set_segmask(0x1e, 0x7f);
config.set_default_layout(layout_fidel_phantom);

View File

@ -13,10 +13,11 @@ Hold Pawn + Knight buttons at boot for test mode.
#include "cpu/m6502/m65c02.h"
#include "machine/nvram.h"
#include "machine/mmboard.h"
#include "machine/sensorboard.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "video/pwm.h"
#include "speaker.h"
@ -30,25 +31,24 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_board(*this, "board")
, m_display(*this, "display")
, m_dac(*this, "dac")
, m_keys(*this, "KEY")
, m_digits(*this, "digit%u", 0U)
, m_leds(*this, "led%u.%u", 0U, 0U)
{ }
void modena(machine_config &config);
protected:
virtual void machine_reset() override;
virtual void machine_start() override;
private:
required_device<cpu_device> m_maincpu;
required_device<mephisto_board_device> m_board;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<dac_bit_interface> m_dac;
required_ioport m_keys;
output_finder<4> m_digits;
output_finder<3, 8> m_leds;
void modena_mem(address_map &map);
@ -56,10 +56,12 @@ private:
DECLARE_WRITE8_MEMBER(digits_w);
DECLARE_WRITE8_MEMBER(io_w);
DECLARE_WRITE8_MEMBER(led_w);
void update_display();
TIMER_DEVICE_CALLBACK_MEMBER(nmi_on) { m_maincpu->set_input_line(M6502_NMI_LINE, ASSERT_LINE); }
TIMER_DEVICE_CALLBACK_MEMBER(nmi_off) { m_maincpu->set_input_line(M6502_NMI_LINE, CLEAR_LINE); }
uint8_t m_board_mux = 0xff;
uint8_t m_digits_idx = 0;
uint8_t m_io_ctrl = 0;
};
@ -67,49 +69,53 @@ private:
void mephisto_modena_state::machine_start()
{
m_digits.resolve();
m_leds.resolve();
save_item(NAME(m_digits_idx));
save_item(NAME(m_io_ctrl));
}
void mephisto_modena_state::machine_reset()
{
m_digits_idx = 0;
m_io_ctrl = 0;
}
/******************************************************************************
I/O
******************************************************************************/
void mephisto_modena_state::update_display()
{
m_display->matrix(m_io_ctrl >> 1 & 7, ~m_board_mux);
}
READ8_MEMBER(mephisto_modena_state::input_r)
{
if (m_board->mux_r() == 0xff)
return m_keys->read();
else
return m_board->input_r() ^ 0xff;
uint8_t data = 0;
// read buttons
if (~m_io_ctrl & 1)
data |= m_keys->read();
// read chessboard sensors
for (int i=0; i<8; i++)
if (!BIT(m_board_mux, i))
data |= m_board->read_rank(i);
return data;
}
WRITE8_MEMBER(mephisto_modena_state::led_w)
{
m_board->mux_w(data);
for (int sel = 0; sel < 3; sel++)
{
if (BIT(m_io_ctrl, sel+1))
{
for (int i = 0; i < 8; i++)
m_leds[sel][i] = BIT(data, i) ? 0 : 1;
}
}
// d0-d7: chessboard mux, led data
m_board_mux = data;
update_display();
}
WRITE8_MEMBER(mephisto_modena_state::io_w)
{
// d0: button select
// d1-d3: led select
// d4: lcd polarity
// d6: speaker out
m_io_ctrl = data;
update_display();
m_dac->write(BIT(data, 6));
}
@ -131,7 +137,8 @@ void mephisto_modena_state::modena_mem(address_map &map)
map(0x4000, 0x4000).w(FUNC(mephisto_modena_state::digits_w));
map(0x5000, 0x5000).w(FUNC(mephisto_modena_state::led_w));
map(0x6000, 0x6000).w(FUNC(mephisto_modena_state::io_w));
map(0x7000, 0x7fff).r(FUNC(mephisto_modena_state::input_r));
map(0x7000, 0x7000).r(FUNC(mephisto_modena_state::input_r));
map(0x7f00, 0x7fff).nopr(); // dummy read on 6502 absolute X page wrap
map(0x8000, 0xffff).rom().region("maincpu", 0);
}
@ -161,6 +168,7 @@ INPUT_PORTS_END
void mephisto_modena_state::modena(machine_config &config)
{
/* basic machine hardware */
M65C02(config, m_maincpu, XTAL(4'194'304)); // W65C02SP or RP65C02G
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_modena_state::modena_mem);
timer_device &nmi_on(TIMER(config, "nmi_on"));
@ -170,8 +178,12 @@ void mephisto_modena_state::modena(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
MEPHISTO_BUTTONS_BOARD(config, m_board);
m_board->set_disable_leds(true);
SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS);
m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess));
m_board->set_delay(attotime::from_msec(150));
/* video hardware */
PWM_DISPLAY(config, m_display).set_size(3, 8);
config.set_default_layout(layout_mephisto_modena);
/* sound hardware */

View File

@ -15,13 +15,15 @@ Hardware:
***************************************************************************/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/74259.h"
#include "machine/sensorboard.h"
#include "machine/timer.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "video/pcf2100.h"
#include "video/pwm.h"
#include "speaker.h"
// internal artwork
@ -36,17 +38,16 @@ public:
, m_maincpu(*this, "maincpu")
, m_dac(*this, "dac")
, m_board(*this, "board")
, m_display(*this, "display")
, m_lcd(*this, "lcd")
, m_inputs(*this, "IN.%u", 0)
, m_digits(*this, "digit%u", 0U)
, m_leds(*this, "led%u", 0U)
{ }
void mondial68k(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
void mondial68k_mem(address_map &map);
@ -54,46 +55,38 @@ protected:
DECLARE_WRITE8_MEMBER(input_mux_w);
DECLARE_WRITE8_MEMBER(board_mux_w);
DECLARE_READ8_MEMBER(inputs_r);
TIMER_DEVICE_CALLBACK_MEMBER(refresh_leds);
void update_display();
required_device<cpu_device> m_maincpu;
required_device<dac_1bit_device> m_dac;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_device<pcf2112_device> m_lcd;
required_ioport_array<4> m_inputs;
output_finder<4> m_digits;
output_finder<16> m_leds;
uint8_t m_input_mux;
uint8_t m_board_mux;
uint8_t m_input_mux = 0xff;
uint8_t m_board_mux = 0xff;
};
void mondial68k_state::machine_start()
{
m_digits.resolve();
m_leds.resolve();
save_item(NAME(m_input_mux));
save_item(NAME(m_board_mux));
}
void mondial68k_state::machine_reset()
{
m_input_mux = 0;
m_board_mux = 0;
}
/******************************************************************************
I/O
******************************************************************************/
TIMER_DEVICE_CALLBACK_MEMBER(mondial68k_state::refresh_leds)
void mondial68k_state::update_display()
{
for (int i=0; i<16; i++)
m_leds[0 + i] = 0;
m_display->matrix(m_input_mux >> 6, ~m_board_mux);
}
WRITE32_MEMBER(mondial68k_state::lcd_s_w)
@ -105,30 +98,29 @@ WRITE32_MEMBER(mondial68k_state::lcd_s_w)
WRITE8_MEMBER(mondial68k_state::board_mux_w)
{
// d0-d7: chessboard mux, led data
m_board_mux = data;
update_display();
}
WRITE8_MEMBER(mondial68k_state::input_mux_w)
{
// d0-d3: button mux
// d6,d7: led select
m_input_mux = data;
for (int i=0; i<8; i++)
{
if (!BIT(m_board_mux, i))
{
if (BIT(m_input_mux, 7)) m_leds[0 + i] = 1;
if (BIT(m_input_mux, 6)) m_leds[8 + i] = 1;
}
}
update_display();
}
READ8_MEMBER(mondial68k_state::inputs_r)
{
if (!(m_input_mux & 0x01)) return m_inputs[0]->read();
else if (!(m_input_mux & 0x02)) return m_inputs[1]->read();
else if (!(m_input_mux & 0x04)) return m_inputs[2]->read();
else if (!(m_input_mux & 0x08)) return m_inputs[3]->read();
uint8_t data = 0x00;
// read buttons
for (int i=0; i<4; i++)
if (!BIT(m_input_mux, i))
data |= m_inputs[i]->read();
// read chessboard sensors
for (int i=0; i<8; i++)
if (!BIT(m_board_mux, i))
data |= m_board->read_rank(i);
@ -211,14 +203,14 @@ void mondial68k_state::mondial68k(machine_config &config)
/* video hardware */
PCF2112(config, m_lcd, 50); // frequency guessed
m_lcd->write_segs().set(FUNC(mondial68k_state::lcd_s_w));
PWM_DISPLAY(config, m_display).set_size(2, 8);
config.set_default_layout(layout_mephisto_mondial68k);
/* sound hardware */
SPEAKER(config, "speaker").front_center();
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
TIMER(config, "refresh_leds").configure_periodic(FUNC(mondial68k_state::refresh_leds), attotime::from_hz(10));
}

View File

@ -641,17 +641,17 @@ license:CC0
<element ref="black"><bounds x="3.725" y="5.225" width="19.8" height="7.05" /></element>
<element ref="lcd_bg"><bounds x="4.625" y="6.125" width="18" height="5.25" /></element>
<element name="digit2" ref="digit"><bounds x="5.375" y="6.5" width="3" height="4.5" /></element>
<element name="digit3" ref="digit"><bounds x="9.875" y="6.5" width="3" height="4.5" /></element>
<element name="digit4" ref="digit"><bounds x="14.375" y="6.5" width="3" height="4.5" /></element>
<element name="digit5" ref="digit"><bounds x="18.875" y="6.5" width="3" height="4.5" /></element>
<element name="digit1" ref="digit"><bounds x="5.375" y="6.5" width="3" height="4.5" /></element>
<element name="digit2" ref="digit"><bounds x="9.875" y="6.5" width="3" height="4.5" /></element>
<element name="digit3" ref="digit"><bounds x="14.375" y="6.5" width="3" height="4.5" /></element>
<element name="digit4" ref="digit"><bounds x="18.875" y="6.5" width="3" height="4.5" /></element>
<element name="2.7" ref="ldot"><bounds x="8.75" y="10.625" width="0.45" height="0.45" /></element>
<element name="3.7" ref="ldot"><bounds x="13.25" y="10.625" width="0.45" height="0.45" /></element>
<element name="4.7" ref="ldot"><bounds x="17.75" y="10.625" width="0.45" height="0.45" /></element>
<element name="1.7" ref="ldot"><bounds x="8.75" y="10.625" width="0.45" height="0.45" /></element>
<element name="2.7" ref="ldot"><bounds x="13.25" y="10.625" width="0.45" height="0.45" /></element>
<element name="3.7" ref="ldot"><bounds x="17.75" y="10.625" width="0.45" height="0.45" /></element>
<element name="5.7" ref="ldot"><bounds x="13.5575" y="7.85" width="0.45" height="0.45" /></element>
<element name="5.7" ref="ldot"><bounds x="13.3925" y="9.2375" width="0.45" height="0.45" /></element>
<element name="4.7" ref="ldot"><bounds x="13.5575" y="7.85" width="0.45" height="0.45" /></element>
<element name="4.7" ref="ldot"><bounds x="13.3925" y="9.2375" width="0.45" height="0.45" /></element>
</group>
<!-- motor status -->

View File

@ -199,14 +199,14 @@ license:CC0
<param name="y" start="0" increment="10" />
<param name="i" start="8" increment="-1" />
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x01"><bounds x="0" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x02"><bounds x="10" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x04"><bounds x="20" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x08"><bounds x="30" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x10"><bounds x="40" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x20"><bounds x="50" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x40"><bounds x="60" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel element="hlbb" inputtag="board:RANK.~i~" inputmask="0x80"><bounds x="70" y="~y~" width="10" height="10" /><color alpha="0.04" /></bezel>
<bezel name="piece_a~i~" element="piece"><bounds x="0" y="~y~" width="10" height="10" /></bezel>
<bezel name="piece_b~i~" element="piece"><bounds x="10" y="~y~" width="10" height="10" /></bezel>
@ -288,8 +288,8 @@ license:CC0
<bezel element="text_uib2"><bounds x="1.5" y="11.75" width="7" height="2" /></bezel>
<bezel element="text_uib3"><bounds x="1.5" y="15.25" width="7" height="2" /></bezel>
<bezel element="hlub" inputtag="board:board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x200"><bounds x="1" y="11.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x100"><bounds x="1" y="15" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<!-- spawn -->
<bezel element="text_uis1"><bounds x="0" y="20.5" width="10" height="2" /></bezel>
@ -309,18 +309,18 @@ license:CC0
<bezel name="piece_ui11" element="piece"><bounds x="5" y="40" width="4" height="4" /></bezel>
<bezel name="piece_ui12" element="piece"><bounds x="5" y="44" width="4" height="4" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0001"><bounds x="1" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0002"><bounds x="1" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0004"><bounds x="1" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0008"><bounds x="5" y="23" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0010"><bounds x="5" y="27" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0020"><bounds x="5" y="31" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0040"><bounds x="1" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0080"><bounds x="1" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0100"><bounds x="1" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0200"><bounds x="5" y="36" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0400"><bounds x="5" y="40" width="4" height="4" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:SPAWN" inputmask="0x0800"><bounds x="5" y="44" width="4" height="4" /><color alpha="0.25" /></bezel>
<!-- hand -->
<bezel element="text_uih1"><bounds x="0" y="51" width="10" height="2" /></bezel>
@ -329,7 +329,7 @@ license:CC0
<bezel element="cwhite"><bounds x="1" y="60.5" width="8" height="2.5" /></bezel>
<bezel element="text_uih2"><bounds x="1.5" y="60.75" width="7" height="2" /></bezel>
<bezel element="hlub" inputtag="board:board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x08"><bounds x="1" y="60.5" width="8" height="2.5" /><color alpha="0.25" /></bezel>
<!-- undo -->
<bezel element="text_uiu1"><bounds x="0" y="66" width="10" height="2" /></bezel>
@ -342,10 +342,10 @@ license:CC0
<bezel element="text_uiu2c"><bounds x="5.2" y="69.5" width="1.7" height="4" /></bezel>
<bezel element="text_uiu2d"><bounds x="7.3" y="69.5" width="1.7" height="4" /></bezel>
<bezel element="hlub" inputtag="board:board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x10"><bounds x="1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x20"><bounds x="3.1" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x40"><bounds x="5.2" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel element="hlub" inputtag="board:UI" inputmask="0x80"><bounds x="7.3" y="68.5" width="1.7" height="6" /><color alpha="0.25" /></bezel>
<bezel name="count_ui0" element="text_uiu3a"><bounds x="0" y="75" width="4" height="2" /></bezel>
<bezel name="count_ui1" element="text_uiu3c"><bounds x="6" y="75" width="4" height="2" /></bezel>
@ -395,12 +395,12 @@ license:CC0
<bezel element="text_p1"> <bounds x="7.75" y="21.2" width="2.5" height="2.5" /> </bezel>
<bezel element="text_newgame"> <bounds x="12.7" y="21.5" width="11" height="1.4" /> </bezel>
<bezel name="led0.0" element="led"> <bounds x="2.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="led0.1" element="led"> <bounds x="8.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="led0.2" element="led"> <bounds x="14.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="led0.3" element="led"> <bounds x="20.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="led0.4" element="led"> <bounds x="2.4" y="16" width="1.2" height="1.2" /> </bezel>
<bezel name="led0.5" element="led"> <bounds x="8.4" y="16" width="1.2" height="1.2" /> </bezel>
<bezel name="0.0" element="led"> <bounds x="2.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="0.1" element="led"> <bounds x="8.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="0.2" element="led"> <bounds x="14.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="0.3" element="led"> <bounds x="20.4" y="7" width="1.2" height="1.2" /> </bezel>
<bezel name="0.4" element="led"> <bounds x="2.4" y="16" width="1.2" height="1.2" /> </bezel>
<bezel name="0.5" element="led"> <bounds x="8.4" y="16" width="1.2" height="1.2" /> </bezel>
</group>
@ -431,23 +431,23 @@ license:CC0
<bezel element="cwhite"><bounds x="19.5" y="2.5" width="81" height="81" /></bezel>
<!-- chessboard leds -->
<bezel name="led1.0" element="ledr"><bounds x="24" y="85" width="2" height="1" /></bezel>
<bezel name="led1.1" element="ledr"><bounds x="34" y="85" width="2" height="1" /></bezel>
<bezel name="led1.2" element="ledr"><bounds x="44" y="85" width="2" height="1" /></bezel>
<bezel name="led1.3" element="ledr"><bounds x="54" y="85" width="2" height="1" /></bezel>
<bezel name="led1.4" element="ledr"><bounds x="64" y="85" width="2" height="1" /></bezel>
<bezel name="led1.5" element="ledr"><bounds x="74" y="85" width="2" height="1" /></bezel>
<bezel name="led1.6" element="ledr"><bounds x="84" y="85" width="2" height="1" /></bezel>
<bezel name="led1.7" element="ledr"><bounds x="94" y="85" width="2" height="1" /></bezel>
<bezel name="1.0" element="ledr"><bounds x="24" y="85" width="2" height="1" /></bezel>
<bezel name="1.1" element="ledr"><bounds x="34" y="85" width="2" height="1" /></bezel>
<bezel name="1.2" element="ledr"><bounds x="44" y="85" width="2" height="1" /></bezel>
<bezel name="1.3" element="ledr"><bounds x="54" y="85" width="2" height="1" /></bezel>
<bezel name="1.4" element="ledr"><bounds x="64" y="85" width="2" height="1" /></bezel>
<bezel name="1.5" element="ledr"><bounds x="74" y="85" width="2" height="1" /></bezel>
<bezel name="1.6" element="ledr"><bounds x="84" y="85" width="2" height="1" /></bezel>
<bezel name="1.7" element="ledr"><bounds x="94" y="85" width="2" height="1" /></bezel>
<bezel name="led2.0" element="ledr"><bounds x="16.5" y="77.5" width="2" height="1" /></bezel>
<bezel name="led2.1" element="ledr"><bounds x="16.5" y="67.5" width="2" height="1" /></bezel>
<bezel name="led2.2" element="ledr"><bounds x="16.5" y="57.5" width="2" height="1" /></bezel>
<bezel name="led2.3" element="ledr"><bounds x="16.5" y="47.5" width="2" height="1" /></bezel>
<bezel name="led2.4" element="ledr"><bounds x="16.5" y="37.5" width="2" height="1" /></bezel>
<bezel name="led2.5" element="ledr"><bounds x="16.5" y="27.5" width="2" height="1" /></bezel>
<bezel name="led2.6" element="ledr"><bounds x="16.5" y="17.5" width="2" height="1" /></bezel>
<bezel name="led2.7" element="ledr"><bounds x="16.5" y="7.5" width="2" height="1" /></bezel>
<bezel name="2.0" element="ledr"><bounds x="16.5" y="77.5" width="2" height="1" /></bezel>
<bezel name="2.1" element="ledr"><bounds x="16.5" y="67.5" width="2" height="1" /></bezel>
<bezel name="2.2" element="ledr"><bounds x="16.5" y="57.5" width="2" height="1" /></bezel>
<bezel name="2.3" element="ledr"><bounds x="16.5" y="47.5" width="2" height="1" /></bezel>
<bezel name="2.4" element="ledr"><bounds x="16.5" y="37.5" width="2" height="1" /></bezel>
<bezel name="2.5" element="ledr"><bounds x="16.5" y="27.5" width="2" height="1" /></bezel>
<bezel name="2.6" element="ledr"><bounds x="16.5" y="17.5" width="2" height="1" /></bezel>
<bezel name="2.7" element="ledr"><bounds x="16.5" y="7.5" width="2" height="1" /></bezel>
<!-- LCD panel -->
<group ref="panel1"><bounds x="107.5" y="59" width="15" height="6" /></group>

View File

@ -445,23 +445,23 @@ license:CC0
<!-- chessboard leds -->
<bezel name="led0" element="led"><bounds x="15.5" y="77.25" width="1" height="1.5" /></bezel>
<bezel name="led1" element="led"><bounds x="15.5" y="67.25" width="1" height="1.5" /></bezel>
<bezel name="led2" element="led"><bounds x="15.5" y="57.25" width="1" height="1.5" /></bezel>
<bezel name="led3" element="led"><bounds x="15.5" y="47.25" width="1" height="1.5" /></bezel>
<bezel name="led4" element="led"><bounds x="15.5" y="37.25" width="1" height="1.5" /></bezel>
<bezel name="led5" element="led"><bounds x="15.5" y="27.25" width="1" height="1.5" /></bezel>
<bezel name="led6" element="led"><bounds x="15.5" y="17.25" width="1" height="1.5" /></bezel>
<bezel name="led7" element="led"><bounds x="15.5" y="7.25" width="1" height="1.5" /></bezel>
<bezel name="1.0" element="led"><bounds x="15.5" y="77.25" width="1" height="1.5" /></bezel>
<bezel name="1.1" element="led"><bounds x="15.5" y="67.25" width="1" height="1.5" /></bezel>
<bezel name="1.2" element="led"><bounds x="15.5" y="57.25" width="1" height="1.5" /></bezel>
<bezel name="1.3" element="led"><bounds x="15.5" y="47.25" width="1" height="1.5" /></bezel>
<bezel name="1.4" element="led"><bounds x="15.5" y="37.25" width="1" height="1.5" /></bezel>
<bezel name="1.5" element="led"><bounds x="15.5" y="27.25" width="1" height="1.5" /></bezel>
<bezel name="1.6" element="led"><bounds x="15.5" y="17.25" width="1" height="1.5" /></bezel>
<bezel name="1.7" element="led"><bounds x="15.5" y="7.25" width="1" height="1.5" /></bezel>
<bezel name="led8" element="led"><bounds x="22.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="led9" element="led"><bounds x="32.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="led10" element="led"><bounds x="42.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="led11" element="led"><bounds x="52.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="led12" element="led"><bounds x="62.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="led13" element="led"><bounds x="72.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="led14" element="led"><bounds x="82.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="led15" element="led"><bounds x="92.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.0" element="led"><bounds x="22.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.1" element="led"><bounds x="32.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.2" element="led"><bounds x="42.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.3" element="led"><bounds x="52.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.4" element="led"><bounds x="62.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.5" element="led"><bounds x="72.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.6" element="led"><bounds x="82.25" y="84.5" width="1.5" height="1" /></bezel>
<bezel name="0.7" element="led"><bounds x="92.25" y="84.5" width="1.5" height="1" /></bezel>
<!-- LCD panel -->