mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
exidy.cpp: Got rid of duplicate coin inputs.
Partially addresses GitHub #9757. Coin 2 doesn't work for targ and spectar, but that isn't a regression (it was already broken, not sure if error in schematics, game bug, or emulation issue is to blame). DIP switches and locations are still a bit of a mess, too.
This commit is contained in:
parent
442b04339c
commit
3da1e6f2b7
@ -188,6 +188,8 @@ public:
|
||||
|
||||
exidy_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_dsw(*this, "DSW"),
|
||||
m_in0(*this, "IN0"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
@ -208,7 +210,11 @@ public:
|
||||
void mtrap(machine_config &config);
|
||||
void pepper2(machine_config &config);
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(intsource_coins_r);
|
||||
|
||||
protected:
|
||||
required_ioport m_dsw;
|
||||
required_ioport m_in0;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
@ -280,6 +286,9 @@ public:
|
||||
void rallys(machine_config &config);
|
||||
void phantoma(machine_config &config);
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(spectar_coins_r);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(rallys_coin1_r);
|
||||
|
||||
void init_sidetrac();
|
||||
void init_spectar();
|
||||
|
||||
@ -388,13 +397,32 @@ private:
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Special Teeter Torture input
|
||||
* Special inputs
|
||||
*
|
||||
*************************************/
|
||||
|
||||
CUSTOM_INPUT_MEMBER(exidy_state::intsource_coins_r)
|
||||
{
|
||||
uint8_t const dsw = m_dsw->read();
|
||||
uint8_t const in0 = m_in0->read();
|
||||
return (BIT(~in0, 7) << 1) | BIT(dsw, 0);
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(spectar_state::spectar_coins_r)
|
||||
{
|
||||
uint8_t const dsw = m_dsw->read();
|
||||
uint8_t const in0 = m_in0->read();
|
||||
return (BIT(~in0, 7) << 1) | BIT(~dsw, 0);
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(spectar_state::rallys_coin1_r)
|
||||
{
|
||||
return BIT(m_in0->read(), 7);
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(teetert_state::teetert_input_r)
|
||||
{
|
||||
uint8_t dial = m_dial->read();
|
||||
uint8_t const dial = m_dial->read();
|
||||
|
||||
int result = (dial != m_last_dial) << 4;
|
||||
if (result != 0)
|
||||
@ -639,8 +667,7 @@ static INPUT_PORTS_START( targ )
|
||||
|
||||
PORT_START("INTSOURCE")
|
||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(spectar_state, spectar_coins_r)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
|
||||
PORT_START("IN2")
|
||||
@ -710,7 +737,7 @@ static INPUT_PORTS_START( rallys )
|
||||
PORT_MODIFY("INTSOURCE")
|
||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(spectar_state, rallys_coin1_r)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( phantoma )
|
||||
@ -778,8 +805,7 @@ static INPUT_PORTS_START( mtrap )
|
||||
*/
|
||||
|
||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
|
||||
PORT_START("IN2")
|
||||
@ -840,8 +866,7 @@ static INPUT_PORTS_START( venture )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||
*/
|
||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
|
||||
PORT_START("IN2")
|
||||
@ -896,8 +921,7 @@ static INPUT_PORTS_START( teetert )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||
*/
|
||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
|
||||
PORT_START("IN2")
|
||||
@ -956,8 +980,7 @@ static INPUT_PORTS_START( pepper2 )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||
*/
|
||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
|
||||
PORT_START("IN2")
|
||||
@ -1008,8 +1031,7 @@ static INPUT_PORTS_START( fax )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||
*/
|
||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
|
||||
PORT_START("IN2")
|
||||
|
Loading…
Reference in New Issue
Block a user