summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/vegas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vegas.cpp')
-rw-r--r--src/mame/drivers/vegas.cpp2519
1 files changed, 0 insertions, 2519 deletions
diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp
deleted file mode 100644
index 86ed8e0c689..00000000000
--- a/src/mame/drivers/vegas.cpp
+++ /dev/null
@@ -1,2519 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-/*************************************************************************
-
- Driver for Atari/Midway Vegas hardware games
-
- driver by Aaron Giles
-
- Games supported:
- * Gauntlet Legends [200MHz R5000, 8MB RAM, Vegas + Vegas SIO + Voodoo 2, 2-TMU * 4MB]
- * War: Final Assault [250MHz R5000, 8MB RAM, Vegas + Vegas SIO + Voodoo 2, 2-TMU * 4MB]
- * NBA on NBC
- * Tenth Degree/ Juko Threat
- * NBA Showtime Gold + NFL Blitz 2000 Gold
-
- Durango PCB (uses an RM7000 or RM5271 @ 250MHz):
- * Gauntlet Dark Legacy [Atari, 200MHz]
- * Road Burners [250MHz QED5271, 32MB RAM, Durango + DSIO + Voodoo 2, 2-TMU * 4MB]
- * San Francisco Rush 2049 [250MHz RM7000, 32MB RAM, Durango + Denver + Voodoo 3, 16MB]
- * San Francisco Rush 2049 Tournament Edition (PIC ID = 348)
- * CART Fury
-
- Known bugs:
- * not working yet
-
-***************************************************************************
-
- Interrupt summary:
-
- __________
- UART clear-to-send | |
- -------(0x2000)--->| |
- | |
- UART data ready | |
- -------(0x1000)--->| | __________
- | | VSYNC | |
- Main-to-sound empty| IOASIC | -------(0x20)--->| |
- -------(0x0080)--->| | | |
- | | Ethernet | | SIO Summary
- Sound-to-main full | | -------(0x10)--->| SIO |--------------+
- -------(0x0040)--->| | | | |
- | | | | |
- Sound FIFO empty | | IOASIC Summary | | |
- -------(0x0008)--->| |----------(0x04)--->| | |
- |__________| |__________| |
- NSS/Hi-Link (0x08) |
- A2D IRQ (0x02) |
- SIO Watchdog (0x01) |
- +-------------------------------------------------------------------------------+
- |
- | __________ __________
- | IDE Controller | | | |
- | -------(0x0800)--->| | | |
- | | |----------(IRQ5)--->| |
- | SIO Summary | | | |
- +---------(0x0400)--->| |----------(IRQ4)--->| |
- | | | |
- Timer 2 | |----------(IRQ3)--->| CPU |
- -------(0x0040)--->| NILE | | |
- | |----------(IRQ2)--->| |
- Timer 3 | | | |
- -------(0x0020)--->| |----------(IRQ1)--->| |
- | | | |
- UART Transmit | |----------(IRQ0)--->| |
- -------(0x0010)--->| | |__________|
- |__________|
-
-***************************************************************************
-
- PCB Summary:
-
- Three boards per game. CPU board, sound I/O board, and a video board.
-
- CPU boards:
- Vegas - R5000 @ 200-250MHz, 8MB RAM
- Vegas32 - R5000 @ 200-250MHz, 32MB RAM
- Durango - RM7000 or RM5271 @ 250-300MHz, 8-32MB RAM
-
- Sound I/O boards:
- Vegas SIO - ADSP2104 @ 16MHz, boot ROM, 4MB RAM
- Deluxe SIO - ADSP2181 @ 32MHz, no ROM, 4MB RAM
- Denver SIO - ADSP2181 @ 33MHz, no ROM, 4MB RAM
-
- Video boards:
- Voodoo 2
- Voodoo Banshee
- Voodoo 3
-
-
-***************************************************************************
-
- Gauntlet Legends info:
-
-
- CPU PCB: Vegas CPU Midway no.5770-15563-06
- --------------------------------------------
-
- U16 33.3333MHz Oscillator (to U2 uPD82157N7-002)
- U9 100.0000MHz Oscillator (to U10 MPC948)
-
- U1 79RV5000-200 IDT 64-bit Processor TBGA
- U2 uPD82157N7-002 NEC TBGA (huge)
- U3 uPD4516161ag5-A10 NEC 1Megx16 SDRAM TSOP
- U4 uPD4516161ag5-A10 NEC 1Megx16 SDRAM TSOP
- U5 uPD4516161ag5-A10 NEC 1Megx16 SDRAM TSOP
- U6 uPD4516161ag5-A10 NEC 1Megx16 SDRAM TSOP
- U13 EPM7032LC44-15T Altera PLD Midway no.A-22544
- U11 93LC46B Microchip EEPROM Midway no.A-22545
- U18 27C4001 Boot ROM
- U10 MPC948 Motorola low voltage clock distribution chip
- U21 PC1646U2 CMD EIDE Controller
-
-
- Sound I/O PCB: Vegas 7-7-7 SIO-4 PCB Midway no.5770-15534-04
- -------------------------------------------------------------
-
- U1 33.3333MHz Oscillator
- Y1 20.0000MHz XTAL (to U24 SMC91C94QFP)
- Y2 4.0000MHz XTAL (to U37 PIC micro)
- Y3 16.0000MHz XTAL (to U14 ADSP)
-
- U28 M4T28-BR12SH1 ST Timer Keeper Snap Hat RAM
- U14 ADSP2104 Analog Devices DSP
- U8 EPF6016TC144-2 Altera FLEX 6000 PLD 144 pin TQFP
- U11 5410-14589-00 Midway Custom 164 pin QFP
- U34 5410-14590-00 Midway Custom 80 pin PQFP
- U18 ADC0848CCN NSC ADC
- U24 SMC91C94QFP SMC ISA/PCMCIA Ethernet & Modem Controller
- U5 AD1866R Analog Devices dual 16-bit audio DAC
- U31 IS61C256AH-15J ISSI 32kx8 SRAM
- U32 IS61C256AH-15J ISSI 32kx8 SRAM
- U33 IS61C256AH-15J ISSI 32kx8 SRAM
- U25 TMS418160ADZ TI 1048576x16 DRAM
- U26 TMS418160ADZ TI 1048576x16 DRAM
- U37 PIC16C57C Microchip PIC Atari no.322 Gauntlet 27"
- U44 27C256 Vegas SIO Audio Boot ROM
- U1 AM7201-35JC AMD opamp
- U2 AM7201-35JC AMD opamp
-
-
- GFX Card: Quantum 3D - Obsidian2 PCI (3DFx Voodoo2)
- ---------------------------------------------------
-
- U1 500-0009-01 3DFX Pixel processor 256 pin PQFP
- U26 500-0010-01 3DFX Texture processor 208 pin PQFP
- U2 500-0010-01 3DFX Texture processor 208 pin PQFP
- U20 ICS5342-3 ICS DAC
- U21 XC9572 Xilinx CPLD Firmware 546-0014-02
- U53 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U54 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U55 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U56 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U37 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U38 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U39 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U40 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U45 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U46 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U47 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U48 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U49 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U50 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U51 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U52 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U57 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U58 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U59 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
- U60 SM81C256K16CJ-25 Silicon Magic 100MHz EDO RAM, 4Meg
-
-
-***************************************************************************
-
- Gauntlet Dark Legacy Info:
-
-
- CPU board: Durango 5770-15982-00 sticker with RM5271 on it
- --------------------------------
- 1x RM5271 CPU(assuming this is correct...don't want to remove the heatsink from my good board)
- 1x medium sized BGA, has heatsink
- 1x Atmel ATF1500A PLD A-22912
- 4x MT48LC1M16AT RAM
- 1x 93clc46b label A-22911 config eeprom
- 1x texas instruments 8CA00YF (don't know what it is)
- 1x motorolla MPC948 clock distribution chip
- 100MHz crystal
- 1x CMDPCI646U2 IDE controller
- 1x 7segment LED display (cycles IOASIC if you try to load a game that doesnt match the PIC, spins during normal play)
- 1x 232ACBN serial port controller
- other misc 74xxx parts
- Boot ROM 1.7
-
- Connectors:
- P1 4 pin marked "Reset/Interrupt"
- P2 20 pin marked "PCI Extend"
- P8B Standard PCI connector found on PC motherboards (although is custom mounted on the side of the PCB) Voodoo connects here
- P3 DB15 labeled "Video In" Voodoo connects here, but is not required if you connect directly to the Voodoo card.
- P4 Standard IDE connector marked "IDE HDD"
- P5 9 pin marked "Serial"
- Non-designated connector marked "EXP CONN" Standard PCI connector found on PC motherboards(custom mounted on the side of the PCB), SIO connects here
-
-
-
- SIO board: Vegas777 5770-15534-05
- ---------------------------------
- 1x Midway 5410-14589-00 IO chip
- 1x ADSP-2104 (16MHz crystal attached to clock pins)
- 1x ADC0848CCN analog input chip
- 1x ST M4t28-br12sh1 timekeeper
- 1x Altera Flex epf6016tc144 pld
- 1x Midway security PIC Gauntlet DL 27" 346xxxxxx (4MHz crystal attached)
- 2x KM416C1200CJ-6 RAM
- 1x SMSC LAN91C94 ethernet
- 1x Midway 5410-14590-00 ???
- 3x CY7C199-15VC 32Kx8 SRAM
- 1x AD1866 DAC
- 20MHz crystal attached to LAN chip
- other misc parts
- SIO ROM 1.0
-
-
-
- Voodoo card: Quantum3D Obsidian2 PCI 650-0818-03D
- -------------------------------------------------
- (SLI pin holes filled with solder, no connector, has no VGA input/passthrough connector, only VGA out)
-
- 1x XC9572 label 546-0014-02
- 20x silicon magic 100MHz sm81c256k16cj-25 RAM (8MB for texture RAM, 2MB for framebuffer?)
- 2x 3dfx 500-0010-01 texelfx
- 1x 3dfx 500-0009-01 pixelfx
- 1x 14.318MHz crystal
- 1 x 3384q 10bit bus switch(i think)
- 1x ICS GenDAC ICS5342-3
- other misc IC's
-
-
-***************************************************************************
-
- Gauntlet Legends versus Gauntlet Dark Legacy
-
-
- CPU board: Vegas 5770-15563-06
- ------------------------------
- 4x NEC D4516161A65-A10-9NF 8MB RAM (other difference here...this PCB only has spots for these chips, the Durango has alternate positions for RAM, I assume for larger chips)
- 1x 33.3333MHz crystal (in addition to the 100MHz crystal, on Durango this spot is present but unpopulated)
- 1x Atmel ATF1500A PLD A-22560 (replaces A-22912 on Durango)
- 1x 93lc46b (A-22545 config EEPROM, dump is mostly FF and 00)
- Boot ROM "Gauntlet Update Boot v1.5 A-5343-30022-7"
-
-
-
- SIO board: Vegas777 5770-15534-05 (same as Legacy)
- --------------------------------------------------
- Security PIC "Gauntlet 27" 322xxxxxx"
- Sound ROM "Gauntlet 3D U44 Sound 1.0"
- 2x TMS418160ADZ RAM instead of 2x KM416C1200CJ-6 on Legacy
- 20MHz crystal attached to LAN chip
- 1x Valor SF1012 ethernet physical interface(also on other board)
-
- Connectors:
- P1 5 pin marked "Snd Line In"
- P5 5 pin marked "Snd Line Out"
- unmarked 4 pin PC style power connector(for hard drive)
- standard JAMMA connection
- P7 14 pin marked "PLYR4"
- P14 14 pin marked "PLYR3"
- P23 10 pin marked "Coin DR"
- P10 unmarked 10 pin connector (no idea)
- P21 99 pin unmarked -right on top of PCI edge connection to CPU board
- P15 20 pin marked "Aux Latched Out"
- P8 14 pin unmarked
- P2 11 pin marked "Gun 2 I/O"
- P4 11 pin marked "Gun 1 I/O"
- P 18 standard ethernet connector
-
-
-**************************************************************************/
-
-#include "emu.h"
-#include "audio/dcs.h"
-
-#include "bus/ata/idehd.h"
-#include "bus/rs232/rs232.h"
-#include "cpu/adsp2100/adsp2100.h"
-#include "cpu/mips/mips3.h"
-#include "machine/idectrl.h"
-#include "machine/ins8250.h"
-#include "machine/midwayic.h"
-#include "machine/smc91c9x.h"
-#include "machine/timekpr.h"
-#include "machine/pci.h"
-#include "machine/vrc5074.h"
-#include "machine/pci-ide.h"
-#include "video/voodoo_pci.h"
-#include "screen.h"
-
-#include "sf2049.lh"
-
-/*************************************
- *
- * Debugging constants
- *
- *************************************/
-
-#define LOG_TIMEKEEPER (0)
-#define LOG_SIO (0)
-
-/*************************************
- *
- * Core constants
- *
- *************************************/
-
-#define PCI_ID_NILE ":pci:00.0"
-#define PCI_ID_VIDEO ":pci:03.0"
-#define PCI_ID_IDE ":pci:05.0"
-
-class vegas_state : public driver_device
-{
-public:
- vegas_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_nile(*this, PCI_ID_NILE),
- m_timekeeper(*this, "timekeeper") ,
- m_ethernet(*this, "ethernet"),
- m_dcs(*this, "dcs"),
- m_ioasic(*this, "ioasic"),
- m_uart1(*this, "uart1"),
- m_uart2(*this, "uart2"),
- m_io_analog(*this, "AN.%u", 0U),
- m_io_49way_x(*this, "49WAYX_P%u", 1U),
- m_io_49way_y(*this, "49WAYY_P%u", 1U),
- m_io_keypad(*this, "KEYPAD"),
- m_io_gearshift(*this, "GEAR"),
- m_io_system(*this, "SYSTEM"),
- m_wheel_driver(*this, "wheel"),
- m_lamps(*this, "lamp%u", 0U),
- m_a2d_shift(0)
- { }
-
- void vegascore(machine_config &config);
- void vegas(machine_config &config);
- void vegas250(machine_config &config);
- void vegas32m(machine_config &config);
- void vegasban(machine_config &config);
- void vegasv3(machine_config &config);
- void denver(machine_config &config);
-
- void nbanfl(machine_config &config);
- void sf2049te(machine_config &config);
- void sf2049se(machine_config &config);
- void nbashowt(machine_config &config);
- void gauntdl(machine_config &config);
- void sf2049(machine_config &config);
- void gauntleg(machine_config &config);
- void cartfury(machine_config &config);
- void tenthdeg(machine_config &config);
- void nbagold(machine_config &config);
- void roadburn(machine_config &config);
- void warfa(machine_config &config);
-
- void init_gauntleg();
- void init_cartfury();
- void init_tenthdeg();
- void init_nbashowt();
- void init_nbagold();
- void init_warfa();
- void init_roadburn();
- void init_sf2049te();
- void init_gauntdl();
- void init_nbanfl();
- void init_sf2049();
- void init_sf2049se();
-
- DECLARE_CUSTOM_INPUT_MEMBER(i40_r);
- DECLARE_CUSTOM_INPUT_MEMBER(keypad_r);
- DECLARE_CUSTOM_INPUT_MEMBER(gearshift_r);
-
-private:
- static constexpr unsigned SYSTEM_CLOCK = 100000000;
-
- required_device<mips3_device> m_maincpu;
- required_device<vrc5074_device> m_nile;
- required_device<m48t37_device> m_timekeeper;
- required_device<smc91c94_device> m_ethernet;
- required_device<dcs_audio_device> m_dcs;
- required_device<midway_ioasic_device> m_ioasic;
- optional_device<ns16550_device> m_uart1;
- optional_device<ns16550_device> m_uart2;
- optional_ioport_array<8> m_io_analog;
- optional_ioport_array<4> m_io_49way_x;
- optional_ioport_array<4> m_io_49way_y;
- optional_ioport m_io_keypad;
- optional_ioport m_io_gearshift;
- optional_ioport m_io_system;
- output_finder<1> m_wheel_driver;
- output_finder<16> m_lamps;
-
- int m_a2d_shift;
- int8_t m_wheel_force;
- int m_wheel_offset;
- bool m_wheel_calibrated;
- uint8_t m_vblank_state;
- uint8_t m_cpuio_data[4];
- uint8_t m_sio_reset_ctrl;
- uint8_t m_sio_irq_enable;
- uint8_t m_sio_irq_state;
- uint8_t m_duart_irq_state;
- uint8_t m_sio_led_state;
- uint8_t m_pending_analog_read;
- uint8_t m_cmos_unlocked;
- uint8_t m_dcs_idma_cs;
- uint32_t m_i40_data;
- uint32_t m_keypad_select;
- uint32_t m_gear;
-
- DECLARE_WRITE_LINE_MEMBER(duart_irq_cb);
- DECLARE_WRITE_LINE_MEMBER(vblank_assert);
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- void update_sio_irqs();
-
- DECLARE_WRITE_LINE_MEMBER(watchdog_reset);
- DECLARE_WRITE_LINE_MEMBER(watchdog_irq);
- DECLARE_WRITE32_MEMBER(timekeeper_w);
- DECLARE_READ32_MEMBER(timekeeper_r);
- void reset_sio(void);
- DECLARE_READ8_MEMBER(sio_r);
- DECLARE_WRITE8_MEMBER(sio_w);
- DECLARE_WRITE8_MEMBER( cpu_io_w );
- DECLARE_READ8_MEMBER( cpu_io_r );
- DECLARE_READ32_MEMBER( analog_port_r );
- DECLARE_WRITE32_MEMBER( analog_port_w );
- DECLARE_WRITE32_MEMBER( asic_fifo_w );
- DECLARE_READ32_MEMBER( ide_main_r );
- DECLARE_WRITE32_MEMBER( ide_main_w );
- DECLARE_READ32_MEMBER( ide_alt_r );
- DECLARE_WRITE32_MEMBER( ide_alt_w );
- DECLARE_READ32_MEMBER( ide_bus_master32_r );
- DECLARE_WRITE32_MEMBER( ide_bus_master32_w );
- DECLARE_READ32_MEMBER( ethernet_r );
- DECLARE_WRITE32_MEMBER( ethernet_w );
- DECLARE_WRITE32_MEMBER( dcs3_fifo_full_w );
- DECLARE_WRITE_LINE_MEMBER(ethernet_interrupt);
- DECLARE_WRITE_LINE_MEMBER(ioasic_irq);
- DECLARE_READ32_MEMBER(unknown_r);
- DECLARE_READ8_MEMBER(parallel_r);
- DECLARE_WRITE8_MEMBER(parallel_w);
- DECLARE_WRITE8_MEMBER(mpsreset_w);
- DECLARE_WRITE32_MEMBER(i40_w);
-
- DECLARE_WRITE32_MEMBER(wheel_board_w);
-
- std::string sioIRQString(uint8_t data);
-
- void vegas_cs2_map(address_map &map);
- void vegas_cs3_map(address_map &map);
- void vegas_cs4_map(address_map &map);
- void vegas_cs5_map(address_map &map);
- void vegas_cs6_map(address_map &map);
- void vegas_cs7_map(address_map &map);
- void vegas_cs8_map(address_map &map);
-};
-
-/*************************************
- *
- * Machine init
- *
- *************************************/
-
-void vegas_state::machine_start()
-{
- /* set the fastest DRC options, but strict verification */
- m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY + MIPS3DRC_FLUSH_PC);
-
- m_wheel_driver.resolve();
- m_lamps.resolve();
-
- /* register for save states */
- save_item(NAME(m_vblank_state));
- save_item(NAME(m_cpuio_data));
- save_item(NAME(m_sio_reset_ctrl));
- save_item(NAME(m_sio_irq_enable));
- save_item(NAME(m_sio_irq_state));
- save_item(NAME(m_duart_irq_state));
- save_item(NAME(m_sio_led_state));
- save_item(NAME(m_pending_analog_read));
- save_item(NAME(m_cmos_unlocked));
- save_item(NAME(m_i40_data));
- save_item(NAME(m_keypad_select));
- save_item(NAME(m_gear));
- save_item(NAME(m_wheel_calibrated));
-
- /* identify our sound board */
- if (m_dcs->get_rev() == dcs_audio_device::REV_DSIO) {
- m_dcs_idma_cs = 6;
- if (LOG_SIO)
- logerror("Found dsio\n");
- }
- else if (m_dcs->get_rev() == dcs_audio_device::REV_DENV) {
- m_dcs_idma_cs = 7;
- if (LOG_SIO)
- logerror("Found denver\n");
- }
- else {
- m_dcs_idma_cs = 0;
- if (LOG_SIO)
- logerror("Did not find dcs2 sound board\n");
- }
-}
-
-
-void vegas_state::machine_reset()
-{
- m_dcs->reset_w(1);
- m_dcs->reset_w(0);
-
- // Clear CPU IO registers
- memset(m_cpuio_data, 0, ARRAY_LENGTH(m_cpuio_data));
- // Clear SIO registers
- reset_sio();
- m_duart_irq_state = 0;
- m_i40_data = 0;
- m_keypad_select = 0;
- m_gear = 1;
- m_wheel_force = 0;
- m_wheel_offset = 0;
- m_wheel_calibrated = false;
-
- // Set the disk dma transfer speed
- auto *hdd = subdevice<ide_hdd_device>(PCI_ID_IDE":ide:0:hdd");
- hdd->set_dma_transfer_time(attotime::from_usec(15));
- // Allow ultra dma
- //uint16_t *identify_device = hdd->identify_device_buffer();
- //identify_device[88] = 0x7f;
-}
-
-/*************************************
-* Watchdog interrupts
-*************************************/
-#define WD_IRQ 0x1
-WRITE_LINE_MEMBER(vegas_state::watchdog_irq)
-{
- if (state && !(m_sio_irq_state & WD_IRQ)) {
- logerror("%s: vegas_state::watchdog_irq state = %i\n", machine().describe_context(), state);
- m_sio_irq_state |= WD_IRQ;
- update_sio_irqs();
- }
- else if (!state && (m_sio_irq_state & WD_IRQ)) {
- logerror("%s: vegas_state::watchdog_irq state = %i\n", machine().describe_context(), state);
- m_sio_irq_state &= ~WD_IRQ;
- update_sio_irqs();
- }
-}
-
-/*************************************
-* Watchdog Reset
-*************************************/
-WRITE_LINE_MEMBER(vegas_state::watchdog_reset)
-{
- if (state) {
- printf("vegas_state::watchdog_reset!!!\n");
- logerror("vegas_state::watchdog_reset!!!\n");
- machine().schedule_soft_reset();
- }
-}
-
-/*************************************
- *
- * Timekeeper access
- *
- *************************************/
-
-WRITE32_MEMBER( vegas_state::timekeeper_w )
-{
- if (m_cmos_unlocked)
- {
- if (ACCESSING_BITS_0_7)
- m_timekeeper->write(offset * 4 + 0, data >> 0);
- if (ACCESSING_BITS_8_15)
- m_timekeeper->write(offset * 4 + 1, data >> 8);
- if (ACCESSING_BITS_16_23)
- m_timekeeper->write(offset * 4 + 2, data >> 16);
- if (ACCESSING_BITS_24_31)
- m_timekeeper->write(offset * 4 + 3, data >> 24);
- if (offset*4 >= 0x7ff0)
- if (LOG_TIMEKEEPER) logerror("%s timekeeper_w(%04X & %08X) = %08X\n", machine().describe_context(), offset*4, mem_mask, data);
- m_cmos_unlocked = 0;
- }
- else
- logerror("%s: timekeeper_w(%04X,%08X & %08X) without CMOS unlocked\n", machine().describe_context(), offset, data, mem_mask);
-}
-
-
-READ32_MEMBER( vegas_state::timekeeper_r )
-{
- uint32_t result = 0xffffffff;
- if (ACCESSING_BITS_0_7)
- result = (result & ~0x000000ff) | (m_timekeeper->read(offset * 4 + 0) << 0);
- if (ACCESSING_BITS_8_15)
- result = (result & ~0x0000ff00) | (m_timekeeper->read(offset * 4 + 1) << 8);
- if (ACCESSING_BITS_16_23)
- result = (result & ~0x00ff0000) | (m_timekeeper->read(offset * 4 + 2) << 16);
- if (ACCESSING_BITS_24_31)
- result = (result & ~0xff000000) | (m_timekeeper->read(offset * 4 + 3) << 24);
- if (offset * 4 >= 0x7ff0) {
- // Initial RTC check expects reads to the RTC to take some time
- m_maincpu->eat_cycles(30);
- if (LOG_TIMEKEEPER) logerror("%s: timekeeper_r(%04X & %08X) = %08X\n", machine().describe_context(), offset * 4, mem_mask, result);
- }
- return result;
-}
-
-
-
-
-/*************************************
- *
- * SIO interrupts
- *
- *************************************/
-std::string vegas_state::sioIRQString(uint8_t data)
-{
- std::string sioBitDef[6] = { "SIO_WD", "A2D", "IOASIC", "NSS", "ETHER", "VSYNC" };
- std::string sioBitSel = "";
- for (int i = 0; i < 6; i++)
- if (data & (1 << i)) sioBitSel += " " + sioBitDef[i];
- return sioBitSel;
-
-}
-
-void vegas_state::update_sio_irqs()
-{
- // Duart shares IRQ with SIO
- if ((m_sio_irq_state & m_sio_irq_enable) || m_duart_irq_state) {
- m_nile->pci_intr_c(ASSERT_LINE);
- }
- else {
- m_nile->pci_intr_c(CLEAR_LINE);
- }
- if (LOG_SIO) {
- std::string sioEnable = sioIRQString(m_sio_irq_enable);
- std::string sioState = sioIRQString(m_sio_irq_state);
- logerror("update_sio_irqs: irq_enable: %02x %s irq_state: %02x %s\n", m_sio_irq_enable, sioEnable, m_sio_irq_state, sioState);
- }
-}
-
-WRITE_LINE_MEMBER(vegas_state::duart_irq_cb)
-{
- // Duart shares IRQ with SIO
- if (state ^ m_duart_irq_state) {
- m_duart_irq_state = state;
- update_sio_irqs();
- }
-}
-
-WRITE_LINE_MEMBER(vegas_state::vblank_assert)
-{
- if (LOG_SIO)
- logerror("vblank_assert: m_sio_reset_ctrl: %04x state: %d\n", m_sio_reset_ctrl, state);
- // latch on the correct polarity transition
- if ((m_sio_irq_enable & 0x20) && ((state && !(m_sio_reset_ctrl & 0x10)) || (!state && (m_sio_reset_ctrl & 0x10))))
- {
- m_sio_irq_state |= 0x20;
- update_sio_irqs();
- }
-}
-
-
-WRITE_LINE_MEMBER(vegas_state::ioasic_irq)
-{
- if (state)
- m_sio_irq_state |= 0x04;
- else
- m_sio_irq_state &= ~0x04;
- update_sio_irqs();
-}
-
-WRITE_LINE_MEMBER(vegas_state::ethernet_interrupt)
-{
- if (state)
- m_sio_irq_state |= 0x10;
- else
- m_sio_irq_state &= ~0x10;
- update_sio_irqs();
-}
-
-void vegas_state::reset_sio()
-{
- m_sio_reset_ctrl = 0;
- m_sio_irq_enable = 0;
- m_sio_irq_state = 0;
- m_sio_led_state = 0;
- update_sio_irqs();
-}
-
-READ8_MEMBER(vegas_state::sio_r)
-{
- uint32_t result = 0x0;
- int index = offset >> 12;
- switch (index) {
- case 0:
- // Reset Control: Bit 0=>Reset IOASIC, Bit 1=>Reset NSS Connection, Bit 2=>Reset SMC, Bit 3=>Reset VSYNC, Bit 4=>VSYNC Polarity
- result = m_sio_reset_ctrl;
- // Hack for fpga programming finished
- m_cpuio_data[3] |= 0x1;
- break;
- case 1:
- // Interrupt Enable
- result = m_sio_irq_enable;
- if (LOG_SIO) {
- std::string sioBitSel = sioIRQString(result);
- logerror("%s: sio_r: INTR ENABLE 0x%02x %s\n", machine().describe_context(), result, sioBitSel);
- }
- break;
- case 2:
- // Interrupt Cause
- result = m_sio_irq_state & m_sio_irq_enable;
- if (LOG_SIO) {
- std::string sioBitSel = sioIRQString(result);
- logerror("%s: sio_r: INTR CAUSE 0x%02x %s\n", machine().describe_context(), result, sioBitSel);
- }
- //m_sio_irq_state &= ~0x02;
- break;
- case 3:
- // Interrupt Status
- result = m_sio_irq_state;
- if (LOG_SIO) {
- std::string sioBitSel = sioIRQString(result);
- logerror("%s: sio_r: INTR STATUS 0x%02x %s\n", machine().describe_context(), result, sioBitSel);
- }
- break;
- case 4:
- // LED
- result = m_sio_led_state;
- break;
- case 5:
- {
- result = 0x00;
- switch (offset & 0x7) {
- case 0:
- // Gun 1 H Low
- break;
- case 1:
- // Gun 1 H High
- break;
- case 2:
- // Gun 1 V Low
- break;
- case 3:
- // Gun 1 V High
- break;
- case 4:
- // Gun 2 H Low
- break;
- case 5:
- // Gun 2 H High
- break;
- case 6:
- // Gun 2 V Low
- break;
- case 7:
- // Gun 2 V High
- break;
- }
- break;
- }
- }
- if (LOG_SIO && (index < 0x1 || index > 0x4))
- logerror("%s: sio_r: offset: %08x index: %d result: %02X\n", machine().describe_context(), offset, index, result);
- return result;
-}
-
-
-WRITE8_MEMBER(vegas_state::sio_w)
-{
- // Bit 0 of data is used to program the 6016 FPGA in programming mode (m_cpio_data[3](Bit 0)==0)
- if (m_cpuio_data[3] & 0x1) {
- int index = offset >> 12;
- switch (index) {
- case 0:
- if (LOG_SIO)
- logerror("sio_w: Reset Control offset: %08x index: %d data: %02X\n", offset, index, data);
- // Reset Control: Bit 0=>Reset IOASIC, Bit 1=>Reset NSS Connection, Bit 2=>Reset SMC, Bit 3=>Reset VSYNC, Bit 4=>VSYNC Polarity
- /* bit 0 is used to reset the IOASIC */
- if (!(data & (1 << 0)))
- {
- m_ioasic->ioasic_reset();
- m_dcs->reset_w(data & 0x01);
- }
- if ((data & (1 << 2)) && !(m_sio_reset_ctrl & (1 << 2))) {
- logerror("sio_w: Ethernet reset\n");
- m_ethernet->reset();
- }
- /* toggle bit 3 low to reset the VBLANK */
- if (!(data & (1 << 3)))
- {
- m_sio_irq_state &= ~0x20;
- update_sio_irqs();
- }
- m_sio_reset_ctrl = data;
- break;
- case 1:
- // Interrupt Enable
- // Bit 0 => SIO Watchdog
- // Bit 1 => A/D Converter
- // Bit 2 => IOASIC
- // Bit 3 => NSS / Hi-Link
- // Bit 4 => Ethernet
- // Bit 5 => Vsync
- if (LOG_SIO) {
- std::string sioBitSel = sioIRQString(data);
- logerror("sio_w: Interrupt Enable 0x%02x %s\n", data, sioBitSel);
- //logerror("sio_w: Interrupt Enable offset: %08x index: %d data: %02X\n", offset, index, data);
- }
- m_sio_irq_enable = data;
- update_sio_irqs();
- break;
- case 4:
- // LED
- if (LOG_SIO)
- logerror("sio_w: LED offset: %08x index: %d data: %02X\n", offset, index, data);
- m_sio_led_state = data;
- break;
- case 6:
- // CMOS Unlock
- m_cmos_unlocked = 1;
- break;
- case 7:
- // Watchdog
- m_timekeeper->watchdog_write();
- if (0 && LOG_SIO)
- logerror("sio_w: Watchdog: %08x index: %d data: %02X\n", offset, index, data);
- //m_maincpu->eat_cycles(100);
- break;
- }
- }
-}
-
-/*************************************
- *
- * CPU IO accesses
- *
- *************************************/
-
-WRITE8_MEMBER(vegas_state::cpu_io_w)
-{
- // 0: system LED
- // 1: PLD Config / Clock Gen
- // 2: PLD Status / Jammma Serial Sense Bit 7:4=>Revision, Bit 1=>Busy, Bit 0=>Config Done
- // 3: System Reset Bit 0=>enable sio, Bit 1=>enable ide, Bit 2=>enable PCI
- m_cpuio_data[offset] = data;
- switch (offset) {
- case 0:
- {
- char digit = 'U';
- switch (data & 0xff) {
- case 0xc0: digit = '0'; break;
- case 0xf9: digit = '1'; break;
- case 0xa4: digit = '2'; break;
- case 0xb0: digit = '3'; break;
- case 0x99: digit = '4'; break;
- case 0x92: digit = '5'; break;
- case 0x82: digit = '6'; break;
- case 0xf8: digit = '7'; break;
- case 0x80: digit = '8'; break;
- case 0x90: digit = '9'; break;
- case 0x88: digit = 'A'; break;
- case 0x83: digit = 'B'; break;
- case 0xc6: digit = 'C'; break;
- case 0xa7: digit = 'c'; break;
- case 0xa1: digit = 'D'; break;
- case 0x86: digit = 'E'; break;
- case 0x87: digit = 'F'; break;
- case 0x7f: digit = '.'; break;
- case 0xf7: digit = '_'; break;
- case 0xbf: digit = '|'; break;
- case 0xfe: digit = '-'; break;
- case 0xff: digit = 'Z'; break;
- }
- if (LOG_SIO) {
- popmessage("System LED: %C", digit);
- //logerror("%s: cpu_io_w System LED offset %X = %02X '%c'\n", machine().describe_context(), offset, data, digit);
- }
- }
- break;
- case 1:
- m_cpuio_data[2] = (m_cpuio_data[2] & ~0x02) | ((m_cpuio_data[1] & 0x01) << 1) | (m_cpuio_data[1] & 0x01);
- if (!(data & 0x1)) {
- // Need to clear this register while programming SIO FPGA so that fpga config data doesn't register in sio_w
- m_cpuio_data[3] &= ~0x1;
- // Reset the SIO registers
- reset_sio();
- }
- if (LOG_SIO)
- logerror("%s: cpu_io_w PLD Config offset %X = %02X\n", machine().describe_context(), offset, data);
- break;
- case 2:
- if (LOG_SIO && (m_cpuio_data[3] & 0x1))
- logerror("%s: cpu_io_w PLD Status / Jamma Serial Sense offset %X = %02X\n", machine().describe_context(), offset, data);
- break;
- case 3:
- // Bit 0: Enable SIO, Bit 1: Enable SIO_R0/IDE, Bit 2: Enable PCI
- if (LOG_SIO)
- logerror("%s: cpu_io_w System Reset offset %X = %02X\n", machine().describe_context(), offset, data);
- break;
- default:
- logerror("%s: cpu_io_w unknown offset %X = %02X\n", machine().describe_context(), offset, data);
- break;
- }
-}
-
-READ8_MEMBER( vegas_state::cpu_io_r )
-{
- uint32_t result = 0;
- if (offset < 4)
- result = m_cpuio_data[offset];
- if (LOG_SIO && !(!(m_cpuio_data[3] & 0x1)))
- logerror("%s:cpu_io_r offset %X = %02X\n", machine().describe_context(), offset, result);
- return result;
-}
-
-
-
-/*************************************
- *
- * Analog input handling
- *
- *************************************/
-
-READ32_MEMBER( vegas_state::analog_port_r )
-{
- //logerror("%s: analog_port_r = %08X & %08X\n", machine().describe_context(), m_pending_analog_read, mem_mask);
- // Clear interrupt
- m_sio_irq_state &= ~0x02;
- if (m_sio_irq_enable & 0x02) {
- update_sio_irqs();
- }
- // TODO: Need to look at the proper shift value for sf2049
- return m_pending_analog_read << (m_a2d_shift << 1);
-}
-
-
-WRITE32_MEMBER( vegas_state::analog_port_w )
-{
- uint32_t shift_data = data >> m_a2d_shift;
- int index = shift_data & 0x7;
- uint8_t currValue = m_io_analog[index].read_safe(0);
- if (!m_wheel_calibrated && ((m_wheel_force > 20) || (m_wheel_force < -20))) {
- if (m_wheel_force > 0 && m_wheel_offset < 128)
- m_wheel_offset++;
- else if (m_wheel_offset > -128)
- m_wheel_offset--;
- int tmpVal = int(currValue) + m_wheel_offset;
- if (tmpVal < m_io_analog[index]->field(0xff)->minval())
- m_pending_analog_read = m_io_analog[index]->field(0xff)->minval();
- else if (tmpVal > m_io_analog[index]->field(0xff)->maxval())
- m_pending_analog_read = m_io_analog[index]->field(0xff)->maxval();
- else
- m_pending_analog_read = tmpVal;
- }
- else {
- m_pending_analog_read = currValue;
- }
- // Declare calibration finished as soon as a SYSTEM button is hit
- if (!m_wheel_calibrated && ((~m_io_system->read()) & 0xffff)) {
- m_wheel_calibrated = true;
- //osd_printf_info("wheel calibration comlete wheel: %02x\n", currValue);
- }
- //logerror("analog_port_w: wheel_force: %i read: %i\n", m_wheel_force, m_pending_analog_read);
- //logerror("%s: analog_port_w = %08X & %08X index = %d\n", machine().describe_context(), data, mem_mask, index);
- if (m_sio_irq_enable & 0x02) {
- m_sio_irq_state |= 0x02;
- update_sio_irqs();
- }
-}
-
-
-
-/*************************************
- *
- * Misc accesses
- *
- *************************************/
-
-WRITE32_MEMBER( vegas_state::asic_fifo_w )
-{
- m_ioasic->fifo_w(data);
-}
-
-READ32_MEMBER( vegas_state::ethernet_r )
-{
- uint32_t result = 0;
- if (ACCESSING_BITS_0_15)
- result |= m_ethernet->read(space, offset * 2 + 0, mem_mask);
- if (ACCESSING_BITS_16_31)
- result |= m_ethernet->read(space, offset * 2 + 1, mem_mask >> 16) << 16;
- //logerror("ethernet_r: offset %08x = %08x & %08x\n", offset, result, mem_mask);
- return result;
-}
-
-
-WRITE32_MEMBER( vegas_state::ethernet_w )
-{
- if (ACCESSING_BITS_0_15)
- m_ethernet->write(space, offset * 2 + 0, data, mem_mask);
- if (ACCESSING_BITS_16_31)
- m_ethernet->write(space, offset * 2 + 1, data >> 16, mem_mask >> 16);
- //logerror("ethernet_w: offset %08x = %08x & %08x\n", offset, data, mem_mask);
-}
-
-
-WRITE32_MEMBER( vegas_state::dcs3_fifo_full_w )
-{
- m_ioasic->fifo_full_w(data);
-}
-
-READ32_MEMBER(vegas_state::unknown_r)
-{
- uint32_t result = 0xffffffff;
- if (1)
- logerror("unknown_r: offset: %08X data: %08X mask: %08X\n", offset * 4, result, mem_mask);
- return result;
-}
-
-/*************************************
-* Parallel Port
-*************************************/
-READ8_MEMBER(vegas_state::parallel_r)
-{
- uint8_t result = 0x7;
- logerror("%s: parallel_r %08x = %02x\n", machine().describe_context(), offset, result);
- return result;
-}
-
-WRITE8_MEMBER(vegas_state::parallel_w)
-{
- logerror("%s: parallel_w %08x = %02x\n", machine().describe_context(), offset, data);
-}
-
-/*************************************
-* MPS Reset
-*************************************/
-WRITE8_MEMBER(vegas_state::mpsreset_w)
-{
- logerror("%s: mpsreset_w %08x = %02x\n", machine().describe_context(), offset, data);
-}
-
-/*************************************
-* Optical 49 Way Joystick I40 Board
-*************************************/
-WRITE32_MEMBER(vegas_state::i40_w)
-{
- //printf("i40_w: data = %08x\n", data);
- //logerror("i40_w: data = %08x\n", data);
- m_i40_data = data;
-}
-
-CUSTOM_INPUT_MEMBER(vegas_state::i40_r)
-{
- static const uint8_t translate49[7] = { 0x8, 0xc, 0xe, 0xf, 0x3, 0x1, 0x0 };
- int index = m_i40_data & 0xf;
- uint8_t data = 0;
- switch (index) {
- case 0:
- data = translate49[m_io_49way_x[0]->read() >> 4];
- break;
- case 1:
- data = translate49[m_io_49way_y[0]->read() >> 4];
- break;
- case 2:
- data = translate49[m_io_49way_x[1]->read() >> 4];
- break;
- case 3:
- data = translate49[m_io_49way_y[1]->read() >> 4];
- break;
- case 4:
- data = translate49[m_io_49way_x[2]->read() >> 4];
- break;
- case 5:
- data = translate49[m_io_49way_y[2]->read() >> 4];
- break;
- case 6:
- data = translate49[m_io_49way_x[3]->read() >> 4];
- break;
- case 7:
- data = translate49[m_io_49way_y[3]->read() >> 4];
- break;
- case 10:
- case 11:
- case 12:
- // I40 Detection
- data = ~index & 0xf;
- break;
- default:
- //logerror("%s: i40_r: select: %x index: %d data: %x\n", machine().describe_context(), m_i40_data, index, data);
- break;
- }
- //if (m_i40_data & 0x1000)
- // printf("%s: i40_r: select: %x index: %d data: %x\n", machine().describe_context().c_str(), m_i40_data, index, data);
- //m_i40_data &= ~0x1000;
- return data;
-}
-
-/*************************************
-* Keypad
-*************************************/
-WRITE32_MEMBER(vegas_state::wheel_board_w)
-{
- bool chip_select = BIT(data, 11);
- bool latch_clk = BIT(data, 10);
- uint8_t op = (data >> 8) & 0x3;
- uint8_t arg = data & 0xff;
-
- //logerror("wheel_board_w: data = %08x op: %02x arg: %02x\n", data, op, arg);
-
- if (chip_select && latch_clk)
- {
- switch (op)
- {
- case 0x0:
- m_wheel_driver[0] = arg; // target wheel angle. signed byte.
- m_wheel_force = int8_t(~arg);
- break;
-
- case 0x1:
- for (uint8_t bit = 0; bit < 8; bit++)
- m_lamps[bit] = BIT(arg, bit);
-
- /* leader lamp bit is included in every write, for some reason. */
- m_lamps[8] = BIT(data, 12);
- break;
-
- case 0x2:
- m_keypad_select = arg;
- break;
- }
- }
-}
-
-CUSTOM_INPUT_MEMBER(vegas_state::keypad_r)
-{
- int row_sel;
- for (row_sel=0; row_sel<4; row_sel++)
- {
- if (!(m_keypad_select & (1 << row_sel)))
- break;
- }
- if (row_sel <= 3) {
- uint32_t bits = m_io_keypad->read();
- bits >>= row_sel * 3;
- return bits & 0x7;
- }
- else
- return 0x7;
-}
-
-/*************************************
-*
-* Gearshift
-*
-*************************************/
-DECLARE_CUSTOM_INPUT_MEMBER(vegas_state::gearshift_r)
-{
- // Check for gear change and save gear selection
- uint32_t gear = m_io_gearshift->read();
- for (int i = 0; i < 4; i++)
- {
- if (gear & (1 << i))
- m_gear = 1 << i;
- }
- return m_gear;
-}
-
-/*************************************
- *
- * Input ports
- *
- *************************************/
-
-static INPUT_PORTS_START( vegas_common )
- PORT_START("DIPS")
- PORT_DIPNAME( 0x0001, 0x0001, "Unknown0001" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, "Unknown0002" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, "Unknown0004" )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0008, "Unknown0008" )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0010, "Unknown0010" )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, "Unknown0020" )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, "Unknown0040" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, "Unknown0080" )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, "Unknown0100" )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0200, "Unknown0200" )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0400, "Unknown0400" )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0800, 0x0800, "Unknown0800" )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, "Unknown1000" )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, "Unknown2000" )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, "Unknown4000" )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, "Unknown8000" )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_START("SYSTEM")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_TILT )
- PORT_SERVICE_NO_TOGGLE( 0x0010, IP_ACTIVE_LOW )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN4 )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START3 )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START4 )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_VOLUME_DOWN )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_VOLUME_UP )
- PORT_BIT( 0x6000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BILL1 )
-
- PORT_START("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("IN2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3) PORT_8WAY
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3) PORT_8WAY
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) PORT_8WAY
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3) PORT_8WAY
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4) PORT_8WAY
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4) PORT_8WAY
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4) PORT_8WAY
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4) PORT_8WAY
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("AN.0") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN.1") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN.2") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN.3") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN.4") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN.5") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN.6") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN.7") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
-
-INPUT_PORTS_END
-
-
-
-/*************************************
- *
- * Input ports
- *
- *************************************/
-
-static INPUT_PORTS_START( gauntleg )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0001, "PM Dump" )
- PORT_DIPSETTING( 0x0001, "Watchdog resets only" )
- PORT_DIPSETTING( 0x0000, "All resets" )
- PORT_DIPNAME( 0x00c0, 0x00c0, "Test Mode" )
- PORT_DIPSETTING( 0x00c0, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, "Disk-based Test" )
- PORT_DIPSETTING( 0x0080, "EPROM-based Test" )
- PORT_DIPSETTING( 0x0000, "Interactive Diagnostics" )
- PORT_DIPNAME( 0x0800, 0x0800, "SIO Rev" )
- PORT_DIPSETTING( 0x0800, "1 or later")
- PORT_DIPSETTING( 0x0000, "0")
- PORT_DIPNAME( 0x1000, 0x1000, "Harness" )
- PORT_DIPSETTING( 0x1000, "JAMMA" )
- PORT_DIPSETTING( 0x0000, "Midway" )
- PORT_DIPNAME( 0x2000, 0x2000, "Joysticks" )
- PORT_DIPSETTING( 0x2000, "8-Way" )
- PORT_DIPSETTING( 0x0000, "49-Way" )
- PORT_DIPNAME( 0xc000, 0x4000, "Resolution" )
- PORT_DIPSETTING( 0xc000, "Standard Res 512x256" )
- PORT_DIPSETTING( 0x4000, "Medium Res 512x384" )
- PORT_DIPSETTING( 0x0000, "VGA Res 640x480" )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( gauntdl )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0001, "PM Dump" )
- PORT_DIPSETTING( 0x0001, "Watchdog resets only" )
- PORT_DIPSETTING( 0x0000, "All resets" )
- PORT_DIPNAME( 0x0002, 0x0002, "Quantum 3dfx card rev" )
- PORT_DIPSETTING( 0x0002, "4 or later" )
- PORT_DIPSETTING( 0x0000, "3 or earlier" )
- PORT_DIPNAME( 0x0004, 0x0004, "DRAM" )
- PORT_DIPSETTING( 0x0004, "8MB" )
- PORT_DIPSETTING( 0x0000, "32MB" )
- PORT_DIPNAME( 0x00c0, 0x00c0, "Test Mode" )
- PORT_DIPSETTING( 0x00c0, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, "Disk-based Test" )
- PORT_DIPSETTING( 0x0080, "EPROM-based Test" )
- PORT_DIPSETTING( 0x0000, "Interactive Diagnostics" )
- PORT_DIPNAME( 0x0800, 0x0800, "SIO Rev" )
- PORT_DIPSETTING( 0x0800, "1 or later")
- PORT_DIPSETTING( 0x0000, "0")
- PORT_DIPNAME( 0x1000, 0x1000, "Harness" )
- PORT_DIPSETTING( 0x1000, "JAMMA" )
- PORT_DIPSETTING( 0x0000, "Midway" )
- PORT_DIPNAME( 0x2000, 0x2000, "Joysticks" )
- PORT_DIPSETTING( 0x2000, "8-Way" )
- PORT_DIPSETTING( 0x0000, "49-Way" )
- PORT_DIPNAME( 0xc000, 0x4000, "Resolution" )
- PORT_DIPSETTING( 0xc000, "Standard Res 512x256" )
- PORT_DIPSETTING( 0x4000, "Medium Res 512x384" )
- PORT_DIPSETTING( 0x0000, "VGA Res 640x480" )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( tenthdeg )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0040, 0x0040, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0xc000, 0xc000, "Resolution" )
- PORT_DIPSETTING( 0xc000, "Standard Res 512x256" )
- PORT_DIPSETTING( 0x4000, "Medium Res 512x384" )
- PORT_DIPSETTING( 0x0000, "VGA Res 640x480" )
-
- PORT_MODIFY("IN2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) /* P1 roundhouse */
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) /* P1 fierce */
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) /* P1 forward */
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) /* P2 roundhouse */
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2) /* P2 forward */
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) /* P2 fierce */
- PORT_BIT( 0xff80, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( warfa )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0001, "PM Dump" )
- PORT_DIPSETTING( 0x0001, "Watchdog resets only" )
- PORT_DIPSETTING( 0x0000, "All resets" )
- PORT_DIPNAME( 0x0002, 0x0002, "Quantum 3dfx card rev" )
- PORT_DIPSETTING( 0x0002, "4" )
- PORT_DIPSETTING( 0x0000, "?" )
- PORT_DIPNAME( 0x00c0, 0x00c0, "Test Mode" )
- PORT_DIPSETTING( 0x00c0, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0040, "Disk-based Test" )
- PORT_DIPSETTING( 0x0080, "EPROM-based Test" )
- PORT_DIPSETTING( 0x0000, "Interactive Diagnostics" )
- PORT_DIPNAME( 0xc000, 0x4000, "Resolution" )
- PORT_DIPSETTING( 0xc000, "Standard Res 512x256" )
- PORT_DIPSETTING( 0x4000, "Medium Res 512x384" )
- PORT_DIPSETTING( 0x0000, "VGA Res 640x480" )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_J) PORT_NAME("Trigger")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_K) PORT_NAME("Discard")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_L) PORT_NAME("Jump")
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_U) PORT_NAME("View")
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CODE(KEYCODE_W) PORT_NAME("Forward")
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CODE(KEYCODE_S) PORT_NAME("Back")
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CODE(KEYCODE_A) PORT_NAME("Dodge Left")
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CODE(KEYCODE_D) PORT_NAME("Dodge Right")
-
- PORT_MODIFY("AN.0")
- PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
-
- PORT_MODIFY("AN.1")
- PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( roadburn )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0003, 0x0003, "Test Mode" )
- PORT_DIPSETTING( 0x0003, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, "Disk-based Test" )
- PORT_DIPSETTING( 0x0001, "EPROM-based Test" )
- PORT_DIPSETTING( 0x0000, "Interactive Diagnostics" )
- PORT_DIPNAME( 0x0300, 0x0200, "Resolution" )
- PORT_DIPSETTING( 0x0300, "Standard Res 512x256" )
- PORT_DIPSETTING( 0x0200, "Medium Res 512x384" )
- PORT_DIPSETTING( 0x0000, "VGA Res 640x480" )
-
- PORT_MODIFY("AN.0") /* Accel */
- PORT_BIT( 0xff, 0x80, IPT_PEDAL ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
-
- PORT_MODIFY("AN.1") /* Steer */
- PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
-
- PORT_MODIFY("AN.2") /* Seat Tilt */
- PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( nbashowt )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0000, "Coinage Source" )
- PORT_DIPSETTING( 0x0001, "Dipswitch" )
- PORT_DIPSETTING( 0x0000, "CMOS" )
- PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coinage ) )
- PORT_DIPSETTING( 0x000e, "Mode 1" )
- PORT_DIPSETTING( 0x000c, "Mode 2" )
- PORT_DIPSETTING( 0x000a, "Mode 3" )
- PORT_DIPSETTING( 0x0008, "Mode 4" )
- PORT_DIPSETTING( 0x0006, "Mode 5")
- PORT_DIPSETTING( 0x0004, "Mode 6")
- PORT_DIPSETTING( 0x0002, "Mode 7")
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
- PORT_DIPNAME( 0x0030, 0x0030, "Curency Type" )
- PORT_DIPSETTING( 0x0030, DEF_STR( USA ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( French ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( German ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
- PORT_DIPNAME( 0x0040, 0x0040, "Select Game" )
- PORT_DIPSETTING( 0x0040, DEF_STR(Yes))
- PORT_DIPSETTING( 0x0000, DEF_STR(No))
- PORT_DIPNAME( 0x0080, 0x0080, "Game Powerup" )
- PORT_DIPSETTING( 0x0080, "NBA Showtime" )
- PORT_DIPSETTING( 0x0000, "NFL Blitz" )
- PORT_DIPNAME( 0x0100, 0x0000, "Joysticks" )
- PORT_DIPSETTING( 0x0100, "8-Way" )
- PORT_DIPSETTING( 0x0000, "49-Way" )
- PORT_DIPNAME( 0x0200, 0x0200, "Graphics Mode" )
- PORT_DIPSETTING( 0x0200, "Med Res" )
- PORT_DIPSETTING( 0x0000, "Low Res" )
- PORT_DIPUNUSED( 0x1c00, 0x1c00 )
- PORT_DIPNAME( 0x2000, 0x2000, "Number of Players" )
- PORT_DIPSETTING( 0x2000, "2" )
- PORT_DIPSETTING( 0x0000, "4" )
- PORT_DIPNAME( 0x4000, 0x0000, "Power On Self Test" )
- PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x8000, 0x8000, "Test Switch" )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED) // P1 Joystick
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_UNUSED) // P2 Joystick
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_MODIFY("IN2")
- PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED) // P3 Joystick
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(vegas_state, i40_r)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("49WAYX_P1")
- PORT_BIT( 0xff, 0x38, IPT_AD_STICK_X ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
-
- PORT_START("49WAYY_P1")
- PORT_BIT( 0xff, 0x38, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
-
- PORT_START("49WAYX_P2")
- PORT_BIT(0xff, 0x38, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2)
-
- PORT_START("49WAYY_P2")
- PORT_BIT(0xff, 0x38, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2)
-
- PORT_START("49WAYX_P3")
- PORT_BIT(0xff, 0x38, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(3)
-
- PORT_START("49WAYY_P3")
- PORT_BIT(0xff, 0x38, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(3)
-
- PORT_START("49WAYX_P4")
- PORT_BIT(0xff, 0x38, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(4)
-
- PORT_START("49WAYY_P4")
- PORT_BIT(0xff, 0x38, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(4)
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( sf2049 )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0003, 0x0003, "Test Mode" )
- PORT_DIPSETTING( 0x0003, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, "Disk-based Test" )
- PORT_DIPSETTING( 0x0001, "EPROM-based Test" )
- PORT_DIPSETTING( 0x0000, "Interactive Diagnostics" )
- PORT_DIPNAME( 0x0080, 0x0080, "PM Dump" )
- PORT_DIPSETTING( 0x0080, "Watchdog resets only" )
- PORT_DIPSETTING( 0x0000, "All resets" )
- PORT_DIPNAME( 0x0300, 0x0000, "Resolution" )
- PORT_DIPSETTING( 0x0300, "Standard Res 512x256" )
- PORT_DIPSETTING( 0x0200, "Medium Res 512x384" )
- PORT_DIPSETTING( 0x0000, "VGA Res 640x480" )
-
- PORT_MODIFY("SYSTEM")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Abort") PORT_PLAYER(1) /* Abort */
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME(DEF_STR( Reverse )) PORT_PLAYER(1) /* reverse */
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("View 1") PORT_PLAYER(1) /* view 1 */
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("View 2") PORT_PLAYER(1) /* view 2 */
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("View 3") PORT_PLAYER(1) /* view 3 */
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON12 ) PORT_NAME("Music") PORT_PLAYER(1) /* music */
- PORT_BIT( 0x0070, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(vegas_state, keypad_r)
- PORT_BIT( 0x0f00, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(vegas_state, gearshift_r)
-
- PORT_START("GEAR")
- PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("1st Gear") PORT_PLAYER(1) /* 1st gear */
- PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("2nd Gear") PORT_PLAYER(1) /* 2nd gear */
- PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("3rd Gear") PORT_PLAYER(1) /* 3rd gear */
- PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("4th Gear") PORT_PLAYER(1) /* 4th gear */
-
- PORT_START("KEYPAD")
- PORT_BIT(0x0200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) PORT_CODE(KEYCODE_1_PAD) /* keypad 1 */
- PORT_BIT(0x0040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) PORT_CODE(KEYCODE_4_PAD) /* keypad 4 */
- PORT_BIT(0x0008, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) PORT_CODE(KEYCODE_7_PAD) /* keypad 7 */
- PORT_BIT(0x0001, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_CODE(KEYCODE_ASTERISK) /* keypad * */
- PORT_BIT(0x0400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) PORT_CODE(KEYCODE_2_PAD) /* keypad 2 */
- PORT_BIT(0x0080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) PORT_CODE(KEYCODE_5_PAD) /* keypad 5 */
- PORT_BIT(0x0010, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) PORT_CODE(KEYCODE_8_PAD) /* keypad 8 */
- PORT_BIT(0x0002, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) PORT_CODE(KEYCODE_0_PAD) /* keypad 0 */
- PORT_BIT(0x0800, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_CODE(KEYCODE_3_PAD) /* keypad 3 */
- PORT_BIT(0x0100, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) PORT_CODE(KEYCODE_6_PAD) /* keypad 6 */
- PORT_BIT(0x0020, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) PORT_CODE(KEYCODE_9_PAD) /* keypad 9 */
- PORT_BIT(0x0004, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Keypad #") PORT_CODE(KEYCODE_PLUS_PAD) /* keypad + */
-
- PORT_MODIFY("AN.2") /* Accel */
- PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(1)
-
- PORT_MODIFY("AN.3") /* Clutch */
- PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_PLAYER(1)
-
- PORT_MODIFY("AN.6") /* Brake */
- PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_PLAYER(1)
-
- PORT_MODIFY("AN.7") /* Steer */
- PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10, 0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sf2049se )
- PORT_INCLUDE(sf2049)
-
- PORT_MODIFY("DIPS")
- PORT_DIPUNUSED( 0x001e, 0x001e )
- PORT_DIPNAME( 0x0020, 0x0020, "Console Enable" )
- PORT_DIPSETTING( 0x0020, DEF_STR(No))
- PORT_DIPSETTING( 0x0000, DEF_STR(Yes))
- PORT_DIPNAME( 0x00c0, 0x00c0, "Test Mode" )
- PORT_DIPSETTING( 0x00c0, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0080, "Disk-based Test" )
- PORT_DIPSETTING( 0x0040, "EPROM-based Test" )
- PORT_DIPSETTING( 0x0000, "Interactive Diagnostics" )
- PORT_DIPNAME( 0x0001, 0x0001, "PM Dump" )
- PORT_DIPSETTING( 0x0001, "Watchdog resets only" )
- PORT_DIPSETTING( 0x0000, "All resets" )
- PORT_DIPUNUSED( 0x1f00, 0x1f00 )
- PORT_DIPNAME( 0xc000, 0x8000, "Resolution" )
- PORT_DIPSETTING( 0xc000, "Standard Res 512x256" )
- PORT_DIPSETTING( 0x4000, "Medium Res 512x384" )
- PORT_DIPSETTING( 0x8000, "VGA Res 640x480" )
- PORT_DIPNAME( 0x2000, 0x2000, "Cabinet Type" )
- PORT_DIPSETTING( 0x2000, "Sit down cabinet" )
- PORT_DIPSETTING( 0x0000, "Upright cabinet" )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( cartfury )
- PORT_INCLUDE(vegas_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0000, "Coinage Source" )
- PORT_DIPSETTING( 0x0001, "Dipswitch" )
- PORT_DIPSETTING( 0x0000, "CMOS" )
- PORT_DIPNAME( 0x000e, 0x000e, DEF_STR( Coinage ) )
- PORT_DIPSETTING( 0x000e, "Mode 1" )
- PORT_DIPSETTING( 0x000c, "Mode 2" )
- PORT_DIPSETTING( 0x000a, "Mode 3" )
- PORT_DIPSETTING( 0x0008, "Mode 4" )
- PORT_DIPSETTING( 0x0006, "Mode 5")
- PORT_DIPSETTING( 0x0004, "Mode 6")
- PORT_DIPSETTING( 0x0002, "Mode 7")
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
- PORT_DIPNAME( 0x0030, 0x0030, "Curency Type" )
- PORT_DIPSETTING( 0x0030, DEF_STR( USA ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( French ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( German ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
- PORT_DIPNAME( 0x2000, 0x2000, "Disable Brake" )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, "Test Switch" )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("View 1") PORT_PLAYER(1) /* view 1 */
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("View 2") PORT_PLAYER(1) /* view 2 */
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("View 3") PORT_PLAYER(1) /* view 3 */
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON12 ) PORT_NAME("Boost") PORT_PLAYER(1) /* boost */
- PORT_BIT( 0x0f00, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(vegas_state, gearshift_r)
-
- PORT_START("GEAR")
- PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("1st Gear") PORT_PLAYER(1) /* 1st gear */
- PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("2nd Gear") PORT_PLAYER(1) /* 2nd gear */
- PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("3rd Gear") PORT_PLAYER(1) /* 3rd gear */
- PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("4th Gear") PORT_PLAYER(1) /* 4th gear */
-
- PORT_MODIFY("AN.0") /* Steer */
- PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10, 0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5)
-
- PORT_MODIFY("AN.1") /* Accel */
- PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(1)
-
- PORT_MODIFY("AN.2") /* Brake */
- PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_PLAYER(1)
-
-INPUT_PORTS_END
-
-/*************************************
-*
-* Memory maps
-*
-*************************************/
-void vegas_state::vegas_cs2_map(address_map &map)
-{
- map(0x00000000, 0x00007003).rw(FUNC(vegas_state::sio_r), FUNC(vegas_state::sio_w));
-}
-
-void vegas_state::vegas_cs3_map(address_map &map)
-{
- map(0x00000000, 0x00000003).rw(FUNC(vegas_state::analog_port_r), FUNC(vegas_state::analog_port_w));
- //map(0x00001000, 0x00001003).rw(FUNC(vegas_state::lcd_r), FUNC(vegas_state::lcd_w));
-}
-
-void vegas_state::vegas_cs4_map(address_map &map)
-{
- map(0x00000000, 0x00007fff).rw(FUNC(vegas_state::timekeeper_r), FUNC(vegas_state::timekeeper_w));
-}
-
-void vegas_state::vegas_cs5_map(address_map &map)
-{
- map(0x00000000, 0x00000003).rw(FUNC(vegas_state::cpu_io_r), FUNC(vegas_state::cpu_io_w));
- map(0x00100000, 0x001fffff).r(FUNC(vegas_state::unknown_r));
-}
-
-void vegas_state::vegas_cs6_map(address_map &map)
-{
- map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::packed_r), FUNC(midway_ioasic_device::packed_w));
- map(0x00001000, 0x00001003).w(FUNC(vegas_state::asic_fifo_w));
- map(0x00003000, 0x00003003).w(FUNC(vegas_state::dcs3_fifo_full_w)); // if (m_dcs_idma_cs != 0)
- map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 6)
- map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 6)
-}
-
-void vegas_state::vegas_cs7_map(address_map &map)
-{
- //map(0x00000000, 0x00000003).rw(FUNC(vegas_state::nss_r), FUNC(vegas_state::nss_w));
- map(0x00001000, 0x0000100f).rw(FUNC(vegas_state::ethernet_r), FUNC(vegas_state::ethernet_w));
- map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 7)
- map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 7)
-}
-
-void vegas_state::vegas_cs8_map(address_map &map)
-{
- map(0x01000000, 0x0100001f).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS01 (TL16C552 CS0)
- map(0x01400000, 0x0140001f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS02 (TL16C552 CS1)
- map(0x01800000, 0x0180001f).rw(FUNC(vegas_state::parallel_r), FUNC(vegas_state::parallel_w)).umask32(0x000000ff); // Parallel UART (TL16C552 CS2)
- map(0x01c00000, 0x01c00000).w(FUNC(vegas_state::mpsreset_w)); // MPS Reset
-}
-
-/*************************************
- *
- * Machine drivers
- *
- *************************************/
-
-void vegas_state::vegascore(machine_config &config)
-{
- /* basic machine hardware */
- R5000LE(config, m_maincpu, vegas_state::SYSTEM_CLOCK * 2);
- m_maincpu->set_icache_size(16384);
- m_maincpu->set_dcache_size(16384);
- m_maincpu->set_system_clock(vegas_state::SYSTEM_CLOCK);
-
- // PCI Bus Devices
- PCI_ROOT(config, ":pci", 0);
-
- VRC5074(config, m_nile, 100000000, m_maincpu);
- m_nile->set_sdram_size(0, 0x00800000);
- m_nile->set_map(2, address_map_constructor(&vegas_state::vegas_cs2_map, "vegas_cs2_map", this), this);
- m_nile->set_map(3, address_map_constructor(&vegas_state::vegas_cs3_map, "vegas_cs3_map", this), this);
- m_nile->set_map(4, address_map_constructor(&vegas_state::vegas_cs4_map, "vegas_cs4_map", this), this);
- m_nile->set_map(5, address_map_constructor(&vegas_state::vegas_cs5_map, "vegas_cs5_map", this), this);
- m_nile->set_map(6, address_map_constructor(&vegas_state::vegas_cs6_map, "vegas_cs6_map", this), this);
- m_nile->set_map(7, address_map_constructor(&vegas_state::vegas_cs7_map, "vegas_cs7_map", this), this);
-
- ide_pci_device &ide(IDE_PCI(config, PCI_ID_IDE, 0, 0x10950646, 0x05, 0x0));
- ide.irq_handler().set(PCI_ID_NILE, FUNC(vrc5074_device::pci_intr_d));
- //ide.set_pif(0x8f);
-
- /* video hardware */
- voodoo_2_pci_device &voodoo(VOODOO_2_PCI(config, PCI_ID_VIDEO, 0, m_maincpu, "screen"));
- voodoo.set_fbmem(2);
- voodoo.set_tmumem(4, 4);
- subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->vblank_callback().set(FUNC(vegas_state::vblank_assert));
-
- M48T37(config, m_timekeeper);
- m_timekeeper->reset_cb().set(FUNC(vegas_state::watchdog_reset));
- m_timekeeper->irq_cb().set(FUNC(vegas_state::watchdog_irq));
-
- SMC91C94(config, m_ethernet, 0);
- m_ethernet->irq_handler().set(FUNC(vegas_state::ethernet_interrupt));
-
- /* screen */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- // Screeen size and timing is re-calculated later in voodoo card
- screen.set_refresh_hz(57);
- screen.set_size(640, 480);
- screen.set_visarea(0, 640 - 1, 0, 480 - 1);
- screen.set_screen_update(PCI_ID_VIDEO, FUNC(voodoo_pci_device::screen_update));
-}
-
-
-void vegas_state::vegas(machine_config &config)
-{
- vegascore(config);
-}
-
-
-void vegas_state::vegas250(machine_config &config)
-{
- vegascore(config);
- m_maincpu->set_clock(vegas_state::SYSTEM_CLOCK*2.5);
-}
-
-
-void vegas_state::vegas32m(machine_config &config)
-{
- vegas250(config);
- m_nile->set_sdram_size(0, 0x02000000);
-}
-
-
-void vegas_state::vegasban(machine_config &config)
-{
- vegas32m(config);
- voodoo_banshee_pci_device &voodoo(VOODOO_BANSHEE_PCI(config.replace(), PCI_ID_VIDEO, 0, m_maincpu, "screen"));
- voodoo.set_fbmem(16);
- subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->vblank_callback().set(FUNC(vegas_state::vblank_assert));
-}
-
-
-void vegas_state::vegasv3(machine_config &config)
-{
- vegas32m(config);
- RM7000LE(config.replace(), m_maincpu, vegas_state::SYSTEM_CLOCK * 2.5);
- m_maincpu->set_icache_size(16384);
- m_maincpu->set_dcache_size(16384);
- m_maincpu->set_system_clock(vegas_state::SYSTEM_CLOCK);
-
- voodoo_3_pci_device &voodoo(VOODOO_3_PCI(config.replace(), PCI_ID_VIDEO, 0, m_maincpu, "screen"));
- voodoo.set_fbmem(16);
- subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->vblank_callback().set(FUNC(vegas_state::vblank_assert));
-}
-
-
-void vegas_state::denver(machine_config &config)
-{
- vegascore(config);
- RM7000LE(config.replace(), m_maincpu, vegas_state::SYSTEM_CLOCK * 2.5);
-
- m_maincpu->set_icache_size(16384);
- m_maincpu->set_dcache_size(16384);
- m_maincpu->set_system_clock(vegas_state::SYSTEM_CLOCK);
- m_nile->set_sdram_size(0, 0x02000000);
- m_nile->set_map(8, address_map_constructor(&vegas_state::vegas_cs8_map, "vegas_cs8_map", this), this);
-
- voodoo_3_pci_device &voodoo(VOODOO_3_PCI(config.replace(), PCI_ID_VIDEO, 0, m_maincpu, "screen"));
- voodoo.set_fbmem(16);
- subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->vblank_callback().set(FUNC(vegas_state::vblank_assert));
-
- // TL16C552 UART
- NS16550(config, m_uart1, XTAL(1'843'200));
- m_uart1->out_tx_callback().set("ttys01", FUNC(rs232_port_device::write_txd));
- m_uart1->out_dtr_callback().set("ttys01", FUNC(rs232_port_device::write_dtr));
- m_uart1->out_rts_callback().set("ttys01", FUNC(rs232_port_device::write_rts));
- m_uart1->out_int_callback().set(FUNC(vegas_state::duart_irq_cb));
-
- NS16550(config, m_uart2, XTAL(1'843'200));
- m_uart1->out_tx_callback().set("ttys02", FUNC(rs232_port_device::write_txd));
- m_uart1->out_dtr_callback().set("ttys02", FUNC(rs232_port_device::write_dtr));
- m_uart1->out_rts_callback().set("ttys02", FUNC(rs232_port_device::write_rts));
- m_uart1->out_int_callback().set(FUNC(vegas_state::duart_irq_cb));
-
- rs232_port_device &ttys01(RS232_PORT(config, "ttys01", 0));
- ttys01.rxd_handler().set(m_uart1, FUNC(ins8250_uart_device::rx_w));
- ttys01.dcd_handler().set(m_uart1, FUNC(ins8250_uart_device::dcd_w));
- ttys01.dsr_handler().set(m_uart1, FUNC(ins8250_uart_device::dsr_w));
- ttys01.ri_handler().set(m_uart1, FUNC(ins8250_uart_device::ri_w));
- ttys01.cts_handler().set(m_uart1, FUNC(ins8250_uart_device::cts_w));
-
- rs232_port_device &ttys02(RS232_PORT(config, "ttys02", 0));
- ttys02.rxd_handler().set(m_uart2, FUNC(ins8250_uart_device::rx_w));
- ttys02.dcd_handler().set(m_uart2, FUNC(ins8250_uart_device::dcd_w));
- ttys02.dsr_handler().set(m_uart2, FUNC(ins8250_uart_device::dsr_w));
- ttys02.ri_handler().set(m_uart2, FUNC(ins8250_uart_device::ri_w));
- ttys02.cts_handler().set(m_uart2, FUNC(ins8250_uart_device::cts_w));
-
-}
-
-// Per driver configs
-
-void vegas_state::gauntleg(machine_config &config)
-{
- vegas(config);
- dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_CALSPEED);
- m_ioasic->set_upper(340/* 340=39", 322=27", others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
-}
-
-void vegas_state::gauntdl(machine_config &config)
-{
- vegas(config);
- dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_GAUNTDL);
- m_ioasic->set_upper(346/* 347, others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
-}
-
-void vegas_state::warfa(machine_config &config)
-{
- vegas250(config);
- dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_MACE);
- m_ioasic->set_upper(337/* others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
-}
-
-void vegas_state::tenthdeg(machine_config &config)
-{
- vegas(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0afb);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_GAUNTDL);
- m_ioasic->set_upper(330/* others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
-}
-
-void vegas_state::roadburn(machine_config &config)
-{
- vegas32m(config);
- dcs2_audio_dsio_device &dcs(DCS2_AUDIO_DSIO(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0ddd);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
- m_ioasic->set_upper(325/* others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
-}
-
-void vegas_state::nbashowt(machine_config &config)
-{
- vegasban(config);
- dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_MACE);
- // 528 494 478 development pic, 487 NBA
- m_ioasic->set_upper(487/* or 478 or 487 */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- //m_ioasic->set_auto_ack(1)
- m_ioasic->aux_output_handler().set(FUNC(vegas_state::i40_w));
-}
-
-void vegas_state::nbanfl(machine_config &config)
-{
- vegasban(config);
- dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_BLITZ99);
- m_ioasic->set_upper(498/* or 478 or 487 */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- //m_ioasic->set_auto_ack(1)
- m_ioasic->aux_output_handler().set(FUNC(vegas_state::i40_w));
-}
-
-void vegas_state::nbagold(machine_config &config)
-{
- vegasban(config);
- QED5271LE(config.replace(), m_maincpu, vegas_state::SYSTEM_CLOCK * 2.5);
- m_maincpu->set_icache_size(32768);
- m_maincpu->set_dcache_size(32768);
- m_maincpu->set_system_clock(vegas_state::SYSTEM_CLOCK);
- m_nile->set_sdram_size(0, 0x00800000);
- dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_GAUNTDL);
- m_ioasic->set_upper(109 /* 494 109 ??? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- //m_ioasic->set_auto_ack(1)
- m_ioasic->aux_output_handler().set(FUNC(vegas_state::i40_w));
-}
-
-void vegas_state::sf2049(machine_config &config)
-{
- denver(config);
- dcs2_audio_denver_5ch_device &dcs(DCS2_AUDIO_DENVER_5CH(config, "dcs", 0));
- dcs.set_dram_in_mb(8);
- dcs.set_polling_offset(0x872);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
- m_ioasic->set_upper(336/* others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
- m_ioasic->aux_output_handler().set(FUNC(vegas_state::wheel_board_w));
-}
-
-void vegas_state::sf2049se(machine_config &config)
-{
- denver(config);
- dcs2_audio_denver_5ch_device &dcs(DCS2_AUDIO_DENVER_5CH(config, "dcs", 0));
- dcs.set_dram_in_mb(8);
- dcs.set_polling_offset(0x872);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_SFRUSHRK);
- m_ioasic->set_upper(352/*352 336 others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
- m_ioasic->aux_output_handler().set(FUNC(vegas_state::wheel_board_w));
-}
-
-void vegas_state::sf2049te(machine_config &config)
-{
- denver(config);
- dcs2_audio_denver_5ch_device &dcs(DCS2_AUDIO_DENVER_5CH(config, "dcs", 0));
- dcs.set_dram_in_mb(8);
- dcs.set_polling_offset(0x872);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_SFRUSHRK);
- m_ioasic->set_upper(348/* 348 others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
- m_ioasic->aux_output_handler().set(FUNC(vegas_state::wheel_board_w));
-}
-
-void vegas_state::cartfury(machine_config &config)
-{
- vegasv3(config);
- dcs2_audio_2104_device &dcs(DCS2_AUDIO_2104(config, "dcs", 0));
- dcs.set_dram_in_mb(4);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_CARNEVIL);
- // 433, 495, 490 Development PIC
- m_ioasic->set_upper(495/*433, 495 others? */);
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(vegas_state::ioasic_irq));
- //m_ioasic->set_auto_ack(1)
-}
-
-
-/*************************************
- *
- * ROM definitions
- *
- *************************************/
-
- // there is a socket next to the main bios roms for updates, this is what the update region is.
-
-
-ROM_START( gauntleg )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "legend15.bin", 0x000000, 0x80000, CRC(a8372d70) SHA1(d8cd4fd4d7007ee38bb58b5a818d0f83043d5a48) ) // EPROM Boot code. Version: Nov 17 1998 19:18:28 / 1.5 Nov 17 1998 19:21:49
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.5 1/14/1999 Game 1/14/1999 */
- DISK_IMAGE( "gauntleg", 0, SHA1(66eb70e2fba574a7abe54be8bd45310654b24b08) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-
-ROM_START( gauntleg12 )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "legend13.bin", 0x000000, 0x80000, CRC(34674c5f) SHA1(92ec1779f3ab32944cbd953b6e1889503a57794b) ) // EPROM Boot code. Version: Sep 25 1998 18:34:43 / 1.3 Sep 25 1998 18:33:45
- ROM_LOAD( "legend14.bin", 0x000000, 0x80000, CRC(66869402) SHA1(bf470e0b9198b80f8baf8b9432a7e1df8c7d18ca) ) // EPROM Boot code. Version: Oct 30 1998 17:48:21 / 1.4 Oct 30 1998 17:44:29
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
- ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" )
-
- ROM_SYSTEM_BIOS( 1, "up16_1", "Disk Update 1.2 to 1.6 Step 1 of 3" )
- ROMX_LOAD("12to16.1.bin", 0x000000, 0x100000, CRC(253c6bf2) SHA1(5e129576afe2bc4c638242e010735655d269a747), ROM_BIOS(1))
- ROM_SYSTEM_BIOS( 2, "up16_2", "Disk Update 1.2 to 1.6 Step 2 of 3" )
- ROMX_LOAD("12to16.2.bin", 0x000000, 0x100000, CRC(15b1fe78) SHA1(532c4937b55befcc3a8cb25b0282d63e206fba47), ROM_BIOS(2))
- ROM_SYSTEM_BIOS( 3, "up16_3", "Disk Update 1.2 to 1.6 Step 3 of 3" )
- ROMX_LOAD("12to16.3.bin", 0x000000, 0x100000, CRC(1027e54f) SHA1(a841f5cc5b022ddfaf70c97a64d1582f0a2ca70e), ROM_BIOS(3))
-
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.4 10/22/1998 Main 10/23/1998 */
- DISK_IMAGE( "gauntl12", 0, SHA1(62917fbd692d004bc391287349041ebe669385cf) ) // compressed with -chs 4969,16,63 (which is apparently correct for a Quantum FIREBALL 2.5 GB and allows the update program to work)
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-
-ROM_START( gauntdl )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.7 12/14/1999 */
- ROM_LOAD( "gauntdl.bin", 0x000000, 0x80000, CRC(3d631518) SHA1(d7f5a3bc109a19c9c7a711d607ff87e11868b536) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts: 1.9 3/17/2000 Game 5/9/2000 */
- DISK_IMAGE( "gauntdl", 0, SHA1(ba3af48171e727c2f7232c06dcf8411cbcf14de8) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-
-ROM_START( gauntdl24 )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.7 12/14/1999 */
- ROM_LOAD( "gauntdl.bin", 0x000000, 0x80000, CRC(3d631518) SHA1(d7f5a3bc109a19c9c7a711d607ff87e11868b536) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts: 1.9 3/17/2000 Game 3/19/2000 */
- DISK_IMAGE( "gauntd24", 0, SHA1(3e055794d23d62680732e906cfaf9154765de698) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-
-ROM_START( warfa )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.9 3/25/1999 */
- ROM_LOAD( "warboot.v19", 0x000000, 0x80000, CRC(b0c095cd) SHA1(d3b8cccdca83f0ecb49aa7993864cfdaa4e5c6f0) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.3 4/20/1999 Game 4/20/1999 */
- DISK_IMAGE( "warfa", 0, SHA1(87f8a8878cd6be716dbd6c68fb1bc7f564ede484) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "warsnd.106", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-ROM_START( warfaa )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.6 Jan 14 1999 */
- ROM_LOAD( "warboot.v16", 0x000000, 0x80000, CRC(1c44b3a3) SHA1(e81c15d7c9bc19078787d39c7f5e48eab003c5f4) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* GUTS 1.1 Mar 16 1999, GAME Mar 16 1999 */
- DISK_IMAGE( "warfaa", 0, SHA1(b443ba68003f8492e5c20156e0d3091fe51e9224) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "warsnd.106", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-ROM_START( warfab )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) // test: EPROM 1.3 Apr 7 1999
- // label: WAR 42CE / BOOT V1.9 / PROG V1.6
- ROM_LOAD( "war42ce.bin", 0x000000, 0x80000, CRC(1a6e7f59) SHA1(0d8b4ce1e4b1132689796c4374aa54447b9a3369) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // test: Guts 1.3 Apr7 1999 Game 1.3 Apr7 1999
- // V1.5
- DISK_IMAGE( "warfa15", 0, SHA1(bd538bf2f6a245545dae4ea97c433bb3f7d4394e) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "warsnd.106", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-ROM_START( warfac )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) // test: EPROM 1.91 Apr 13 1999
- ROM_LOAD( "war__upgrade__ver_1.91.u27", 0x000000, 0x80000, CRC(4d8fe0f8) SHA1(b809d29760ff229200509ba6751d8255faca7082) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
- // required HDD image version is guess
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.3 4/20/1999 Game 4/20/1999 */
- DISK_IMAGE( "warfa", 0, SHA1(87f8a8878cd6be716dbd6c68fb1bc7f564ede484) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "warsnd.106", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-ROM_START( tenthdeg )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "tenthdeg.bio", 0x000000, 0x80000, CRC(1cd2191b) SHA1(a40c48f3d6a9e2760cec809a79a35abe762da9ce) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 5/26/1998 Main 8/25/1998 */
- DISK_IMAGE( "tenthdeg", 0, SHA1(41a1a045a2d118cf6235be2cc40bf16dbb8be5d1) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "tenthdeg.snd", 0x000000, 0x8000, CRC(1c75c1c1) SHA1(02ac1419b0fd4acc3f39676e7dce879e926d998b) )
-ROM_END
-
-
-ROM_START( roadburn ) /* version 1.04 - verified on hardware */
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 2.6 4/22/1999 */
- ROM_LOAD( "rbmain.bin", 0x000000, 0x80000, CRC(060e1aa8) SHA1(2a1027d209f87249fe143500e721dfde7fb5f3bc) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 5/19/1999 Game 5/19/1999 */
- DISK_IMAGE( "road burners v1.04", 0, SHA1(30567241c000ee572a9cfb1b080c02a51a2b12d2) )
-ROM_END
-
-ROM_START( roadburn1 ) /* version 1.0 - verified on hardware */
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 2.6 4/22/1999 */
- ROM_LOAD( "rbmain.bin", 0x000000, 0x80000, CRC(060e1aa8) SHA1(2a1027d209f87249fe143500e721dfde7fb5f3bc) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 4/22/1999 Game 4/22/1999 */
- DISK_IMAGE( "roadburn", 0, SHA1(a62870cceafa6357d7d3505aca250c3f16087566) )
-ROM_END
-
-
-ROM_START( nbashowt )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "showtime_mar15_1999.u27", 0x000000, 0x80000, CRC(ff5d620d) SHA1(8f07567929f40a2269a42495dfa9dd5edef688fe) ) // 16:09:14 Mar 15 1999 BIOS FOR SHOWTIME USING BANSHEE / 16:09:01 Mar 15 1999. POST FOR SHOWTIME USING BANSHEE
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" )
- // various strings from this image
- // SHOWTIME REV 2.0
- // BUILD DATE: Apr 25 1999 (diag.exe?)
- // BUILD DATE: Apr 21 1999 (game?)
- DISK_IMAGE( "nbashowt", 0, SHA1(f7c56bc3dcbebc434de58034986179ae01127f87) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-
-ROM_START( nbanfl )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "blitz00_sep22_1999.u27", 0x000000, 0x80000, CRC(6a9bd382) SHA1(18b942df6af86ea944c24166dbe88148334eaff9) ) // 16:00:32 Sep 22 1999 BIOS FOR BLITZ00 USING BANSHEE / 16:00:26 Sep 22 1999 POST FOR BLITZ00 USING BANSHEE
-// ROM_LOAD( "bootnflnba.bin", 0x000000, 0x80000, CRC(3def7053) SHA1(8f07567929f40a2269a42495dfa9dd5edef688fe) ) // 1 byte different to above (0x51b95 is 0x1b instead of 0x18)
- // Bad dump: First 3 bytes of reset vector (0x0) are FF's. Reset vector is fixed in driver init.
- ROM_LOAD( "blitz00_nov30_1999.u27", 0x000000, 0x80000, CRC(4242bf14) SHA1(c1fcec67d7463df5f41afc89f22c3b4484279534) BAD_DUMP) // 15:10:49 Nov 30 1999 BIOS FOR BLITZ00 USING BANSHEE / 15:10:43 Nov 30 1999 POST FOR BLITZ00 USING BANSHEE
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" )
- // various strings from this image
- //NBA SHOWTIME 2.1
- //BUILD DATE: Sep 22 1999 (diag.exe?)
- //BUILD DATE: Sep 21 1999 (game?)
- DISK_IMAGE( "nbanfl", 0, SHA1(f60c627f85f1bf58f2ea674063736a1e516e7e9e) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-// I'm not sure if NBA Showtime: NBA on NBC Gold was a standalone release, or the version with NBA Showtime: NBA on NBC Gold is actually 'Sports Station'
-// it's possible the boot rom and CHD are mismatched here
-ROM_START( nbagold )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "nbagold_jan10_2000.u27", 0x000000, 0x80000, CRC(6768e802) SHA1(d994e3efe14f57e261841134ddd1489fa67d418b) ) // 11:29:11 Jan 10 2000. BIOS FOR NBAGOLD USING BANSHEE / 11:23:58 Jan 10 2000. POST FOR NBAGOLD USING BANSHEE
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" )
- // various strings from this image
- //NBA SHOWTIME GOLD 3.00
- //BUILD DATE Feb 18 2000 (diag.exe)
- //BUILD DATE:Feb 17 2000 (game?)
- //BUILD DATE:Feb 10 2000 (something else?)
- DISK_IMAGE( "nbanfl3", 0, SHA1(19a51346ce5ae4e06e8dff3eb4bed59ec1ee855f))
- // these both contain the same strings / build dates, same thing with different user data / drive sizes?
-// DISK_IMAGE( "nbanfl27", 0, SHA1(da371d27e2fbceec493e2203055e0c1399eaf3b9) )
-// DISK_IMAGE( "sportstn", 0, SHA1(9442feefaeb5ae4a090422e937615f8a2d8e8f31) )
-
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* Vegas SIO boot ROM */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-
- // also a PIC?
-ROM_END
-
-
-ROM_START( cartfury )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "cart_mar8_2000.u27", 0x000000, 0x80000, CRC(c44550a2) SHA1(ad30f1c3382ff2f5902a4cbacbb1f0c4e37f42f9) ) // 10:40:17 Mar 8 2000 BIOS FOR CART USING VOODOO3 / 10:39:55 Mar 8 2000 POST FOR CART USING VOODOO3
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" )
- DISK_IMAGE( "cartfury", 0, SHA1(4c5bc2803297ea9a191bbd8b002d0e46b4ae1563) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) /* ADSP-2105 data */
- ROM_LOAD16_BYTE( "vegassio.bin", 0x000000, 0x8000, CRC(d1470e23) SHA1(f6e8405cfa604528c0224401bc374a6df9caccef) )
-ROM_END
-
-
-ROM_START( sf2049 )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 ) /* EPROM 1.02 7/9/1999 */
- ROM_LOAD( "sf2049.u27", 0x000000, 0x80000, CRC(174ba8fe) SHA1(baba83b811eca659f00514a008a86ef0ac9680ee) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) /* Guts 1.03 9/3/1999 Game 9/8/1999 */
- DISK_IMAGE( "sf2049", 0, SHA1(9e0661b8566a6c78d18c59c11cd3a6628d025405) )
-ROM_END
-
-
-ROM_START( sf2049se )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- // Bad Dump
- // POST Message: Boot EPROM checksum...FAILED. Computed: F7017455
- // End of file including checksum area is filled with FF's.
- ROM_LOAD( "sf2049se.u27", 0x000000, 0x80000, CRC(da4ecd9c) SHA1(2574ff3d608ebcc59a63cf6dea13ee7650ae8921) BAD_DUMP )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" )
- DISK_IMAGE( "sf2049se", 0, SHA1(7b27a8ce2a953050ce267548bb7160b41f3e8054) )
-ROM_END
-
-
-ROM_START( sf2049te )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "sf2049te.u27", 0x000000, 0x80000, CRC(cc7c8601) SHA1(3f37dbd1b32b3ac5caa300725468e8e426f0fb83) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" )
- DISK_IMAGE( "sf2049te", 0, SHA1(625aa36436587b7bec3e7db1d19793b760e2ea51) )
-ROM_END
-
-ROM_START( sf2049tea )
- ROM_REGION32_LE( 0x80000, PCI_ID_NILE":rom", 0 )
- ROM_LOAD( "sf2049te.u27", 0x000000, 0x80000, CRC(cc7c8601) SHA1(3f37dbd1b32b3ac5caa300725468e8e426f0fb83) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_NILE":update", ROMREGION_ERASEFF )
-
- // All 7 courses are unlocked
- // GUTS 1.61 Game Apr 2, 2001 13:07:21
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" )
- DISK_IMAGE( "sf2049tea", 0, SHA1(8d6badf1159903bf44d9a9c7570d4f2417398a93) )
-ROM_END
-
-/*************************************
- *
- * Driver init
- *
- *************************************/
-
-void vegas_state::init_gauntleg()
-{
- /* speedups */
- m_maincpu->mips3drc_add_hotspot(0x80015430, 0x8CC38060, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x80015464, 0x3C09801E, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x800C8918, 0x8FA2004C, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x800C8890, 0x8FA20024, 250); /* confirmed */
-}
-
-
-void vegas_state::init_gauntdl()
-{
- /* speedups */
- m_maincpu->mips3drc_add_hotspot(0x800158B8, 0x8CC3CC40, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x800158EC, 0x3C0C8022, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x800D40C0, 0x8FA2004C, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x800D4038, 0x8FA20024, 250); /* confirmed */
-}
-
-
-void vegas_state::init_warfa()
-{
- /* speedups */
- m_maincpu->mips3drc_add_hotspot(0x8009436C, 0x0C031663, 250); /* confirmed */
- // TODO: For some reason game hangs if ethernet is on
- m_ethernet->set_link_connected(false);
-}
-
-
-void vegas_state::init_tenthdeg()
-{
- /* speedups */
- m_maincpu->mips3drc_add_hotspot(0x80051CD8, 0x0C023C15, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x8005E674, 0x3C028017, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x8002DBCC, 0x8FA2002C, 250); /* confirmed */
- m_maincpu->mips3drc_add_hotspot(0x80015930, 0x8FC20244, 250); /* confirmed */
-}
-
-
-void vegas_state::init_roadburn()
-{
-}
-
-
-void vegas_state::init_nbashowt()
-{
-}
-
-void vegas_state::init_nbagold()
-{
-}
-
-
-void vegas_state::init_nbanfl()
-{
- // The first three bytes of the blitz00_nov30_1999.u27 ROM are FF's which breaks the reset vector.
- // These bytes are from blitz00_sep22_1999.u27 which allows the other ROM to start.
- // The last byte which is part of the checksum is also FF. By changing it to 0x01 the 4 byte checksum matches with the other 3 changes.
- uint8_t *romPtr = machine().root_device().memregion(PCI_ID_NILE":rom")->base();
- romPtr[0x0] = 0xe2;
- romPtr[0x1] = 0x00;
- romPtr[0x2] = 0xf0;
- romPtr[0x7ffff] = 0x01;
-}
-
-
-void vegas_state::init_sf2049()
-{
- m_a2d_shift = 4;
-}
-
-
-void vegas_state::init_sf2049se()
-{
- m_a2d_shift = 4;
-}
-
-
-void vegas_state::init_sf2049te()
-{
- m_a2d_shift = 4;
-}
-
-
-void vegas_state::init_cartfury()
-{
-}
-
-
-
-/*************************************
- *
- * Game drivers
- *
- *************************************/
-
-/* Vegas + Vegas SIO + Voodoo 2 */
-GAME( 1998, gauntleg, 0, gauntleg, gauntleg, vegas_state, init_gauntleg, ROT0, "Atari Games", "Gauntlet Legends (version 1.6)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, gauntleg12, gauntleg, gauntleg, gauntleg, vegas_state, init_gauntleg, ROT0, "Atari Games", "Gauntlet Legends (version 1.2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, tenthdeg, 0, tenthdeg, tenthdeg, vegas_state, init_tenthdeg, ROT0, "Atari Games", "Tenth Degree (prototype)", MACHINE_SUPPORTS_SAVE )
-
-/* Durango + Vegas SIO + Voodoo 2 */
-GAME( 1999, gauntdl, 0, gauntdl, gauntdl, vegas_state, init_gauntdl, ROT0, "Midway Games", "Gauntlet Dark Legacy (version DL 2.52)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, gauntdl24, gauntdl, gauntdl, gauntdl, vegas_state, init_gauntdl, ROT0, "Midway Games", "Gauntlet Dark Legacy (version DL 2.4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, warfa, 0, warfa, warfa, vegas_state, init_warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.9 Mar 25 1999, GUTS 1.3 Apr 20 1999, GAME Apr 20 1999)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, warfaa, warfa, warfa, warfa, vegas_state, init_warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.6 Jan 14 1999, GUTS 1.1 Mar 16 1999, GAME Mar 16 1999)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, warfab, warfa, warfa, warfa, vegas_state, init_warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.3 Apr 7 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999)", MACHINE_SUPPORTS_SAVE ) // version numbers comes from test mode, can be unreliable
-GAME( 1999, warfac, warfa, warfa, warfa, vegas_state, init_warfa, ROT0, "Atari Games", "War: The Final Assault (EPROM 1.91 Apr 13 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999)", MACHINE_SUPPORTS_SAVE )
-
-
-/* Durango + DSIO + Voodoo 2 */
-GAME( 1999, roadburn, 0, roadburn, roadburn, vegas_state, init_roadburn, ROT0, "Atari Games", "Road Burners (ver 1.04)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, roadburn1, roadburn, roadburn, roadburn, vegas_state, init_roadburn, ROT0, "Atari Games", "Road Burners (ver 1.0)", MACHINE_SUPPORTS_SAVE )
-
-/* Durango + DSIO? + Voodoo banshee */
-GAME( 1998, nbashowt, 0, nbashowt, nbashowt, vegas_state, init_nbashowt, ROT0, "Midway Games", "NBA Showtime: NBA on NBC (ver 2.0)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random freezes on the 3d parts
-GAME( 1999, nbanfl, 0, nbanfl, nbashowt, vegas_state, init_nbanfl, ROT0, "Midway Games", "NBA Showtime / NFL Blitz 2000 (ver 2.1)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) //attempting to run blitz on either v2.1 or v3.0 wlil reset the machine
-GAME( 2000, nbagold , 0, nbagold, nbashowt, vegas_state, init_nbagold, ROT0, "Midway Games", "NBA Showtime Gold / NFL Blitz 2000 (ver 3.0) (Sports Station?)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-
-
-/* Durango + Denver SIO + Voodoo 3 */
-GAMEL( 1999, sf2049, 0, sf2049, sf2049, vegas_state, init_sf2049, ROT0, "Atari Games", "San Francisco Rush 2049", MACHINE_SUPPORTS_SAVE, layout_sf2049 )
-GAMEL( 2003, sf2049se, sf2049, sf2049se, sf2049se, vegas_state, init_sf2049se, ROT0, "Atari Games", "San Francisco Rush 2049: Special Edition", MACHINE_SUPPORTS_SAVE, layout_sf2049 )
-GAMEL( 2000, sf2049te, sf2049, sf2049te, sf2049se, vegas_state, init_sf2049te, ROT0, "Atari Games", "San Francisco Rush 2049: Tournament Edition", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_sf2049 )
-GAMEL( 2001, sf2049tea, sf2049, sf2049te, sf2049se, vegas_state, init_sf2049te, ROT0, "Atari Games", "San Francisco Rush 2049: Tournament Edition Unlocked", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_sf2049 )
-
-/* Durango + Vegas SIO + Voodoo 3 */
-GAME( 2000, cartfury, 0, cartfury, cartfury, vegas_state, init_cartfury, ROT0, "Midway Games", "Cart Fury", MACHINE_SUPPORTS_SAVE )