jongkyo.cpp: Clean up input code a little.

This commit is contained in:
Vas Crabb 2021-02-16 04:12:46 +11:00
parent a773f997f9
commit aed9f93f39

View File

@ -65,7 +65,7 @@ protected:
private: private:
// misc // misc
uint8_t m_rom_bank; uint8_t m_rom_bank;
uint8_t m_mux_data; uint8_t m_key_rows;
uint8_t m_flip_screen; uint8_t m_flip_screen;
// memory pointers // memory pointers
@ -161,8 +161,8 @@ void jongkyo_state::bank_select_w(offs_t offset, uint8_t data)
void jongkyo_state::mux_w(uint8_t data) void jongkyo_state::mux_w(uint8_t data)
{ {
m_mux_data = ~data; m_key_rows = data;
// printf("%02x\n", m_mux_data); // printf("%02x\n", m_key_rows);
} }
void jongkyo_state::coin_counter_w(uint8_t data) void jongkyo_state::coin_counter_w(uint8_t data)
@ -178,40 +178,26 @@ void jongkyo_state::coin_counter_w(uint8_t data)
uint8_t jongkyo_state::input_1p_r() uint8_t jongkyo_state::input_1p_r()
{ {
uint8_t cr_clear = m_credit_clear->read(); uint8_t keys = 0x3f;
for (unsigned i = 0; m_pl1_inputs.size() > i; ++i)
switch (m_mux_data)
{ {
case 0x01: return m_pl1_inputs[0]->read() | cr_clear; if (!BIT(m_key_rows, i))
case 0x02: return m_pl1_inputs[1]->read() | cr_clear; keys &= m_pl1_inputs[i]->read();
case 0x04: return m_pl1_inputs[2]->read() | cr_clear;
case 0x08: return m_pl1_inputs[3]->read() | cr_clear;
case 0x10: return m_pl1_inputs[4]->read() | cr_clear;
case 0x20: return m_pl1_inputs[5]->read() | cr_clear;
} }
// printf("%04x\n", m_mux_data);
return (m_pl1_inputs[0]->read() & m_pl1_inputs[1]->read() & m_pl1_inputs[2]->read() & return keys | m_credit_clear->read();
m_pl1_inputs[3]->read() & m_pl1_inputs[4]->read() & m_pl1_inputs[5]->read()) | cr_clear;
} }
uint8_t jongkyo_state::input_2p_r() uint8_t jongkyo_state::input_2p_r()
{ {
uint8_t coin_port = m_coin_port->read(); uint8_t keys = 0x3f;
for (unsigned i = 0; m_pl2_inputs.size() > i; ++i)
switch (m_mux_data)
{ {
case 0x01: return m_pl2_inputs[0]->read() | coin_port; if (!BIT(m_key_rows, i))
case 0x02: return m_pl2_inputs[1]->read() | coin_port; keys &= m_pl2_inputs[i]->read();
case 0x04: return m_pl2_inputs[2]->read() | coin_port;
case 0x08: return m_pl2_inputs[3]->read() | coin_port;
case 0x10: return m_pl2_inputs[4]->read() | coin_port;
case 0x20: return m_pl2_inputs[5]->read() | coin_port;
} }
// printf("%04x\n", m_mux_data);
return (m_pl2_inputs[0]->read() & m_pl2_inputs[1]->read() & m_pl2_inputs[2]->read() & return keys | m_coin_port->read();
m_pl2_inputs[3]->read() & m_pl2_inputs[4]->read() & m_pl2_inputs[5]->read()) | coin_port;
} }
void jongkyo_state::videoram2_w(offs_t offset, uint8_t data) void jongkyo_state::videoram2_w(offs_t offset, uint8_t data)
@ -367,11 +353,11 @@ static INPUT_PORTS_START( jongkyo )
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) //another opt 1 button PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) //another opt 1 button
PORT_START("PL1_5") PORT_START("PL1_5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1P Option 1") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) //PORT_NAME("1P Option 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1P Option 2") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) //PORT_NAME("1P Option 2")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1P Option 3") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) //PORT_NAME("1P Option 3")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1P Option 4") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) //PORT_NAME("1P Option 4")
PORT_START("PL1_6") PORT_START("PL1_6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1P Pass") //??? PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1P Pass") //???
@ -406,11 +392,11 @@ static INPUT_PORTS_START( jongkyo )
PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) //another opt 1 button PORT_BIT( 0x30, IP_ACTIVE_LOW, IPT_UNUSED ) //another opt 1 button
PORT_START("PL2_5") PORT_START("PL2_5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2P Option 1") PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) //PORT_NAME("2P Option 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2P Option 2") PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) //PORT_NAME("2P Option 2")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2P Option 3") PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) //PORT_NAME("2P Option 3")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2P Option 4") PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) //PORT_NAME("2P Option 4")
PORT_START("PL2_6") PORT_START("PL2_6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2P Pass") PORT_PLAYER(2) //??? PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2P Pass") PORT_PLAYER(2) //???
@ -420,9 +406,7 @@ static INPUT_PORTS_START( jongkyo )
PORT_DIPNAME( 0x01, 0x00, "Note" ) PORT_DIPNAME( 0x01, 0x00, "Note" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x01, DEF_STR( Yes ) ) PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
PORT_DIPNAME( 0x02, 0x00, "Memory Reset" ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MEMORY_RESET )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
PORT_DIPNAME( 0x04, 0x00, "Analyzer" ) PORT_DIPNAME( 0x04, 0x00, "Analyzer" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
@ -494,14 +478,14 @@ void jongkyo_state::machine_start()
{ {
save_item(NAME(m_videoram2)); save_item(NAME(m_videoram2));
save_item(NAME(m_rom_bank)); save_item(NAME(m_rom_bank));
save_item(NAME(m_mux_data)); save_item(NAME(m_key_rows));
save_item(NAME(m_flip_screen)); save_item(NAME(m_flip_screen));
} }
void jongkyo_state::machine_reset() void jongkyo_state::machine_reset()
{ {
m_rom_bank = 0; m_rom_bank = 0;
m_mux_data = 0; m_key_rows = 0xff;
m_flip_screen = 1; m_flip_screen = 1;
} }