From 03752f33a3e10599b8292b6b78d729c3ced4807b Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 9 Nov 2017 00:40:03 -0500 Subject: model2.cpp: Input port rationalization (nw) --- src/mame/drivers/model2.cpp | 709 +++++++++++++++++--------------------------- src/mame/includes/model2.h | 25 +- 2 files changed, 297 insertions(+), 437 deletions(-) diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index 924c5fea26a..366ce8e77c4 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -380,6 +380,24 @@ MACHINE_START_MEMBER(model2_state,model2) { m_copro_fifoin_data = make_unique_clear(COPRO_FIFOIN_SIZE); m_copro_fifoout_data = make_unique_clear(COPRO_FIFOOUT_SIZE); + + m_port_1c00004 = 1; + m_port_1c00006 = 2; + m_port_1c00010 = 0; + m_port_1c00012 = 1; + m_port_1c00014 = 2; +} + +MACHINE_START_MEMBER(model2_state,srallyc) +{ + m_copro_fifoin_data = make_unique_clear(COPRO_FIFOIN_SIZE); + m_copro_fifoout_data = make_unique_clear(COPRO_FIFOOUT_SIZE); + + m_port_1c00004 = 2; + m_port_1c00006 = 3; + m_port_1c00010 = 0; + m_port_1c00012 = 1; + m_port_1c00014 = 4; } MACHINE_RESET_MEMBER(model2_state,model2_common) @@ -526,30 +544,54 @@ WRITE32_MEMBER(model2_state::videoctl_w) COMBINE_DATA(&m_videocontrol); } -CUSTOM_INPUT_MEMBER(model2_state::_1c00000_r) +READ8_MEMBER(model2_state::model2_crx_in_r) { - uint32_t ret = m_in0->read(); + uint8_t input = 0xff; - if(m_ctrlmode == 0) + switch (offset) { - return ret; - } - else - { - ret &= ~0x0030; - return ret | 0x00d0 | (m_eeprom->do_read() << 5); + case 0x01: + input = m_in[0]->read(); + if (m_ctrlmode != 0) + input = (input & ~0x0030) | 0x00d0 | (m_eeprom->do_read() << 5); + break; + case 0x02: + input = m_in[m_port_1c00004]->read(); + break; + case 0x03: + input = m_in[m_port_1c00006]->read(); + break; + case 0x06: + // 2A-CRX only? + input = (m_screen->vblank() << 3) | 0xf7; + break; + case 0x08: + input = m_in[m_port_1c00010]->read(); + break; + case 0x09: + input = m_in[m_port_1c00012]->read(); + break; + case 0x0a: + input = m_in[m_port_1c00014]->read(); + break; + case 0x0c: + case 0x0d: + input = hotd_lightgun_r(space, offset - 0x0c); + break; + case 0x0e: + // these must be high + input &= ~0x1a; + break; + case 0x0f: + if (m_analog_channel < 4) + { + input = m_analog_ports[m_analog_channel].read_safe(0); + ++m_analog_channel; + } + break; } -} -CUSTOM_INPUT_MEMBER(model2_state::_1c0001c_r) -{ - uint32_t iptval = 0x00ff; - if(m_analog_channel < 4) - { - iptval = m_analog_ports[m_analog_channel].read_safe(0); - ++m_analog_channel; - } - return iptval; + return input; } /* PORT_DIPSETTING( 0x00, "0" ) // 0: neutral @@ -652,7 +694,7 @@ CUSTOM_INPUT_MEMBER(model2_state::srallyc_gearbox_r) CUSTOM_INPUT_MEMBER(model2_state::rchase2_devices_r) { - return 0xffff; + return 0xff; } WRITE32_MEMBER(model2_state::rchase2_devices_w) @@ -1116,9 +1158,9 @@ WRITE32_MEMBER(model2_state::geo_w) /*****************************************************************************/ -READ32_MEMBER(model2_state::hotd_lightgun_r) +READ8_MEMBER(model2_state::hotd_lightgun_r) { - uint16_t res = 0xffff; + uint8_t res = 0xff; if(m_lightgun_mux < 8) res = (m_lightgun_ports[m_lightgun_mux >> 1].read_safe(0) >> ((m_lightgun_mux & 1)*8)) & 0xff; @@ -1126,7 +1168,7 @@ READ32_MEMBER(model2_state::hotd_lightgun_r) { uint16_t p1x,p1y,p2x,p2y; - res = 0xfffc; + res = 0xfc; p1x = m_lightgun_ports[1].read_safe(0); p1y = m_lightgun_ports[0].read_safe(0); @@ -1142,7 +1184,10 @@ READ32_MEMBER(model2_state::hotd_lightgun_r) } /* upper bits are presumably related to lightgun latches */ - return 0x000c0000 | res; + if (offset == 1) + return 0x0c; + else + return res; } WRITE32_MEMBER(model2_state::hotd_lightgun_w) @@ -1547,6 +1592,22 @@ READ32_MEMBER(model2_state::model2o_fifoctrl_r) return 0xffffffff; } +READ8_MEMBER(model2_state::model2o_in_r) +{ + // TODO: original model 2 actually uses a separate board for inputs, which transmits them to dual-port RAM + switch (offset) + { + case 0x00: return m_steer.read_safe(0xff); + case 0x01: return m_accel.read_safe(0xff); + case 0x02: return m_brake.read_safe(0xff); + case 0x08: return m_in[0]->read(); + case 0x09: return m_in[1]->read(); + case 0x0a: return m_in[2]->read(); + case 0x0f: return (m_screen->vblank() << 3) | 0xf7; + default: return 0xff; + } +} + /* original Model 2 overrides */ static ADDRESS_MAP_START( model2o_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x00200000, 0x0021ffff) AM_RAM @@ -1565,14 +1626,10 @@ static ADDRESS_MAP_START( model2o_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 AM_RANGE(0x12800000, 0x1281ffff) AM_RAM_WRITE(model2o_luma_w) AM_SHARE("lumaram") // polygon "luma" RAM - AM_RANGE(0x01c00000, 0x01c00003) AM_READ_PORT("1c00000") - AM_RANGE(0x01c00004, 0x01c00007) AM_READ_PORT("1c00004") - AM_RANGE(0x01c00010, 0x01c00013) AM_READ_PORT("1c00010") - AM_RANGE(0x01c00014, 0x01c00017) AM_READ_PORT("1c00014") - AM_RANGE(0x01c0001c, 0x01c0001f) AM_READ_PORT("1c0001c") - AM_RANGE(0x01c00040, 0x01c00043) AM_READ(daytona_unk_r ) - AM_RANGE(0x01c00100, 0x01c0010f) AM_READ8(virtuacop_lightgun_r,0x00ff00ff) - AM_RANGE(0x01c00110, 0x01c00113) AM_READ8(virtuacop_lightgun_offscreen_r,0x00ff00ff) + AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2o_in_r, 0x00ff00ff) + AM_RANGE(0x01c00040, 0x01c00043) AM_READ(daytona_unk_r) + AM_RANGE(0x01c00100, 0x01c0010f) AM_READ8(virtuacop_lightgun_r, 0x00ff00ff) + AM_RANGE(0x01c00110, 0x01c00113) AM_READ8(virtuacop_lightgun_offscreen_r, 0x00ff00ff) AM_RANGE(0x01c00200, 0x01c002ff) AM_RAM AM_SHARE("backup2") AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) @@ -1605,14 +1662,12 @@ static ADDRESS_MAP_START( model2a_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 AM_RANGE(0x12800000, 0x1281ffff) AM_RAM_WRITE(model2o_luma_w) AM_SHARE("lumaram") // polygon "luma" RAM - AM_RANGE(0x01c00000, 0x01c00003) AM_READ_PORT("1c00000") AM_WRITE(ctrl0_w ) - AM_RANGE(0x01c00004, 0x01c00007) AM_READ_PORT("1c00004") - AM_RANGE(0x01c00008, 0x01c0000f) AM_READNOP AM_WRITENOP - AM_RANGE(0x01c0000c, 0x01c0000f) AM_READ_PORT("1c0000c") - AM_RANGE(0x01c00010, 0x01c00013) AM_READ_PORT("1c00010") AM_WRITENOP - AM_RANGE(0x01c00014, 0x01c00017) AM_READ_PORT("1c00014") AM_WRITE(hotd_lightgun_w) - AM_RANGE(0x01c00018, 0x01c0001b) AM_READ(hotd_lightgun_r) - AM_RANGE(0x01c0001c, 0x01c0001f) AM_READ_PORT("1c0001c") AM_WRITE(analog_2b_w ) + AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) + AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) + AM_RANGE(0x01c00008, 0x01c0000f) AM_WRITENOP + AM_RANGE(0x01c00010, 0x01c00013) AM_WRITENOP + AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w) + AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w) AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) @@ -1645,15 +1700,11 @@ static ADDRESS_MAP_START( model2b_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x11400000, 0x1140ffff) AM_RAM AM_SHARE("lumaram") // polygon "luma" RAM (2b/2c) AM_RANGE(0x12800000, 0x1281ffff) AM_RAM AM_SHARE("lumaram") // polygon "luma" RAM - - AM_RANGE(0x01c00000, 0x01c00003) AM_READ_PORT("1c00000") AM_WRITE(ctrl0_w ) - AM_RANGE(0x01c00004, 0x01c00007) AM_READ_PORT("1c00004") - AM_RANGE(0x01c00008, 0x01c0000b) AM_READNOP AM_WRITENOP - AM_RANGE(0x01c0000c, 0x01c0000f) AM_READNOP - AM_RANGE(0x01c00010, 0x01c00013) AM_READ_PORT("1c00010") - AM_RANGE(0x01c00014, 0x01c00017) AM_READ_PORT("1c00014") AM_WRITE(hotd_lightgun_w) - AM_RANGE(0x01c00018, 0x01c0001b) AM_READ(hotd_lightgun_r) - AM_RANGE(0x01c0001c, 0x01c0001f) AM_READ_PORT("1c0001c") AM_WRITE(analog_2b_w ) + AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) + AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) + AM_RANGE(0x01c00008, 0x01c0000b) AM_WRITENOP + AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w) + AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w) AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) @@ -1677,12 +1728,10 @@ static ADDRESS_MAP_START( model2c_crx_mem, AS_PROGRAM, 32, model2_state ) AM_RANGE(0x11200000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) AM_RANGE(0x11400000, 0x1140ffff) AM_RAM AM_SHARE("lumaram") // polygon "luma" RAM (2b/2c) - AM_RANGE(0x01c00000, 0x01c00003) AM_READ_PORT("1c00000") AM_WRITE(ctrl0_w ) - AM_RANGE(0x01c00004, 0x01c00007) AM_READ_PORT("1c00004") - AM_RANGE(0x01c00010, 0x01c00013) AM_READ_PORT("1c00010") - AM_RANGE(0x01c00014, 0x01c00017) AM_READ_PORT("1c00014") AM_WRITE(hotd_lightgun_w) - AM_RANGE(0x01c00018, 0x01c0001b) AM_READ(hotd_lightgun_r) - AM_RANGE(0x01c0001c, 0x01c0001f) AM_READ_PORT("1c0001c") AM_WRITE(analog_2b_w ) + AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) + AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) + AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w) + AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w) AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w ) AM_IMPORT_FROM(model2_base_mem) @@ -1691,521 +1740,306 @@ ADDRESS_MAP_END /* Input definitions */ #define MODEL2_PLAYER_INPUTS(_n_, _b1_, _b2_, _b3_, _b4_) \ - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_##_b1_ ) PORT_PLAYER(_n_) \ - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_##_b2_ ) PORT_PLAYER(_n_) \ - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_##_b3_ ) PORT_PLAYER(_n_) \ - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_##_b4_ ) PORT_PLAYER(_n_) \ - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(_n_) \ - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(_n_) \ - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(_n_) \ - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(_n_) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_##_b1_ ) PORT_PLAYER(_n_) \ + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_##_b2_ ) PORT_PLAYER(_n_) \ + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_##_b3_ ) PORT_PLAYER(_n_) \ + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_##_b4_ ) PORT_PLAYER(_n_) \ + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(_n_) \ + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(_n_) \ + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(_n_) \ + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(_n_) static INPUT_PORTS_START( model2 ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c00000_r, nullptr) - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - - PORT_START("1c0000c") - PORT_BIT( 0xfffffff7, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0x0000001a, IP_ACTIVE_HIGH, IPT_SPECIAL ) // these must be high - PORT_BIT( 0x0000ffe5, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c0001c_r, nullptr) - PORT_START("IN0") - PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x0004, IP_ACTIVE_LOW ) - PORT_BIT(0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x0010, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT(0x0040, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1P Push Switch") PORT_CODE(KEYCODE_7) - PORT_BIT(0x0080, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2P Push Switch") PORT_CODE(KEYCODE_8) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_START2) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_SERVICE) PORT_NAME("1P Push Switch") PORT_CODE(KEYCODE_7) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_SERVICE) PORT_NAME("2P Push Switch") PORT_CODE(KEYCODE_8) PORT_START("IN1") MODEL2_PLAYER_INPUTS(1, BUTTON1, BUTTON2, BUTTON3, BUTTON4) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") MODEL2_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END static INPUT_PORTS_START( desert ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "STEER") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "ACCEL") - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "BRAKE") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0xfff7ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_START("IN0") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) // VR 1 (Blue) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) // VR 2 (Green) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) // VR 3 (Red) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(1) // VR 1 (Blue) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_PLAYER(1) // VR 2 (Green) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(1) // VR 3 (Red) PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) // shift - PORT_BIT( 0x0e, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // machine gun - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // cannon - PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) // shift + PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) // machine gun + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) // cannon + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("IN2") MODEL2_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4) PORT_START("STEER") - PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("ACCEL") - PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("BRAKE") - PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) INPUT_PORTS_END static INPUT_PORTS_START( vcop ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0xfff7ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_START("IN0") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_START2) + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("IN1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Trigger") - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Trigger") - PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Trigger") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2 Trigger") + PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("IN2") - PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) // <- one bit here enables "debug mode" + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) // <- one bit here enables "debug mode" PORT_START("P1_X") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) PORT_START("P1_Y") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) PORT_START("P2_X") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) PORT_START("P2_Y") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) INPUT_PORTS_END static INPUT_PORTS_START( daytona ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "STEER") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "ACCEL") - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "BRAKE") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0xfff7ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") - - PORT_START("IN0") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) // VR 1 (Red) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) // VR 2 (Blue) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) // VR 3 (Yellow) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(1) // VR 1 (Red) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_PLAYER(1) // VR 2 (Blue) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(1) // VR 3 (Yellow) PORT_START("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_PLAYER(1) // VR 4 (Green) - PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // shift 3 - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // shift 4 - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON7) PORT_PLAYER(1) // VR 4 (Green) + PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) // shift 3 + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) // shift 4 + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) PORT_START("IN2") MODEL2_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4) PORT_START("STEER") - PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("ACCEL") - PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("BRAKE") - PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) INPUT_PORTS_END -static INPUT_PORTS_START( manxtt ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c00000_r, nullptr) - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN3") - - PORT_START("1c0000c") - PORT_BIT( 0xffffffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN4") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0x0000001a, IP_ACTIVE_HIGH, IPT_SPECIAL ) // these must be high - PORT_BIT( 0x0000ffe5, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c0001c_r, nullptr) +static INPUT_PORTS_START( manxtt ) PORT_START("IN0") - PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x0004, IP_ACTIVE_LOW ) - PORT_BIT(0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x0040, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("P1 Start / VR") - PORT_BIT(0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) PORT_NAME("P1 Start / VR") + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x00, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN1") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN2") - PORT_BIT(0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) // shift up in Manx TT, Punch in Motoraid - PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) // shift down in Manx TT, Kick in Motoraid - PORT_BIT(0xffcf, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) // shift up in Manx TT, Punch in Motoraid + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) // shift down in Manx TT, Kick in Motoraid + PORT_BIT(0xcf, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN3") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN4") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("ANA0") // throttle - PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("ANA1") // brake - PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("ANA2") // bank - PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_REVERSE + PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_REVERSE INPUT_PORTS_END static INPUT_PORTS_START( srallyc ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c00000_r, nullptr) - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN3") - - PORT_START("1c0000c") - PORT_BIT( 0xffffffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN4") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0x0000001a, IP_ACTIVE_HIGH, IPT_SPECIAL ) // these must be high - PORT_BIT( 0x0000ffe5, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c0001c_r, nullptr) - PORT_START("IN0") - PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x0004, IP_ACTIVE_LOW ) - PORT_BIT(0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("VR") // VR - PORT_BIT(0x0040, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x0090, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(1) PORT_NAME("VR") // VR + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x90, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("IN1") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN2") - PORT_BIT(0x0070, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,srallyc_gearbox_r, nullptr) - PORT_BIT(0x008f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,srallyc_gearbox_r, nullptr) + PORT_BIT(0x8f, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("GEARS") // fake to handle gear bits - PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("GEAR N") - PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("GEAR 1") - PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("GEAR 2") - PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("GEAR 3") - PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("GEAR 4") + PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("GEAR N") + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("GEAR 1") + PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("GEAR 2") + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_PLAYER(1) PORT_NAME("GEAR 3") + PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_PLAYER(1) PORT_NAME("GEAR 4") PORT_START("IN3") - //PORT_BIT(0x00ff, 0x00, IPT_AD_STICK_Y ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_REVERSE PORT_NAME("Handle (Drive)") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + //PORT_BIT(0xff, 0x00, IPT_AD_STICK_Y) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_REVERSE PORT_NAME("Handle (Drive)") + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN4") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("ANA0") // steer - PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("ANA1") // accel - PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("ANA2") // brake - PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) INPUT_PORTS_END static INPUT_PORTS_START( vcop2 ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c00000_r, nullptr) - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN3") - - PORT_START("1c0000c") - PORT_BIT( 0xffffffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN4") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0x0000001a, IP_ACTIVE_HIGH, IPT_SPECIAL ) // these must be high - PORT_BIT( 0x0000ffe5, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c0001c_r, nullptr) - PORT_START("IN0") - PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x0004, IP_ACTIVE_LOW ) - PORT_BIT(0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x0010, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT(0x00c0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_START2) + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("IN1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Trigger") - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Trigger") - PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Trigger") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2 Trigger") + PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("IN2") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN3") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN4") - PORT_BIT(0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("P1_X") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) PORT_START("P1_Y") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) PORT_START("P2_X") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) PORT_START("P2_Y") - PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) + PORT_BIT(0x3ff, 0x200, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 0, 0x3ff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) INPUT_PORTS_END static INPUT_PORTS_START( bel ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c00000_r, nullptr) - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0x0000001a, IP_ACTIVE_HIGH, IPT_SPECIAL ) // these must be high - PORT_BIT( 0x0000ffe5, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c0001c_r, nullptr) - PORT_START("IN0") - PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT(0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW ) - PORT_BIT(0x0010, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT(0x0040, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1P Push Switch") PORT_CODE(KEYCODE_7) - PORT_BIT(0x0080, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2P Push Switch") PORT_CODE(KEYCODE_8) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_SERVICE_NO_TOGGLE(0x08, IP_ACTIVE_LOW) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_START2) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_SERVICE) PORT_NAME("1P Push Switch") PORT_CODE(KEYCODE_7) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_SERVICE) PORT_NAME("2P Push Switch") PORT_CODE(KEYCODE_8) PORT_START("IN1") MODEL2_PLAYER_INPUTS(1, BUTTON1, BUTTON2, BUTTON3, BUTTON4) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") MODEL2_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END static INPUT_PORTS_START( rchase2 ) - PORT_INCLUDE( model2 ) + PORT_INCLUDE(model2) PORT_MODIFY("IN1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // 1p shot - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // 2p shot - PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) // 1p shot + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) // 2p shot + PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_MODIFY("IN2") - PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,rchase2_devices_r, nullptr) + PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,rchase2_devices_r, nullptr) /* FIXME: don't know yet if min max values are really correct, we'll see ... */ PORT_START("ANA0") - PORT_BIT( 0x00ff, 0x0000, IPT_AD_STICK_X ) PORT_MINMAX(0x80,0x7f) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(2) + PORT_BIT(0xff, 0x00, IPT_AD_STICK_X) PORT_MINMAX(0x80,0x7f) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(2) PORT_START("ANA1") - PORT_BIT( 0x00ff, 0x0000, IPT_AD_STICK_X ) PORT_MINMAX(0x80,0x7f) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_AD_STICK_X) PORT_MINMAX(0x80,0x7f) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) PORT_START("ANA2") - PORT_BIT( 0x00ff, 0x0000, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(2) + PORT_BIT(0xff, 0x00, IPT_AD_STICK_Y) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(2) PORT_START("ANA3") - PORT_BIT( 0x00ff, 0x0000, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) + PORT_BIT(0xff, 0x00, IPT_AD_STICK_Y) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) INPUT_PORTS_END static INPUT_PORTS_START( skytargt ) - PORT_START("1c00000") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c00000_r, nullptr) - - PORT_START("1c00004") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - - PORT_START("1c0000c") - PORT_BIT( 0xfffffff7, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") - - PORT_START("1c00010") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN0") - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN1") - - PORT_START("1c00014") - PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "IN2") - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("1c0001c") - PORT_BIT( 0x0000001a, IP_ACTIVE_HIGH, IPT_SPECIAL ) // these must be high - PORT_BIT( 0x0000ffe5, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,_1c0001c_r, nullptr) - PORT_START("IN0") - PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT(0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_SERVICE_NO_TOGGLE( 0x0004, IP_ACTIVE_LOW ) - PORT_BIT(0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT(0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT(0x0040, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2) + PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_SERVICE1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN1") - PORT_BIT(0x000f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Machine Gun") - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Missile") - PORT_BIT(0x00c0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("P1 Machine Gun") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("P1 Missile") + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_START("IN2") MODEL2_PLAYER_INPUTS(2, BUTTON1, BUTTON2, BUTTON3, BUTTON4) - PORT_BIT(0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END @@ -2533,7 +2367,11 @@ static MACHINE_CONFIG_START( model2a ) MCFG_M2COMM_ADD("m2comm") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( manxttdx, model2a ) /* Includes a Model 1 Sound board for additional sounds - Deluxe version only */ +static MACHINE_CONFIG_DERIVED( manxtt, model2a ) + MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( manxttdx, manxtt ) /* Includes a Model 1 Sound board for additional sounds - Deluxe version only */ MCFG_SEGAM1AUDIO_ADD("m1audio") MCFG_SEGAM1AUDIO_RXD_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxd)) @@ -2558,6 +2396,7 @@ static MACHINE_CONFIG_DERIVED( model2a_0229, model2a ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( srallyc, model2a ) + MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc) MCFG_FRAGMENT_ADD(sj25_0207_01) MACHINE_CONFIG_END @@ -2634,6 +2473,10 @@ static MACHINE_CONFIG_DERIVED( model2b_0229, model2b ) // MCFG_SET_5838_READ_CALLBACK(model2_state, crypt_read_callback) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( indy500, model2b ) + MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc) +MACHINE_CONFIG_END + static ADDRESS_MAP_START( rchase2_iocpu_map, AS_PROGRAM, 8, model2_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM @@ -2727,6 +2570,10 @@ static MACHINE_CONFIG_DERIVED( model2c_5881, model2c ) MCFG_SET_READ_CALLBACK(model2_state, crypt_read_callback) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( overrev2c, model2c ) + MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc) +MACHINE_CONFIG_END + /* ROM definitions */ @@ -6289,7 +6136,7 @@ GAME( 1994, vcopa, vcop, model2o, vcop, model2_state, 0, ROT0, // Model 2A-CRX (TGPs, SCSP sound board) GAME( 1995, manxtt, 0, manxttdx, manxtt, model2_state, 0, ROT0, "Sega", "Manx TT Superbike - DX (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, manxttc, 0, model2a, manxtt, model2_state, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, manxttc, 0, manxtt, manxtt, model2_state, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, srallyc, 0, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, srallycdx, srallyc, srallyc, srallyc, model2_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) @@ -6303,8 +6150,8 @@ GAME( 1995, skytargt, 0, model2a, skytargt, model2_state, 0, GAME( 1996, doaa, doa, model2a_0229, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2A, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, zeroguna, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, zerogunaj, zerogun, model2a_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, motoraid, 0, model2a, manxtt, model2_state, 0, ROT0, "Sega", "Motor Raid - Twin", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, motoraiddx,motoraid, model2a, manxtt, model2_state, 0, ROT0, "Sega", "Motor Raid - Twin/DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, motoraid, 0, manxtt, manxtt, model2_state, 0, ROT0, "Sega", "Motor Raid - Twin", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, motoraiddx,motoraid, manxtt, manxtt, model2_state, 0, ROT0, "Sega", "Motor Raid - Twin/DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, dynamcop, 0, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, dyndeka2, dynamcop, model2a_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, pltkidsa, pltkids, model2a_5881, model2, model2_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) @@ -6315,21 +6162,21 @@ GAME( 1994, vstrikero, vstriker, model2b, model2, model2_state, 0, GAME( 1995, fvipers, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, fvipersb, fvipers, model2b, model2, model2_state, 0, ROT0, "Sega", "Fighting Vipers (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, gunblade, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Gunblade NY (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500, 0, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500d, indy500, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500to, indy500, model2b, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500, 0, indy500, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500d, indy500, indy500, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500to, indy500, indy500, srallyc, model2_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, schamp, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Sonic Championship (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, sfight, schamp, model2b, model2, model2_state, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, lastbrnx, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, lastbrnxu, lastbrnx, model2b, model2, model2_state, 0, ROT0, "Sega", "Last Bronx (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, lastbrnxj, lastbrnx, model2b, model2, model2_state, 0, ROT0, "Sega", "Last Bronx (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, doa, 0, model2b_0229, model2, model2_state, doa, ROT0, "Sega", "Dead or Alive (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, sgt24h, 0, model2b, srallyc, model2_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, sgt24h, 0, indy500, srallyc, model2_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, von, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, vonj, von, model2b, model2, model2_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, dynabb, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Dynamite Baseball", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, dynabb97, 0, model2b, model2, model2_state, 0, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, overrevb, overrev, model2b, srallyc, model2_state, 0, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, overrevb, overrev, indy500, srallyc, model2_state, 0, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, zerogun, 0, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, zerogunj, zerogun, model2b_5881, model2, model2_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, dynamcopb, dynamcop, model2b_5881, model2, model2_state, genprot, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) @@ -6343,8 +6190,8 @@ GAME( 1996, stcc, 0, stcc, model2, model2_state, 0, GAME( 1996, stccb, stcc, stcc, model2, model2_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, stcca, stcc, stcc, model2, model2_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, waverunr, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Wave Runner (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, hotd, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "The House of the Dead", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, overrev, 0, model2c, srallyc, model2_state, 0, ROT0, "Jaleco", "Over Rev (Model 2C, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, hotd, 0, model2c, vcop2, model2_state, 0, ROT0, "Sega", "The House of the Dead", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, overrev, 0, overrev2c, srallyc, model2_state, 0, ROT0, "Jaleco", "Over Rev (Model 2C, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, rascot2, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Royal Ascot II", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, segawski, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Sega Water Ski (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, topskatr, 0, model2c, model2, model2_state, 0, ROT0, "Sega", "Top Skater (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h index 560af94e7b5..7909a99dd5c 100644 --- a/src/mame/includes/model2.h +++ b/src/mame/includes/model2.h @@ -50,9 +50,12 @@ public: m_scsp(*this, "scsp"), m_cryptdevice(*this, "315_5881"), m_0229crypt(*this, "317_0229"), - m_in0(*this, "IN0"), + m_in(*this, "IN%u", 0), + m_steer(*this, "STEER"), + m_accel(*this, "ACCEL"), + m_brake(*this, "BRAKE"), m_gears(*this, "GEARS"), - m_analog_ports(*this, {"ANA0", "ANA1", "ANA2", "ANA3"}), + m_analog_ports(*this, "ANA%u", 0), m_lightgun_ports(*this, {"P1_Y", "P1_X", "P2_Y", "P2_X"}) { } @@ -86,11 +89,20 @@ public: optional_device m_cryptdevice; optional_device m_0229crypt; - required_ioport m_in0; + optional_ioport_array<5> m_in; + optional_ioport m_steer; + optional_ioport m_accel; + optional_ioport m_brake; optional_ioport m_gears; optional_ioport_array<4> m_analog_ports; optional_ioport_array<4> m_lightgun_ports; + int m_port_1c00004; + int m_port_1c00006; + int m_port_1c00010; + int m_port_1c00012; + int m_port_1c00014; + uint32_t m_intreq; uint32_t m_intena; uint32_t m_coproctl; @@ -134,8 +146,7 @@ public: uint8_t m_gearsel; uint8_t m_lightgun_mux; - DECLARE_CUSTOM_INPUT_MEMBER(_1c00000_r); - DECLARE_CUSTOM_INPUT_MEMBER(_1c0001c_r); + DECLARE_READ8_MEMBER(model2_crx_in_r); DECLARE_CUSTOM_INPUT_MEMBER(srallyc_gearbox_r); DECLARE_CUSTOM_INPUT_MEMBER(rchase2_devices_r); DECLARE_READ32_MEMBER(timers_r); @@ -146,6 +157,7 @@ public: DECLARE_WRITE32_MEMBER(analog_2b_w); DECLARE_READ32_MEMBER(fifoctl_r); DECLARE_READ32_MEMBER(model2o_fifoctrl_r); + DECLARE_READ8_MEMBER(model2o_in_r); DECLARE_READ32_MEMBER(videoctl_r); DECLARE_WRITE32_MEMBER(videoctl_w); DECLARE_WRITE32_MEMBER(rchase2_devices_w); @@ -163,7 +175,7 @@ public: DECLARE_WRITE32_MEMBER(geo_prg_w); DECLARE_READ32_MEMBER(geo_r); DECLARE_WRITE32_MEMBER(geo_w); - DECLARE_READ32_MEMBER(hotd_lightgun_r); + DECLARE_READ8_MEMBER(hotd_lightgun_r); DECLARE_WRITE32_MEMBER(hotd_lightgun_w); DECLARE_READ32_MEMBER(daytona_unk_r); DECLARE_READ32_MEMBER(model2_irq_r); @@ -209,6 +221,7 @@ public: DECLARE_DRIVER_INIT(zerogun); DECLARE_DRIVER_INIT(sgt24h); DECLARE_MACHINE_START(model2); + DECLARE_MACHINE_START(srallyc); DECLARE_MACHINE_RESET(model2o); DECLARE_VIDEO_START(model2); DECLARE_MACHINE_RESET(model2); -- cgit v1.2.3