diff options
author | Dirk Best <mail@dirk-best.de> | 2018-04-25 21:55:38 +0200 |
---|---|---|
committer | Dirk Best <mail@dirk-best.de> | 2018-04-25 21:57:23 +0200 |
commit | ef2a1b59822e5603c7350dee8ffb6abcda8964dd (patch) | |
tree | 0ef7e336f08910969b04cf3f17c8a6fe2226d5ac | |
parent | 39aa80f2a7074e08cd962341ae9a23598a219ca1 (diff) |
model2: Use 315-5649 device. Improve and clean up all inputs.
-rw-r--r-- | src/mame/drivers/model2.cpp | 1516 | ||||
-rw-r--r-- | src/mame/includes/model2.h | 47 |
2 files changed, 789 insertions, 774 deletions
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index ed5585b06ed..a3ed58000c5 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -97,6 +97,7 @@ #include "machine/msm6253.h" #include "machine/nvram.h" #include "machine/315_5296.h" +#include "machine/315_5649.h" #include "machine/model1io.h" #include "sound/2612intf.h" #include "video/segaic24.h" @@ -154,14 +155,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(model2_state::model2_timer_cb) m_timerrun[tnum] = 0; } -MACHINE_START_MEMBER(model2_state,model2) +MACHINE_START_MEMBER( model2_state, model2 ) { - m_port_1c00004 = 1; - m_port_1c00006 = 2; - m_port_1c00010 = 0; - m_port_1c00012 = 1; - m_port_1c00014 = 2; - // initialize custom debugger pool, @see machine/model2.cpp debug_init(); @@ -172,7 +167,6 @@ MACHINE_START_MEMBER(model2_state,model2) save_item(NAME(m_geoctl)); save_item(NAME(m_geocnt)); save_item(NAME(m_ctrlmode)); - save_item(NAME(m_analog_channel)); save_item(NAME(m_timervals[0])); save_item(NAME(m_timervals[1])); save_item(NAME(m_timervals[2])); @@ -253,40 +247,7 @@ MACHINE_START_MEMBER(model2c_state,model2c) [ ]() { }); } -MACHINE_START_MEMBER(model2_tgp_state,srallyc) -{ - MACHINE_START_CALL_MEMBER(model2_tgp); - - m_port_1c00004 = 2; - m_port_1c00006 = 3; - m_port_1c00010 = 0; - m_port_1c00012 = 1; - m_port_1c00014 = 4; -} - -MACHINE_START_MEMBER(model2b_state,srallyc) -{ - MACHINE_START_CALL_MEMBER(model2b); - - m_port_1c00004 = 2; - m_port_1c00006 = 3; - m_port_1c00010 = 0; - m_port_1c00012 = 1; - m_port_1c00014 = 4; -} - -MACHINE_START_MEMBER(model2c_state,srallyc) -{ - MACHINE_START_CALL_MEMBER(model2c); - - 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) +MACHINE_RESET_MEMBER( model2_state, model2_common ) { int i; @@ -297,7 +258,6 @@ MACHINE_RESET_MEMBER(model2_state,model2_common) m_geoctl = 0; m_geocnt = 0; m_ctrlmode = 0; - m_analog_channel = 0; m_timervals[0] = 0xfffff; m_timervals[1] = 0xfffff; @@ -399,23 +359,12 @@ READ16_MEMBER(model2_state::colorxlat_r) return m_colorxlat[offset]; } -WRITE32_MEMBER(model2_state::ctrl0_w) -{ - if(ACCESSING_BITS_0_7) - { - m_ctrlmode = data & 0x01; - m_eeprom->di_write((data & 0x20) >> 5); - m_eeprom->clk_write((data & 0x80) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); - } -} - -WRITE32_MEMBER(model2_state::analog_2b_w) +// Apparently original Model 2 doesn't have fifo control? +READ32_MEMBER(model2o_state::fifo_control_2o_r) { - m_analog_channel = (data >> 16) & 0x07; + return 0xffffffff; } - READ32_MEMBER(model2_state::fifo_control_2a_r) { uint32_t r = 0; @@ -448,205 +397,6 @@ WRITE32_MEMBER(model2_state::videoctl_w) COMBINE_DATA(&m_videocontrol); } -// 315-5649 -READ8_MEMBER(model2_state::model2_crx_in_r) -{ - uint8_t input = 0xff; - - switch (offset) - { - 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; - // port G - case 0x06: - input = m_dsw->read(); - 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: - if (m_lightgun_mux < 8) - input = lightgun_coords_r(space, m_lightgun_mux); - else - input = lightgun_offscreen_r(space, 0); - break; - case 0x0d: - input = 0x0c; // lightgun latches? - 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; - } - - return input; -} - -/* PORT_DIPSETTING( 0x00, "0" ) // 0: neutral - PORT_DIPSETTING( 0x10, "1" ) // 2nd gear - PORT_DIPSETTING( 0x20, "2" ) // 1st gear - PORT_DIPSETTING( 0x30, "3" ) - PORT_DIPSETTING( 0x40, "4" ) - PORT_DIPSETTING( 0x50, "5" ) // 4th gear - PORT_DIPSETTING( 0x60, "6" ) // 3rd gear - PORT_DIPSETTING( 0x70, "7" )*/ - -/* Used by Sega Rally and Daytona USA, others might be different */ -CUSTOM_INPUT_MEMBER(model2_state::daytona_gearbox_r) -{ - uint8_t res = m_gears.read_safe(0); - int i; - const uint8_t gearvalue[5] = { 0, 2, 1, 6, 5 }; - - for(i=0;i<5;i++) - { - if(res & 1<<i) - { - m_gearsel = i; - return gearvalue[i]; - } - } - - return gearvalue[m_gearsel]; -} - -/* - Rail Chase 2 "Drive I/O BD" documentation - - Aux board 837-11694, Z80 (4Mhz) with program rom EPR-17895 - - commands 0x2* are for device status bits (all of them active low) - - command 0x27 (4 port valve rear cylinder) - ---- --xx Cylinder Position (00 - neutral, 01 - up, 10 - down, 11 - error) - - command 0x29 - ---- -x-- Compressor Motor - ---- --x- Unloader Valve - ---- ---x Compression Valve - - command 0x2a (4 port valve left cylinder) - ---- -x-- Rev Valve - ---- --x- Down Valve - ---- ---x Up Valve - - command 0x2b (4 port valve right cylinder) - ---- -x-- Rev Valve - ---- --x- Down Valve - ---- ---x Up Valve - - command 0x2e - ---- --xx Compression SW (00 - error, 01 - low, 10 - high, 11 - error) - - command 0x2f - ---- x--- Emergency SW - ---- ---x Safety Sensor - - These are all used on network check, probably some specific data port R/Ws - - command 0x3b - command 0xe0 - command 0xd0 - command 0xb0 - command 0x70 - command 0x0e - command 0x0d - command 0x0b - command 0x07 - - Every other write of this controls devices behaviour: - - command 0x4f (left up valve off) - command 0x5b (left down valve off) - command 0x5d (compression valve on) - command 0x5e (left rev valve on) - command 0x5f (left Cylinder reset) - - command 0x6f (right up valve off) - command 0x7b (right down valve off) - command 0x7d (compression valve on) - command 0x7e (right rev valve on) - command 0x7f (right Cylinder reset) - - command 0x84 (reset up/down valves of rear cylinder) - command 0x85 (rear up valve on) - command 0x86 (rear down valve on) - - command 0x8b (compression valve on) - command 0x8d (left rev valve is on) - command 0x8e (right rev valve is on) - command 0x8f (reset 4 port valve left / right cylinders and compression valve) - -*/ - -// simulate this so that it passes the initial checks -CUSTOM_INPUT_MEMBER(model2_state::rchase2_devices_r) -{ - uint8_t res; - - res = 0xff; - - if(m_cmd_data == 0xe0 || m_cmd_data == 0x0e) - res &= ~1; - if(m_cmd_data == 0xd0 || m_cmd_data == 0x0d) - res &= ~2; - if(m_cmd_data == 0xb0 || m_cmd_data == 0x0b) - res &= ~4; - if(m_cmd_data == 0x70 || m_cmd_data == 0x07) - res &= ~8; - - return res; -} - -WRITE32_MEMBER(model2_state::rchase2_devices_w) -{ - /* - 0x00040000 start 1 lamp - 0x00080000 start 2 lamp - */ - - if(mem_mask == 0x0000ffff) - m_cmd_data = data; -} - - -WRITE32_MEMBER(model2_state::srallyc_devices_w) -{ - /* - 0x00040000 start 1 lamp - 0x00200000 vr lamp - 0x00800000 leader lamp - */ - - if(mem_mask == 0x000000ff || mem_mask == 0x0000ffff) - { - m_driveio_comm_data = data & 0xff; - m_drivecpu->set_input_line(0, HOLD_LINE); - } -} - // Coprocessor - Common READ32_MEMBER(model2_state::copro_prg_r) { @@ -1432,6 +1182,7 @@ void model2_state::model2_5881_mem(address_map &map) map(0x01d90000, 0x01d9ffff).m(m_cryptdevice, FUNC(sega_315_5881_crypt_device::iomap_le)); } + //************************************************************************** // LIGHTGUN //************************************************************************** @@ -1439,9 +1190,20 @@ void model2_state::model2_5881_mem(address_map &map) // Interface board ID: 837-12079 // ALTERA FLEX + Sega 315-5338A -READ8_MEMBER( model2_state::lightgun_coords_r ) +READ8_MEMBER( model2_state::lightgun_r ) +{ + if (m_lightgun_mux < 8) + { + uint16_t data = m_lightgun_ports[m_lightgun_mux >> 1].read_safe(0); + return m_lightgun_mux & 1 ? (data >> 8) : data; + } + else + return lightgun_offscreen_r(space, 0); +} + +WRITE8_MEMBER( model2_state::lightgun_w ) { - return (m_lightgun_ports[offset >> 1].read_safe(0) >> ((offset & 1)*8)) & 0xff; + m_lightgun_mux = data; } // handles offscreen gun trigger detection here @@ -1476,16 +1238,6 @@ READ8_MEMBER( model2_state::lightgun_offscreen_r ) return (data >> ((offset & 1)*8)) & 0xff; } -WRITE8_MEMBER( model2_state::lightgun_mux_w ) -{ - m_lightgun_mux = data; -} - -/* Apparently original Model 2 doesn't have fifo control? */ -READ32_MEMBER(model2o_state::fifo_control_2o_r) -{ - return 0xffffffff; -} //************************************************************************** // OUTPUTS @@ -1714,13 +1466,7 @@ void model2a_state::model2a_crx_mem(address_map &map) model2_tgp_mem(map); map(0x00200000, 0x0023ffff).ram(); - - map(0x01c00000, 0x01c0001f).r(this, FUNC(model2a_state::model2_crx_in_r)).umask32(0x00ff00ff); - map(0x01c00000, 0x01c00003).w(this, FUNC(model2a_state::ctrl0_w)); - map(0x01c00008, 0x01c0000f).nopw(); - map(0x01c00010, 0x01c00013).nopw(); - map(0x01c00014, 0x01c00017).w(this, FUNC(model2a_state::lightgun_mux_w)).umask32(0x000000ff); - map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2a_state::analog_2b_w)); + map(0x01c00000, 0x01c0001f).rw("io", FUNC(sega_315_5649_device::read), FUNC(sega_315_5649_device::write)).umask32(0x00ff00ff); map(0x01c00040, 0x01c00043).nopw(); map(0x01c80000, 0x01c80003).rw(this, FUNC(model2a_state::model2_serial_r), FUNC(model2a_state::model2_serial_w)); } @@ -1760,12 +1506,7 @@ void model2b_state::model2b_crx_mem(address_map &map) map(0x11400000, 0x1140ffff).rw(this, FUNC(model2b_state::lumaram_r), FUNC(model2b_state::lumaram_w)); // polygon "luma" RAM (2b/2c) map(0x12800000, 0x1281ffff).rw(this, FUNC(model2b_state::lumaram_r), FUNC(model2b_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM - map(0x01c00000, 0x01c0001f).r(this, FUNC(model2b_state::model2_crx_in_r)).umask32(0x00ff00ff); - map(0x01c00000, 0x01c00003).w(this, FUNC(model2b_state::ctrl0_w)); - map(0x01c00008, 0x01c0000b).nopw(); - map(0x01c00010, 0x01c00013).nopw(); // gunblade - map(0x01c00014, 0x01c00017).w(this, FUNC(model2b_state::lightgun_mux_w)).umask32(0x000000ff); - map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2b_state::analog_2b_w)); + map(0x01c00000, 0x01c0001f).rw("io", FUNC(sega_315_5649_device::read), FUNC(sega_315_5649_device::write)).umask32(0x00ff00ff); map(0x01c00040, 0x01c00043).nopw(); map(0x01c80000, 0x01c80003).rw(this, FUNC(model2b_state::model2_serial_r), FUNC(model2b_state::model2_serial_w)); } @@ -1797,12 +1538,7 @@ void model2c_state::model2c_crx_mem(address_map &map) map(0x11400000, 0x1140ffff).rw(this, FUNC(model2c_state::lumaram_r), FUNC(model2c_state::lumaram_w)); // polygon "luma" RAM (2b/2c) map(0x12800000, 0x1281ffff).rw(this, FUNC(model2c_state::lumaram_r), FUNC(model2c_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM - map(0x01c00000, 0x01c0001f).r(this, FUNC(model2c_state::model2_crx_in_r)).umask32(0x00ff00ff); - map(0x01c00000, 0x01c00003).w(this, FUNC(model2c_state::ctrl0_w)); - map(0x01c00008, 0x01c0000b).nopw(); - map(0x01c00010, 0x01c00013).nopw(); - map(0x01c00014, 0x01c00017).w(this, FUNC(model2c_state::lightgun_mux_w)).umask32(0x000000ff); - map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2c_state::analog_2b_w)); + map(0x01c00000, 0x01c0001f).rw("io", FUNC(sega_315_5649_device::read), FUNC(sega_315_5649_device::write)).umask32(0x00ff00ff); map(0x01c80000, 0x01c80003).rw(this, FUNC(model2c_state::model2_serial_r), FUNC(model2c_state::model2_serial_w)); } @@ -1813,12 +1549,195 @@ void model2c_state::model2c_5881_mem(address_map &map) } +//************************************************************************** +// DRIVE BOARD +//************************************************************************** -/*********************************** - * - * Input definitions - * - **********************************/ +/* + Rail Chase 2 "Drive I/O BD" documentation + + Aux board 837-11694, Z80 (4Mhz) with program rom EPR-17895 + + commands 0x2* are for device status bits (all of them active low) + + command 0x27 (4 port valve rear cylinder) + ---- --xx Cylinder Position (00 - neutral, 01 - up, 10 - down, 11 - error) + + command 0x29 + ---- -x-- Compressor Motor + ---- --x- Unloader Valve + ---- ---x Compression Valve + + command 0x2a (4 port valve left cylinder) + ---- -x-- Rev Valve + ---- --x- Down Valve + ---- ---x Up Valve + + command 0x2b (4 port valve right cylinder) + ---- -x-- Rev Valve + ---- --x- Down Valve + ---- ---x Up Valve + + command 0x2e + ---- --xx Compression SW (00 - error, 01 - low, 10 - high, 11 - error) + + command 0x2f + ---- x--- Emergency SW + ---- ---x Safety Sensor + + These are all used on network check, probably some specific data port R/Ws + + command 0x3b + command 0xe0 + command 0xd0 + command 0xb0 + command 0x70 + command 0x0e + command 0x0d + command 0x0b + command 0x07 + + Every other write of this controls devices behaviour: + + command 0x4f (left up valve off) + command 0x5b (left down valve off) + command 0x5d (compression valve on) + command 0x5e (left rev valve on) + command 0x5f (left Cylinder reset) + + command 0x6f (right up valve off) + command 0x7b (right down valve off) + command 0x7d (compression valve on) + command 0x7e (right rev valve on) + command 0x7f (right Cylinder reset) + + command 0x84 (reset up/down valves of rear cylinder) + command 0x85 (rear up valve on) + command 0x86 (rear down valve on) + + command 0x8b (compression valve on) + command 0x8d (left rev valve is on) + command 0x8e (right rev valve is on) + command 0x8f (reset 4 port valve left / right cylinders and compression valve) + +*/ + +// simulate this so that it passes the initial checks +READ8_MEMBER( model2_state::rchase2_drive_board_r ) +{ + uint8_t data = 0xff; + + if(m_cmd_data == 0xe0 || m_cmd_data == 0x0e) + data &= ~1; + if(m_cmd_data == 0xd0 || m_cmd_data == 0x0d) + data &= ~2; + if(m_cmd_data == 0xb0 || m_cmd_data == 0x0b) + data &= ~4; + if(m_cmd_data == 0x70 || m_cmd_data == 0x07) + data &= ~8; + + return data; +} + +WRITE8_MEMBER( model2_state::rchase2_drive_board_w ) +{ + m_cmd_data = data; +} + +WRITE8_MEMBER( model2_state::drive_board_w ) +{ + m_driveio_comm_data = data; + m_drivecpu->set_input_line(0, HOLD_LINE); +} + + +//************************************************************************** +// INPUT HANDLING +//************************************************************************** + +WRITE8_MEMBER( model2_state::eeprom_w ) +{ + m_ctrlmode = BIT(data, 0); + + m_eeprom->di_write(BIT(data, 5)); + m_eeprom->clk_write(BIT(data, 7) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write(BIT(data, 6) ? ASSERT_LINE : CLEAR_LINE); +} + +READ8_MEMBER( model2_state::in0_r ) +{ + uint8_t data = m_in0->read(); + + if (m_ctrlmode) + return (data & 0xc0) | (m_eeprom->do_read() << 5) | (data & 0x1f); + else + return data; +} + +/* PORT_DIPSETTING( 0x00, "0" ) // 0: neutral + PORT_DIPSETTING( 0x10, "1" ) // 2nd gear + PORT_DIPSETTING( 0x20, "2" ) // 1st gear + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x40, "4" ) + PORT_DIPSETTING( 0x50, "5" ) // 4th gear + PORT_DIPSETTING( 0x60, "6" ) // 3rd gear + PORT_DIPSETTING( 0x70, "7" ) +*/ + +// Used by Sega Rally and Daytona USA, others might be different +CUSTOM_INPUT_MEMBER(model2_state::daytona_gearbox_r) +{ + uint8_t res = m_gears.read_safe(0); + int i; + const uint8_t gearvalue[5] = { 0, 2, 1, 6, 5 }; + + for(i=0;i<5;i++) + { + if(res & 1<<i) + { + m_gearsel = i; + return gearvalue[i]; + } + } + + return gearvalue[m_gearsel]; +} + + +//************************************************************************** +// INPUT PORT DEFINITIONS +//************************************************************************** + +static INPUT_PORTS_START( model2 ) + 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_START("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(1) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(1) + 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") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(2) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) +INPUT_PORTS_END static INPUT_PORTS_START( gears ) PORT_START("GEARS") // fake to handle gear bits @@ -1830,24 +1749,23 @@ static INPUT_PORTS_START( gears ) INPUT_PORTS_END static INPUT_PORTS_START( daytona ) + PORT_INCLUDE(model2) PORT_INCLUDE(gears) - 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_MODIFY("IN0") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_NAME("VR1 (Red)") PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON7) PORT_NAME("VR2 (Blue)") PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON8) PORT_NAME("VR3 (Yellow)") - PORT_START("IN1") + PORT_MODIFY("IN1") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON9) PORT_NAME("VR4 (Green)") PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state, daytona_gearbox_r, nullptr) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_MODIFY("IN2") + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_START("STEER") PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) @@ -1859,23 +1777,23 @@ static INPUT_PORTS_START( daytona ) INPUT_PORTS_END static INPUT_PORTS_START( desert ) - 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_INCLUDE(model2) + + PORT_MODIFY("IN0") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("VR1 (Blue)") PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_NAME("VR2 (Green)") PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_NAME("VR3 (Red)") - PORT_START("IN1") + PORT_MODIFY("IN1") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Shift") PORT_TOGGLE PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Machine Gun") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Cannon") PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_MODIFY("IN2") + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_START("STEER") PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) @@ -1887,25 +1805,19 @@ static INPUT_PORTS_START( desert ) INPUT_PORTS_END static INPUT_PORTS_START( vcop ) - 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_INCLUDE(model2) - PORT_START("IN1") + PORT_MODIFY("IN1") 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_MODIFY("IN2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) PORT_DIPNAME(0x02, 0x02, "No enemies") PORT_DIPLOCATION("DEBUG:1") PORT_DIPSETTING( 0x02, DEF_STR( Off )) PORT_DIPSETTING( 0x00, DEF_STR( On )) - PORT_BIT(0xfd, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("P1_X") PORT_BIT(0x3ff, 0x17c, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(0x083, 0x276) PORT_SENSITIVITY(50) PORT_KEYDELTA(13) PORT_PLAYER(1) @@ -1920,85 +1832,80 @@ static INPUT_PORTS_START( vcop ) PORT_BIT(0x3ff, 0x0e8, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX(0x027, 0x1a9) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2) INPUT_PORTS_END -static INPUT_PORTS_START( model2 ) - 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(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) +INPUT_PORTS_START( vf2 ) + PORT_INCLUDE(model2) - PORT_START("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) - 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_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Punch") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("P1 Kick") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("P1 Guard") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_START("IN2") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_MODIFY("IN2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2 Punch") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("P2 Kick") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) PORT_NAME("P2 Guard") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) +INPUT_PORTS_END - PORT_START("DSW") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:1") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:2") - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:3") - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +static INPUT_PORTS_START( manxtt ) + PORT_INCLUDE(model2) + + PORT_MODIFY("IN0") + PORT_BIT(0x30, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) PORT_NAME("Start / VR") + + PORT_MODIFY("IN1") + PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_CODE(KEYCODE_UP) PORT_NAME("Shift Up") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_CODE(KEYCODE_DOWN) PORT_NAME("Shift Down") + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_MODIFY("IN2") + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_START("THROTTLE") + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) + + PORT_START("BRAKE") + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) + + PORT_START("BANK") + PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_REVERSE INPUT_PORTS_END -static INPUT_PORTS_START( zerogun ) - PORT_INCLUDE( model2 ) +static INPUT_PORTS_START( srallyc ) + PORT_INCLUDE(model2) + PORT_INCLUDE(gears) + + PORT_MODIFY("IN0") + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_NAME("VR") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) PORT_MODIFY("IN1") - PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state, daytona_gearbox_r, nullptr) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_MODIFY("IN2") - PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0xff, 0x00, IPT_PEDAL3) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_NAME("Hand Brake") - PORT_MODIFY("DSW") - // in service mode, enables scroll check, polygon check, bg check, stage select - PORT_DIPNAME( 0x01, 0x01, "Enable Debug Menu" ) PORT_DIPLOCATION("SW:1") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_START("STEER") + PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_NAME("Steering Wheel") + + PORT_START("ACCEL") + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_NAME("Accelerate Pedal") + + PORT_START("BRAKE") + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_NAME("Brake Pedal") INPUT_PORTS_END static INPUT_PORTS_START( vcop2 ) PORT_INCLUDE(vcop) PORT_MODIFY("IN2") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("P1_X") PORT_BIT(0x3ff, 0x17f, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(137, 630) PORT_SENSITIVITY(50) PORT_KEYDELTA(13) PORT_PLAYER(1) @@ -2011,417 +1918,389 @@ static INPUT_PORTS_START( vcop2 ) PORT_MODIFY("P2_Y") PORT_BIT(0x3ff, 0x0e6, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 36, 425) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2) - - PORT_START("DSW") - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:1") - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:2") - PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:3") - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static INPUT_PORTS_START( gunblade ) - PORT_INCLUDE( vcop2 ) +static INPUT_PORTS_START( skytargt ) + PORT_INCLUDE(model2) - PORT_MODIFY("P1_X") - PORT_BIT( 0x3ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("IN0") + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("View Change") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) - PORT_MODIFY("P1_Y") - PORT_BIT( 0x3ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("IN1") + PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Machine Gun") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Missile") + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN) - PORT_MODIFY("P2_X") - PORT_BIT( 0x3ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("IN2") + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN) - PORT_MODIFY("P2_Y") - PORT_BIT( 0x3ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("STICKX") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_REVERSE - PORT_START("ANA0") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) + PORT_START("STICKY") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) +INPUT_PORTS_END - PORT_START("ANA1") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) +INPUT_PORTS_START( doa ) + PORT_INCLUDE(model2) - PORT_START("ANA2") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) PORT_REVERSE + PORT_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Hold") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("P1 Punch") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("P1 Kick") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_START("ANA3") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) PORT_REVERSE + PORT_MODIFY("IN2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2 Hold") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("P2 Punch") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) PORT_NAME("P2 Kick") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) INPUT_PORTS_END -static INPUT_PORTS_START( manxtt ) - PORT_INCLUDE( model2 ) - - PORT_MODIFY("IN0") - 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 ) +static INPUT_PORTS_START( zerogun ) + PORT_INCLUDE(model2) PORT_MODIFY("IN1") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shift Up") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Shift Down") - PORT_BIT(0xcf, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_START("DSW") + // in service mode, enables scroll check, polygon check, bg check, stage select + PORT_DIPNAME(0x01, 0x01, "Enable Debug Menu") PORT_DIPLOCATION("SW:1") + PORT_DIPSETTING( 0x01, DEF_STR( Off )) + PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW:8") +INPUT_PORTS_END - PORT_START("IN3") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) +static INPUT_PORTS_START( motoraid ) + PORT_INCLUDE(manxtt) - PORT_START("IN4") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_MODIFY("IN1") + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Punch") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Kick") +INPUT_PORTS_END - PORT_START("ANA0") // throttle - PORT_BIT(0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) +static INPUT_PORTS_START( dynamcop ) + PORT_INCLUDE(model2) - PORT_START("ANA1") // brake - PORT_BIT(0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Punch") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("P1 Kick") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("P1 Jump") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_START("ANA2") // bank - PORT_BIT(0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_REVERSE + PORT_MODIFY("IN2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2 Punch") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("P2 Kick") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) PORT_NAME("P2 Jump") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) INPUT_PORTS_END -static INPUT_PORTS_START( motoraid ) - PORT_INCLUDE( manxtt ) +static INPUT_PORTS_START( pltkids ) + PORT_INCLUDE(model2) + + PORT_MODIFY("IN1") + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Punch") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Kick") + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) INPUT_PORTS_END -static INPUT_PORTS_START( srallyc ) - PORT_INCLUDE( model2 ) - PORT_INCLUDE( gears ) - - PORT_MODIFY("IN0") - 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 ) +static INPUT_PORTS_START( rchase2 ) + PORT_INCLUDE(model2) PORT_MODIFY("IN1") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) + PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,daytona_gearbox_r, nullptr) - PORT_BIT(0x8f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN3") - PORT_BIT(0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_NAME("P1 Hand Brake") + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_START("IN4") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("P1_X") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(1) PORT_REVERSE - PORT_START("ANA0") // steer - PORT_BIT(0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_NAME("P1 Steering Wheel") + PORT_START("P1_Y") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(1) PORT_REVERSE - PORT_START("ANA1") // accel - PORT_BIT(0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_NAME("P1 Accelerate Pedal") + PORT_START("P2_X") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(2) PORT_REVERSE - PORT_START("ANA2") // brake - PORT_BIT(0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_NAME("P1 Brake Pedal") + PORT_START("P2_Y") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(2) PORT_REVERSE INPUT_PORTS_END -static INPUT_PORTS_START( sgt24h ) - PORT_INCLUDE( srallyc ) +static INPUT_PORTS_START( vstriker ) + PORT_INCLUDE(model2) - PORT_MODIFY("IN0") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED ) + // oddly enough service mode returns standard 1-2-3 layout but actual ingame is 2-3-1 + // also bit 3 repeats bit 2 functionality. + PORT_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("P1 Long Pass") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("P1 Shoot") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Short Pass") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("View Button") - PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNKNOWN ) - // notice that these are exclusive inputs, also if bit 6 or 7 are enabled then shifting doesn't work - // (i.e. they probably took the gearbox device and modded over it) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Shift Up") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Shift Down") - PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_MODIFY("IN3") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_MODIFY("GEARS") - PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("P2 Long Pass") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) PORT_NAME("P2 Shoot") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2 Short Pass") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) INPUT_PORTS_END -static INPUT_PORTS_START( hotd ) - PORT_INCLUDE(vcop2) +static INPUT_PORTS_START( gunblade ) + PORT_INCLUDE(rchase2) PORT_MODIFY("P1_X") - PORT_BIT(0x3ff, 0x180, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(173, 596) PORT_SENSITIVITY(50) PORT_KEYDELTA(13) PORT_PLAYER(1) - - PORT_MODIFY("P1_Y") - PORT_BIT(0x3ff, 0x0e9, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 87, 380) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(1) + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(1) PORT_MODIFY("P2_X") - PORT_BIT(0x3ff, 0x17b, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(163, 596) PORT_SENSITIVITY(50) PORT_KEYDELTA(13) PORT_PLAYER(2) - - PORT_MODIFY("P2_Y") - PORT_BIT(0x3ff, 0x0e9, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 87, 380) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2) -INPUT_PORTS_END - -static INPUT_PORTS_START( overrev ) - PORT_INCLUDE( sgt24h ) - - PORT_MODIFY("IN2") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("View 1 Button") - // optional, enableable when hardware type isn't in "normal (2in1)" mode (overrev) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("View 2 Button") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(2) INPUT_PORTS_END -static INPUT_PORTS_START( bel ) - PORT_INCLUDE( gunblade ) +static INPUT_PORTS_START( indy500 ) + PORT_INCLUDE(model2) PORT_MODIFY("IN0") - // they reversed these two for some reason - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_SERVICE_NO_TOGGLE(0x08, IP_ACTIVE_LOW ) + PORT_BIT(0x30, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) PORT_MODIFY("IN1") - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Missile") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Missile") -// PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) -INPUT_PORTS_END - -static INPUT_PORTS_START( rchase2 ) - PORT_INCLUDE( gunblade ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("View 1 (Zoom In)") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("View 2 (Zoom Out)") + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) + // notice that these are exclusive inputs, also if bit 6 or 7 are enabled then shifting doesn't work + // (i.e. they probably took the gearbox device and modded over it) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_CODE(KEYCODE_UP) PORT_NAME("Shift Up") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_CODE(KEYCODE_DOWN) PORT_NAME("Shift Down") + PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, model2_state,rchase2_devices_r, nullptr) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) - // reversed p1 and p2 wrt Gunblade - PORT_MODIFY("ANA0") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) PORT_REVERSE - - PORT_MODIFY("ANA1") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) PORT_REVERSE + PORT_START("STEER") + PORT_BIT(0xff, 0x80, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_NAME("Steering Wheel") - PORT_MODIFY("ANA2") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(2) PORT_REVERSE + PORT_START("ACCEL") + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_NAME("Gas Pedal") - PORT_MODIFY("ANA3") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_PLAYER(1) PORT_REVERSE + PORT_START("BRAKE") + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(30) PORT_KEYDELTA(10) PORT_NAME("Brake Pedal") INPUT_PORTS_END -static INPUT_PORTS_START( skytargt ) - PORT_INCLUDE( model2 ) - - PORT_MODIFY("IN0") - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 View Change") - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +static INPUT_PORTS_START( von ) + PORT_INCLUDE(model2) PORT_MODIFY("IN1") - 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_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("P1 Left Shot") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("P1 Left Dash") + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT) PORT_MODIFY("IN2") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("ANA0") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("P1 Right Shot") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("P1 Right Dash") + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT) +INPUT_PORTS_END - PORT_START("ANA1") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_START( schamp ) + PORT_INCLUDE(model2) - PORT_START("ANA2") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) PORT_REVERSE + PORT_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1 Punch") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("P1 Kick") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("P1 Barrier") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_START("ANA3") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_MODIFY("IN2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2 Punch") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("P2 Kick") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) PORT_NAME("P2 Barrier") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) INPUT_PORTS_END -static INPUT_PORTS_START( dynabb ) - PORT_INCLUDE( model2 ) - - PORT_START("ANA0") - PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(100) PORT_KEYDELTA(50) PORT_PLAYER(1) PORT_NAME("P1 Bat Swing") +static INPUT_PORTS_START( sgt24h ) + PORT_INCLUDE(indy500) - PORT_START("ANA1") - PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(100) PORT_KEYDELTA(50) PORT_PLAYER(2) PORT_NAME("P2 Bat Swing") + PORT_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("View 1") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED) INPUT_PORTS_END -static INPUT_PORTS_START( vstriker ) - PORT_INCLUDE( model2 ) +static INPUT_PORTS_START( dynabb ) + PORT_INCLUDE(model2) - // oddly enough service mode returns standard 1-2-3 layout but actual ingame is 2-3-1 - // also bit 3 repeats bit 2 functionality. PORT_MODIFY("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Long Pass") PORT_PLAYER(1) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Shoot") PORT_PLAYER(1) - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Short Pass") PORT_PLAYER(1) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Long Pass") PORT_PLAYER(2) - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Shoot") PORT_PLAYER(2) - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Short Pass") PORT_PLAYER(2) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_START("BAT1") + PORT_BIT(0xff, 0x00, IPT_PEDAL) PORT_SENSITIVITY(100) PORT_KEYDELTA(50) PORT_PLAYER(1) PORT_NAME("P1 Bat Swing") + + PORT_START("BAT2") + PORT_BIT(0xff, 0x00, IPT_PEDAL2) PORT_SENSITIVITY(100) PORT_KEYDELTA(50) PORT_PLAYER(2) PORT_NAME("P2 Bat Swing") INPUT_PORTS_END -static INPUT_PORTS_START( von ) - PORT_INCLUDE( model2 ) +static INPUT_PORTS_START( overrev ) + PORT_INCLUDE(indy500) PORT_MODIFY("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Left Shot") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Left Dash") - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_PLAYER(1) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_PLAYER(1) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_PLAYER(1) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_PLAYER(1) - - PORT_MODIFY("IN2") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Right Shot") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Right Dash") - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_PLAYER(1) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_PLAYER(1) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_PLAYER(1) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_PLAYER(1) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("View 1") + // optional, enableable when hardware type isn't in "normal (2in1)" mode (overrev) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("View 2") INPUT_PORTS_END static INPUT_PORTS_START( skisuprg ) - PORT_INCLUDE( model2 ) + PORT_INCLUDE(model2) PORT_MODIFY("IN0") - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Select 3 Button") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Zoom In Button") - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Select 1 Button") - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Select 2 Button") + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Select 3") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_NAME("Zoom In") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Select 1") + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Select 2") PORT_MODIFY("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Zoom Out Button") - PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("Zoom Out") + PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") // TODO: what are these exactly? Enables/disables when all four bits are on - PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Foot Sensor (R)") - PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Foot Sensor (L)") + PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_NAME("Foot Sensor (R)") + PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_NAME("Foot Sensor (L)") - PORT_START("ANA0") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) + PORT_START("INCLINING") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_NAME("Inclining") - PORT_START("ANA1") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) + PORT_START("SWING") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_NAME("Swing") INPUT_PORTS_END -static INPUT_PORTS_START( stcc ) - PORT_INCLUDE( sgt24h ) +static INPUT_PORTS_START( waverunr ) + PORT_INCLUDE(model2) + + PORT_MODIFY("IN0") + PORT_BIT(0x32, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("View 1 Button (Zoom In)") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("View 2 Button (Zoom Out)") - PORT_BIT(0x0c, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Shift Up") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Shift Down") - PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_PLAYER(1) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("View") + PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + // TODO: safety sensor + PORT_BIT(0x07, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_CUSTOM) + PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED) + + // TODO: requires LEFT/RIGHT_AD_STICK in framework + PORT_START("HANDLE") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_NAME("Handle Bar") + + PORT_START("ROLL") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_NAME("Roll") + + PORT_START("THROTTLE") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_NAME("Throttle Lever") PORT_REVERSE + + PORT_START("PITCH") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_NAME("Pitch") PORT_REVERSE INPUT_PORTS_END -static INPUT_PORTS_START( waverunr ) - PORT_INCLUDE( model2 ) +static INPUT_PORTS_START( bel ) + PORT_INCLUDE(gunblade) PORT_MODIFY("IN0") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x30, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + // they reversed these two for some reason + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE_NO_TOGGLE(0x08, IP_ACTIVE_LOW ) PORT_MODIFY("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("View Button") - PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("P1 Missile") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("P2 Missile") +INPUT_PORTS_END - PORT_MODIFY("IN2") - // TODO: safety sensor - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) - PORT_BIT(0xf7, IP_ACTIVE_LOW, IPT_UNUSED ) +static INPUT_PORTS_START( hotd ) + PORT_INCLUDE(vcop2) - // TODO: requires LEFT/RIGHT_AD_STICK in framework - PORT_START("ANA0") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_NAME("Handle Bar") + PORT_MODIFY("P1_X") + PORT_BIT(0x3ff, 0x180, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(173, 596) PORT_SENSITIVITY(50) PORT_KEYDELTA(13) PORT_PLAYER(1) - PORT_START("ANA1") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_NAME("Roll") + PORT_MODIFY("P1_Y") + PORT_BIT(0x3ff, 0x0e9, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 87, 380) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(1) - PORT_START("ANA2") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_NAME("Throttle Lever") PORT_REVERSE + PORT_MODIFY("P2_X") + PORT_BIT(0x3ff, 0x17b, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX(163, 596) PORT_SENSITIVITY(50) PORT_KEYDELTA(13) PORT_PLAYER(2) - PORT_START("ANA3") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_NAME("Pitch") PORT_REVERSE + PORT_MODIFY("P2_Y") + PORT_BIT(0x3ff, 0x0e9, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX( 87, 380) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2) INPUT_PORTS_END static INPUT_PORTS_START( segawski ) - PORT_INCLUDE( model2 ) + PORT_INCLUDE(model2) PORT_MODIFY("IN0") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x30, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Select (Down) Button") - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x32, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_NAME("Select (Down)") + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Set Button") - PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Select (Up) Button") - PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Pitch Left") - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Pitch Right") - PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("Set") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Select (Up)") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Pitch Left") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Pitch Right") + PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_START("ANA0") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_NAME("Slide") + PORT_START("SLIDE") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_NAME("Slide") INPUT_PORTS_END // TODO: has testable service / test on board buttons static INPUT_PORTS_START( topskatr ) - PORT_INCLUDE( model2 ) + PORT_INCLUDE(model2) PORT_MODIFY("IN0") - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Select Right Button") - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Jump Front") - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Select Left Button") + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("Select Right") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Jump Front") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_START1) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Select Left") PORT_MODIFY("IN1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Jump Tail") - PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("Jump Tail") + PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") - PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) // TODO: requires LEFT/RIGHT_AD_STICK in framework - PORT_START("ANA0") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_NAME("Curving") + PORT_START("CURVING") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_NAME("Curving") - PORT_START("ANA1") - PORT_BIT(0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX( 0, 0xff ) PORT_SENSITIVITY( 50 ) PORT_KEYDELTA( 15 ) PORT_NAME("Slide") + PORT_START("SLIDE") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_NAME("Slide") INPUT_PORTS_END @@ -2691,6 +2570,7 @@ MACHINE_CONFIG_START(model2o_state::daytona) sj25_0207_01(config); MCFG_DEVICE_MODIFY("ioboard") + MCFG_MODEL1IO_DRIVE_WRITE_CB(WRITE8(model2o_state, drive_board_w)) MCFG_MODEL1IO_AN0_CB(IOPORT("STEER")) MCFG_MODEL1IO_AN1_CB(IOPORT("ACCEL")) MCFG_MODEL1IO_AN2_CB(IOPORT("BRAKE")) @@ -2758,6 +2638,12 @@ MACHINE_CONFIG_START(model2a_state::model2a) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup1") + MCFG_DEVICE_ADD("io", SEGA_315_5649, 0) + MCFG_315_5649_OUT_PA_CB(WRITE8(model2a_state, eeprom_w)) + MCFG_315_5649_IN_PB_CB(READ8(model2a_state, in0_r)) + MCFG_315_5649_IN_PC_CB(IOPORT("IN1")) + MCFG_315_5649_IN_PD_CB(IOPORT("IN2")) + model2_timers(config); model2_screen(config); model2_scsp(config); @@ -2767,10 +2653,15 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(model2a_state::manxtt) model2a(config); - MCFG_MACHINE_START_OVERRIDE(model2a_state,srallyc) + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("THROTTLE")) + MCFG_315_5649_AN1_CB(IOPORT("BRAKE")) + MCFG_315_5649_AN2_CB(IOPORT("BANK")) MACHINE_CONFIG_END -MACHINE_CONFIG_START(model2a_state::manxttdx) /* Includes a Model 1 Sound board for additional sounds - Deluxe version only */ +// Includes a Model 1 Sound board for additional sounds - Deluxe version only +MACHINE_CONFIG_START(model2a_state::manxttdx) manxtt(config); MCFG_SEGAM1AUDIO_ADD(M1AUDIO_TAG) MCFG_SEGAM1AUDIO_RXD_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxd)) @@ -2779,6 +2670,33 @@ MACHINE_CONFIG_START(model2a_state::manxttdx) /* Includes a Model 1 Sound board MCFG_I8251_TXD_HANDLER(DEVWRITELINE(M1AUDIO_TAG, segam1audio_device, write_txd)) MACHINE_CONFIG_END +MACHINE_CONFIG_START( model2a_state::srallyc ) + model2a(config); + sj25_0207_01(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_OUT_PE_CB(WRITE8(model2a_state, drive_board_w)) + MCFG_315_5649_AN0_CB(IOPORT("STEER")) + MCFG_315_5649_AN1_CB(IOPORT("ACCEL")) + MCFG_315_5649_AN2_CB(IOPORT("BRAKE")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2a_state::vcop2 ) + model2a(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_SERIAL_CH2_READ_CB(READ8(model2a_state, lightgun_r)) + MCFG_315_5649_SERIAL_CH2_WRITE_CB(WRITE8(model2a_state, lightgun_w)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2a_state::skytargt ) + model2a(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("STICKY")) + MCFG_315_5649_AN2_CB(IOPORT("STICKX")) +MACHINE_CONFIG_END + uint16_t model2_state::crypt_read_callback(uint32_t addr) { uint16_t dat= m_maincpu->space().read_word((0x1d80000+2*addr)); @@ -2801,10 +2719,11 @@ MACHINE_CONFIG_START(model2a_state::model2a_0229) // MCFG_SET_5838_READ_CALLBACK(model2_state, crypt_read_callback) MACHINE_CONFIG_END -MACHINE_CONFIG_START(model2a_state::srallyc) - model2a(config); - MCFG_MACHINE_START_OVERRIDE(model2a_state,srallyc) - sj25_0207_01(config); +MACHINE_CONFIG_START( model2a_state::zeroguna ) + model2a_5881(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_IN_PG_CB(IOPORT("DSW")) MACHINE_CONFIG_END /* 2B-CRX */ @@ -2832,6 +2751,12 @@ MACHINE_CONFIG_START(model2b_state::model2b) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup1") + MCFG_DEVICE_ADD("io", SEGA_315_5649, 0) + MCFG_315_5649_OUT_PA_CB(WRITE8(model2b_state, eeprom_w)) + MCFG_315_5649_IN_PB_CB(READ8(model2b_state, in0_r)) + MCFG_315_5649_IN_PC_CB(IOPORT("IN1")) + MCFG_315_5649_IN_PD_CB(IOPORT("IN2")) + model2_timers(config); model2_screen(config); model2_scsp(config); @@ -2839,7 +2764,6 @@ MACHINE_CONFIG_START(model2b_state::model2b) MCFG_M2COMM_ADD("m2comm") MACHINE_CONFIG_END - MACHINE_CONFIG_START(model2b_state::model2b_5881) model2b(config); @@ -2858,7 +2782,11 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(model2b_state::indy500) model2b(config); - MCFG_MACHINE_START_OVERRIDE(model2b_state,srallyc) + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("STEER")) + MCFG_315_5649_AN1_CB(IOPORT("ACCEL")) + MCFG_315_5649_AN2_CB(IOPORT("BRAKE")) MACHINE_CONFIG_END @@ -2874,13 +2802,47 @@ void model2b_state::rchase2_ioport_map(address_map &map) map(0x00, 0x07).rw("ioexp", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)); } -MACHINE_CONFIG_START(model2b_state::rchase2) +MACHINE_CONFIG_START( model2b_state::rchase2 ) model2b(config); + MCFG_CPU_ADD("iocpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(rchase2_iocpu_map) MCFG_CPU_IO_MAP(rchase2_ioport_map) MCFG_DEVICE_ADD("ioexp", CXD1095, 0) + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_IN_PD_CB(READ8(model2b_state, rchase2_drive_board_r)) + MCFG_315_5649_OUT_PE_CB(WRITE8(model2b_state, rchase2_drive_board_w)) + MCFG_315_5649_AN0_CB(IOPORT("P2_X")) + MCFG_315_5649_AN1_CB(IOPORT("P1_X")) + MCFG_315_5649_AN2_CB(IOPORT("P2_Y")) + MCFG_315_5649_AN3_CB(IOPORT("P1_Y")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2b_state::gunblade ) + model2b(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("P1_X")) + MCFG_315_5649_AN1_CB(IOPORT("P2_X")) + MCFG_315_5649_AN2_CB(IOPORT("P1_Y")) + MCFG_315_5649_AN3_CB(IOPORT("P2_Y")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2b_state::dynabb ) + model2b(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("BAT1")) + MCFG_315_5649_AN1_CB(IOPORT("BAT2")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2b_state::zerogun ) + model2b_5881(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_IN_PG_CB(IOPORT("DSW")) MACHINE_CONFIG_END /* 2C-CRX */ @@ -2904,6 +2866,12 @@ MACHINE_CONFIG_START(model2c_state::model2c) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup1") + MCFG_DEVICE_ADD("io", SEGA_315_5649, 0) + MCFG_315_5649_OUT_PA_CB(WRITE8(model2c_state, eeprom_w)) + MCFG_315_5649_IN_PB_CB(READ8(model2c_state, in0_r)) + MCFG_315_5649_IN_PC_CB(IOPORT("IN1")) + MCFG_315_5649_IN_PD_CB(IOPORT("IN2")) + model2_timers(config); model2_screen(config); model2_scsp(config); @@ -2911,8 +2879,22 @@ MACHINE_CONFIG_START(model2c_state::model2c) MCFG_M2COMM_ADD("m2comm") MACHINE_CONFIG_END -MACHINE_CONFIG_START(model2c_state::stcc) +MACHINE_CONFIG_START( model2c_state::skisuprg ) model2c(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("SWING")) + MCFG_315_5649_AN1_CB(IOPORT("INCLINING")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2c_state::stcc ) + model2c(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("STEER")) + MCFG_315_5649_AN1_CB(IOPORT("ACCEL")) + MCFG_315_5649_AN2_CB(IOPORT("BRAKE")) + MCFG_DSBZ80_ADD(DSBZ80_TAG) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -2921,6 +2903,34 @@ MACHINE_CONFIG_START(model2c_state::stcc) MCFG_I8251_TXD_HANDLER(DEVWRITELINE(DSBZ80_TAG, dsbz80_device, write_txd)) MACHINE_CONFIG_END +MACHINE_CONFIG_START( model2c_state::waverunr ) + model2c(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("HANDLE")) + MCFG_315_5649_AN1_CB(IOPORT("ROLL")) + MCFG_315_5649_AN2_CB(IOPORT("THROTTLE")) + MCFG_315_5649_AN3_CB(IOPORT("PITCH")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2c_state::bel ) + model2c(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("P1_X")) + MCFG_315_5649_AN1_CB(IOPORT("P2_X")) + MCFG_315_5649_AN2_CB(IOPORT("P1_Y")) + MCFG_315_5649_AN3_CB(IOPORT("P2_Y")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2c_state::hotd ) + model2c(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_SERIAL_CH2_READ_CB(READ8(model2c_state, lightgun_r)) + MCFG_315_5649_SERIAL_CH2_WRITE_CB(WRITE8(model2c_state, lightgun_w)) +MACHINE_CONFIG_END + MACHINE_CONFIG_START(model2c_state::model2c_5881) model2c(config); @@ -2931,9 +2941,28 @@ MACHINE_CONFIG_START(model2c_state::model2c_5881) MCFG_SET_READ_CALLBACK(model2_state, crypt_read_callback) MACHINE_CONFIG_END -MACHINE_CONFIG_START(model2c_state::overrev2c) +MACHINE_CONFIG_START( model2c_state::overrev2c ) + model2c(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("STEER")) + MCFG_315_5649_AN1_CB(IOPORT("ACCEL")) + MCFG_315_5649_AN2_CB(IOPORT("BRAKE")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2c_state::segawski ) + model2c(config); + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("SLIDE")) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START( model2c_state::topskatr ) model2c(config); - MCFG_MACHINE_START_OVERRIDE(model2c_state,srallyc) + + MCFG_DEVICE_MODIFY("io") + MCFG_315_5649_AN0_CB(IOPORT("CURVING")) + MCFG_315_5649_AN1_CB(IOPORT("SLIDE")) MACHINE_CONFIG_END @@ -6496,28 +6525,28 @@ ROM_START( desert ) /* Desert Tank, Model 2 */ MODEL2_CPU_BOARD ROM_END -DRIVER_INIT_MEMBER(model2_state,pltkids) +DRIVER_INIT_MEMBER(model2_state, pltkids) { // fix bug in program: it destroys the interrupt table and never fixes it uint32_t *ROM = (uint32_t *)memregion("maincpu")->base(); ROM[0x730/4] = 0x08000004; } -DRIVER_INIT_MEMBER(model2_state,zerogun) +DRIVER_INIT_MEMBER(model2_state, zerogun) { // fix bug in program: it destroys the interrupt table and never fixes it uint32_t *ROM = (uint32_t *)memregion("maincpu")->base(); ROM[0x700/4] = 0x08000004; } -DRIVER_INIT_MEMBER(model2_state,sgt24h) +DRIVER_INIT_MEMBER(model2_state, sgt24h) { uint32_t *ROM = (uint32_t *)memregion("maincpu")->base(); ROM[0x56578/4] = 0x08000004; //ROM[0x5b3e8/4] = 0x08000004; } -DRIVER_INIT_MEMBER(model2_state,doa) +DRIVER_INIT_MEMBER(model2_state, doa) { m_0229crypt->install_doa_protection(); @@ -6526,93 +6555,82 @@ DRIVER_INIT_MEMBER(model2_state,doa) ROM[0x808/4] = 0x08000004; } -DRIVER_INIT_MEMBER(model2_state,rchase2) -{ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x01c00008, 0x01c0000b, write32_delegate(FUNC(model2_state::rchase2_devices_w), this)); -} - -DRIVER_INIT_MEMBER(model2_state,srallyc) -{ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x01c00008, 0x01c0000b, write32_delegate(FUNC(model2_state::srallyc_devices_w), this)); -} - - // Model 2 (TGPs, Model 1 sound board) -GAME( 1994, daytona, 0, daytona, daytona, model2o_state, srallyc, ROT0, "Sega", "Daytona USA (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, daytonase, daytona, daytona, daytona, model2o_state, srallyc, ROT0, "Sega", "Daytona USA Special Edition (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, daytona93, daytona, daytona, daytona, model2o_state, srallyc, ROT0, "Sega", "Daytona USA (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, daytonas, daytona, daytona, daytona, model2o_state, srallyc, ROT0, "Sega", "Daytona USA (With Saturn Adverts)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994?,daytonat, daytona, daytona, daytona, model2o_state, srallyc, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (Turbo hack, set 1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994?,daytonata, daytona, daytona, daytona, model2o_state, srallyc, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (Turbo hack, set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, daytonam, daytona, daytona_maxx,daytona, model2o_maxx_state, srallyc, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (To The MAXX)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2003, daytonagtx,daytona, daytona_gtx, daytona, model2o_gtx_state, srallyc, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (GTX 2004 Edition)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, desert, 0, desert, desert, model2o_state, 0, ROT0, "Sega / Martin Marietta", "Desert Tank", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, vcop, 0, vcop, vcop, model2o_state, 0, ROT0, "Sega", "Virtua Cop (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1994, vcopa, vcop, vcop, vcop, model2o_state, 0, ROT0, "Sega", "Virtua Cop (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, daytona, 0, daytona, daytona, model2o_state, 0, ROT0, "Sega", "Daytona USA (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, daytonase, daytona, daytona, daytona, model2o_state, 0, ROT0, "Sega", "Daytona USA Special Edition (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, daytona93, daytona, daytona, daytona, model2o_state, 0, ROT0, "Sega", "Daytona USA (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, daytonas, daytona, daytona, daytona, model2o_state, 0, ROT0, "Sega", "Daytona USA (With Saturn Adverts)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994?,daytonat, daytona, daytona, daytona, model2o_state, 0, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (Turbo hack, set 1)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994?,daytonata, daytona, daytona, daytona, model2o_state, 0, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (Turbo hack, set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, daytonam, daytona, daytona_maxx, daytona, model2o_maxx_state, 0, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (To The MAXX)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2003, daytonagtx, daytona, daytona_gtx, daytona, model2o_gtx_state, 0, ROT0, "hack (Kyle Hodgetts)", "Daytona USA (GTX 2004 Edition)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, desert, 0, desert, desert, model2o_state, 0, ROT0, "Sega / Martin Marietta", "Desert Tank", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, vcop, 0, vcop, vcop, model2o_state, 0, ROT0, "Sega", "Virtua Cop (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, vcopa, vcop, vcop, vcop, model2o_state, 0, ROT0, "Sega", "Virtua Cop (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // Model 2A-CRX (TGPs, SCSP sound board) -GAME( 1994, vf2, 0, model2a, model2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Version 2.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1994, vf2b, vf2, model2a, model2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1994, vf2a, vf2, model2a, model2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1994, vf2o, vf2, model2a, model2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, manxtt, 0, manxttdx, manxtt, model2a_state, 0, ROT0, "Sega", "Manx TT Superbike - DX (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, manxttc, 0, manxtt, manxtt, model2a_state, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallyc, 0, srallyc, srallyc, model2a_state, srallyc, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2a_state, srallyc, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallycdx, srallyc, srallyc, srallyc, model2a_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, srallycdxa,srallyc, srallyc, srallyc, model2a_state, srallyc, ROT0, "Sega", "Sega Rally Championship - DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, vcop2, 0, model2a, vcop2, model2a_state, 0, ROT0, "Sega", "Virtua Cop 2", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, skytargt, 0, model2a, skytargt, model2a_state, 0, ROT0, "Sega", "Sky Target", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, doaa, doa, model2a_0229, model2, model2a_state, doa, ROT0, "Sega", "Dead or Alive (Model 2A, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zeroguna, zerogun, model2a_5881, zerogun, model2a_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zerogunaj, zerogun, model2a_5881, zerogun, model2a_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, motoraid, 0, manxtt, motoraid, model2a_state, 0, ROT0, "Sega", "Motor Raid - Twin", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, motoraiddx,motoraid,manxtt, motoraid, model2a_state, 0, ROT0, "Sega", "Motor Raid - Twin/DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dynamcop, 0, model2a_5881, model2, model2a_state, 0, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dyndeka2, dynamcop,model2a_5881, model2, model2a_state, 0, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, pltkidsa, pltkids, model2a_5881, model2, model2a_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, vf2, 0, model2a, vf2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Version 2.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1994, vf2b, vf2, model2a, vf2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1994, vf2a, vf2, model2a, vf2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2 (Revision A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1994, vf2o, vf2, model2a, vf2, model2a_state, 0, ROT0, "Sega", "Virtua Fighter 2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, manxtt, 0, manxttdx, manxtt, model2a_state, 0, ROT0, "Sega", "Manx TT Superbike - DX (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, manxttc, 0, manxtt, manxtt, model2a_state, 0, ROT0, "Sega", "Manx TT Superbike - Twin (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallyc, 0, srallyc, srallyc, model2a_state, 0, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallycb, srallyc, srallyc, srallyc, model2a_state, 0, ROT0, "Sega", "Sega Rally Championship - Twin/DX (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallycdx, srallyc, srallyc, srallyc, model2a_state, 0, ROT0, "Sega", "Sega Rally Championship - DX (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, srallycdxa,srallyc, srallyc, srallyc, model2a_state, 0, ROT0, "Sega", "Sega Rally Championship - DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, vcop2, 0, vcop2, vcop2, model2a_state, 0, ROT0, "Sega", "Virtua Cop 2", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, skytargt, 0, skytargt, skytargt, model2a_state, 0, ROT0, "Sega", "Sky Target", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, doaa, doa, model2a_0229, doa, model2a_state, doa, ROT0, "Sega", "Dead or Alive (Model 2A, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zeroguna, zerogun, zeroguna, zerogun, model2a_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zerogunaj, zerogun, zeroguna, zerogun, model2a_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, motoraid, 0, manxtt, motoraid, model2a_state, 0, ROT0, "Sega", "Motor Raid - Twin", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, motoraiddx,motoraid, manxtt, motoraid, model2a_state, 0, ROT0, "Sega", "Motor Raid - Twin/DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dynamcop, 0, model2a_5881, dynamcop, model2a_state, 0, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dyndeka2, dynamcop, model2a_5881, dynamcop, model2a_state, 0, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, pltkidsa, pltkids, model2a_5881, pltkids, model2a_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // Model 2B-CRX (SHARC, SCSP sound board) -GAME( 1994, rchase2, 0, rchase2, rchase2, model2b_state, rchase2, ROT0, "Sega", "Rail Chase 2 (Revision A)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) +GAME( 1994, rchase2, 0, rchase2, rchase2, model2b_state, 0, ROT0, "Sega", "Rail Chase 2 (Revision A)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) GAME( 1994, vstriker, 0, model2b, vstriker, model2b_state, 0, ROT0, "Sega", "Virtua Striker (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, vstrikero, vstriker, model2b, vstriker, model2b_state, 0, ROT0, "Sega", "Virtua Striker", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, fvipers, 0, model2b, model2, model2b_state, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, fvipersb, fvipers, model2b, model2, model2b_state, 0, ROT0, "Sega", "Fighting Vipers (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, gunblade, 0, model2b, gunblade, model2b_state, 0, ROT0, "Sega", "Gunblade NY (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500, 0, indy500, overrev, model2b_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500d, indy500, indy500, overrev, model2b_state, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, indy500to, indy500, indy500, overrev, model2b_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, fvipers, 0, model2b, vf2, model2b_state, 0, ROT0, "Sega", "Fighting Vipers (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, fvipersb, fvipers, model2b, vf2, model2b_state, 0, ROT0, "Sega", "Fighting Vipers (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, gunblade, 0, gunblade, gunblade, model2b_state, 0, ROT0, "Sega", "Gunblade NY (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500, 0, indy500, indy500, model2b_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500d, indy500, indy500, indy500, model2b_state, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, indy500to, indy500, indy500, indy500, model2b_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, von, 0, model2b, von, model2b_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, vonj, von, model2b, von, model2b_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, schamp, 0, model2b, model2, model2b_state, 0, ROT0, "Sega", "Sonic Championship (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, sfight, schamp, model2b, model2, model2b_state, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, lastbrnx, 0, model2b, model2, model2b_state, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, lastbrnxu, lastbrnx, model2b, model2, model2b_state, 0, ROT0, "Sega", "Last Bronx (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, lastbrnxj, lastbrnx, model2b, model2, model2b_state, 0, ROT0, "Sega", "Last Bronx (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, doa, 0, model2b_0229, model2, model2b_state, doa, ROT0, "Sega", "Dead or Alive (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, sgt24h, 0, indy500, sgt24h, model2b_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, dynabb, 0, model2b, dynabb, model2b_state, 0, ROT0, "Sega", "Dynamite Baseball", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, dynabb97, 0, model2b, dynabb, model2b_state, 0, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, schamp, 0, model2b, schamp, model2b_state, 0, ROT0, "Sega", "Sonic Championship (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, sfight, schamp, model2b, schamp, model2b_state, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, lastbrnx, 0, model2b, vf2, model2b_state, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, lastbrnxu, lastbrnx, model2b, vf2, model2b_state, 0, ROT0, "Sega", "Last Bronx (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, lastbrnxj, lastbrnx, model2b, vf2, model2b_state, 0, ROT0, "Sega", "Last Bronx (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, doa, 0, model2b_0229, doa, model2b_state, doa, ROT0, "Sega", "Dead or Alive (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, sgt24h, 0, indy500, sgt24h, model2b_state, sgt24h, ROT0, "Jaleco", "Super GT 24h", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, dynabb, 0, dynabb, dynabb, model2b_state, 0, ROT0, "Sega", "Dynamite Baseball", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, dynabb97, 0, dynabb, dynabb, model2b_state, 0, ROT0, "Sega", "Dynamite Baseball 97 (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, overrevb, overrev, indy500, overrev, model2b_state, 0, ROT0, "Jaleco", "Over Rev (Model 2B, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zerogun, 0, model2b_5881, zerogun, model2b_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, zerogunj, zerogun, model2b_5881, zerogun, model2b_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dynamcopb, dynamcop, model2b_5881, model2, model2b_state, 0, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dyndeka2b, dynamcop, model2b_5881, model2, model2b_state, 0, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, pltkids, 0, model2b_5881, model2, model2b_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2B, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zerogun, 0, zerogun, zerogun, model2b_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, zerogunj, zerogun, zerogun, zerogun, model2b_state, zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dynamcopb, dynamcop, model2b_5881, dynamcop, model2b_state, 0, ROT0, "Sega", "Dynamite Cop (Export, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dyndeka2b, dynamcop, model2b_5881, dynamcop, model2b_state, 0, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, pltkids, 0, model2b_5881, pltkids, model2b_state, pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2B, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) // Model 2C-CRX (TGPx4, SCSP sound board) -GAME( 1996, skisuprg, 0, model2c, skisuprg, model2c_state, 0, ROT0, "Sega", "Sega Ski Super G", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_UNEMULATED_PROTECTION ) -GAME( 1996, stcc, 0, stcc, stcc, model2c_state, 0, ROT0, "Sega", "Sega Touring Car Championship", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, stccb, stcc, stcc, stcc, model2c_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, stcca, stcc, stcc, stcc, model2c_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, waverunr, 0, model2c, waverunr, model2c_state, 0, ROT0, "Sega", "Wave Runner (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, bel, 0, model2c, bel, model2c_state, 0, ROT0, "Sega / EPL Productions", "Behind Enemy Lines", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, hotd, 0, model2c, hotd, model2c_state, 0, ROT0, "Sega", "The House of the Dead", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, skisuprg, 0, skisuprg, skisuprg, model2c_state, 0, ROT0, "Sega", "Sega Ski Super G", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_UNEMULATED_PROTECTION ) +GAME( 1996, stcc, 0, stcc, indy500, model2c_state, 0, ROT0, "Sega", "Sega Touring Car Championship", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, stccb, stcc, stcc, indy500, model2c_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, stcca, stcc, stcc, indy500, model2c_state, 0, ROT0, "Sega", "Sega Touring Car Championship (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, waverunr, 0, waverunr, waverunr, model2c_state, 0, ROT0, "Sega", "Wave Runner (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, bel, 0, bel, bel, model2c_state, 0, ROT0, "Sega / EPL Productions", "Behind Enemy Lines", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, hotd, 0, hotd, hotd, model2c_state, 0, ROT0, "Sega", "The House of the Dead", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, overrev, 0, overrev2c, overrev, model2c_state, 0, ROT0, "Jaleco", "Over Rev (Model 2C, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, rascot2, 0, model2c, model2, model2c_state, 0, ROT0, "Sega", "Royal Ascot II", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, segawski, 0, model2c, segawski, model2c_state, 0, ROT0, "Sega", "Sega Water Ski (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, topskatr, 0, model2c, topskatr, model2c_state, 0, ROT0, "Sega", "Top Skater (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, segawski, 0, segawski, segawski, model2c_state, 0, ROT0, "Sega", "Sega Water Ski (Japan, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, topskatr, 0, topskatr, topskatr, model2c_state, 0, ROT0, "Sega", "Top Skater (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, topskatru, topskatr, model2c, topskatr, model2c_state, 0, ROT0, "Sega", "Top Skater (USA, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, topskatruo,topskatr, model2c, topskatr, model2c_state, 0, ROT0, "Sega", "Top Skater (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, topskatrj, topskatr, model2c, topskatr, model2c_state, 0, ROT0, "Sega", "Top Skater (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1998, dynamcopc, dynamcop, model2c_5881, model2, model2c_state, 0, ROT0, "Sega", "Dynamite Cop (USA, Model 2C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1998, dynamcopc, dynamcop, model2c_5881, dynamcop, model2c_state, 0, ROT0, "Sega", "Dynamite Cop (USA, Model 2C)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h index 83bc5ca2645..115adba770c 100644 --- a/src/mame/includes/model2.h +++ b/src/mame/includes/model2.h @@ -49,10 +49,8 @@ public: m_cryptdevice(*this, "315_5881"), m_0229crypt(*this, "317_0229"), m_copro_data(*this, "copro_data"), - m_in(*this, "IN%u", 0), - m_dsw(*this, "DSW"), + m_in0(*this, "IN0"), m_gears(*this, "GEARS"), - m_analog_ports(*this, "ANA%u", 0), m_lightgun_ports(*this, {"P1_Y", "P1_X", "P2_Y", "P2_X"}) { } @@ -67,7 +65,6 @@ public: /* Public for access by the ioports */ DECLARE_CUSTOM_INPUT_MEMBER(daytona_gearbox_r); - DECLARE_CUSTOM_INPUT_MEMBER(rchase2_devices_r); /* Public for access by MCFG */ TIMER_DEVICE_CALLBACK_MEMBER(model2_interrupt); @@ -109,10 +106,8 @@ protected: optional_device<sega_315_5838_comp_device> m_0229crypt; optional_memory_region m_copro_data; - optional_ioport_array<5> m_in; - optional_ioport m_dsw; + required_ioport m_in0; optional_ioport m_gears; - optional_ioport_array<4> m_analog_ports; optional_ioport_array<4> m_lightgun_ports; uint32_t m_timervals[4]; @@ -120,7 +115,6 @@ protected: int m_timerrun[4]; timer_device *m_timers[4]; int m_ctrlmode; - int m_analog_channel; uint16_t m_cmd_data; uint8_t m_driveio_comm_data; int m_iop_write_num; @@ -154,23 +148,23 @@ protected: DECLARE_WRITE32_MEMBER(geo_w); // Everything else - DECLARE_READ8_MEMBER(model2_crx_in_r); DECLARE_READ32_MEMBER(timers_r); DECLARE_WRITE32_MEMBER(timers_w); DECLARE_READ16_MEMBER(palette_r); DECLARE_WRITE16_MEMBER(palette_w); DECLARE_READ16_MEMBER(colorxlat_r); DECLARE_WRITE16_MEMBER(colorxlat_w); - DECLARE_WRITE32_MEMBER(ctrl0_w); - DECLARE_WRITE32_MEMBER(analog_2b_w); + DECLARE_WRITE8_MEMBER(eeprom_w); + DECLARE_READ8_MEMBER(in0_r); DECLARE_READ32_MEMBER(fifo_control_2a_r); DECLARE_READ32_MEMBER(videoctl_r); DECLARE_WRITE32_MEMBER(videoctl_w); - DECLARE_WRITE32_MEMBER(rchase2_devices_w); - DECLARE_WRITE32_MEMBER(srallyc_devices_w); - DECLARE_READ8_MEMBER(lightgun_coords_r); + DECLARE_READ8_MEMBER(rchase2_drive_board_r); + DECLARE_WRITE8_MEMBER(rchase2_drive_board_w); + DECLARE_WRITE8_MEMBER(drive_board_w); + DECLARE_READ8_MEMBER(lightgun_r); + DECLARE_WRITE8_MEMBER(lightgun_w); DECLARE_READ8_MEMBER(lightgun_offscreen_r); - DECLARE_WRITE8_MEMBER(lightgun_mux_w); DECLARE_READ32_MEMBER(irq_request_r); DECLARE_WRITE32_MEMBER(irq_ack_w); DECLARE_READ32_MEMBER(irq_enable_r); @@ -240,12 +234,6 @@ protected: uint32_t m_coproctl; uint32_t m_coprocnt; - int m_port_1c00004; - int m_port_1c00006; - int m_port_1c00010; - int m_port_1c00012; - int m_port_1c00014; - virtual void copro_halt() = 0; virtual void copro_boot() = 0; @@ -321,7 +309,6 @@ public: {} DECLARE_MACHINE_START(model2_tgp); - DECLARE_MACHINE_START(srallyc); protected: required_device<mb86234_device> m_copro_tgp; @@ -471,6 +458,9 @@ public: void model2a_0229(machine_config &config); void model2a_5881(machine_config &config); void srallyc(machine_config &config); + void vcop2(machine_config &config); + void skytargt(machine_config &config); + void zeroguna(machine_config &config); protected: void model2a_crx_mem(address_map &map); @@ -493,13 +483,15 @@ public: DECLARE_MACHINE_RESET(model2b); DECLARE_MACHINE_START(model2b); - DECLARE_MACHINE_START(srallyc); void model2b(machine_config &config); void model2b_0229(machine_config &config); void model2b_5881(machine_config &config); void indy500(machine_config &config); void rchase2(machine_config &config); + void gunblade(machine_config &config); + void dynabb(machine_config &config); + void zerogun(machine_config &config); protected: required_device<adsp21062_device> m_copro_adsp; @@ -540,12 +532,17 @@ public: DECLARE_MACHINE_RESET(model2c); DECLARE_MACHINE_START(model2c); - DECLARE_MACHINE_START(srallyc); void model2c(machine_config &config); void model2c_5881(machine_config &config); - void overrev2c(machine_config &config); + void skisuprg(machine_config &config); void stcc(machine_config &config); + void waverunr(machine_config &config); + void bel(machine_config &config); + void hotd(machine_config &config); + void overrev2c(machine_config &config); + void segawski(machine_config &config); + void topskatr(machine_config &config); protected: required_device<mb86235_device> m_copro_tgpx4; |