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:
angelosa 2016-10-05 15:08:51 +02:00
parent 27f203827a
commit eb08cc7e2a
3 changed files with 67 additions and 23 deletions

View File

@ -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 )

View File

@ -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);

View File

@ -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)
{