summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/seattle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/seattle.cpp')
-rw-r--r--src/mame/drivers/seattle.cpp2847
1 files changed, 0 insertions, 2847 deletions
diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp
deleted file mode 100644
index ec3100dff10..00000000000
--- a/src/mame/drivers/seattle.cpp
+++ /dev/null
@@ -1,2847 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-/*************************************************************************
-
- Driver for Atari/Midway Phoenix/Seattle/Flagstaff hardware games
-
- driver by Aaron Giles
-
- Games supported:
- * Wayne Gretzky's 3d Hockey [Phoenix, Atari, 100MHz, 4MB RAM, 1xTMU]
-
- * Bio Freaks [Seattle, Midway, 150MHz, 8MB RAM, 1xTMU]
- * CarnEvil [Seattle, Midway, 150MHz, 8MB RAM, 1xTMU]
- * NFL Blitz [Seattle, Midway, 150MHz, 8MB RAM, 1xTMU]
- * NFL Blitz 99 [Seattle, Midway, 150MHz, 8MB RAM, 1xTMU]
- * NFL Blitz 2000 [Seattle, Midway, 150MHz, 8MB RAM, 1xTMU]
- * Mace: The Dark Age [Seattle, Atari, 192MHz, 8MB RAM, 1xTMU]
-
- * California Speed [Seattle + Widget, Atari, 150MHz, 8MB RAM, 1xTMU]
- * Vapor TRX [Seattle + Widget, Atari, 192MHz, 8MB RAM, 1xTMU]
- * Hyperdrive [Seattle + Widget, Midway, 192MHz, 8MB RAM, 1xTMU]
-
- * San Francisco Rush [Flagstaff, Atari, 192MHz, 2xTMU]
- * San Francisco Rush: The Rock [Flagstaff, Atari, 192MHz, 8MB RAM, 2xTMU]
-
- Known bugs:
- * Carnevil: lets you set the flash brightness; need to emulate that
-
-***************************************************************************
-
- Phoenix hardware main board:
-
- * 100MHz R4700 main CPU (50MHz system clock)
- * Galileo GT64010 system controller
- * National Semiconductor PC87415 IDE controller
- * 3dfx FBI with 2MB frame buffer
- * 3dfx TMU with 4MB txture memory
- * Midway I/O ASIC
- * 4MB DRAM for main CPU
- * 512KB boot ROM
- * 16MHz ADSP 2115 audio CPU
- * 4MB DRAM for audio CPU
- * 32KB boot ROM
-
- Seattle hardware main board:
-
- * 144MHz/192MHz/ R5000 main CPU (system clock 48MHz)
- * Galileo GT64010 system controller
- * National Semiconductor PC87415 IDE controller
- * 3dfx FBI with 2MB frame buffer
- * 3dfx TMU with 4MB txture memory
- * Midway I/O ASIC
- * 8MB DRAM for main CPU
- * 512KB boot ROM
- * 16MHz ADSP 2115 audio CPU
- * 4MB DRAM for audio CPU
- * 32KB boot ROM
-
- Flagstaff hardware main board:
-
- * 192MHz R5000 main CPU (system clock 48MHz)
- * Galileo GT64010 system controller
- * National Semiconductor PC87415 IDE controller
- * SMC91C94 ethernet controller
- * ADC0848 8 x A-to-D converters
- * 3dfx FBI with 2MB frame buffer
- * 2 x 3dfx TMU with 4MB txture memory
- * Midway I/O ASIC
- * 8MB DRAM for main CPU
- * 512KB boot ROM
- * 33MHz TMS32C031 audio CPU
- * 8MB ROM space for audio CPU
- * 512KB boot ROM
-
- Widget board:
-
- * SMC91C94 ethernet controller
- * ADC0848 8 x A-to-D converters
-
-***************************************************************************
-
- Blitz '99 board:
-
- Seattle 5770-15206-08
- 1x R5000 CPU (heatsink covering part numbers)
- 1x Midway 5410-14589-00 IO chip
- 1x Midway 5410-14590-00 ??
- 1x Midway 5410-15349-00 Orbit 61142A ??
- 1x ADSP-2115
- 1x Midway security PIC Blitz 99 25" 481xxxxxx (U96)
- 1x mid sized QFP (Galileo?) has heatsink (u86)
- 1x mid sized QFP (PixelFX?) heakstink (u17)
- 1x mid sized QFP, smaller (TexelFX?) heatsink (u87)
- 12x v53c16258hk40 256Kx16 RAM (near Voodoo section)
- 1x PC87415VCG IDE controller
- 1x lh52256cn-70ll RAM (near Galileo)
- 1x 7can2 4k (unknown Texas Instruments SOIC)
- 2x IDT 7201 LA 35J (512x9 Async FIFO)
- 1x DS232AS serial port chip
- 1x Altera PLCC Seattle A-21859 (u50)
- 1x Altera PLCC PAD_C1 (u60)
- 3x IS61C256AH-15 (32Kx8 SRAM) near ADSP
- 1x TMS418160ADZ (1Meg x 16 RAM) near ADSP
- 4x TMS418160ADZ (1Meg x 16 RAM) near CPU
- 1x TVP3409-17OCFN (3dfx DAC?)
- 1xAD1866 audio DAC
- 1x Maxim max693acwe (watchdog) near 2325 battery and Midway IO chip
- 4MHz crystal attached to security PIC
- 14.31818MHz crystal near 3dfx DAC
- 16MHz crystal attached to ADSP
- 16.6667MHz crystal near Midway IO chip
- 33.3333MHz crystal near IDE chip and Galileo(PCI bus I assume)
- 50MHz crystal near CPU
-
- Boot ROM-1.3
- Sound ROM-1.02
-
- Connectors:
- P2 and P6 look like PCI slots, but with no connectors soldered in, near
- 3dfx/Galileo/IDE section.
- P19 is for the Daisy Dukes widget board(used by Cal Speed), and maybe
- the Carnevil gun board.
- P28 is a large 120 pin connector that is not populated, right next to
- the CPU.
- P20 is a 10 pin connector labeled "factory test".
- P1 is a 5 pin unpopulated connector marked "snd in" no idea what it
- would be for.
- P11 is a 5 pin connector marked "snd out" for line level stereo output.
- P25 is a standard IDE connector marked "Disk Drive" P15 is a laptop
- sized IDE connection right next to it.
- P9 and P10 are 14 pin connectors marked "Player 3 I/O" and player 4
- respectively.
- P16 is a 6 pin marked "Aux in"
- P3 is a 6 pin marked "Bill in"
- P8 is a 14 pin marked "Aux Latched Outputs"
- P22 is a 9 pin marked "serial port"
-
-***************************************************************************
-
- Interrupt summary:
-
- __________
- UART clear-to-send | | __________
- -------(0x2000)--->| | Ethernet/Widget | |
- | | ----(IRQ3/4/5)-->| |
- UART data ready | | | |
- -------(0x1000)--->| | | |
- | | VSYNC | |
- Main-to-sound empty| IOASIC | ----(IRQ3/4/5)-->| |
- -------(0x0080)--->| | | |
- | | | |
- Sound-to-main full | | IDE Controller | CPU |
- -------(0x0040)--->| | -------(IRQ2)--->| |
- | | | |
- Sound FIFO empty | | | |
- -------(0x0008)--->| | IOASIC Summary | |
- |__________|----------(IRQ1)--->| |
- | |
- __________ | |
- Timer 3 | | Galileo Summary | |
- -------(0x0800)--->| |----------(IRQ0)--->| |
- | | |__________|
- Timer 2 | |
- -------(0x0400)--->| |
- | |
- Timer 1 | |
- -------(0x0200)--->| |
- | |
- Timer 0 | |
- -------(0x0100)--->| |
- | Galileo |
- DMA channel 3 | |
- -------(0x0080)--->| |
- | |
- DMA channel 2 | |
- -------(0x0040)--->| |
- | |
- DMA channel 1 | |
- -------(0x0020)--->| |
- | |
- DMA channel 0 | |
- -------(0x0010)--->| |
- |__________|
-
-**************************************************************************/
-
-#include "emu.h"
-#include "audio/cage.h"
-#include "audio/dcs.h"
-
-#include "cpu/adsp2100/adsp2100.h"
-#include "cpu/mips/mips3.h"
-#include "machine/midwayic.h"
-#include "machine/nvram.h"
-#include "machine/smc91c9x.h"
-
-#include "machine/pci.h"
-#include "machine/gt64xxx.h"
-#include "machine/pci-ide.h"
-#include "video/voodoo_pci.h"
-#include "screen.h"
-
-#include "calspeed.lh"
-#include "vaportrx.lh"
-#include "hyprdriv.lh"
-#include "sfrush.lh"
-
-/*************************************
- *
- * Debugging constants
- *
- *************************************/
-
-#define LOG_WIDGET (0)
-
-
-
-/*************************************
- *
- * Core constants
- *
- *************************************/
-
-#define SYSTEM_CLOCK 50000000
-
-#define PCI_ID_GALILEO ":pci:00.0"
-#define PCI_ID_VIDEO ":pci:08.0"
-#define PCI_ID_IDE ":pci:09.0"
-
-// various board configurations
-#define PHOENIX_CONFIG (0)
-#define SEATTLE_CONFIG (1)
-#define SEATTLE_WIDGET_CONFIG (2)
-#define FLAGSTAFF_CONFIG (3)
-
-// static interrupts
-#define GALILEO_IRQ_NUM MIPS3_IRQ0
-#define IOASIC_IRQ_NUM MIPS3_IRQ1
-#define IDE_IRQ_NUM MIPS3_IRQ2
-
-// configurable interrupts
-#define ETHERNET_IRQ_SHIFT (1)
-#define WIDGET_IRQ_SHIFT (1)
-#define VBLANK_IRQ_SHIFT (7)
-
-/*************************************
-*
-* Widget board constants
-*
-*************************************/
-
-// Widget registers
-#define WREG_ETHER_ADDR (0x00/4)
-#define WREG_INTERRUPT (0x04/4)
-#define WREG_OUTPUT (0x0C/4)
-#define WREG_ANALOG (0x10/4)
-#define WREG_ETHER_DATA (0x14/4)
-
-// Widget interrupts
-#define WINT_ETHERNET_SHIFT (2)
-
-/*************************************
-* Structures
-*************************************/
-
-struct widget_data
-{
- // ethernet register address
- uint8_t ethernet_addr;
-
- // IRQ information
- uint8_t irq_num;
- uint8_t irq_mask;
-};
-
-class seattle_state : public driver_device
-{
-public:
- seattle_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_nvram(*this, "nvram"),
- m_maincpu(*this, "maincpu"),
- m_galileo(*this, PCI_ID_GALILEO),
- m_voodoo(*this, PCI_ID_VIDEO),
- m_cage(*this, "cage"),
- m_dcs(*this, "dcs"),
- m_screen(*this, "screen"),
- m_ethernet(*this, "ethernet"),
- m_ioasic(*this, "ioasic"),
- m_io_analog(*this, "AN%u", 0U),
- m_io_p4_8way(*this, "8WAY_P4"),
- m_io_49way_x(*this, "49WAYX_P%u", 1U),
- m_io_49way_y(*this, "49WAYY_P%u", 1U),
- m_io_gun_x(*this, "LIGHT%u_X", 0U),
- m_io_gun_y(*this, "LIGHT%u_Y", 0U),
- m_io_fake(*this, "FAKE"),
- m_io_gearshift(*this, "GEAR"),
- m_io_system(*this, "SYSTEM"),
- m_io_dips(*this, "DIPS"),
- m_wheel_driver(*this, "wheel"),
- m_lamps(*this, "lamp%u", 0U),
- m_leds(*this, "led%u", 0U)
- {}
-
- void seattle_common(machine_config &config);
- void phoenix(machine_config &config);
- void seattle150(machine_config &config);
- void seattle150_widget(machine_config &config);
- void seattle200(machine_config &config);
- void seattle200_widget(machine_config &config);
- void flagstaff(machine_config &config);
- void wg3dh(machine_config &config);
- void sfrush(machine_config &config);
- void hyprdriv(machine_config &config);
- void carnevil(machine_config &config);
- void blitz99(machine_config &config);
- void blitz2k(machine_config &config);
- void blitz(machine_config &config);
- void biofreak(machine_config &config);
- void sfrushrkw(machine_config &config);
- void calspeed(machine_config &config);
- void mace(machine_config &config);
- void vaportrx(machine_config &config);
- void sfrushrk(machine_config &config);
-
- void init_sfrush();
- void init_blitz2k();
- void init_carnevil();
- void init_biofreak();
- void init_calspeed();
- void init_sfrushrk();
- void init_vaportrx();
- void init_hyprdriv();
- void init_blitz();
- void init_wg3dh();
- void init_mace();
- void init_blitz99();
-
- DECLARE_CUSTOM_INPUT_MEMBER(blitz_49way_r);
- DECLARE_CUSTOM_INPUT_MEMBER(i40_r);
- DECLARE_CUSTOM_INPUT_MEMBER(gearshift_r);
-
-private:
- required_device<nvram_device> m_nvram;
- required_device<mips3_device> m_maincpu;
- required_device<gt64010_device> m_galileo;
- required_device<voodoo_1_pci_device> m_voodoo;
- optional_device<atari_cage_seattle_device> m_cage;
- optional_device<dcs_audio_device> m_dcs;
- required_device<screen_device> m_screen;
- optional_device<smc91c94_device> m_ethernet;
- required_device<midway_ioasic_device> m_ioasic;
- optional_ioport_array<8> m_io_analog;
- optional_ioport m_io_p4_8way;
- optional_ioport_array<4> m_io_49way_x;
- optional_ioport_array<4> m_io_49way_y;
- optional_ioport_array<2> m_io_gun_x;
- optional_ioport_array<2> m_io_gun_y;
- optional_ioport m_io_fake;
- optional_ioport m_io_gearshift;
- optional_ioport m_io_system;
- optional_ioport m_io_dips;
- output_finder<1> m_wheel_driver;
- output_finder<16> m_lamps;
- output_finder<24> m_leds;
-
- static const uint8_t translate49[7];
-
- widget_data m_widget;
- uint32_t m_interrupt_enable;
- uint32_t m_interrupt_config;
- uint32_t m_asic_reset;
- std::vector<uint32_t> m_nvram_data;
- uint8_t m_board_config;
- uint8_t m_ethernet_irq_num;
- uint8_t m_ethernet_irq_state;
- uint8_t m_vblank_irq_num;
- uint8_t m_vblank_latch;
- uint8_t m_vblank_state;
- uint8_t m_pending_analog_read;
- uint8_t m_status_leds;
- uint32_t m_cmos_write_enabled;
- uint16_t m_output_last;
- uint8_t m_output_mode;
- uint32_t m_i40_data;
- uint32_t m_gear;
- int8_t m_wheel_force;
- int m_wheel_offset;
- bool m_wheel_calibrated;
- uint32_t interrupt_state_r();
- uint32_t interrupt_state2_r();
- uint32_t interrupt_config_r();
- void interrupt_config_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- uint32_t seattle_interrupt_enable_r();
- void seattle_interrupt_enable_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- void vblank_clear_w(uint32_t data);
- uint32_t analog_port_r();
- void analog_port_w(uint32_t data);
- uint32_t carnevil_gun_r(offs_t offset);
- void carnevil_gun_w(offs_t offset, uint32_t data);
- void cmos_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- uint32_t cmos_r(offs_t offset);
- void cmos_protect_w(uint32_t data);
- uint32_t cmos_protect_r();
- void seattle_watchdog_w(uint32_t data);
- uint32_t asic_reset_r();
- void asic_reset_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- void asic_fifo_w(uint32_t data);
- uint32_t status_leds_r();
- void status_leds_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- uint32_t ethernet_r(offs_t offset, uint32_t mem_mask = ~0);
- void ethernet_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- uint32_t output_r();
- void output_w(uint32_t data);
- uint32_t widget_r(offs_t offset, uint32_t mem_mask = ~0);
- void widget_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0);
- void i40_w(uint32_t data);
- void wheel_board_w(offs_t offset, uint32_t data);
-
-
- DECLARE_WRITE_LINE_MEMBER(ide_interrupt);
- DECLARE_WRITE_LINE_MEMBER(vblank_assert);
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
- DECLARE_WRITE_LINE_MEMBER(ethernet_interrupt);
- DECLARE_WRITE_LINE_MEMBER(ioasic_irq);
- void update_vblank_irq();
- void update_galileo_irqs();
- void widget_reset();
- void update_widget_irq();
- void init_common(int config);
-
- void seattle_cs0_map(address_map &map);
- void seattle_cs1_map(address_map &map);
- void seattle_cs2_map(address_map &map);
- void seattle_cs3_map(address_map &map);
- void widget_cs3_map(address_map &map);
- void carnevil_cs3_map(address_map &map);
- void flagstaff_cs3_map(address_map &map);
-};
-
-/*************************************
- *
- * Machine init
- *
- *************************************/
-
-void seattle_state::machine_start()
-{
- // set the fastest DRC options, but strict verification
- m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
-
- // configure fast RAM regions
-// m_maincpu->add_fastram(0x00000000, 0x007fffff, FALSE, m_rambase);
-// m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, TRUE, m_rombase);
-
- save_item(NAME(m_widget.ethernet_addr));
- save_item(NAME(m_widget.irq_num));
- save_item(NAME(m_widget.irq_mask));
- save_item(NAME(m_interrupt_enable));
- save_item(NAME(m_interrupt_config));
- save_item(NAME(m_asic_reset));
- save_item(NAME(m_board_config));
- save_item(NAME(m_ethernet_irq_num));
- save_item(NAME(m_ethernet_irq_state));
- save_item(NAME(m_vblank_irq_num));
- save_item(NAME(m_vblank_latch));
- save_item(NAME(m_vblank_state));
- save_item(NAME(m_pending_analog_read));
- save_item(NAME(m_status_leds));
- save_item(NAME(m_cmos_write_enabled));
- save_item(NAME(m_output_last));
- save_item(NAME(m_output_mode));
- save_item(NAME(m_i40_data));
- save_item(NAME(m_gear));
- save_item(NAME(m_wheel_calibrated));
-
- m_wheel_driver.resolve();
- m_lamps.resolve();
- m_leds.resolve();
-}
-
-
-void seattle_state::machine_reset()
-{
- m_vblank_state = 0;
- m_vblank_irq_num = 0;
- m_interrupt_config = 0;
- m_interrupt_enable = 0;
- m_gear = 1;
- m_wheel_force = 0;
- m_wheel_offset = 0;
- m_wheel_calibrated = false;
- // reset either the DCS2 board or the CAGE board
- if (m_dcs != nullptr)
- {
- m_dcs->reset_w(0);
- m_dcs->reset_w(1);
- }
- else if (m_cage != nullptr)
- {
- m_cage->control_w(0);
- m_cage->control_w(3);
- }
-
- if (m_board_config == SEATTLE_WIDGET_CONFIG)
- widget_reset();
-}
-
-/*************************************
-*
-* Ethernet interrupts
-*
-*************************************/
-
-WRITE_LINE_MEMBER(seattle_state::ethernet_interrupt)
-{
- m_ethernet_irq_state = state;
- if (m_board_config == FLAGSTAFF_CONFIG)
- {
- uint8_t assert = m_ethernet_irq_state && (m_interrupt_enable & (1 << ETHERNET_IRQ_SHIFT));
- if (m_ethernet_irq_num != 0)
- m_maincpu->set_input_line(m_ethernet_irq_num, assert ? ASSERT_LINE : CLEAR_LINE);
- }
- else if (m_board_config == SEATTLE_WIDGET_CONFIG)
- update_widget_irq();
-}
-
-/*************************************
-*
-* I/O ASIC interrupts
-*
-*************************************/
-
-WRITE_LINE_MEMBER(seattle_state::ioasic_irq)
-{
- m_maincpu->set_input_line(IOASIC_IRQ_NUM, state);
-}
-
-/*************************************
-*
-* Configurable interrupts
-*
-*************************************/
-
-uint32_t seattle_state::interrupt_state_r()
-{
- uint32_t result = 0;
- result |= m_ethernet_irq_state << ETHERNET_IRQ_SHIFT;
- result |= m_vblank_latch << VBLANK_IRQ_SHIFT;
- return result;
-}
-
-
-uint32_t seattle_state::interrupt_state2_r()
-{
- uint32_t result = interrupt_state_r();
- result |= m_vblank_state << 8;
- return result;
-}
-
-
-uint32_t seattle_state::interrupt_config_r()
-{
- return m_interrupt_config;
-}
-
-void seattle_state::interrupt_config_w(offs_t offset, uint32_t data, uint32_t mem_mask)
-{
- int irq;
- COMBINE_DATA(&m_interrupt_config);
- //logerror("interrupt_config_w: m_interrupt_config=%08x\n", m_interrupt_config);
-
- // VBLANK: clear anything pending on the old IRQ
- if (m_vblank_irq_num != 0)
- m_maincpu->set_input_line(m_vblank_irq_num, CLEAR_LINE);
-
- // VBLANK: compute the new IRQ vector
- irq = (m_interrupt_config >> (2 * VBLANK_IRQ_SHIFT)) & 3;
- m_vblank_irq_num = (irq != 0) ? (2 + irq) : 0;
-
- // Widget board case
- if (m_board_config == SEATTLE_WIDGET_CONFIG)
- {
- // Widget: clear anything pending on the old IRQ
- if (m_widget.irq_num != 0)
- m_maincpu->set_input_line(m_widget.irq_num, CLEAR_LINE);
-
- // Widget: compute the new IRQ vector
- irq = (m_interrupt_config >> (2 * WIDGET_IRQ_SHIFT)) & 3;
- m_widget.irq_num = (irq != 0) ? (2 + irq) : 0;
- }
-
- // Flagstaff board case
- if (m_board_config == FLAGSTAFF_CONFIG)
- {
- // Ethernet: clear anything pending on the old IRQ
- if (m_ethernet_irq_num != 0)
- m_maincpu->set_input_line(m_ethernet_irq_num, CLEAR_LINE);
-
- // Ethernet: compute the new IRQ vector
- irq = (m_interrupt_config >> (2 * ETHERNET_IRQ_SHIFT)) & 3;
- m_ethernet_irq_num = (irq != 0) ? (2 + irq) : 0;
- }
-
- // update the states
- update_vblank_irq();
- ethernet_interrupt(m_ethernet_irq_state);
-}
-
-
-uint32_t seattle_state::seattle_interrupt_enable_r()
-{
- return m_interrupt_enable;
-}
-
-void seattle_state::seattle_interrupt_enable_w(offs_t offset, uint32_t data, uint32_t mem_mask)
-{
- uint32_t old = m_interrupt_enable;
- COMBINE_DATA(&m_interrupt_enable);
- if (old != m_interrupt_enable)
- {
- if (m_vblank_latch)
- update_vblank_irq();
- if (m_ethernet_irq_state)
- ethernet_interrupt(m_ethernet_irq_state);
- //logerror("seattle_state::seattle_interrupt_enable_w = %08X m_interrupt_config=%08X\n", m_interrupt_enable, m_interrupt_config);
- }
-}
-
-/*************************************
-*
-* VBLANK interrupts
-*
-*************************************/
-
-void seattle_state::update_vblank_irq()
-{
- int state = CLEAR_LINE;
-
- // skip if no interrupt configured
- if (m_vblank_irq_num == 0)
- return;
-
- // if the VBLANK has been latched, and the interrupt is enabled, assert
- if (m_vblank_latch && (m_interrupt_enable & (1 << VBLANK_IRQ_SHIFT))) {
- state = ASSERT_LINE;
- }
- m_maincpu->set_input_line(m_vblank_irq_num, state);
- //logerror("seattle_state::update_vblank_irq(%i)\n", state);
-}
-
-
-void seattle_state::vblank_clear_w(uint32_t data)
-{
- // clear the latch and update the IRQ
- m_vblank_latch = 0;
- update_vblank_irq();
-}
-
-
-WRITE_LINE_MEMBER(seattle_state::vblank_assert)
-{
- // cache the raw state
- m_vblank_state = state;
-
- // latch on the correct polarity transition
- if ((state && !(m_interrupt_enable & 0x100)) || (!state && (m_interrupt_enable & 0x100)))
- {
- m_vblank_latch = 1;
- update_vblank_irq();
- }
-}
-/*************************************
-*
-* Analog input handling (ADC0848)
-*
-*************************************/
-
-uint32_t seattle_state::analog_port_r()
-{
- return m_pending_analog_read;
-}
-
-
-void seattle_state::analog_port_w(uint32_t data)
-{
- if (data < 8 || data > 15)
- logerror("%08X:Unexpected analog port select = %08X\n", m_maincpu->pc(), data);
- int index = data & 7;
- 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);
- }
-}
-
-/*************************************
-*
-* Wheelboard output module
-*
-*************************************/
-void seattle_state::wheel_board_w(offs_t offset, uint32_t data)
-{
- //logerror("wheel_board_w: data = %08X\n", data);
- uint8_t arg = data & 0xFF;
-
- if (!BIT(m_output_last, 11) && BIT(data, 11)) // output latch
- {
- if (BIT(data, 10))
- {
- uint8_t base = BIT(data, 8) << 3;
- for (uint8_t bit = 0; bit < 8; bit++)
- m_lamps[base | bit] = BIT(arg, bit);
- }
- else if (BIT(data, 9) || BIT(data, 8))
- {
- logerror("%08X:wheel_board_w(%d) = %08X\n", m_maincpu->pc(), offset, data);
- }
- else
- {
- m_wheel_driver[0] = arg; // target wheel angle. signed byte.
- m_wheel_force = int8_t(arg);
- }
- }
- m_output_last = data;
-}
-
-/*************************************
-* 49 Way translation matrix
-*************************************/
-const uint8_t seattle_state::translate49[7] = { 0x8, 0xc, 0xe, 0xf, 0x3, 0x1, 0x0 };
-
-/*************************************
-* 2 player 49 Way Joystick on Blitz
-*************************************/
-CUSTOM_INPUT_MEMBER(seattle_state::blitz_49way_r)
-{
- return (translate49[m_io_49way_y[1]->read() >> 4] << 12) | (translate49[m_io_49way_x[1]->read() >> 4] << 8) |
- (translate49[m_io_49way_y[0]->read() >> 4] << 4) | (translate49[m_io_49way_x[0]->read() >> 4] << 0);
-}
-
-/*************************************
-* Optical 49 Way Joystick I40 Board
-*************************************/
-void seattle_state::i40_w(uint32_t data)
-{
- //printf("i40_w: data = %08x\n", data);
- //logerror("i40_w: data = %08x\n", data);
- m_i40_data = data;
-}
-
-CUSTOM_INPUT_MEMBER(seattle_state::i40_r)
-{
- if (m_io_dips->read() & 0x100) {
- // 8 way joysticks
- return m_io_p4_8way->read();
- }
- else {
- // 49 way joysticks via i40 adapter board
- 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;
- }
- logerror("%s: i40_r: select: %x index: %d data: %x\n", machine().describe_context(), m_i40_data, index, data);
- //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;
- }
-}
-
-/*************************************
-*
-* Gearshift (calspeed)
-*
-*************************************/
-DECLARE_CUSTOM_INPUT_MEMBER(seattle_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;
-}
-
-/*************************************
-*
-* CarnEvil gun handling
-*
-*************************************/
-
-uint32_t seattle_state::carnevil_gun_r(offs_t offset)
-{
- uint32_t result = 0;
-
- switch (offset)
- {
- case 0: // lower 8 bits of X
- result = (m_io_gun_x[0]->read() << 4) & 0xff;
- break;
-
- case 1: // upper 4 bits of X
- result = (m_io_gun_x[0]->read() >> 4) & 0x0f;
- result |= (m_io_fake->read() & 0x03) << 4;
- result |= 0x40;
- break;
-
- case 2: // lower 8 bits of Y
- result = (m_io_gun_y[0]->read() << 2) & 0xff;
- break;
-
- case 3: // upper 4 bits of Y
- result = (m_io_gun_y[0]->read() >> 6) & 0x03;
- break;
-
- case 4: // lower 8 bits of X
- result = (m_io_gun_x[1]->read() << 4) & 0xff;
- break;
-
- case 5: // upper 4 bits of X
- result = (m_io_gun_x[1]->read() >> 4) & 0x0f;
- result |= (m_io_fake->read() & 0x30);
- result |= 0x40;
- break;
-
- case 6: // lower 8 bits of Y
- result = (m_io_gun_y[1]->read() << 2) & 0xff;
- break;
-
- case 7: // upper 4 bits of Y
- result = (m_io_gun_y[1]->read() >> 6) & 0x03;
- break;
- }
- return result;
-}
-
-
-void seattle_state::carnevil_gun_w(offs_t offset, uint32_t data)
-{
- logerror("carnevil_gun_w(%d) = %02X\n", offset, data);
-}
-
-/*************************************
-*
-* Ethernet access
-*
-*************************************/
-
-uint32_t seattle_state::ethernet_r(offs_t offset, uint32_t mem_mask)
-{
- uint32_t data = 0;
- if (!(offset & 8))
- data = m_ethernet->read(offset & 7, mem_mask & 0xffff);
- else
- data = m_ethernet->read(offset & 7, mem_mask & 0x00ff);
- //logerror("ethernet_r: @%08x=%08x mask: %08x\n", offset, data, mem_mask);
- return data;
-}
-
-
-void seattle_state::ethernet_w(offs_t offset, uint32_t data, uint32_t mem_mask)
-{
- //logerror("ethernet_w: @%08x=%08x mask: %08x\n", offset, data, mem_mask);
- if (!(offset & 8))
- m_ethernet->write(offset & 7, data & 0xffff, mem_mask | 0xffff);
- else
- m_ethernet->write(offset & 7, data & 0x00ff, mem_mask | 0x00ff);
-}
-
-/*************************************
-*
-* Widget board access
-*
-*************************************/
-
-void seattle_state::widget_reset()
-{
- uint8_t saved_irq = m_widget.irq_num;
- memset(&m_widget, 0, sizeof(m_widget));
- m_widget.irq_num = saved_irq;
-}
-
-
-void seattle_state::update_widget_irq()
-{
- uint8_t state = m_ethernet_irq_state << WINT_ETHERNET_SHIFT;
- uint8_t mask = m_widget.irq_mask;
- uint8_t assert = ((mask & state) != 0) && (m_interrupt_enable & (1 << WIDGET_IRQ_SHIFT));
-
- // update the IRQ state
- if (m_widget.irq_num != 0)
- m_maincpu->set_input_line(m_widget.irq_num, assert ? ASSERT_LINE : CLEAR_LINE);
-}
-
-
-uint32_t seattle_state::output_r()
-{
- logerror("%08X:output_r\n", m_maincpu->pc());
- return 0;
-}
-
-
-void seattle_state::output_w(uint32_t data)
-{
- uint8_t arg = data & 0xFF;
-
- if (!BIT(m_output_last, 11) && BIT(data, 11))
- m_output_mode = arg;
- m_output_last = data;
-
- if (!BIT(data, 10))
- {
- switch (m_output_mode)
- {
- default:
- logerror("%08X:output_w(%d) = %04X\n", m_maincpu->pc(), m_output_mode, data);
- break;
-
- case 0x04:
- output().set_value("wheel", arg); // wheel motor delta. signed byte.
- m_wheel_force = int8_t(~arg);
- //logerror("wheel_board_w: data = %08x op: %02x arg: %02x\n", data, op, arg);
- break;
-
- case 0x05:
- for (uint8_t bit = 0; bit < 8; bit++)
- m_lamps[bit] = BIT(arg, bit);
- break;
-
- case 0x06: // Hyperdrive LEDs 0-7
- for (uint8_t bit = 0; bit < 8; bit++)
- m_leds[bit] = BIT(arg, bit);
- break;
-
- case 0x07: // Hyperdrive LEDs 8-15
- for (uint8_t bit = 0; bit < 8; bit++)
- m_leds[8 | bit] = BIT(arg, bit);
- break;
-
- case 0x08: // Hyperdrive LEDs 16-23 (Only uses up to 19)
- for (uint8_t bit = 0; bit < 8; bit++)
- m_leds[16 | bit] = BIT(arg, bit);
- break;
- }
- }
- else if (!BIT(data, 9) || !BIT(data, 8))
- {
- logerror("%08X:output_w = %04X\n", m_maincpu->pc(), data);
- }
-}
-
-
-uint32_t seattle_state::widget_r(offs_t offset, uint32_t mem_mask)
-{
- uint32_t result = ~0;
-
- switch (offset)
- {
- case WREG_ETHER_ADDR:
- result = m_widget.ethernet_addr;
- break;
-
- case WREG_INTERRUPT:
- result = m_ethernet_irq_state << WINT_ETHERNET_SHIFT;
- result = ~result;
- break;
-
- case WREG_OUTPUT:
- result = output_r();
- break;
-
- case WREG_ANALOG:
- result = analog_port_r();
- break;
-
- case WREG_ETHER_DATA:
- result = m_ethernet->read(m_widget.ethernet_addr & 7, mem_mask & 0xffff);
- break;
- }
-
- if (LOG_WIDGET)
- logerror("Widget read (%02X) = %08X & %08X\n", offset*4, result, mem_mask);
- return result;
-}
-
-
-void seattle_state::widget_w(offs_t offset, uint32_t data, uint32_t mem_mask)
-{
- if (LOG_WIDGET)
- logerror("Widget write (%02X) = %08X & %08X\n", offset*4, data, mem_mask);
-
- switch (offset)
- {
- case WREG_ETHER_ADDR:
- m_widget.ethernet_addr = data;
- break;
-
- case WREG_INTERRUPT:
- m_widget.irq_mask = data;
- update_widget_irq();
- break;
-
- case WREG_OUTPUT:
- output_w(data);
- break;
-
- case WREG_ANALOG:
- analog_port_w(data);
- break;
-
- case WREG_ETHER_DATA:
- m_ethernet->write(m_widget.ethernet_addr & 7, data & 0xffff, mem_mask & 0xffff);
- break;
- }
-}
-
-
-/*************************************
-*
-* CMOS access
-*
-*************************************/
-
-void seattle_state::cmos_w(offs_t offset, uint32_t data, uint32_t mem_mask)
-{
- if (m_cmos_write_enabled)
- COMBINE_DATA(&m_nvram_data[offset]);
- m_cmos_write_enabled = false;
-}
-
-
-uint32_t seattle_state::cmos_r(offs_t offset)
-{
- return m_nvram_data[offset];
-}
-
-
-void seattle_state::cmos_protect_w(uint32_t data)
-{
- m_cmos_write_enabled = true;
-}
-
-
-uint32_t seattle_state::cmos_protect_r()
-{
- return m_cmos_write_enabled;
-}
-
-
-
-/*************************************
-*
-* Misc accesses
-*
-*************************************/
-
-void seattle_state::seattle_watchdog_w(uint32_t data)
-{
- m_maincpu->eat_cycles(100);
-}
-
-uint32_t seattle_state::asic_reset_r()
-{
- return m_asic_reset;
-}
-
-void seattle_state::asic_reset_w(offs_t offset, uint32_t data, uint32_t mem_mask)
-{
- COMBINE_DATA(&m_asic_reset);
- if (!(m_asic_reset & 0x0002))
- m_ioasic->ioasic_reset();
-}
-
-
-void seattle_state::asic_fifo_w(uint32_t data)
-{
- m_ioasic->fifo_w(data);
-}
-
-
-uint32_t seattle_state::status_leds_r()
-{
- return m_status_leds | 0xffffff00;
-}
-
-
-void seattle_state::status_leds_w(offs_t offset, uint32_t data, uint32_t mem_mask)
-{
- if (ACCESSING_BITS_0_7)
- m_status_leds = data;
-}
-
-/*************************************
-*
-* Memory maps
-*
-*************************************/
-
-/*
-
- WG3DH config:
-
-RAS[1:0] = 00000000-007FFFFF
- RAS[0] = 00000000-001FFFFF
- RAS[1] = 00200000-003FFFFF
-
-RAS[3:2] = 04000000-07FFFFFF
- RAS[2] = 04000000-05FFFFFF
- RAS[3] = 06000000-07FFFFFF
-
-PCI I/O = 0A000000-0BFFFFFF
-PCI Mem = 08000000-09FFFFFF
-
- CS[2:0] = 10000000-15FFFFFF
- CS[0] = 10000000-11FFFFFF
- CS[1] = 12000000-13FFFFFF
- CS[2] = 14000000-15FFFFFF
-
- CS[3]/B = 16000000-1FFFFFFF
- CS[3] = 16000000-17FFFFFF
-
-
-
- Carnevil config:
-
-RAS[1:0] = 00000000-03FFFFFF
- RAS[0] = 00000000-00BFFFFF
- RAS[1] = 00100000-03FFFFFF
-
-RAS[3:2] = 04000000-07FFFFFF
- RAS[2] = 04000000-05FFFFFF
- RAS[3] = 06000000-07FFFFFF
-
-PCI I/O = 0A000000-0BFFFFFF
-PCI Mem = 08000000-09FFFFFF
-
- CS[2:0] = 10000000-15FFFFFF
- CS[0] = 10000000-11FFFFFF
- CS[1] = 12000000-13FFFFFF
- CS[2] = 14000000-15FFFFFF
-
- CS[3]/B = 16000000-1FFFFFFF
- CS[3] = 16000000-17FFFFFF
-
-
-
- SFRush config:
-
-RAS[1:0] = 00000000-007FFFFF
- RAS[0] = 00000000-007FFFFF
- RAS[1] = 00080000-00AFFFFF
-
-RAS[3:2] = 04000000-07FFFFFF
- RAS[2] = 04000000-05FFFFFF
- RAS[3] = 06000000-07FFFFFF
-
-PCI I/O = 0A000000-0BFFFFFF
-PCI Mem = 08000000-09FFFFFF
-
- CS[2:0] = 10000000-15FFFFFF
- CS[0] = 10000000-11FFFFFF
- CS[1] = 12000000-13FFFFFF
- CS[2] = 14000000-15FFFFFF
-
- CS[3]/B = 16000000-1FFFFFFF
- CS[3] = 16000000-17FFFFFF
-
-*/
-
-void seattle_state::seattle_cs0_map(address_map &map)
-{
-}
-
-void seattle_state::seattle_cs1_map(address_map &map)
-{
- map(0x01000000, 0x01000003).w(FUNC(seattle_state::asic_fifo_w));
-}
-
-void seattle_state::seattle_cs2_map(address_map &map)
-{
- map(0x00000000, 0x00000003).rw(FUNC(seattle_state::analog_port_r), FUNC(seattle_state::analog_port_w)); // Flagstaff only
-}
-
-void seattle_state::seattle_cs3_map(address_map &map)
-{
- map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
- map(0x00100000, 0x0011ffff).rw(FUNC(seattle_state::cmos_r), FUNC(seattle_state::cmos_w));
- map(0x01000000, 0x01000003).rw(FUNC(seattle_state::cmos_protect_r), FUNC(seattle_state::cmos_protect_w));
- map(0x01100000, 0x01100003).w(FUNC(seattle_state::seattle_watchdog_w));
- map(0x01300000, 0x01300003).rw(FUNC(seattle_state::seattle_interrupt_enable_r), FUNC(seattle_state::seattle_interrupt_enable_w));
- map(0x01400000, 0x01400003).rw(FUNC(seattle_state::interrupt_config_r), FUNC(seattle_state::interrupt_config_w));
- map(0x01500000, 0x01500003).r(FUNC(seattle_state::interrupt_state_r));
- map(0x01600000, 0x01600003).r(FUNC(seattle_state::interrupt_state2_r));
- map(0x01700000, 0x01700003).w(FUNC(seattle_state::vblank_clear_w));
- map(0x01800000, 0x01800003).noprw();
- map(0x01900000, 0x01900003).rw(FUNC(seattle_state::status_leds_r), FUNC(seattle_state::status_leds_w));
- map(0x01f00000, 0x01f00003).rw(FUNC(seattle_state::asic_reset_r), FUNC(seattle_state::asic_reset_w));
-}
-
-void seattle_state::widget_cs3_map(address_map &map)
-{
- seattle_cs3_map(map);
- map(0x00c00000, 0x00c0001f).rw(FUNC(seattle_state::widget_r), FUNC(seattle_state::widget_w));
-}
-
-void seattle_state::carnevil_cs3_map(address_map &map)
-{
- seattle_cs3_map(map);
- map(0x00800000, 0x0080001f).rw(FUNC(seattle_state::carnevil_gun_r), FUNC(seattle_state::carnevil_gun_w));
-}
-
-void seattle_state::flagstaff_cs3_map(address_map &map)
-{
- seattle_cs3_map(map);
- map(0x00c00000, 0x00c0003f).rw(FUNC(seattle_state::ethernet_r), FUNC(seattle_state::ethernet_w));
-}
-
-/*************************************
- *
- * Common input ports
- *
- *************************************/
-
-static INPUT_PORTS_START( seattle_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_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("IN2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( seattle_analog )
- PORT_INCLUDE(seattle_common)
-
- PORT_MODIFY("SYSTEM")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start Button")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("AN0") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN1") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN2") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN3") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN4") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN5") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN6") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
- PORT_START("AN7") PORT_BIT( 0xff, 0x80, IPT_CUSTOM )
-
-INPUT_PORTS_END
-/*************************************
- *
- * Game specific input ports
- *
- *************************************/
-
-static INPUT_PORTS_START( wg3dh )
- PORT_INCLUDE(seattle_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0002, 0x0002, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Shoot/Block")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Pass/Steal")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Burst/Turbo")
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("View Change")
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Shoot/Block")
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Pass/Steal")
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Burst/Turbo")
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_MODIFY("IN2")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) PORT_NAME("P3 Shoot/Block")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) PORT_NAME("P3 Pass/Steal")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) PORT_NAME("P3 Burst/Turbo")
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) PORT_NAME("P4 Shoot/Block")
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_NAME("P4 Pass/Steal")
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) PORT_NAME("P4 Burst/Turbo")
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( mace )
- PORT_INCLUDE(seattle_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( 0x8000, 0x0000, "Resolution" )
- PORT_DIPSETTING( 0x8000, DEF_STR( Low ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( Medium ) )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Quick")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Strong")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Evade")
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Kick")
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Quick")
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Strong")
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Evade")
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Kick")
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( sfrush )
- PORT_INCLUDE(seattle_analog)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0002, 0x0002, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("SYSTEM")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Abort")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("Reverse")
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("View 1")
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("View 2")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("View 3")
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON12 ) PORT_NAME("Music")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON13 ) PORT_NAME("Track 1")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON14 ) PORT_NAME("Track 2")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON15 ) PORT_NAME("Track 3")
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON16 ) PORT_NAME("Track 4")
- PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(seattle_state, gearshift_r)
- PORT_BIT( 0xe000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("GEAR")
- PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("1st Gear")
- PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("2nd Gear")
- PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("3rd Gear")
- PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("4th Gear")
-
- PORT_MODIFY("AN4")
- PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_NAME("Accel") PORT_SENSITIVITY(25) PORT_KEYDELTA(20)
-
- PORT_MODIFY("AN5")
- PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_NAME("Brake") PORT_SENSITIVITY(25) PORT_KEYDELTA(100)
-
- PORT_MODIFY("AN6")
- PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_NAME("Clutch") PORT_SENSITIVITY(25) PORT_KEYDELTA(100)
-
- PORT_MODIFY("AN7")
- PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_NAME("Steering") PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(20)
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( sfrushrk )
- PORT_INCLUDE(sfrush)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0001, "Calibrate at startup" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, "Unknown0002" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( calspeed )
- PORT_INCLUDE(seattle_analog)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0010, 0x0010, "Obsidian Manufacturing Test" ) // Needs boot rom test on to run.
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ))
- PORT_DIPSETTING( 0x0000, DEF_STR( On ))
- PORT_DIPNAME( 0x0040, 0x0040, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Radio")
- PORT_BIT( 0x000c, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("View 1") //road cam
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("View 2") //tailgate cam
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("View 3") //sky cam
- PORT_BIT( 0x0f80, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(seattle_state, gearshift_r)
-
- PORT_START("GEAR")
- PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("1st Gear")
- PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("2nd Gear")
- PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("3rd Gear")
- PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("4th Gear")
-
- PORT_MODIFY("AN0")
- PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_NAME("Steering") PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(20)
-
- PORT_MODIFY("AN1")
- PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_NAME("Accel") PORT_SENSITIVITY(25) PORT_KEYDELTA(20)
-
- PORT_MODIFY("AN2")
- PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_NAME("Brake") PORT_SENSITIVITY(25) PORT_KEYDELTA(100)
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( vaportrx )
- PORT_INCLUDE(seattle_analog)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0040, 0x0040, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("SYSTEM")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z) PORT_NAME("Left Trigger")
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_X) PORT_NAME("Right Trigger")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_A) PORT_NAME("Left Thumb")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_S) PORT_NAME("Right Thumb")
- PORT_BIT( 0x0180, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_Q) PORT_NAME("Left View")
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_CODE(KEYCODE_W) PORT_NAME("Right View")
- PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_MODIFY("AN1")
- PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
-
- PORT_MODIFY("AN2")
- PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1)
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( biofreak )
- PORT_INCLUDE(seattle_common)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0001, "Hilink download??" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, "Boot ROM Test" )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Left Punch")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Right Punch")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Fire/Shield")
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Left Punch")
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Right Punch")
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Fire/Shield")
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_MODIFY("IN2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Left Kick")
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("P1 Right Kick")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("P1 Hover")
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Left Kick")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Right Kick")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Hover")
- PORT_BIT( 0xff80, IP_ACTIVE_LOW, IPT_UNUSED )
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( blitz )
- PORT_INCLUDE(seattle_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( 0x0008, "Mode 2" )
- PORT_DIPSETTING( 0x0009, "Mode 3" )
- PORT_DIPSETTING( 0x0002, "Mode 4" )
- PORT_DIPSETTING( 0x000c, "Mode ECA" )
-// PORT_DIPSETTING( 0x0004, "Not Used 1" ) Marked as Unused in the manual
-// PORT_DIPSETTING( 0x0008, "Not Used 2" ) Marked as Unused in the manual
- 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, "Not Used" ) Marked as Unused in the manual
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ))
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown )) // Marked as Unused in the manual
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, "Power Up Test Loop" )
- PORT_DIPSETTING( 0x0080, "One Time" )
- PORT_DIPSETTING( 0x0000, "Continuous" )
- PORT_DIPNAME( 0x0100, 0x0100, "Joysticks" )
- PORT_DIPSETTING( 0x0100, "8-Way" )
- PORT_DIPSETTING( 0x0000, "49-Way" )
- PORT_DIPNAME( 0x0600, 0x0200, "Resolution" )
- PORT_DIPSETTING( 0x0200, "512x385 @ 25KHz" )
- PORT_DIPSETTING( 0x0400, "512x256 @ 15KHz" )
-// PORT_DIPSETTING( 0x0600, "0" ) Marked as Unused in the manual
-// PORT_DIPSETTING( 0x0000, "3" ) Marked as Unused in the manual
- PORT_DIPNAME( 0x1800, 0x1800, "Graphics Speed" )
- PORT_DIPSETTING( 0x0000, "45 MHz" )
- PORT_DIPSETTING( 0x0800, "47 MHz" )
- PORT_DIPSETTING( 0x1000, "49 MHz" )
- PORT_DIPSETTING( 0x1800, "51 MHz" )
- PORT_DIPNAME( 0x2000, 0x0000, "Bill Validator" )
- PORT_DIPSETTING( 0x2000, DEF_STR( None ) )
- PORT_DIPSETTING( 0x0000, "One" )
- 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( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 A")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 B")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Turbo")
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 A")
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 B")
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Turbo")
-
- PORT_MODIFY("IN2")
- PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(seattle_state, blitz_49way_r)
-
- 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)
-
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( blitz99 )
- PORT_INCLUDE(blitz)
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x003e, 0x003e, DEF_STR( Coinage ))
- PORT_DIPSETTING( 0x003e, "USA 1" )
- PORT_DIPSETTING( 0x003c, "USA 2" )
- PORT_DIPSETTING( 0x003a, "USA 3" )
- PORT_DIPSETTING( 0x0038, "USA 4" )
- PORT_DIPSETTING( 0x0036, "USA 5" )
- PORT_DIPSETTING( 0x0034, "USA 6" )
- PORT_DIPSETTING( 0x0032, "USA 7" )
- PORT_DIPSETTING( 0x0030, "USA ECA" )
- PORT_DIPSETTING( 0x002e, "France 1" )
- PORT_DIPSETTING( 0x002c, "France 2" )
- PORT_DIPSETTING( 0x002a, "France 3" )
- PORT_DIPSETTING( 0x0028, "France 4" )
- PORT_DIPSETTING( 0x0026, "France 5" )
- PORT_DIPSETTING( 0x0024, "France 6" )
- PORT_DIPSETTING( 0x0022, "France 7" )
- PORT_DIPSETTING( 0x0020, "France ECA" )
- PORT_DIPSETTING( 0x001e, "German 1" )
- PORT_DIPSETTING( 0x001c, "German 2" )
- PORT_DIPSETTING( 0x001a, "German 3" )
- PORT_DIPSETTING( 0x0018, "German 4" )
- PORT_DIPSETTING( 0x0016, "German 5" )
-// PORT_DIPSETTING( 0x0014, "German 5" )
-// PORT_DIPSETTING( 0x0012, "German 5" )
- PORT_DIPSETTING( 0x0010, "German ECA" )
- PORT_DIPSETTING( 0x000e, "U.K. 1 ECA" )
- PORT_DIPSETTING( 0x000c, "U.K. 2 ECA" )
- PORT_DIPSETTING( 0x000a, "U.K. 3 ECA" )
- PORT_DIPSETTING( 0x0008, "U.K. 4" )
- PORT_DIPSETTING( 0x0006, "U.K. 5" )
- PORT_DIPSETTING( 0x0004, "U.K. 6 ECA" )
- PORT_DIPSETTING( 0x0002, "U.K. 7 ECA" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ))
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ))
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0600, 0x0200, "Resolution" )
- PORT_DIPSETTING( 0x0200, "512x385 @ 25KHz" )
- PORT_DIPSETTING( 0x0400, "512x256 @ 15KHz" )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Players ) )
- PORT_DIPSETTING( 0x2000, "2" )
- PORT_DIPSETTING( 0x0000, "4" )
-
- PORT_MODIFY("IN2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) PORT_NAME("P3 A")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) PORT_NAME("P3 B")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) PORT_NAME("P3 Turbo")
- PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(seattle_state, i40_r)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) PORT_NAME("P4 A")
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) PORT_NAME("P4 B")
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_NAME("P4 Turbo")
-
- PORT_START("8WAY_P4")
- PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(4) PORT_8WAY
- PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4) PORT_8WAY
- PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4) PORT_8WAY
- PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4) PORT_8WAY
-
- 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( carnevil )
- PORT_INCLUDE( seattle_common )
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0000, "Coinage Source" )
- PORT_DIPSETTING( 0x0001, "Dipswitch" )
- PORT_DIPSETTING( 0x0000, "CMOS" )
- PORT_DIPNAME( 0x003e, 0x003e, DEF_STR( Coinage ))
- PORT_DIPSETTING( 0x003e, "USA 1" )
- PORT_DIPSETTING( 0x003c, "USA 2" )
- PORT_DIPSETTING( 0x003a, "USA 3" )
- PORT_DIPSETTING( 0x0038, "USA 4" )
- PORT_DIPSETTING( 0x0036, "USA 5" )
- PORT_DIPSETTING( 0x0034, "USA 6" )
- PORT_DIPSETTING( 0x0032, "USA 7" )
- PORT_DIPSETTING( 0x0030, "USA ECA" )
- PORT_DIPSETTING( 0x002e, "France 1" )
- PORT_DIPSETTING( 0x002c, "France 2" )
- PORT_DIPSETTING( 0x002a, "France 3" )
- PORT_DIPSETTING( 0x0028, "France 4" )
- PORT_DIPSETTING( 0x0026, "France 5" )
- PORT_DIPSETTING( 0x0024, "France 6" )
- PORT_DIPSETTING( 0x0022, "France 7" )
- PORT_DIPSETTING( 0x0020, "France ECA" )
- PORT_DIPSETTING( 0x001e, "German 1" )
- PORT_DIPSETTING( 0x001c, "German 2" )
- PORT_DIPSETTING( 0x001a, "German 3" )
- PORT_DIPSETTING( 0x0018, "German 4" )
- PORT_DIPSETTING( 0x0016, "German 5" )
-// PORT_DIPSETTING( 0x0014, "German 5" )
-// PORT_DIPSETTING( 0x0012, "German 5" )
- PORT_DIPSETTING( 0x0010, "German ECA" )
- PORT_DIPSETTING( 0x000e, "U.K. 1" )
- PORT_DIPSETTING( 0x000c, "U.K. 2" )
- PORT_DIPSETTING( 0x000a, "U.K. 3" )
- PORT_DIPSETTING( 0x0008, "U.K. 4" )
- PORT_DIPSETTING( 0x0006, "U.K. 5" )
- PORT_DIPSETTING( 0x0004, "U.K. 6" )
- PORT_DIPSETTING( 0x0002, "U.K. 7 ECA" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ))
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ))
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, "Power Up Test Loop" )
- PORT_DIPSETTING( 0x0080, DEF_STR( No ))
- PORT_DIPSETTING( 0x0000, DEF_STR( Yes ))
- PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ))
- PORT_DIPSETTING( 0x0100, "0" )
- PORT_DIPSETTING( 0x0000, "1" )
- PORT_DIPNAME( 0x0600, 0x0400, "Resolution" )
-// PORT_DIPSETTING( 0x0600, "0" )
-// PORT_DIPSETTING( 0x0200, DEF_STR( Medium ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Low ) )
-// PORT_DIPSETTING( 0x0000, "3" )
- PORT_DIPNAME( 0x1800, 0x1800, "Graphics Speed" )
- PORT_DIPSETTING( 0x0000, "45 MHz" )
- PORT_DIPSETTING( 0x0800, "47 MHz" )
- PORT_DIPSETTING( 0x1000, "49 MHz" )
- PORT_DIPSETTING( 0x1800, "51 MHz" )
- PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ))
- PORT_DIPSETTING( 0x2000, "0" )
- PORT_DIPSETTING( 0x0000, "1" )
- 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( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("LIGHT0_X") //fake analog X
- PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
-
- PORT_START("LIGHT0_Y") //fake analog Y
- PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10)
-
- PORT_START("LIGHT1_X") //fake analog X
- PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2)
-
- PORT_START("LIGHT1_Y") //fake analog Y
- PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(2)
-
- PORT_START("FAKE") // fake switches
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Trigger")
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Pump")
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Trigger")
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Pump")
-INPUT_PORTS_END
-
-
-static INPUT_PORTS_START( hyprdriv )
- PORT_INCLUDE( seattle_analog )
-
- PORT_MODIFY("DIPS")
- PORT_DIPNAME( 0x0001, 0x0000, "Coinage Source" )
- PORT_DIPSETTING( 0x0001, "Dipswitch" )
- PORT_DIPSETTING( 0x0000, "CMOS" )
- PORT_DIPNAME( 0x003e, 0x0034, DEF_STR( Coinage ))
- PORT_DIPSETTING( 0x003e, "USA 10" )
- PORT_DIPSETTING( 0x003c, "USA 11" )
- PORT_DIPSETTING( 0x003a, "USA 12" )
- PORT_DIPSETTING( 0x0038, "USA 13" )
- PORT_DIPSETTING( 0x0036, "USA 9" )
- PORT_DIPSETTING( 0x0034, "USA 1" )
- PORT_DIPSETTING( 0x0032, "USA 2" )
- PORT_DIPSETTING( 0x0030, "USA ECA" )
- PORT_DIPSETTING( 0x002e, "France 1" )
- PORT_DIPSETTING( 0x002c, "France 2" )
- PORT_DIPSETTING( 0x002a, "France 3" )
- PORT_DIPSETTING( 0x0028, "France 4" )
- PORT_DIPSETTING( 0x0026, "France 5" )
- PORT_DIPSETTING( 0x0024, "France 6" )
- PORT_DIPSETTING( 0x0022, "France 7" )
- PORT_DIPSETTING( 0x0020, "France ECA" )
- PORT_DIPSETTING( 0x001e, "German 1" )
- PORT_DIPSETTING( 0x001c, "German 2" )
- PORT_DIPSETTING( 0x001a, "German 3" )
- PORT_DIPSETTING( 0x0018, "German 4" )
- PORT_DIPSETTING( 0x0016, "German 5" )
- PORT_DIPSETTING( 0x0014, "German 5" )
- PORT_DIPSETTING( 0x0012, "German 5" )
- PORT_DIPSETTING( 0x0010, "German ECA" )
- PORT_DIPSETTING( 0x000e, "U.K. 1 ECA" )
- PORT_DIPSETTING( 0x000c, "U.K. 2 ECA" )
- PORT_DIPSETTING( 0x000a, "U.K. 3 ECA" )
- PORT_DIPSETTING( 0x0008, "U.K. 4" )
- PORT_DIPSETTING( 0x0006, "U.K. 5" )
- PORT_DIPSETTING( 0x0004, "U.K. 6 ECA" )
- PORT_DIPSETTING( 0x0002, "U.K. 7 ECA" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ))
- PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ))
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0080, 0x0080, "Power Up Test Loop" )
- PORT_DIPSETTING( 0x0080, DEF_STR( No ))
- PORT_DIPSETTING( 0x0000, DEF_STR( Yes ))
- PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ))
- PORT_DIPSETTING( 0x0100, "0" )
- PORT_DIPSETTING( 0x0000, "1" )
- PORT_DIPNAME( 0x0600, 0x0200, "Resolution" )
- PORT_DIPSETTING( 0x0600, "0" )
- PORT_DIPSETTING( 0x0200, DEF_STR( Medium ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Low ) )
- PORT_DIPSETTING( 0x0000, "3" )
- PORT_DIPNAME( 0x1800, 0x0000, "Graphics Speed" )
- PORT_DIPSETTING( 0x0000, "45 MHz" )
- PORT_DIPSETTING( 0x0800, "47 MHz" )
- PORT_DIPSETTING( 0x1000, "49 MHz" )
- PORT_DIPSETTING( 0x1800, "51 MHz" )
- PORT_DIPNAME( 0x2000, 0x2000, "Brake" )
- PORT_DIPSETTING( 0x2000, "Enabled" )
- PORT_DIPSETTING( 0x0000, "Disabled" )
- 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("SYSTEM")
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start Button")
-
- PORT_MODIFY("IN1")
- PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_NAME("Swing Left")
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_NAME("Swing Right")
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("View 1")
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("View 2")
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("View 3")
- PORT_BIT( 0xff80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_MODIFY("AN0")
- PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(25)
-
- PORT_MODIFY("AN1")
- PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_NAME("Accel") PORT_SENSITIVITY(25) PORT_KEYDELTA(20)
-
- PORT_MODIFY("AN2")
- PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_NAME("Brake") PORT_SENSITIVITY(25) PORT_KEYDELTA(100)
-
- PORT_MODIFY("AN3")
- PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(25)
-
-INPUT_PORTS_END
-
-
-
-/*************************************
- *
- * Machine drivers
- *
- *************************************/
-void seattle_state::seattle_common(machine_config &config)
-{
-
- // basic machine hardware
- R5000LE(config, m_maincpu, SYSTEM_CLOCK * 3);
- m_maincpu->set_icache_size(16384);
- m_maincpu->set_dcache_size(16384);
- m_maincpu->set_system_clock(SYSTEM_CLOCK);
-
- // PCI Bus Devices
- PCI_ROOT(config, ":pci", 0);
-
- GT64010(config, m_galileo, SYSTEM_CLOCK, m_maincpu, GALILEO_IRQ_NUM);
- m_galileo->set_map(0, address_map_constructor(&seattle_state::seattle_cs0_map, "seattle_cs0_map", this), this);
- m_galileo->set_map(1, address_map_constructor(&seattle_state::seattle_cs1_map, "seattle_cs1_map", this), this);
- m_galileo->set_map(2, address_map_constructor(&seattle_state::seattle_cs2_map, "seattle_cs2_map", this), this);
- m_galileo->set_map(3, address_map_constructor(&seattle_state::seattle_cs3_map, "seattle_cs3_map", this), this);
- m_galileo->set_simm0_size(0x00800000);
-
- ide_pci_device &ide(IDE_PCI(config, PCI_ID_IDE, 0, 0x100b0002, 0x01, 0x0));
- ide.irq_handler().set_inputline(m_maincpu, IDE_IRQ_NUM);
- ide.set_legacy_top(0x0a0);
-
- // video hardware
- VOODOO_1_PCI(config, m_voodoo, 0, m_maincpu, m_screen);
- m_voodoo->set_fbmem(2);
- m_voodoo->set_tmumem(4, 0);
-
- subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->vblank_callback().set(FUNC(seattle_state::vblank_assert));
- subdevice<voodoo_device>(PCI_ID_VIDEO":voodoo")->stall_callback().set(m_galileo, FUNC(gt64xxx_device::pci_stall));
-
- NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
-
- // screen
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- // Screeen size and timing is re-calculated later in voodoo card
- m_screen->set_refresh_hz(57);
- m_screen->set_size(640, 480);
- m_screen->set_visarea(0, 640 - 1, 0, 480 - 1);
- m_screen->set_screen_update(PCI_ID_VIDEO, FUNC(voodoo_1_pci_device::screen_update));
-}
-
-
-void seattle_state::phoenix(machine_config &config)
-{
- seattle_common(config);
- R4700LE(config.replace(), m_maincpu, SYSTEM_CLOCK * 2);
- m_maincpu->set_icache_size(16384);
- m_maincpu->set_dcache_size(16384);
- m_maincpu->set_system_clock(SYSTEM_CLOCK);
-
- m_galileo->set_simm0_size(0x00200000);
- m_galileo->set_simm1_size(0x00200000);
-}
-
-
-void seattle_state::seattle150(machine_config &config)
-{
- seattle_common(config);
- R5000LE(config.replace(), m_maincpu, SYSTEM_CLOCK * 3);
- m_maincpu->set_icache_size(16384);
- m_maincpu->set_dcache_size(16384);
- m_maincpu->set_system_clock(SYSTEM_CLOCK);
-}
-
-
-void seattle_state::seattle150_widget(machine_config &config)
-{
- seattle150(config);
-
- m_galileo->set_map(3, address_map_constructor(&seattle_state::widget_cs3_map, "widget_cs3_map", this), this);
-
- SMC91C94(config, m_ethernet, 0);
- m_ethernet->irq_handler().set(FUNC(seattle_state::ethernet_interrupt));
-}
-
-
-void seattle_state::seattle200(machine_config &config)
-{
- seattle150(config);
- m_maincpu->set_clock(SYSTEM_CLOCK * 4);
-}
-
-
-void seattle_state::seattle200_widget(machine_config &config)
-{
- seattle200(config);
-
- m_galileo->set_map(3, address_map_constructor(&seattle_state::widget_cs3_map, "widget_cs3_map", this), this);
-
- SMC91C94(config, m_ethernet, 0);
- m_ethernet->irq_handler().set(FUNC(seattle_state::ethernet_interrupt));
-}
-
-void seattle_state::flagstaff(machine_config &config)
-{
- seattle200(config);
-
- m_galileo->set_map(3, address_map_constructor(&seattle_state::flagstaff_cs3_map, "flagstaff_cs3_map", this), this);
-
- SMC91C94(config, m_ethernet, 0);
- m_ethernet->irq_handler().set(FUNC(seattle_state::ethernet_interrupt));
-
- m_voodoo->set_fbmem(2);
- m_voodoo->set_tmumem(4, 4);
-}
-
-// Per game configurations
-
-void seattle_state::wg3dh(machine_config &config)
-{
- phoenix(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x3839);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
- m_ioasic->set_upper(310); // others?
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
-}
-
-
-void seattle_state::mace(machine_config &config)
-{
- seattle150(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x3839);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_MACE);
- m_ioasic->set_upper(319); // others?
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
-}
-
-void seattle_state::sfrush(machine_config &config)
-{
- flagstaff(config);
- atari_cage_seattle_device &cage(ATARI_CAGE_SEATTLE(config, "cage", 0));
- cage.set_speedup(0x5236);
- cage.irq_handler().set(m_ioasic, FUNC(midway_ioasic_device::cage_irq_handler));
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
- m_ioasic->set_upper(315); // no alternates
- m_ioasic->set_yearoffs(100);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
- m_ioasic->aux_output_handler().set(FUNC(seattle_state::wheel_board_w));
-}
-
-void seattle_state::sfrushrk(machine_config &config)
-{
- flagstaff(config);
- atari_cage_seattle_device &cage(ATARI_CAGE_SEATTLE(config, "cage", 0));
- cage.set_speedup(0x5329);
- cage.irq_handler().set(m_ioasic, FUNC(midway_ioasic_device::cage_irq_handler));
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_SFRUSHRK);
- m_ioasic->set_upper(331); // unknown
- m_ioasic->set_yearoffs(100);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
- m_ioasic->aux_output_handler().set(FUNC(seattle_state::wheel_board_w));
-}
-
-void seattle_state::sfrushrkw(machine_config &config)
-{
- sfrushrk(config);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
-}
-
-void seattle_state::calspeed(machine_config &config)
-{
- seattle150_widget(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x39c0);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_CALSPEED);
- m_ioasic->set_upper(328); // others?
- m_ioasic->set_yearoffs(100);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
- m_ioasic->set_auto_ack(1);
-}
-
-void seattle_state::vaportrx(machine_config &config)
-{
- seattle200_widget(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x39c2);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_VAPORTRX);
- m_ioasic->set_upper(324); // 334? unknown
- m_ioasic->set_yearoffs(100);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
-}
-
-void seattle_state::biofreak(machine_config &config)
-{
- seattle150(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x3835);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_STANDARD);
- m_ioasic->set_upper(231); // unknown
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
-}
-
-void seattle_state::blitz(machine_config &config)
-{
- seattle150(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x39c2);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_BLITZ99);
- m_ioasic->set_upper(444); // or 528
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
- m_ioasic->aux_output_handler().set(FUNC(seattle_state::i40_w));
-}
-
-void seattle_state::blitz99(machine_config &config)
-{
- seattle150(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x0afb);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_BLITZ99);
- m_ioasic->set_upper(481); // or 484 or 520
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
- m_ioasic->aux_output_handler().set(FUNC(seattle_state::i40_w));
-}
-
-void seattle_state::blitz2k(machine_config &config)
-{
- seattle150(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x0b5d);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_BLITZ99);
- m_ioasic->set_upper(494); // or 498
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
- m_ioasic->aux_output_handler().set(FUNC(seattle_state::i40_w));
-}
-
-void seattle_state::carnevil(machine_config &config)
-{
- seattle150(config);
- m_galileo->set_map(3, address_map_constructor(&seattle_state::carnevil_cs3_map, "carnevil_cs3_map", this), this);
-
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x0af7);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_CARNEVIL);
- m_ioasic->set_upper(469); // or 486 or 528
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
-}
-
-void seattle_state::hyprdriv(machine_config &config)
-{
- seattle200_widget(config);
- dcs2_audio_2115_device &dcs(DCS2_AUDIO_2115(config, "dcs", 0));
- dcs.set_dram_in_mb(2);
- dcs.set_polling_offset(0x0af7);
-
- MIDWAY_IOASIC(config, m_ioasic, 0);
- m_ioasic->set_shuffle(MIDWAY_IOASIC_HYPRDRIV);
- m_ioasic->set_upper(469); //unknown
- m_ioasic->set_yearoffs(80);
- m_ioasic->irq_handler().set(FUNC(seattle_state::ioasic_irq));
-}
-
-/*************************************
- *
- * ROM definitions
- *
- *************************************/
-
-ROM_START( wg3dh )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version L1.2 (10/8/96)
- ROM_LOAD( "wg3dh_12.u32", 0x000000, 0x80000, CRC(15e4cea2) SHA1(72c0db7dc53ce645ba27a5311b5ce803ad39f131) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.3 (Guts 10/15/96, Main 10/15/96)
- DISK_IMAGE( "wg3dh", 0, SHA1(4fc6f25d7f043d9bcf8743aa8df1d9be3cbc375b) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version L1.1
- ROM_LOAD16_BYTE( "soundl11.u95", 0x000000, 0x8000, CRC(c589458c) SHA1(0cf970a35910a74cdcf3bd8119bfc0c693e19b00) )
-ROM_END
-
-
-ROM_START( mace )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.0ce 7/2/97
- ROM_LOAD( "mace10ce.u32", 0x000000, 0x80000, CRC(7a50b37e) SHA1(33788835f84a9443566c80bee9f20a1691490c6d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.0B 6/10/97 (Guts 7/2/97, Main 7/2/97)
- DISK_IMAGE( "mace", 0, SHA1(96ec8d3ff5dd894e21aa81403bcdbeba44bb97ea) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version L1.1, Labeled as Version 1.0
- ROM_LOAD16_BYTE( "soundl11.u95", 0x000000, 0x8000, CRC(c589458c) SHA1(0cf970a35910a74cdcf3bd8119bfc0c693e19b00) )
-
- ROM_REGION( 0x2000, "serial_security_pic", 0 ) // security PIC (provides game ID code and serial number)
- ROM_LOAD( "314_mace.u96", 0x0000, 0x2000, CRC(65943e82) SHA1(984a1938f43671fc8f6394677396451dab7f042b) )
-ROM_END
-
-
-ROM_START( macea )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version ??? 5/7/97
- ROM_LOAD( "maceboot.u32", 0x000000, 0x80000, CRC(effe3ebc) SHA1(7af3ca3580d6276ffa7ab8b4c57274e15ee6bcbb) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.0a (Guts 6/9/97, Main 5/12/97)
- DISK_IMAGE( "macea", 0, BAD_DUMP SHA1(9bd4a60627915d71932cab24f89c48ea21f4c1cb) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version L1.1
- ROM_LOAD16_BYTE( "soundl11.u95", 0x000000, 0x8000, CRC(c589458c) SHA1(0cf970a35910a74cdcf3bd8119bfc0c693e19b00) )
-
- ROM_REGION( 0x2000, "serial_security_pic", 0 ) // security PIC (provides game ID code and serial number)
- ROM_LOAD( "314_mace.u96", 0x0000, 0x2000, CRC(65943e82) SHA1(984a1938f43671fc8f6394677396451dab7f042b) )
-ROM_END
-
-
-ROM_START( sfrush )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version L1.0
- ROM_LOAD( "hdboot.u32", 0x000000, 0x80000, CRC(39a35f1b) SHA1(c46d83448399205d38e6e41dd56abbc362254254) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x200000, "cage:boot", 0 ) // TMS320C31 boot ROM Version L1.0
- ROM_LOAD32_BYTE( "sndboot.u69", 0x000000, 0x080000, CRC(7e52cdc7) SHA1(f735063e19d2ca672cef6d761a2a47df272e8c59) )
-
- ROM_REGION32_LE( 0x1000000, "cage", 0 ) // TMS320C31 sound ROMs
- ROM_LOAD32_WORD( "sfrush.u62", 0x400000, 0x200000, CRC(5d66490e) SHA1(bd39ea3b45d44cae6ca5890f365653326bbecd2d) )
- ROM_LOAD32_WORD( "sfrush.u61", 0x400002, 0x200000, CRC(f3a00ee8) SHA1(c1ac780efc32b2e30522d7cc3e6d92e7daaadddd) )
- ROM_LOAD32_WORD( "sfrush.u53", 0x800000, 0x200000, CRC(71f8ddb0) SHA1(c24bef801f43bae68fda043c4356e8cf1298ca97) )
- ROM_LOAD32_WORD( "sfrush.u49", 0x800002, 0x200000, CRC(dfb0a54c) SHA1(ed34f9485f7a7e5bb73bf5c6428b27548e12db12) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version L1.06
- DISK_IMAGE( "sfrush", 0, SHA1(e2db0270a707fb2115207f988d5751081d6b4994) )
-ROM_END
-
-ROM_START( sfrusha )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version L1.06A
- ROM_LOAD( "hdbootv1_06a.bin", 0x000000, 0x80000, CRC(f247ba60) SHA1(850f97002eb1e362c3df870d7b6a1b5524ab983d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x200000, "cage:boot", 0 ) // TMS320C31 boot ROM Version L1.0
- ROM_LOAD32_BYTE( "sndboot.u69", 0x000000, 0x080000, CRC(7e52cdc7) SHA1(f735063e19d2ca672cef6d761a2a47df272e8c59) )
-
- ROM_REGION32_LE( 0x1000000, "cage", 0 ) // TMS320C31 sound ROMs
- ROM_LOAD32_WORD( "sfrush.u62", 0x400000, 0x200000, CRC(5d66490e) SHA1(bd39ea3b45d44cae6ca5890f365653326bbecd2d) )
- ROM_LOAD32_WORD( "sfrush.u61", 0x400002, 0x200000, CRC(f3a00ee8) SHA1(c1ac780efc32b2e30522d7cc3e6d92e7daaadddd) )
- ROM_LOAD32_WORD( "sfrush.u53", 0x800000, 0x200000, CRC(71f8ddb0) SHA1(c24bef801f43bae68fda043c4356e8cf1298ca97) )
- ROM_LOAD32_WORD( "sfrush.u49", 0x800002, 0x200000, CRC(dfb0a54c) SHA1(ed34f9485f7a7e5bb73bf5c6428b27548e12db12) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version L1.06
- DISK_IMAGE( "sfrush", 0, SHA1(e2db0270a707fb2115207f988d5751081d6b4994) )
-ROM_END
-
-
-
-ROM_START( sfrushrk )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code
- ROM_LOAD( "boot.bin", 0x000000, 0x080000, CRC(0555b3cf) SHA1(a48abd6d06a26f4f9b6c52d8c0af6095b6be57fd) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x200000, "cage:boot", 0 ) // TMS320C31 boot ROM
- ROM_LOAD32_BYTE( "audboot.bin", 0x000000, 0x080000, CRC(c70c060d) SHA1(dd014bd13efdf5adc5450836bd4650351abefc46) )
-
- ROM_REGION32_LE( 0x1000000, "cage", 0 ) // TMS320C31 sound ROMs
- ROM_LOAD32_WORD( "audio.u62", 0x400000, 0x200000, CRC(cacf09e3) SHA1(349af1767cb0ee2a0eb9d7c2ab078fcae5fec8e7) )
- ROM_LOAD32_WORD( "audio.u61", 0x400002, 0x200000, CRC(ea895d29) SHA1(1edde0497f2abd1636c5d7bcfbc03bcff321261c) )
- ROM_LOAD32_WORD( "audio.u53", 0x800000, 0x200000, CRC(51c89a14) SHA1(6bc62bcda224040a4596d795132874828011a038) )
- ROM_LOAD32_WORD( "audio.u49", 0x800002, 0x200000, CRC(e6b684d3) SHA1(1f5bab7fae974cecc8756dd23e3c7aa2cf6e7dc7) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.2
- DISK_IMAGE( "sfrushrk", 0, SHA1(e763f26aca67ebc17fe8b8df4fba91d492cf7837) )
-ROM_END
-
-
-ROM_START( sfrushrkw )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code
- ROM_LOAD( "1ff6.bin", 0x000000, 0x080000, CRC(0b30f080) SHA1(2dfa14b927d1c185e6876b1bf464c117682331c9) ) // Hand written "Rush The Rock w/wavenet 1ff6 8/10/97"
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x200000, "cage:boot", 0 ) // TMS320C31 boot ROM
- ROM_LOAD32_BYTE( "audboot.bin", 0x000000, 0x080000, CRC(c70c060d) SHA1(dd014bd13efdf5adc5450836bd4650351abefc46) )
-
- ROM_REGION32_LE( 0x1000000, "cage", 0 ) // TMS320C31 sound ROMs
- ROM_LOAD32_WORD( "audio.u62", 0x400000, 0x200000, CRC(cacf09e3) SHA1(349af1767cb0ee2a0eb9d7c2ab078fcae5fec8e7) )
- ROM_LOAD32_WORD( "audio.u61", 0x400002, 0x200000, CRC(ea895d29) SHA1(1edde0497f2abd1636c5d7bcfbc03bcff321261c) )
- ROM_LOAD32_WORD( "audio.u53", 0x800000, 0x200000, CRC(51c89a14) SHA1(6bc62bcda224040a4596d795132874828011a038) )
- ROM_LOAD32_WORD( "audio.u49", 0x800002, 0x200000, CRC(e6b684d3) SHA1(1f5bab7fae974cecc8756dd23e3c7aa2cf6e7dc7) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.2
- DISK_IMAGE( "sfrushrk", 0, SHA1(e763f26aca67ebc17fe8b8df4fba91d492cf7837) )
-ROM_END
-
-ROM_START( sfrushrkwo )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code
- ROM_LOAD( "boottest.bin", 0x000000, 0x080000, CRC(3f83f8e0) SHA1(c1862fc35c119586f79f23c52ecea6c35c37828a) ) // Labeled "Rush The Rock Boot Eeprom Test Only"
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x200000, "cage:boot", 0 ) // TMS320C31 boot ROM
- ROM_LOAD32_BYTE( "audboot.bin", 0x000000, 0x080000, CRC(c70c060d) SHA1(dd014bd13efdf5adc5450836bd4650351abefc46) )
-
- ROM_REGION32_LE( 0x1000000, "cage", 0 ) // TMS320C31 sound ROMs
- ROM_LOAD32_WORD( "audio.u62", 0x400000, 0x200000, CRC(cacf09e3) SHA1(349af1767cb0ee2a0eb9d7c2ab078fcae5fec8e7) )
- ROM_LOAD32_WORD( "audio.u61", 0x400002, 0x200000, CRC(ea895d29) SHA1(1edde0497f2abd1636c5d7bcfbc03bcff321261c) )
- ROM_LOAD32_WORD( "audio.u53", 0x800000, 0x200000, CRC(51c89a14) SHA1(6bc62bcda224040a4596d795132874828011a038) )
- ROM_LOAD32_WORD( "audio.u49", 0x800002, 0x200000, CRC(e6b684d3) SHA1(1f5bab7fae974cecc8756dd23e3c7aa2cf6e7dc7) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.2
- DISK_IMAGE( "sfrushrk", 0, SHA1(e763f26aca67ebc17fe8b8df4fba91d492cf7837) )
-ROM_END
-
-ROM_START( calspeed )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.2 (2/18/98)
- ROM_LOAD( "caspd1_2.u32", 0x000000, 0x80000, CRC(0a235e4e) SHA1(b352f10fad786260b58bd344b5002b6ea7aaf76d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Release version 2.1a (4/17/98) (Guts 1.25 4/17/98, Main 4/17/98)
- DISK_IMAGE( "calspeed", 0, SHA1(08d411c591d4b8bbdd6437ea80d01c4cec8516f8) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-ROM_END
-
-ROM_START( calspeeda )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) /* Boot Code Version 1.2 (2/18/98) */
- ROM_LOAD( "caspd1_2.u32", 0x000000, 0x80000, CRC(0a235e4e) SHA1(b352f10fad786260b58bd344b5002b6ea7aaf76d) )
-
- // it actually asks you to replace this with the original rom after the upgrade is complete, which is weird because this is a perfectly valid newer revision of the boot code, but probably explains why the parent set was still on 1.2
- ROM_LOAD( "cal speed update u32 boot ver, 1,4 5ef6", 0x000000, 0x80000, CRC(fd627637) SHA1(b0c2847cbecfc00344e402386d13240d55a0814e) ) // boot code 1.4 Apr 17 1998 21:18:31
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
- ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" )
-
- ROM_SYSTEM_BIOS( 1, "up16_1", "Disk Update 1.0x to 2.1a (1.25) Step 1 of 3" )
- ROMX_LOAD("eprom @1 2.1a 90a7", 0x000000, 0x100000, CRC(bc0f373e) SHA1(bf53f1953ccab8da9ce784e4d20dd2ec0d0eff6a), ROM_BIOS(1))
- ROM_SYSTEM_BIOS( 2, "up16_2", "Disk Update 1.0x to 2.1a (1.25) Step 2 of 3" )
- ROMX_LOAD("eprom @2 2.1a 9f84", 0x000000, 0x100000, CRC(5782da30) SHA1(eaeea3655bc9c1cedefdfb0088d4716584788669), ROM_BIOS(2))
- ROM_SYSTEM_BIOS( 3, "up16_3", "Disk Update 1.0x to 2.1a (1.25) Step 3 of 3" )
- ROMX_LOAD("eprom @3 2.1a 3286", 0x000000, 0x100000, CRC(e7d8c88f) SHA1(06c11241ac439527b361826784aef4c58689892e), ROM_BIOS(3))
-
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Release version 1.0r8a (4/10/98) (Guts 4/10/98, Main 4/10/98)
- DISK_IMAGE( "cs_10r8a", 0, SHA1(ba4e7589740e0647938c81c5082bb71d8826bad4) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-ROM_END
-
-ROM_START( calspeedb )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.2 (2/18/98)
- ROM_LOAD( "caspd1_2.u32", 0x000000, 0x80000, CRC(0a235e4e) SHA1(b352f10fad786260b58bd344b5002b6ea7aaf76d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Release version 1.0r7a (3/4/98) (Guts 3/3/98, Main 1/19/98)
- DISK_IMAGE( "calspeda", 0, SHA1(6b1c3a7530195ef7309b06a651b01c8b3ece92c6) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-ROM_END
-
-ROM_START( vaportrx )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 )
- ROM_LOAD( "vtrxboot.bin", 0x000000, 0x80000, CRC(ee487a6c) SHA1(fb9efda85047cf615f24f7276a9af9fd542f3354) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Guts: Jul 2 1998 09:03:42 Main: Jul 18 1998 09:06:54
- DISK_IMAGE( "vaportrx", 0, SHA1(fe53ca7643d2ed2745086abb7f2243c69678cab1) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "vaportrx.snd", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-ROM_END
-
-
-ROM_START( vaportrxp )
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 )
- ROM_LOAD( "vtrxboot.bin", 0x000000, 0x80000, CRC(ee487a6c) SHA1(fb9efda85047cf615f24f7276a9af9fd542f3354) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Guts: Apr 10 1998 11:03:14 Main: Apr 10 1998 11:27:44
- DISK_IMAGE( "vaportrp", 0, SHA1(6c86637c442ebd6994eee8c0ae0dce343c35dbe9) )
-
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "vaportrx.snd", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-ROM_END
-
-
-ROM_START( biofreak )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Seattle System Boot ROM Version 0.1i Apr 14 1997 14:52:53
- ROM_LOAD( "biofreak.u32", 0x000000, 0x80000, CRC(cefa00bb) SHA1(7e171610ede1e8a448fb8d175f9cb9e7d549de28) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Build Date 12/11/97
- DISK_IMAGE( "biofreak", 0, SHA1(711241642f92ded8eaf20c418ea748989183fe10) )
-ROM_END
-
-
-ROM_START( blitz )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.2
- ROM_LOAD( "blitz1_2.u32", 0x000000, 0x80000, CRC(38dbecf5) SHA1(7dd5a5b3baf83a7f8f877ff4cd3f5e8b5201b36f) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.21
- DISK_IMAGE( "blitz", 0, SHA1(9131c7888e89b3c172780156ed3fe1fe46f78b0a) )
-ROM_END
-
-
-ROM_START( blitz11 )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.1
- ROM_LOAD( "blitz1_1.u32", 0x000000, 0x80000, CRC(8163ce02) SHA1(89b432d8879052f6c5534ee49599f667f50a010f) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.21
- DISK_IMAGE( "blitz", 0, SHA1(9131c7888e89b3c172780156ed3fe1fe46f78b0a) )
-ROM_END
-
-
-ROM_START( blitz99 )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.0
- ROM_LOAD( "bltz9910.u32", 0x000000, 0x80000, CRC(777119b2) SHA1(40d255181c2f3a787919c339e83593fd506779a5) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.30
- DISK_IMAGE( "blitz99", 0, SHA1(19877e26ffce81dd525031e9e2b4f83ff982e2d9) )
-
- ROM_REGION( 0x2000, "serial_security_pic", 0 ) // security PIC (provides game ID code and serial number)
- ROM_LOAD( "481_blitz-99.u96", 0x0000, 0x2000, CRC(f58df548) SHA1(5bda123035f49f06b4721ab4a1577a115470aa02) )
-ROM_END
-
-ROM_START( blitz99a )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.0
- ROM_LOAD( "bltz9910.u32", 0x000000, 0x80000, CRC(777119b2) SHA1(40d255181c2f3a787919c339e83593fd506779a5) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF ) // to use this rom run with -bios up130 and go into TEST mode to update.
- ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" )
- ROM_SYSTEM_BIOS( 1, "up130", "Update to 1.30" )
- ROMX_LOAD( "rev.-1.3.u33", 0x000000, 0x100000, CRC(0a0fde5a) SHA1(1edb671c66819f634a9f1daa35331a99b2bda01a), ROM_BIOS(1) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.30
- DISK_IMAGE( "blitz99a", 0, SHA1(43f834727ce01d7a63b482fc28cbf292477fc6f2) )
-
- ROM_REGION( 0x2000, "serial_security_pic", 0 ) // security PIC (provides game ID code and serial number)
- ROM_LOAD( "481_blitz-99.u96", 0x0000, 0x2000, CRC(f58df548) SHA1(5bda123035f49f06b4721ab4a1577a115470aa02) )
-ROM_END
-
-
-ROM_START( blitz2k )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Code Version 1.4
- ROM_LOAD( "bltz2k14.u32", 0x000000, 0x80000, CRC(ac4f0051) SHA1(b8125c17370db7bfd9b783230b4ef3d5b22a2025) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive Version 1.5
- DISK_IMAGE( "blitz2k", 0, SHA1(e89b7fbd4b4a9854d47ae97493e0afffbd1f69e7) )
-ROM_END
-
-
-ROM_START( carnevil )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Rom Version 1.9
- ROM_LOAD( "carnevil1_9.u32", 0x000000, 0x80000, CRC(82c07f2e) SHA1(fa51c58022ce251c53bad12fc6ffadb35adb8162) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive v1.0.3 Diagnostics v3.4 / Feb 1 1999 16:00:07
- DISK_IMAGE( "carnevil", 0, SHA1(5cffb0de63ad36eb01c5951bab04d3f8a9e23e16) )
-
- ROM_REGION( 0x2000, "serial_security_pic", 0 ) // security PIC (provides game ID code and serial number)
- ROM_LOAD( "486_carnevil.u96", 0x0000, 0x2000, CRC(40eea9d4) SHA1(60a5f5c4de716722fa2ff55dccfc5fbbd7cd02e1) )
-ROM_END
-
-
-ROM_START( carnevil1 )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "sound102.u95", 0x000000, 0x8000, CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 ) // Boot Rom Version 1.9
- ROM_LOAD( "carnevil1_9.u32", 0x000000, 0x80000, CRC(82c07f2e) SHA1(fa51c58022ce251c53bad12fc6ffadb35adb8162) )
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Hard Drive v1.0.1 Diagnostics v3.3 / Oct 20 1998 11:44:41
- DISK_IMAGE( "carnevi1", 0, BAD_DUMP SHA1(94532727512280930a100fe473bf3a938fe2d44f) )
-
- ROM_REGION( 0x2000, "serial_security_pic", 0 ) // security PIC (provides game ID code and serial number)
- ROM_LOAD( "486_carnevil.u96", 0x0000, 0x2000, CRC(40eea9d4) SHA1(60a5f5c4de716722fa2ff55dccfc5fbbd7cd02e1) )
-ROM_END
-
-
-ROM_START( hyprdriv )
- ROM_REGION16_LE( 0x10000, "dcs", 0 ) // ADSP-2115 data Version 1.02
- ROM_LOAD16_BYTE( "seattle.snd", 0x000000, 0x8000, BAD_DUMP CRC(bec7d3ae) SHA1(db80aa4a645804a4574b07b9f34dec6b6b64190d) )
-
- ROM_REGION32_LE( 0x100000, PCI_ID_GALILEO":update", ROMREGION_ERASEFF )
- ROM_SYSTEM_BIOS( 0, "noupdate", "No Update Rom" )
- ROM_SYSTEM_BIOS( 1, "update", "Unknown Update" )
- ROMX_LOAD( "hyperdrive1.2.u33", 0x000000, 0x100000, CRC(fcc922fb) SHA1(7bfa4f0614f561ba77ad2dc7d776af2c3e84b7e7), ROM_BIOS(1) )
- /* it's either an update to 1.40, or an older version, either way we can't use it with the drive we have, it reports the following
-
- 'Valid Update Rom Detected'
- 'Processing Rom'
- 'Rom is Wrong Revision Level'
- 'Operation Failure'
-
- */
-
- ROM_REGION32_LE( 0x80000, PCI_ID_GALILEO":rom", 0 )
- ROM_LOAD( "hyperdrive1.1.u32", 0x000000, 0x80000, CRC(3120991e) SHA1(8e47888a5a23c9d3c0d0c64497e1cfb4e46c2cd6) ) // Boot Rom Version 2. Doesn't work, maybe for older drive?
- ROM_LOAD( "hyprdrve.u32", 0x000000, 0x80000, CRC(3e18cb80) SHA1(b18cc4253090ee1d65d72a7ec0c426ed08c4f238) ) // Boot Rom Version 9.
-
- DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) // Version 1.40 Oct 23 1998 15:16:00
- DISK_IMAGE( "hyprdriv", 0, SHA1(8cfa343797575b32f46cc24150024be48963a03e) )
-ROM_END
-
-
-
-/*************************************
- *
- * Driver init
- *
- *************************************/
-
-void seattle_state::init_common(int config)
-{
- // setup nvram
- m_nvram_data.resize(0x20000/4);
- m_nvram->set_base(m_nvram_data.data(), 0x20000);
-
- // switch off the configuration
- m_board_config = config;
- switch (config)
- {
- case PHOENIX_CONFIG:
- // original Phoenix board only has 4MB of RAM
- //m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x00400000, 0x007fffff);
- break;
-
- case SEATTLE_WIDGET_CONFIG:
- // set up the widget board
- //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16c00000, 0x16c0001f, read32_delegate(FUNC(seattle_state::widget_r),this), write32_delegate(FUNC(seattle_state::widget_w),this));
- break;
-
- case FLAGSTAFF_CONFIG:
- // set up the analog inputs
- //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x14000000, 0x14000003, read32_delegate(FUNC(seattle_state::analog_port_r),this), write32_delegate(FUNC(seattle_state::analog_port_w),this));
-
- // set up the ethernet controller
- //m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x16c00000, 0x16c0003f, read32_delegate(FUNC(seattle_state::ethernet_r),this), write32_delegate(FUNC(seattle_state::ethernet_w),this));
- break;
- }
-}
-
-
-void seattle_state::init_wg3dh()
-{
- init_common(PHOENIX_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x8004413C, 0x0C0054B4, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x80094930, 0x00A2102B, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x80092984, 0x3C028011, 250); // confirmed
-}
-
-
-void seattle_state::init_mace()
-{
- init_common(SEATTLE_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x800108F8, 0x8C420000, 250); // confirmed
-}
-
-
-void seattle_state::init_sfrush()
-{
- init_common(FLAGSTAFF_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x80059F34, 0x3C028012, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x800A5AF4, 0x8E300010, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x8004C260, 0x3C028012, 250); // confirmed
-}
-
-
-void seattle_state::init_sfrushrk()
-{
- init_common(FLAGSTAFF_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x800343E8, 0x3C028012, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x8008F4F0, 0x3C028012, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x800A365C, 0x8E300014, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x80051DAC, 0x3C028012, 250); // confirmed
-}
-
-
-void seattle_state::init_calspeed()
-{
- init_common(SEATTLE_WIDGET_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x80032534, 0x02221024, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x800B1BE4, 0x8E110014, 250); // confirmed
-}
-
-
-void seattle_state::init_vaportrx()
-{
- init_common(SEATTLE_WIDGET_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x80049F14, 0x3C028020, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x8004859C, 0x3C028020, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x8005922C, 0x8E020014, 250); // confirmed
-}
-
-
-void seattle_state::init_biofreak()
-{
- init_common(SEATTLE_CONFIG);
-}
-
-
-void seattle_state::init_blitz()
-{
- init_common(SEATTLE_CONFIG);
-
- // main CPU speedups
- m_maincpu->mips3drc_add_hotspot(0x80135510, 0x3C028024, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x800087DC, 0x8E820010, 250); // confirmed
-}
-
-
-void seattle_state::init_blitz99()
-{
- init_common(SEATTLE_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x8014E41C, 0x3C038025, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x80011F10, 0x8E020018, 250); // confirmed
-}
-
-
-void seattle_state::init_blitz2k()
-{
- init_common(SEATTLE_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x8015773C, 0x3C038025, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x80012CA8, 0x8E020018, 250); // confirmed
-}
-
-
-void seattle_state::init_carnevil()
-{
- init_common(SEATTLE_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x8015176C, 0x3C03801A, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x80011FBC, 0x8E020018, 250); // confirmed
-}
-
-
-void seattle_state::init_hyprdriv()
-{
- init_common(SEATTLE_WIDGET_CONFIG);
-
- // speedups
- m_maincpu->mips3drc_add_hotspot(0x801643BC, 0x3C03801B, 250); // confirmed
- m_maincpu->mips3drc_add_hotspot(0x80011FB8, 0x8E020018, 250); // confirmed
-// m_maincpu->mips3drc_add_hotspot(0x80136A80, 0x3C02801D, 250); // potential
-}
-
-
-
-/*************************************
- *
- * Game drivers
- *
- *************************************/
-
-// Atari
-GAME( 1996, wg3dh, 0, wg3dh, wg3dh, seattle_state, init_wg3dh, ROT0, "Atari Games", "Wayne Gretzky's 3D Hockey (ver 1.3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, mace, 0, mace, mace, seattle_state, init_mace, ROT0, "Atari Games", "Mace: The Dark Age (boot ROM 1.0ce, HDD 1.0b)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, macea, mace, mace, mace, seattle_state, init_mace, ROT0, "Atari Games", "Mace: The Dark Age (HDD 1.0a)", MACHINE_SUPPORTS_SAVE )
-GAMEL( 1996, sfrush, 0, sfrush, sfrush, seattle_state, init_sfrush, ROT0, "Atari Games", "San Francisco Rush (boot rom L 1.0)", MACHINE_SUPPORTS_SAVE, layout_sfrush )
-GAMEL( 1996, sfrusha, sfrush, sfrush, sfrush, seattle_state, init_sfrush, ROT0, "Atari Games", "San Francisco Rush (boot rom L 1.06A)", MACHINE_SUPPORTS_SAVE, layout_sfrush )
-GAMEL( 1997, sfrushrk, 0, sfrushrk, sfrushrk, seattle_state, init_sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock (boot rom L 1.0, GUTS Oct 6 1997 / MAIN Oct 16 1997)", MACHINE_SUPPORTS_SAVE, layout_sfrush )
-GAMEL( 1997, sfrushrkw, sfrushrk, sfrushrkw, sfrushrk, seattle_state, init_sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 19 1997 / MAIN Aug 19 1997)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_sfrush )
-GAMEL( 1997, sfrushrkwo, sfrushrk, sfrushrkw, sfrushrk, seattle_state, init_sfrushrk, ROT0, "Atari Games", "San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 6 1997 / MAIN Aug 5 1997)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_sfrush )
-GAMEL( 1998, calspeed, 0, calspeed, calspeed, seattle_state, init_calspeed, ROT0, "Atari Games", "California Speed (Version 2.1a Apr 17 1998, GUTS 1.25 Apr 17 1998 / MAIN Apr 17 1998)", MACHINE_SUPPORTS_SAVE, layout_calspeed )
-GAMEL( 1998, calspeeda, calspeed, calspeed, calspeed, seattle_state, init_calspeed, ROT0, "Atari Games", "California Speed (Version 1.0r8 Mar 10 1998, GUTS Mar 10 1998 / MAIN Mar 10 1998)", MACHINE_SUPPORTS_SAVE, layout_calspeed )
-GAMEL( 1998, calspeedb, calspeed, calspeed, calspeed, seattle_state, init_calspeed, ROT0, "Atari Games", "California Speed (Version 1.0r7a Mar 4 1998, GUTS Mar 3 1998 / MAIN Jan 19 1998)", MACHINE_SUPPORTS_SAVE, layout_calspeed )
-
-
-
-GAMEL( 1998, vaportrx, 0, vaportrx, vaportrx, seattle_state, init_vaportrx, ROT0, "Atari Games", "Vapor TRX (GUTS Jul 2 1998 / MAIN Jul 18 1998)", MACHINE_SUPPORTS_SAVE, layout_vaportrx )
-GAMEL( 1998, vaportrxp, vaportrx, vaportrx, vaportrx, seattle_state, init_vaportrx, ROT0, "Atari Games", "Vapor TRX (GUTS Apr 10 1998 / MAIN Apr 10 1998)", MACHINE_SUPPORTS_SAVE, layout_vaportrx )
-
-// Midway
-GAME( 1997, biofreak, 0, biofreak, biofreak, seattle_state, init_biofreak, ROT0, "Midway Games", "Bio F.R.E.A.K.S (prototype, boot ROM 0.1i)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, blitz, 0, blitz, blitz, seattle_state, init_blitz, ROT0, "Midway Games", "NFL Blitz (boot ROM 1.2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1997, blitz11, blitz, blitz, blitz, seattle_state, init_blitz, ROT0, "Midway Games", "NFL Blitz (boot ROM 1.1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, blitz99, 0, blitz99, blitz99, seattle_state, init_blitz99, ROT0, "Midway Games", "NFL Blitz '99 (ver 1.30, Sep 22 1998)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, blitz99a, blitz99, blitz99, blitz99, seattle_state, init_blitz99, ROT0, "Midway Games", "NFL Blitz '99 (ver 1.2, Aug 28 1998)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, blitz2k, 0, blitz2k, blitz99, seattle_state, init_blitz2k, ROT0, "Midway Games", "NFL Blitz 2000 Gold Edition (ver 1.2, Sep 22 1999)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, carnevil, 0, carnevil, carnevil, seattle_state, init_carnevil, ROT0, "Midway Games", "CarnEvil (v1.0.3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, carnevil1, carnevil, carnevil, carnevil, seattle_state, init_carnevil, ROT0, "Midway Games", "CarnEvil (v1.0.1)", MACHINE_SUPPORTS_SAVE )
-GAMEL( 1998, hyprdriv, 0, hyprdriv, hyprdriv, seattle_state, init_hyprdriv, ROT0, "Midway Games", "Hyperdrive (ver 1.40, Oct 23 1998)", MACHINE_SUPPORTS_SAVE, layout_hyprdriv )