ccompan2: implement buttons as 2*8 instead of 8*2

This commit is contained in:
hap 2023-11-14 15:54:53 +01:00
parent 63fdf58bac
commit c6f17c61b9
5 changed files with 62 additions and 86 deletions

View File

@ -524,21 +524,21 @@ license:CC0-1.0
<element ref="cwhite" blend="multiply"><bounds x="87" y="5" width="31" height="59" /></element>
<element ref="hl" blend="multiply" inputtag="IN.4" inputmask="0x02"><bounds x="89.0" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x10"><bounds x="89.0" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x02"><bounds x="96.5" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x01"><bounds x="104.0" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.2" inputmask="0x02"><bounds x="111.5" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.6" inputmask="0x02"><bounds x="89.0" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.5" inputmask="0x02"><bounds x="96.5" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.2" inputmask="0x01"><bounds x="104.0" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.7" inputmask="0x02"><bounds x="111.5" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.0" inputmask="0x02"><bounds x="104.0" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x04"><bounds x="111.5" y="30" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x40"><bounds x="89.0" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x20"><bounds x="96.5" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.0" inputmask="0x04"><bounds x="104.0" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x80"><bounds x="111.5" y="38" width="4.5" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.3" inputmask="0x01"><bounds x="89" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.3" inputmask="0x02"><bounds x="99" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.4" inputmask="0x01"><bounds x="109" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.5" inputmask="0x01"><bounds x="89" y="54" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.6" inputmask="0x01"><bounds x="99" y="54" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.7" inputmask="0x01"><bounds x="109" y="54" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.0" inputmask="0x08"><bounds x="89" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.1" inputmask="0x08"><bounds x="99" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.0" inputmask="0x10"><bounds x="109" y="46" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.0" inputmask="0x20"><bounds x="89" y="54" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.0" inputmask="0x40"><bounds x="99" y="54" width="7" height="5" /></element>
<element ref="hl" blend="multiply" inputtag="IN.0" inputmask="0x80"><bounds x="109" y="54" width="7" height="5" /></element>
<element name="0.a" ref="led"><bounds x="90" y="13" width="1.5" height="1.5" /></element>
<element name="1.a" ref="led"><bounds x="90" y="16" width="1.5" height="1.5" /></element>

View File

@ -435,20 +435,20 @@ license:CC0-1.0
<element ref="text_b9a"><bounds x="9.5" y="28.7" width="10" height="1.8" /></element>
<element ref="text_b9c"><bounds x="9.5" y="33.8" width="10" height="1.8" /></element>
<element ref="but" inputtag="IN.3" inputmask="0x01"><bounds x="20.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.3" inputmask="0x02"><bounds x="29.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.4" inputmask="0x02"><bounds x="39.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.4" inputmask="0x01"><bounds x="48.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x08"><bounds x="20.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x08"><bounds x="29.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x10"><bounds x="39.0" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x10"><bounds x="48.5" y="1" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.2" inputmask="0x02"><bounds x="20.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.2" inputmask="0x01"><bounds x="29.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.7" inputmask="0x01"><bounds x="39.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.7" inputmask="0x02"><bounds x="48.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x04"><bounds x="20.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x04"><bounds x="29.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x80"><bounds x="39.0" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x80"><bounds x="48.5" y="15" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.0" inputmask="0x02"><bounds x="20.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x01"><bounds x="20.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x02"><bounds x="29.5" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.5" inputmask="0x02"><bounds x="39.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.6" inputmask="0x02"><bounds x="48.5" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x20"><bounds x="39.0" y="29" width="1.8" height="8" /></element>
<element ref="but" inputtag="IN.1" inputmask="0x40"><bounds x="48.5" y="29" width="1.8" height="8" /></element>
</group>

View File

@ -3,7 +3,7 @@
// thanks-to:Berger
/*******************************************************************************
Novag Super Expert (model 878/886/887/902) / Novag Super Forte
Novag Super Expert (model 878/886/887/902) / Novag Super Forte (model 879/?/901)
Hardware notes (Super Expert)
- R65C02P4 or W65C802P-6 @ 5MHz/6MHz (10MHz/12MHz XTAL)
@ -587,8 +587,8 @@ ROM_END
ROM_START( sfortec1 ) // ID = F1.2
ROM_REGION( 0x18000, "maincpu", 0 )
ROM_LOAD("sfl_c_iii.u13", 0x0000, 0x8000, CRC(f040cf30) SHA1(1fc1220b8ed67cdffa3866d230ce001721cf684f) ) // Toshiba TC57256AD-12
ROM_LOAD("sfh_c_iii.u11", 0x8000, 0x8000, CRC(0f926b32) SHA1(9c7270ecb3f41dd9172a9a7928e6e04e64b2a340) ) // NEC D27C256AD-12
ROM_LOAD("sfl_c_111.u13", 0x0000, 0x8000, CRC(f040cf30) SHA1(1fc1220b8ed67cdffa3866d230ce001721cf684f) ) // Toshiba TC57256AD-12
ROM_LOAD("sfh_c_111.u11", 0x8000, 0x8000, CRC(0f926b32) SHA1(9c7270ecb3f41dd9172a9a7928e6e04e64b2a340) ) // NEC D27C256AD-12
ROM_LOAD("h0_c_c26.u12", 0x10000, 0x8000, CRC(c6a1419a) SHA1(017a0ffa9aa59438c879624a7ddea2071d1524b8) ) // Toshiba TC57256AD-12
ROM_END

View File

@ -80,8 +80,8 @@ public:
m_inputs(*this, "IN.%u", 0)
{ }
void ccompan2(machine_config &config);
void expchess(machine_config &config);
void ccompan2(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(power_off);
DECLARE_INPUT_CHANGED_MEMBER(change_cpu_freq) { set_cpu_freq(); }
@ -96,7 +96,7 @@ private:
required_device<hd6301v1_cpu_device> m_maincpu;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
required_ioport_array<8+1> m_inputs;
required_ioport_array<3> m_inputs;
// I/O handlers
u8 input1_r();
@ -195,12 +195,12 @@ u8 ccompan2_state::input2_r()
u8 data = 0;
// P21,P22: read buttons
for (int i = 0; i < 8; i++)
if (BIT(m_inp_mux, i))
data |= m_inputs[i]->read() << 1 & 6;
for (int i = 0; i < 2; i++)
if (m_inp_mux & m_inputs[i]->read())
data |= 2 << i;
// P23: button configuration
data |= m_inputs[8]->read() << 3 & 8;
data |= m_inputs[2]->read() << 3 & 8;
return ~data;
}
@ -233,38 +233,23 @@ void ccompan2_state::led_w(u8 data)
static INPUT_PORTS_START( expchess )
PORT_START("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("White/Black")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("New Game / Clear Board")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("2nd F")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_BIT(0x63, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level / Sound")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Play / PVP")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_START("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("White/Black")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
PORT_START("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("New Game / Clear Board")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level / Sound")
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("2nd F")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Play / PVP")
PORT_START("IN.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_START("IN.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_START("IN.7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_START("IN.8")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_CUSTOM) // button config
PORT_START("POWER")
@ -276,37 +261,25 @@ static INPUT_PORTS_START( ccompan2 )
PORT_MODIFY("IN.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Sound")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Color")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_MODIFY("IN.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Sound")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("Multi Move")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Play")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Enter Position")
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
PORT_MODIFY("IN.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Color")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("Multi Move")
PORT_MODIFY("IN.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("King")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Queen")
PORT_MODIFY("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Rook")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_NAME("Play")
PORT_MODIFY("IN.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Bishop")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Enter Position")
PORT_MODIFY("IN.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Knight")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
PORT_MODIFY("IN.7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Pawn")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
PORT_MODIFY("IN.8")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_CUSTOM) // button config
PORT_START("FAKE")

View File

@ -156,7 +156,10 @@ void ren_state::machine_reset()
void ren_state::standby(int state)
{
if (state)
{
m_display->clear();
m_lcd_pwm->clear();
}
}
INPUT_CHANGED_MEMBER(ren_state::go_button)