diff options
author | Michaël Banaan Ananas <happppp@users.noreply.github.com> | 2012-10-25 15:32:20 +0000 |
---|---|---|
committer | Michaël Banaan Ananas <happppp@users.noreply.github.com> | 2012-10-25 15:32:20 +0000 |
commit | 3ef10c90803d822c9d2ef9f11062942f1d4e3c22 (patch) | |
tree | b46112107eede11af052d633245c25ba10bfb7bf /src/mame/drivers/namcos23.c | |
parent | f614d6b12cda764bab1682bebb7917bc42aeac65 (diff) |
added preliminary analog controls
Diffstat (limited to 'src/mame/drivers/namcos23.c')
-rw-r--r-- | src/mame/drivers/namcos23.c | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c index e32da236f55..68526eb080d 100644 --- a/src/mame/drivers/namcos23.c +++ b/src/mame/drivers/namcos23.c @@ -1454,8 +1454,8 @@ public: DECLARE_WRITE8_MEMBER(s23_iob_p4_w); DECLARE_READ8_MEMBER(s23_iob_p6_r); DECLARE_WRITE8_MEMBER(s23_iob_p6_w); - DECLARE_READ8_MEMBER(s23_gun_r); - DECLARE_READ8_MEMBER(iob_r); + DECLARE_READ8_MEMBER(s23_iob_gun_r); + DECLARE_READ8_MEMBER(s23_iob_analog_r); DECLARE_DRIVER_INIT(ss23); TILE_GET_INFO_MEMBER(TextTilemapGetInfo); DECLARE_MACHINE_START(s23); @@ -2858,6 +2858,25 @@ static INPUT_PORTS_START( gorgon ) PORT_SERVICE_DIPLOC(0x80, IP_ACTIVE_LOW, "DIP:1" ) INPUT_PORTS_END +static INPUT_PORTS_START( finlflng ) + PORT_INCLUDE( gorgon ) + + PORT_MODIFY("IN0") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + +#if 0 // need to hook these up properly + PORT_START("ADC0") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC0") + PORT_START("ADC1") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC1") + PORT_START("ADC2") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC2") + PORT_START("ADC3") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC3") +#endif +INPUT_PORTS_END + static INPUT_PORTS_START( rapidrvrp ) PORT_INCLUDE( gorgon ) @@ -2890,10 +2909,23 @@ static INPUT_PORTS_START( rapidrvrp ) PORT_MODIFY("DSW") PORT_DIPNAME( 0x08, 0x08, "Debug Messages" ) PORT_DIPLOCATION("DIP:5") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Dev Service Mode" ) PORT_DIPLOCATION("DIP:2") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_SERVICE_DIPLOC(0x80, IP_ACTIVE_LOW, "DIP:1" ) PORT_NAME("User Service Mode") + +#if 0 // need to hook these up properly + PORT_START("ADC0") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC0") // rear r + PORT_START("ADC1") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC1") // rear l + PORT_START("ADC2") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC2") // front r + PORT_START("ADC3") + PORT_BIT( 0xffff, 0x8000, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(100) PORT_NAME("ADC3") // front l +#endif INPUT_PORTS_END static INPUT_PORTS_START( s23 ) @@ -3121,7 +3153,7 @@ WRITE8_MEMBER(namcos23_state::s23_iob_p6_w) //printf("iob %02x to port 6\n", data); } -READ8_MEMBER(namcos23_state::s23_gun_r) +READ8_MEMBER(namcos23_state::s23_iob_gun_r) { UINT16 xpos = ioport("LIGHTX")->read(); UINT16 ypos = ioport("LIGHTY")->read(); @@ -3140,9 +3172,13 @@ READ8_MEMBER(namcos23_state::s23_gun_r) return 0; } -READ8_MEMBER(namcos23_state::iob_r) +READ8_MEMBER(namcos23_state::s23_iob_analog_r) { - return machine().rand(); + static const char *const portnames[] = { "ADC0", "ADC1", "ADC2", "ADC3" }; + if (offset & 1) + return ioport(portnames[offset >> 1 & 3])->read_safe(0) >> 8 & 0xff; + else + return ioport(portnames[offset >> 1 & 3])->read_safe(0) & 0xff; } /* H8/3334 (Namco C78) I/O board MCU */ @@ -3154,13 +3190,12 @@ static ADDRESS_MAP_START( s23iobrdmap, AS_PROGRAM, 8, namcos23_state ) AM_RANGE(0x6003, 0x6003) AM_READ_PORT("IN3") AM_RANGE(0x6004, 0x6005) AM_WRITENOP AM_RANGE(0x6006, 0x6007) AM_NOP - AM_RANGE(0x7000, 0x700f) AM_READ(iob_r ) AM_RANGE(0xc000, 0xf7ff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( timecrs2iobrdmap, AS_PROGRAM, 8, namcos23_state ) - AM_RANGE(0x7000, 0x700f) AM_READ(s23_gun_r ) + AM_RANGE(0x7000, 0x700f) AM_READ(s23_iob_gun_r) AM_IMPORT_FROM( s23iobrdmap ) ADDRESS_MAP_END @@ -3175,7 +3210,7 @@ static ADDRESS_MAP_START( s23iobrdiomap, AS_IO, 8, namcos23_state ) AM_RANGE(H8_PORT_8, H8_PORT_8) AM_NOP // unknown - used on ASCA-5 only AM_RANGE(H8_PORT_9, H8_PORT_9) AM_NOP // unknown - used on ASCA-5 only AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE(s23_iob_mcu_r, s23_iob_mcu_w) - AM_RANGE(H8_ADC_0_H, H8_ADC_3_L) AM_NOP // analog input + AM_RANGE(H8_ADC_0_H, H8_ADC_3_L) AM_READ(s23_iob_analog_r) ADDRESS_MAP_END DRIVER_INIT_MEMBER(namcos23_state,ss23) @@ -4432,7 +4467,7 @@ ROM_END GAME( 1997, rapidrvr, 0, gorgon, gorgon, namcos23_state, ss23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_FLAGS ) // 97/11/27, USA GAME( 1997, rapidrvr2, rapidrvr, gorgon, gorgon, namcos23_state, ss23, ROT0, "Namco", "Rapid River (RD2 Ver. C)", GAME_FLAGS ) // 97/11/27, Europe GAME( 1997, rapidrvrp, rapidrvr, gorgon, rapidrvrp, namcos23_state, ss23, ROT0, "Namco", "Rapid River (prototype)", GAME_FLAGS ) // 97/11/10, USA -GAME( 1997, finlflng, 0, gorgon, gorgon, namcos23_state, ss23, ROT0, "Namco", "Final Furlong (FF2 Ver. A)", GAME_FLAGS ) +GAME( 1997, finlflng, 0, gorgon, finlflng, namcos23_state, ss23, ROT0, "Namco", "Final Furlong (FF2 Ver. A)", GAME_FLAGS ) GAME( 1997, downhill, 0, s23, s23, namcos23_state, ss23, ROT0, "Namco", "Downhill Bikers (DH3 Ver. A)", GAME_FLAGS ) GAME( 1997, motoxgo, 0, s23, s23, namcos23_state, ss23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)", GAME_FLAGS ) GAME( 1997, motoxgoa, motoxgo, s23, s23, namcos23_state, ss23, ROT0, "Namco", "Motocross Go! (MG2 Ver. A)", GAME_FLAGS ) |