mirror of
https://github.com/holub/mame
synced 2025-06-07 21:33:45 +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) :
|
exidy_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
|
m_dsw(*this, "DSW"),
|
||||||
|
m_in0(*this, "IN0"),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
m_screen(*this, "screen"),
|
m_screen(*this, "screen"),
|
||||||
@ -208,7 +210,11 @@ public:
|
|||||||
void mtrap(machine_config &config);
|
void mtrap(machine_config &config);
|
||||||
void pepper2(machine_config &config);
|
void pepper2(machine_config &config);
|
||||||
|
|
||||||
|
DECLARE_CUSTOM_INPUT_MEMBER(intsource_coins_r);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
required_ioport m_dsw;
|
||||||
|
required_ioport m_in0;
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
@ -280,6 +286,9 @@ public:
|
|||||||
void rallys(machine_config &config);
|
void rallys(machine_config &config);
|
||||||
void phantoma(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_sidetrac();
|
||||||
void init_spectar();
|
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)
|
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;
|
int result = (dial != m_last_dial) << 4;
|
||||||
if (result != 0)
|
if (result != 0)
|
||||||
@ -639,8 +667,7 @@ static INPUT_PORTS_START( targ )
|
|||||||
|
|
||||||
PORT_START("INTSOURCE")
|
PORT_START("INTSOURCE")
|
||||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(spectar_state, spectar_coins_r)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||||
|
|
||||||
PORT_START("IN2")
|
PORT_START("IN2")
|
||||||
@ -710,7 +737,7 @@ static INPUT_PORTS_START( rallys )
|
|||||||
PORT_MODIFY("INTSOURCE")
|
PORT_MODIFY("INTSOURCE")
|
||||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
|
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
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( phantoma )
|
static INPUT_PORTS_START( phantoma )
|
||||||
@ -778,8 +805,7 @@ static INPUT_PORTS_START( mtrap )
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||||
|
|
||||||
PORT_START("IN2")
|
PORT_START("IN2")
|
||||||
@ -840,8 +866,7 @@ static INPUT_PORTS_START( venture )
|
|||||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||||
*/
|
*/
|
||||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||||
|
|
||||||
PORT_START("IN2")
|
PORT_START("IN2")
|
||||||
@ -896,8 +921,7 @@ static INPUT_PORTS_START( teetert )
|
|||||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||||
*/
|
*/
|
||||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||||
|
|
||||||
PORT_START("IN2")
|
PORT_START("IN2")
|
||||||
@ -956,8 +980,7 @@ static INPUT_PORTS_START( pepper2 )
|
|||||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||||
*/
|
*/
|
||||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||||
|
|
||||||
PORT_START("IN2")
|
PORT_START("IN2")
|
||||||
@ -1008,8 +1031,7 @@ static INPUT_PORTS_START( fax )
|
|||||||
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
|
||||||
*/
|
*/
|
||||||
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
PORT_BIT( 0x1f, IP_ACTIVE_HIGH, IPT_CUSTOM )
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
|
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(exidy_state, intsource_coins_r)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||||
|
|
||||||
PORT_START("IN2")
|
PORT_START("IN2")
|
||||||
|
Loading…
Reference in New Issue
Block a user