mirror of
https://github.com/holub/mame
synced 2025-04-27 10:43:07 +03:00
30test: inputport array for the buttons (nw)
This commit is contained in:
parent
3939fef2d1
commit
2df13a7613
@ -57,11 +57,12 @@ public:
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_oki(*this, "oki"),
|
||||
m_inputs(*this, "IN%u", 0),
|
||||
m_digits(*this, "digit%u", 0U),
|
||||
m_lamps(*this, "lamp%u", 0U)
|
||||
{ }
|
||||
|
||||
void _30test(machine_config &config);
|
||||
void namco_30test(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
@ -69,11 +70,13 @@ protected:
|
||||
private:
|
||||
required_device<mc68hc11_cpu_device> m_maincpu;
|
||||
required_device<okim6295_device> m_oki;
|
||||
required_ioport_array<4> m_inputs;
|
||||
output_finder<72> m_digits;
|
||||
output_finder<8> m_lamps;
|
||||
|
||||
uint8_t m_mux_data = 0;
|
||||
void main_map(address_map &map);
|
||||
|
||||
void output_digit(int i, u8 data);
|
||||
DECLARE_WRITE8_MEMBER(led_w);
|
||||
DECLARE_WRITE8_MEMBER(led_rank_w);
|
||||
DECLARE_WRITE8_MEMBER(lamps_w);
|
||||
@ -82,19 +85,38 @@ private:
|
||||
DECLARE_WRITE8_MEMBER(mux_w);
|
||||
DECLARE_WRITE8_MEMBER(okibank_w);
|
||||
|
||||
void main_map(address_map &map);
|
||||
u8 m_mux_data = 0;
|
||||
};
|
||||
|
||||
void namco_30test_state::machine_start()
|
||||
{
|
||||
m_digits.resolve();
|
||||
m_lamps.resolve();
|
||||
|
||||
static const uint8_t led_map[16] =
|
||||
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x00 };
|
||||
save_item(NAME(m_mux_data));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
I/O
|
||||
******************************************************************************/
|
||||
|
||||
void namco_30test_state::output_digit(int i, u8 data)
|
||||
{
|
||||
// assume it's using a 7448
|
||||
static const u8 led_map[16] =
|
||||
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 };
|
||||
|
||||
m_digits[i] = led_map[data & 0xf];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(namco_30test_state::led_w)
|
||||
{
|
||||
// 0-29: playfield
|
||||
// 30,31: time
|
||||
m_digits[offset * 2] = led_map[data >> 4];
|
||||
m_digits[1 + offset * 2] = led_map[data & 0x0f];
|
||||
output_digit(offset * 2, data >> 4);
|
||||
output_digit(1 + offset * 2, data & 0x0f);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(namco_30test_state::led_rank_w)
|
||||
@ -103,8 +125,8 @@ WRITE8_MEMBER(namco_30test_state::led_rank_w)
|
||||
// 1: 2nd place
|
||||
// 2: 3rd place
|
||||
// 3: current / last play score
|
||||
m_digits[64 + offset * 2] = led_map[data >> 4];
|
||||
m_digits[65 + offset * 2] = led_map[data & 0x0f];
|
||||
output_digit(64 + offset * 2, data >> 4);
|
||||
output_digit(65 + offset * 2, data & 0x0f);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(namco_30test_state::lamps_w)
|
||||
@ -125,22 +147,19 @@ WRITE8_MEMBER(namco_30test_state::coin_w)
|
||||
|
||||
READ8_MEMBER(namco_30test_state::mux_r)
|
||||
{
|
||||
uint8_t res = 0xff;
|
||||
u8 data = 0xff;
|
||||
|
||||
switch(m_mux_data)
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
case 0x01: res = ioport("IN0")->read(); break;
|
||||
case 0x02: res = ioport("IN1")->read(); break;
|
||||
case 0x04: res = ioport("IN2")->read(); break;
|
||||
case 0x08: res = ioport("IN3")->read(); break;
|
||||
if (BIT(m_mux_data, i))
|
||||
data &= m_inputs[i]->read();
|
||||
}
|
||||
|
||||
return res;
|
||||
return data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(namco_30test_state::mux_w)
|
||||
{
|
||||
//printf("%X ",data);
|
||||
m_mux_data = data;
|
||||
}
|
||||
|
||||
@ -151,6 +170,10 @@ WRITE8_MEMBER(namco_30test_state::okibank_w)
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Address Maps
|
||||
******************************************************************************/
|
||||
|
||||
void namco_30test_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x0d80, 0x0dbf).ram(); // EEPROM read-back data goes there
|
||||
@ -162,6 +185,11 @@ void namco_30test_state::main_map(address_map &map)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Input Ports
|
||||
******************************************************************************/
|
||||
|
||||
static INPUT_PORTS_START( 30test )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Button 1-1") PORT_CODE(KEYCODE_1)
|
||||
@ -215,14 +243,12 @@ static INPUT_PORTS_START( 30test )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void namco_30test_state::machine_start()
|
||||
{
|
||||
m_digits.resolve();
|
||||
m_lamps.resolve();
|
||||
save_item(NAME(m_mux_data));
|
||||
}
|
||||
|
||||
void namco_30test_state::_30test(machine_config &config)
|
||||
/******************************************************************************
|
||||
Machine Configs
|
||||
******************************************************************************/
|
||||
|
||||
void namco_30test_state::namco_30test(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MC68HC11K1(config, m_maincpu, 16_MHz_XTAL);
|
||||
@ -242,11 +268,11 @@ void namco_30test_state::_30test(machine_config &config)
|
||||
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
|
||||
***************************************************************************/
|
||||
/******************************************************************************
|
||||
ROM Definitions
|
||||
******************************************************************************/
|
||||
|
||||
ROM_START( 30test )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
@ -256,4 +282,11 @@ ROM_START( 30test )
|
||||
ROM_LOAD( "tt1-voi0.7p", 0x0000, 0x80000, CRC(b4fc5921) SHA1(92a88d5adb50dae48715847f12e88a35e37ef78c) )
|
||||
ROM_END
|
||||
|
||||
GAMEL( 1997, 30test, 0, _30test, 30test, namco_30test_state, empty_init, ROT0, "Namco", "30 Test (remake)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_30test )
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Drivers
|
||||
******************************************************************************/
|
||||
|
||||
/* YEAR NAME PARENT MACHINE INPUT CLASS INIT MONITOR COMPANY, FULLNAME, FLAGS */
|
||||
GAMEL( 1997, 30test, 0, namco_30test, 30test, namco_30test_state, empty_init, ROT0, "Namco", "30 Test (remake)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_30test )
|
||||
|
Loading…
Reference in New Issue
Block a user