mirror of
https://github.com/holub/mame
synced 2025-07-08 03:12:37 +03:00
Various input related bug-fixes to Wild Pilot: [Angelo Salese]
* Lightgun is actually an ad-stick; * Added player 2 inputs; * Fixed bogus start button starting a play even without a coin inserted;
This commit is contained in:
parent
27f203827a
commit
eb08cc7e2a
@ -351,15 +351,47 @@ ADDRESS_MAP_END
|
||||
Wild Pilot
|
||||
**************************************************************************/
|
||||
|
||||
// ad stick read select
|
||||
READ16_MEMBER(cischeat_state::wildplt_xy_r)
|
||||
{
|
||||
switch(m_ip_select)
|
||||
{
|
||||
case 1: return ioport("P2Y")->read() | (ioport("P2X")->read()<<8);
|
||||
case 2: return ioport("P1Y")->read() | (ioport("P1X")->read()<<8);
|
||||
}
|
||||
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
// buttons & sensors are
|
||||
READ16_MEMBER(cischeat_state::wildplt_mux_r)
|
||||
{
|
||||
UINT16 split_in = 0xffff;
|
||||
switch(m_wildplt_output & 0xc)
|
||||
{
|
||||
// case 0: return ioport("IN1")->read();
|
||||
case 4: split_in = ioport("IN1_1")->read(); break;
|
||||
case 8: split_in = ioport("IN1_2")->read(); break;
|
||||
}
|
||||
|
||||
return split_in & ioport("IN1_COMMON")->read();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(cischeat_state::wildplt_mux_w)
|
||||
{
|
||||
m_wildplt_output = data & 0xc;
|
||||
}
|
||||
|
||||
|
||||
// Same as f1gpstar, but vregs are slightly different:
|
||||
static ADDRESS_MAP_START( wildplt_map, AS_PROGRAM, 16, cischeat_state )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
|
||||
AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") AM_WRITE(f1gpstr2_io_w) // DSW 1 & 2
|
||||
AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN1") AM_WRITE(f1gpstar_motor_w) // Buttons
|
||||
AM_RANGE(0x080004, 0x080005) AM_READ(wildplt_mux_r) AM_WRITE(wildplt_mux_w) // Buttons
|
||||
AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu
|
||||
AM_RANGE(0x080008, 0x080009) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu
|
||||
AM_RANGE(0x08000c, 0x08000d) AM_WRITENOP // 1000, 3000
|
||||
AM_RANGE(0x080010, 0x080011) AM_READ(wildplt_xy_r) AM_WRITENOP // X, Y
|
||||
AM_RANGE(0x080010, 0x080011) AM_READ(wildplt_xy_r) AM_WRITE(ip_select_w) // X, Y
|
||||
AM_RANGE(0x080014, 0x080015) AM_WRITENOP
|
||||
AM_RANGE(0x080018, 0x080019) AM_READWRITE(f1gpstr2_ioready_r, f1gpstar_soundint_w)
|
||||
|
||||
@ -1451,29 +1483,44 @@ static INPUT_PORTS_START( wildplt )
|
||||
PORT_DIPSETTING( 0xc000, DEF_STR( Japan ) )
|
||||
PORT_DIPSETTING( 0x0000, "France?" )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_START("IN1_COMMON")
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) //service 1 too
|
||||
PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW ) //start 2 too
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
|
||||
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0xfffe, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN1_1")
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
|
||||
PORT_BIT( 0xfff3, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN1_2")
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Bomb")
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Shot")
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Missile")
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Shot")
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Missile")
|
||||
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Bomb")
|
||||
PORT_BIT( 0xfe01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
#if 0
|
||||
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Up Limit SW.
|
||||
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Dow Limit SW.
|
||||
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Center SW.
|
||||
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Senser SW. #1
|
||||
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Senser SW. #2
|
||||
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Emergency Button") //E Stop for motors? ( Senser SW. #3 )
|
||||
#endif
|
||||
PORT_START("P1Y")
|
||||
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(1)
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_REVERSE
|
||||
PORT_START("P1X")
|
||||
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(1)
|
||||
|
||||
PORT_START("IN3")
|
||||
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_SENSITIVITY(35) PORT_KEYDELTA(15)
|
||||
PORT_START("P2Y")
|
||||
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(2)
|
||||
|
||||
PORT_START("P2X")
|
||||
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -3474,7 +3521,7 @@ GAMEL( 1990, cischeat, 0, cischeat, cischeat, cischeat_state, cischeat, R
|
||||
GAMEL( 1991, f1gpstar, 0, f1gpstar, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "Grand Prix Star", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar )
|
||||
GAME ( 1992, armchmp2, 0, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v2.6", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME ( 1992, armchmp2o,armchmp2, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v1.7", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME ( 1992, wildplt, 0, wildplt, wildplt, cischeat_state, f1gpstar, ROT0, "Jaleco", "Wild Pilot", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // can start a play even without a credit, no p2 start, busted timings
|
||||
GAME ( 1992, wildplt, 0, wildplt, wildplt, cischeat_state, f1gpstar, ROT0, "Jaleco", "Wild Pilot", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // busted timings
|
||||
GAMEL( 1993, f1gpstr2, 0, f1gpstr2, f1gpstr2, cischeat_state, f1gpstar, ROT0, "Jaleco", "F-1 Grand Prix Star II", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar )
|
||||
GAME ( 1993, captflag, 0, captflag, captflag, cischeat_state, captflag, ROT270, "Jaleco", "Captain Flag (Japan)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME ( 1994, scudhamm, 0, scudhamm, scudhamm, driver_device, 0, ROT270, "Jaleco", "Scud Hammer", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
@ -55,6 +55,7 @@ public:
|
||||
int m_armold;
|
||||
UINT16 m_scudhamm_motor_command;
|
||||
int m_ip_select;
|
||||
UINT16 m_wildplt_output;
|
||||
UINT8 m_drawmode_table[16];
|
||||
int m_debugsprites;
|
||||
int m_show_unknown;
|
||||
@ -91,6 +92,8 @@ public:
|
||||
DECLARE_READ16_MEMBER(f1gpstar_wheel_r);
|
||||
DECLARE_READ16_MEMBER(f1gpstr2_ioready_r);
|
||||
DECLARE_READ16_MEMBER(wildplt_xy_r);
|
||||
DECLARE_READ16_MEMBER(wildplt_mux_r);
|
||||
DECLARE_WRITE16_MEMBER(wildplt_mux_w);
|
||||
DECLARE_WRITE16_MEMBER(f1gpstar_motor_w);
|
||||
DECLARE_WRITE16_MEMBER(f1gpstar_soundint_w);
|
||||
DECLARE_WRITE16_MEMBER(f1gpstar_comms_w);
|
||||
|
@ -270,12 +270,6 @@ READ16_MEMBER(cischeat_state::f1gpstr2_ioready_r)
|
||||
Wild Pilot
|
||||
**************************************************************************/
|
||||
|
||||
READ16_MEMBER(cischeat_state::wildplt_xy_r)
|
||||
{
|
||||
// X, Y
|
||||
return ioport("IN2")->read() | (ioport("IN3")->read()<<8);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(cischeat_state::f1gpstar_motor_w)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user