mirror of
https://github.com/holub/mame
synced 2025-07-01 00:09:18 +03:00
greatgur MCU doesn't like impulse coins, add hack to simulated sets to make them work with non-impulse coins (nw)
This commit is contained in:
parent
9ccfcffb1a
commit
13401dadfb
@ -208,31 +208,45 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_bankswitch_w)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
READ8_MEMBER(gladiatr_state::gladiator_dsw1_r )
|
READ8_MEMBER(gladiatr_state::gladiator_dsw1_r)
|
||||||
{
|
{
|
||||||
return BITSWAP8(~m_dsw1->read(), 0,1,2,3,4,5,6,7);
|
return BITSWAP8(~m_dsw1->read(), 0,1,2,3,4,5,6,7);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(gladiatr_state::gladiator_dsw2_r )
|
READ8_MEMBER(gladiatr_state::gladiator_dsw2_r)
|
||||||
{
|
{
|
||||||
return BITSWAP8(~m_dsw2->read(), 2,3,4,5,6,7,1,0);
|
return BITSWAP8(~m_dsw2->read(), 2,3,4,5,6,7,1,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(gladiatr_state::gladiator_controls_r )
|
READ8_MEMBER(gladiatr_state::gladiator_controls_r)
|
||||||
{
|
{
|
||||||
u8 const coins = (~m_coins->read() & 0x07) ? 0x80 : 0x00;
|
// hack to simulate the way the MCUs counts edges on coin inputs
|
||||||
|
u8 const coins = ~m_coins->read() & 0x07;
|
||||||
|
u8 const changed = (m_coins_val ^ coins) & coins;
|
||||||
|
m_credits += 2 * (BIT(changed, 0) + BIT(changed, 1) + BIT(changed, 2));
|
||||||
|
m_coins_val = coins;
|
||||||
|
|
||||||
|
u8 result = 0;
|
||||||
switch(offset)
|
switch(offset)
|
||||||
{
|
{
|
||||||
case 0x01: // start button , coins
|
case 0x01: // start button, coins
|
||||||
return ((~m_in0->read() >> 6) & 0x03) | coins;
|
result = (~m_in0->read() >> 6) & 0x03;
|
||||||
case 0x02: // Player 1 Controller , coins
|
break;
|
||||||
return (~m_in0->read() & 0x3f) | coins;
|
case 0x02: // Player 1 Controller , coins
|
||||||
case 0x04: // Player 2 Controller , coins
|
result = ~m_in0->read() & 0x3f;
|
||||||
return (~m_in1->read() & 0x3f) | coins;
|
break;
|
||||||
|
case 0x04: // Player 2 Controller , coins
|
||||||
|
result = ~m_in1->read() & 0x3f;
|
||||||
|
break;
|
||||||
|
default: // unknown
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
// unknown
|
if (m_credits)
|
||||||
return 0;
|
{
|
||||||
|
result |= 0x80;
|
||||||
|
--m_credits;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(gladiatr_state::gladiator_button3_r)
|
READ8_MEMBER(gladiatr_state::gladiator_button3_r)
|
||||||
@ -705,9 +719,9 @@ static INPUT_PORTS_START( gladiatr )
|
|||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
|
||||||
|
|
||||||
PORT_START("COINS") // ccpu test, cctl test
|
PORT_START("COINS") // ccpu test, cctl test
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1)
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(1)
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
@ -1188,6 +1202,12 @@ DRIVER_INIT_MEMBER(gladiatr_state,gladiatr)
|
|||||||
/* make sure bank is valid in cpu-reset */
|
/* make sure bank is valid in cpu-reset */
|
||||||
membank("bank2")->set_entry(0);
|
membank("bank2")->set_entry(0);
|
||||||
|
|
||||||
|
m_coins_val = 0x00;
|
||||||
|
m_credits = 0;
|
||||||
|
|
||||||
|
save_item(NAME(m_coins_val));
|
||||||
|
save_item(NAME(m_credits));
|
||||||
|
|
||||||
m_tclk_val = false;
|
m_tclk_val = false;
|
||||||
m_in0_val = 0xff;
|
m_in0_val = 0xff;
|
||||||
m_in1_val = 0xff;
|
m_in1_val = 0xff;
|
||||||
|
@ -82,6 +82,8 @@ public:
|
|||||||
, m_in1(*this, "IN1")
|
, m_in1(*this, "IN1")
|
||||||
, m_in2(*this, "IN2")
|
, m_in2(*this, "IN2")
|
||||||
, m_coins(*this, "COINS")
|
, m_coins(*this, "COINS")
|
||||||
|
, m_coins_val(0x00)
|
||||||
|
, m_credits(0)
|
||||||
, m_tclk_val(false)
|
, m_tclk_val(false)
|
||||||
, m_in0_val(0xff)
|
, m_in0_val(0xff)
|
||||||
, m_in1_val(0xff)
|
, m_in1_val(0xff)
|
||||||
@ -141,6 +143,8 @@ private:
|
|||||||
required_ioport m_in0, m_in1, m_in2;
|
required_ioport m_in0, m_in1, m_in2;
|
||||||
required_ioport m_coins;
|
required_ioport m_coins;
|
||||||
|
|
||||||
|
u8 m_coins_val, m_credits;
|
||||||
|
|
||||||
bool m_tclk_val;
|
bool m_tclk_val;
|
||||||
u8 m_in0_val, m_in1_val;
|
u8 m_in0_val, m_in1_val;
|
||||||
u8 m_cctl_p1, m_cctl_p2;
|
u8 m_cctl_p1, m_cctl_p2;
|
||||||
|
Loading…
Reference in New Issue
Block a user