diff options
Diffstat (limited to 'src/mame/sega/segaxbd.cpp')
-rw-r--r-- | src/mame/sega/segaxbd.cpp | 125 |
1 files changed, 79 insertions, 46 deletions
diff --git a/src/mame/sega/segaxbd.cpp b/src/mame/sega/segaxbd.cpp index 6e8f9dbdfce..1dfa93eba58 100644 --- a/src/mame/sega/segaxbd.cpp +++ b/src/mame/sega/segaxbd.cpp @@ -558,7 +558,7 @@ void segaxbd_state::iocontrol_w(offs_t offset, uint16_t data, uint16_t mem_mask) void segaxbd_state::loffire_sync0_w(offs_t offset, uint16_t data, uint16_t mem_mask) { COMBINE_DATA(&m_loffire_sync[offset]); - machine().scheduler().perfect_quantum(attotime::from_usec(10)); + machine().scheduler().add_quantum(attotime::from_ticks(4, m_maincpu->clock()), attotime::from_usec(10)); } @@ -803,7 +803,7 @@ void segaxbd_state::update_main_irqs() if (irq) { m_maincpu->set_input_line(irq, ASSERT_LINE); - machine().scheduler().perfect_quantum(attotime::from_usec(100)); + machine().scheduler().add_quantum(attotime::from_ticks(4, m_maincpu->clock()), attotime::from_usec(100)); } } @@ -816,7 +816,7 @@ void segaxbd_state::update_main_irqs() void segaxbd_state::m68k_reset_callback(int state) { m_subcpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero); - machine().scheduler().perfect_quantum(attotime::from_usec(100)); + machine().scheduler().add_quantum(attotime::from_ticks(4, m_maincpu->clock()), attotime::from_usec(100)); } @@ -1086,7 +1086,7 @@ void segaxbd_rascot_state::comm_map(address_map &map) static INPUT_PORTS_START( xboard_generic ) PORT_START("mainpcb:IO0PORTA") PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) // D5-D0: CN C pin 24-19 (switch state 0= open, 1= closed) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("mainpcb:adc", adc0804_device, intr_r) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("mainpcb:adc", FUNC(adc0804_device::intr_r)) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // D7: (Not connected) // I/O port: CN C pins 17,15,13,11,9,7,5,3 @@ -1182,6 +1182,42 @@ INPUT_PORTS_END static INPUT_PORTS_START( aburner2 ) PORT_INCLUDE( aburner ) + PORT_MODIFY("mainpcb:IO1PORTC") + PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:1,2,3,4") + PORT_DIPSETTING( 0x0a, DEF_STR( 7C_1C ) ) + PORT_DIPSETTING( 0x0b, DEF_STR( 6C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x05, "2 Coins/1 Credit, 3/2, 5/3, 6/4" ) + PORT_DIPSETTING( 0x04, "2 Coins/1 Credit, 4/3" ) + PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x03, "1 Coin/1 Credit, 5/6" ) + PORT_DIPSETTING( 0x02, "1 Coin/1 Credit, 4/5" ) + PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x01, "1 Coin/1 Credit, 2/3" ) + PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x00, "Free Play (if Coin B too) or 1/1" ) + PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWA:5,6,7,8") + PORT_DIPSETTING( 0xa0, DEF_STR( 7C_1C ) ) + PORT_DIPSETTING( 0xb0, DEF_STR( 6C_1C ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x50, "2 Coins/1 Credit, 3/2, 5/3, 6/4" ) + PORT_DIPSETTING( 0x40, "2 Coins/1 Credit, 4/3" ) + PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x30, "1 Coin/1 Credit, 5/6" ) + PORT_DIPSETTING( 0x20, "1 Coin/1 Credit, 4/5" ) + PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x10, "1 Coin/1 Credit, 2/3" ) + PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x00, "Free Play (if Coin A too) or 1/1" ) + PORT_MODIFY("mainpcb:IO1PORTD") PORT_DIPNAME( 0x03, 0x01, "Cabinet Type" ) PORT_DIPLOCATION("SWB:1,2") PORT_DIPSETTING( 0x03, "Moving Deluxe" ) @@ -1523,7 +1559,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( gprider ) PORT_START("mainpcb:IO0PORTA") PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("mainpcb:adc", adc0804_device, intr_r) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("mainpcb:adc", FUNC(adc0804_device::intr_r)) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("mainpcb:IO0PORTB") @@ -1580,7 +1616,7 @@ static INPUT_PORTS_START( gprider_double ) PORT_START("subpcb:IO0PORTA") PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("subpcb:adc", adc0804_device, intr_r) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("subpcb:adc", FUNC(adc0804_device::intr_r)) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("subpcb:IO0PORTB") @@ -1717,18 +1753,17 @@ void segaxbd_state::xboard_base_mconfig(machine_config &config) SEGAIC16_ROAD(config, m_segaic16road, 0); // sound hardware - SPEAKER(config, "lspeaker").front_left(); - SPEAKER(config, "rspeaker").front_right(); + SPEAKER(config, "speaker", 2).front(); ym2151_device &ymsnd(YM2151(config, "ymsnd", SOUND_CLOCK/4)); ymsnd.irq_handler().set_inputline(m_soundcpu, 0); - ymsnd.add_route(0, "lspeaker", 0.43); - ymsnd.add_route(1, "rspeaker", 0.43); + ymsnd.add_route(0, "speaker", 0.43, 0); + ymsnd.add_route(1, "speaker", 0.43, 1); segapcm_device &pcm(SEGAPCM(config, "pcm", SOUND_CLOCK/4)); pcm.set_bank(segapcm_device::BANK_512); - pcm.add_route(0, "lspeaker", 1.0); - pcm.add_route(1, "rspeaker", 1.0); + pcm.add_route(0, "speaker", 1.0, 0); + pcm.add_route(1, "speaker", 1.0, 1); } @@ -1830,8 +1865,8 @@ void segaxbd_lastsurv_fd1094_state::device_add_mconfig(machine_config &config) // sound hardware - ym2151 stereo is reversed subdevice<ym2151_device>("ymsnd")->reset_routes(); - subdevice<ym2151_device>("ymsnd")->add_route(0, "rspeaker", 0.43); - subdevice<ym2151_device>("ymsnd")->add_route(1, "lspeaker", 0.43); + subdevice<ym2151_device>("ymsnd")->add_route(0, "speaker", 0.43, 1); + subdevice<ym2151_device>("ymsnd")->add_route(1, "speaker", 0.43, 0); } void segaxbd_new_state::sega_lastsurv_fd1094(machine_config &config) @@ -1859,8 +1894,8 @@ void segaxbd_lastsurv_state::device_add_mconfig(machine_config &config) // sound hardware - ym2151 stereo is reversed subdevice<ym2151_device>("ymsnd")->reset_routes(); - subdevice<ym2151_device>("ymsnd")->add_route(0, "rspeaker", 0.43); - subdevice<ym2151_device>("ymsnd")->add_route(1, "lspeaker", 0.43); + subdevice<ym2151_device>("ymsnd")->add_route(0, "speaker", 0.43, 1); + subdevice<ym2151_device>("ymsnd")->add_route(1, "speaker", 0.43, 0); } void segaxbd_new_state::sega_lastsurv(machine_config &config) @@ -1983,8 +2018,7 @@ void segaxbd_rascot_state::device_add_mconfig(machine_config &config) config.device_remove("soundcpu"); config.device_remove("ymsnd"); config.device_remove("pcm"); - config.device_remove("lspeaker"); - config.device_remove("rspeaker"); + config.device_remove("speaker"); m_cmptimer_1->zint_callback().set_nop(); cpu_device &commcpu(Z80(config, "commcpu", 8'000'000)); // clock unknown @@ -4719,50 +4753,49 @@ void segaxbd_new_state_double::init_gprider_double() // GAME DRIVERS //************************************************************************** -// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS -GAME( 1987, aburner2, 0, sega_aburner2, aburner2, segaxbd_new_state, init_aburner2, ROT0,"Sega", "After Burner II", 0 ) -GAME( 1987, aburner2g,aburner2, sega_aburner2, aburner2, segaxbd_new_state, init_aburner2, ROT0,"Sega", "After Burner II (German)", 0 ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR,COMPANY,FULLNAME,FLAGS +GAME( 1987, aburner, 0, sega_aburner2, aburner, segaxbd_new_state, init_aburner2, ROT0, "Sega", "After Burner", 0 ) -GAME( 1987, aburner, aburner2, sega_aburner2, aburner, segaxbd_new_state, init_aburner2, ROT0,"Sega", "After Burner", 0 ) +GAME( 1987, aburner2, 0, sega_aburner2, aburner2, segaxbd_new_state, init_aburner2, ROT0, "Sega", "After Burner II", 0 ) +GAME( 1987, aburner2g, aburner2, sega_aburner2, aburner2, segaxbd_new_state, init_aburner2, ROT0, "Sega", "After Burner II (German)", 0 ) -GAME( 1987, thndrbld, 0, sega_xboard_fd1094, thndrbld, segaxbd_new_state, empty_init, ROT0, "Sega", "Thunder Blade (upright) (FD1094 317-0056)", 0 ) -GAME( 1987, thndrbld1,thndrbld, sega_xboard, thndrbd1, segaxbd_new_state, empty_init, ROT0, "Sega", "Thunder Blade (deluxe/standing) (unprotected)", 0 ) +GAME( 1987, thndrbld, 0, sega_xboard_fd1094, thndrbld, segaxbd_new_state, empty_init, ROT0, "Sega", "Thunder Blade (upright) (FD1094 317-0056)", 0 ) +GAME( 1987, thndrbld1, thndrbld, sega_xboard, thndrbd1, segaxbd_new_state, empty_init, ROT0, "Sega", "Thunder Blade (deluxe/standing) (unprotected)", 0 ) -GAME( 1989, lastsurv, 0, sega_lastsurv_fd1094,lastsurv, segaxbd_new_state, empty_init, ROT0, "Sega", "Last Survivor (Japan) (FD1094 317-0083)", MACHINE_NODEVICE_LAN ) +GAME( 1989, lastsurv, 0, sega_lastsurv_fd1094,lastsurv, segaxbd_new_state, empty_init, ROT0, "Sega", "Last Survivor (Japan) (FD1094 317-0083)", MACHINE_NODEVICE_LAN ) -GAME( 1989, loffire, 0, sega_xboard_fd1094, loffire, segaxbd_new_state, init_loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (World) (FD1094 317-0136)", 0 ) -GAME( 1989, loffireu, loffire, sega_xboard_fd1094, loffire, segaxbd_new_state, init_loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (US) (FD1094 317-0135)", 0 ) -GAME( 1989, loffirej, loffire, sega_xboard_fd1094, loffire, segaxbd_new_state, init_loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (Japan) (FD1094 317-0134)", 0 ) +GAME( 1989, loffire, 0, sega_xboard_fd1094, loffire, segaxbd_new_state, init_loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (World) (FD1094 317-0136)", 0 ) +GAME( 1989, loffireu, loffire, sega_xboard_fd1094, loffire, segaxbd_new_state, init_loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (US) (FD1094 317-0135)", 0 ) +GAME( 1989, loffirej, loffire, sega_xboard_fd1094, loffire, segaxbd_new_state, init_loffire, ROT0, "Sega", "Line of Fire / Bakudan Yarou (Japan) (FD1094 317-0134)", 0 ) -GAME( 1989, rachero, 0, sega_xboard_fd1094, rachero, segaxbd_new_state, empty_init, ROT0, "Sega", "Racing Hero (FD1094 317-0144)", 0 ) +GAME( 1989, rachero, 0, sega_xboard_fd1094, rachero, segaxbd_new_state, empty_init, ROT0, "Sega", "Racing Hero (FD1094 317-0144)", 0 ) -GAME( 1989, smgp, 0, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (World, Rev B) (FD1094 317-0126a)", MACHINE_NODEVICE_LAN ) -GAME( 1989, smgp6, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (World, Rev A) (FD1094 317-0126a)", MACHINE_NODEVICE_LAN ) -GAME( 1989, smgp5, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (World) (FD1094 317-0126)", MACHINE_NODEVICE_LAN ) -GAME( 1989, smgpu, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (US, Rev C) (FD1094 317-0125a)", MACHINE_NODEVICE_LAN ) -GAME( 1989, smgpu1, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (US, Rev B) (FD1094 317-0125a)", MACHINE_NODEVICE_LAN ) -GAME( 1989, smgpu2, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (US, Rev A) (FD1094 317-0125a)", MACHINE_NODEVICE_LAN ) -GAME( 1989, smgpj, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev B) (FD1094 317-0124a)", MACHINE_NODEVICE_LAN ) -GAME( 1989, smgpja, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev A) (FD1094 317-0124a)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgp, 0, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (World, Rev B) (FD1094 317-0126a)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgp6, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (World, Rev A) (FD1094 317-0126a)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgp5, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (World) (FD1094 317-0126)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgpu, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (US, Rev C) (FD1094 317-0125a)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgpu1, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (US, Rev B) (FD1094 317-0125a)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgpu2, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (US, Rev A) (FD1094 317-0125a)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgpj, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev B) (FD1094 317-0124a)", MACHINE_NODEVICE_LAN ) +GAME( 1989, smgpja, smgp, sega_smgp_fd1094, smgp, segaxbd_new_state, init_smgp, ROT0, "Sega", "Super Monaco GP (Japan, Rev A) (FD1094 317-0124a)", MACHINE_NODEVICE_LAN ) -GAME( 1990, abcop, 0, sega_xboard_fd1094, abcop, segaxbd_new_state, empty_init, ROT0, "Sega", "A.B. Cop (World) (FD1094 317-0169b)", 0 ) -GAME( 1990, abcopj, abcop, sega_xboard_fd1094, abcop, segaxbd_new_state, empty_init, ROT0, "Sega", "A.B. Cop (Japan) (FD1094 317-0169b)", 0 ) +GAME( 1990, abcop, 0, sega_xboard_fd1094, abcop, segaxbd_new_state, empty_init, ROT0, "Sega", "A.B. Cop (World) (FD1094 317-0169b)", 0 ) +GAME( 1990, abcopj, abcop, sega_xboard_fd1094, abcop, segaxbd_new_state, empty_init, ROT0, "Sega", "A.B. Cop (Japan) (FD1094 317-0169b)", 0 ) // wasn't officially available as a single PCB setup, but runs anyway albeit with messages suggesting you can compete against a nonexistent rival. -GAME( 1990, gpriders, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, init_gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) -GAME( 1990, gpriderus,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, init_gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) -GAME( 1990, gpriderjs,gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, init_gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) +GAME( 1990, gpriders, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, init_gprider, ROT0, "Sega", "GP Rider (World, FD1094 317-0163)", 0 ) +GAME( 1990, gpriderus, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, init_gprider, ROT0, "Sega", "GP Rider (US, FD1094 317-0162)", 0 ) +GAME( 1990, gpriderjs, gprider, sega_xboard_fd1094, gprider, segaxbd_new_state, init_gprider, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161)", 0 ) // multi X-Board (2 stacks directly connected, shared RAM on bridge PCB - not networked) -GAME( 1990, gprider, 0, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, init_gprider_double, ROT0, "Sega", "GP Rider (World, FD1094 317-0163) (Twin setup)", 0 ) -GAME( 1990, gprideru,gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, init_gprider_double, ROT0, "Sega", "GP Rider (US, FD1094 317-0162) (Twin setup)", 0 ) -GAME( 1990, gpriderj,gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, init_gprider_double, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161) (Twin setup)", 0 ) +GAME( 1990, gprider, 0, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, init_gprider_double, ROT0, "Sega", "GP Rider (World, FD1094 317-0163) (Twin setup)", 0 ) +GAME( 1990, gprideru, gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, init_gprider_double, ROT0, "Sega", "GP Rider (US, FD1094 317-0162) (Twin setup)", 0 ) +GAME( 1990, gpriderj, gprider, sega_xboard_fd1094_double, gprider_double, segaxbd_new_state_double, init_gprider_double, ROT0, "Sega", "GP Rider (Japan, FD1094 317-0161) (Twin setup)", 0 ) // X-Board + other boards? GAME( 1991, rascot, 0, sega_rascot, rascot, segaxbd_new_state, empty_init, ROT0, "Sega", "Royal Ascot (Japan, terminal?)", MACHINE_NODEVICE_LAN | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // decrypted bootlegs - GAME( 1987, thndrbldd, thndrbld, sega_xboard, thndrbld, segaxbd_new_state, empty_init, ROT0, "bootleg", "Thunder Blade (upright) (bootleg of FD1094 317-0056 set)", 0 ) GAME( 1989, racherod, rachero, sega_xboard, rachero, segaxbd_new_state, empty_init, ROT0, "bootleg", "Racing Hero (bootleg of FD1094 317-0144 set)", 0 ) |