diff options
Diffstat (limited to 'src/mame/drivers/kinst.cpp')
-rw-r--r-- | src/mame/drivers/kinst.cpp | 884 |
1 files changed, 0 insertions, 884 deletions
diff --git a/src/mame/drivers/kinst.cpp b/src/mame/drivers/kinst.cpp deleted file mode 100644 index 6f426eda325..00000000000 --- a/src/mame/drivers/kinst.cpp +++ /dev/null @@ -1,884 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - Killer Instinct hardware - - driver by Aaron Giles and Bryan McPhail - - Games supported: - * Killer Instinct - * Killer Instinct 2 - - Known bugs: - * the SRAM test fails in diagnostics; this is due to the fact that - the test relies on executing out of the cache while it tromps - over (and eventually restores) the instructions it is executing; - this will likely never be fixed - -**************************************************************************** - -Guru-Readme for Killer Instinct 1 / Killer Instinct 2 -Rare/Nintendo, 1994/1995 - -This is a fighting game using a hard drive to hold the graphics + code, -running on hardware made by Midway Manufacturing. -The hardware is using similar PCB technology to other Midway games -of the era such as San Francisco Rush, Mortal Kombat 3, Cruis'n Exotica, -War Gods etc. The majority of the IC's on the PCB are surface mounted. - -PCB Layout ----------- - -KILLER INSTINCT V4.0 -5770-14397-03 -(C)1994 Nintendo/Rare -(sticker - MIDWAY GAMES 44464 I457034 A-20333) -(sticker from another PCB - MIDWAY GAMES 44447 635095) -|---------------------------------------------------------------| -|J1 J2 LED1 LED2 GAL U10 U11 U12 U13 | -|TDA7240 TL084 AD1851 10MHz | -| |--------| 6116 | -| |ANALOG | 6116 | -| |DEVICES | 6116 | -| |ADSP2105| U33 U34 U35 U36 | -| |--------| | -|J3 | -|-| 71256 71256 71256 71256 | - | 71256 71256 71256 71256 MT4C4001 MT4C4001 | -|-| 71256 71256 71256 71256 MT4C4001 MT4C4001 | -| ULN2064B 71256 71256 71256 71256 MT4C4001 MT4C4001 | -| MT4C4001 MT4C4001 | -|J |----| MT4C4001 MT4C4001 | -|A |EPM | MT4C4001 MT4C4001 | -|M |7096| |------| MT4C4001 MT4C4001 | -|M |----| |R4600 | 49FCT805 MT4C4001 MT4C4001 | -|A |----| | | | -| |EPM | |------| 50MHz |----| |----| JP30| -|-| |7032| MAX705 |EPM | |EPM | | - | |x---| JP32 |7128| |7128| U98 | -|-|DSW1 DSW2 J6 |x---| |y---| | -| J7 J8 J9 S3 | -|---------------------|---------------|-------------------------| - | IDE44 | - | | <---- Conversion board to convert KI1 into KI2 - | EPM7032y | PCB Number: 5772-14668-01 - | | Used only with KI 2 software on KI 1 PCB - | IDE44 | - |-|-----------|-| - ||||||||||||| - ||||||||||||| - ||||||||||||| - ||||||||||||| - ||||||||||||| - ||||||||||||| - ||||||||||||| - ||||||||||||| - |-|||||||||||||-| - | |-----------| | - | | - | Seagate | - | ST9150AG | - | or | <---- Can be replaced with a IDE44>CF adapter or IDE44>SD adapter - | ST9420AG | if the factory boot ROM is replaced with the "ANY-IDE" boot ROM. - | | Note there are different "ANY-IDE" boot ROMs for KI and KI 2. - | 2.5" H/Drive | - | | - | | - |---------------| -Notes: - R4600 - Integrated Device Technology IDT79R4600-100MS R4600 CPU running at 100MHz, with heatsink (QFP208) - GAL - Lattice GAL20V8 labelled 'KI-U1 A-19802 (C)1994 Nintendo/Rare' (DIP24) - MT4C4001 - Micron Technology 1M x4-bit Fast Page Mode DRAM (SOJ28) - 71256 - Integrated Device Technology IDT71256SA20Y 32k x8-bit SRAM (SOJ28). Alternative: Mosel MS62256A-20RC 32k x8-bit SRAM (SOJ28) - 6116 - Integrated Device Technology IDT6116SA25SO 2k x8-bit SRAM (SOP24) - ADSP2105 - Analog Devices ADSP-2105KP-40. Clock input 10.000MHz (PLCC68) - 49FCT805 - Integrated Device Technology IDT49FCT805 Non-Inverting Buffer/Clock Driver with Two Independent Output Banks and Tri-State Control (SOIC20) - TDA7240 - ST Microelectronics TDA7240A 20W Mono Bridge Audio Amplifier IC (DIL4+3). Note the cabinet has two speakers but the generated sound is mono. - TL084 - Texas Instruments TL084 General Purpose J-FET Quad Operational Amplifier (DIP14) - AD1851 - Analog Devices AD1851 Monolithic PCM Audio DAC (DIP16) - ULN2064B - ST Microelectronics ULN2064B 50V 1.5A Quad Darlington Switch (DIP16) - MAX705 - Maxim MAX705 Microprocessor Supervisory Circuit / Reset Chip (DIP8) - J1 - 2 pin position for connector labelled 'LINE OUT' but not populated - J2 - 2 pin position for connector labelled 'AUX IN' but not populated - J3 - 10 pin connector for extra controls; coin interlock (pin 6), bill in (pin 5), volume minus (pin 2), volume plus (pin 3) - J6 - 44 pin connector for 2.5" IDE hard drive - J7 - 15 pin connector marked 'PLAYER 3' but used for player 1 'low' buttons (pins 7, 8, 9) and player 2 'low' buttons (pins 11, 12, 13) - Note the 3 'high' buttons for player 1 and player 2 are on the JAMMA connector. JAMMA pins 25 & 26 top and bottom have no connection. - J8 - 8 pin connector for coin 3 (pin 2) and coin 4 (pin 6). Probably used for Bill Acceptors etc. - J9 - Position for 40 pin IDE connector for 3.5" IDE hard drive, but not populated. Note the connector can be added and used with a - 3.5" IDE HDD but the power for the HDD must be provided separately. - JP30 - 3 pin jumper to configure Boot ROM. Set to 1-2. Settings are 1-2 = 4MBit (27C4001/27C040) or 2-3 = 8MBit (27C080) - JP32 - 2 pin jumper to disable Watch Dog (Hard-wired on the PCB shorted 1-2) - S3 - Reset push-button switch - LED1 - H/Drive Activity LED - LED2 - Sound Activity LED - H/Drive - 2.5" IDE Hard Drive with 44-pin connector. Note the model is checked by the program and the game will not run unless it finds - the correct model. There is a modified Boot ROM available that allows it to work with any model HDD or a cheap Chinese $2 CF>IDE44 - adapter. A cheap Chinese $5 SD>IDE44 adapter can also be used. - - For KI1, Seagate Marathon 2.5" IDE hard drive, model ST9150AG (131MB formatted capacity) - C/H/S = 419/13/47 = 131076608 bytes, labelled 'L1 KILLER INSTINCT DISK (C)1984 NINTENDO/RARE' - - For KI2, Seagate Marathon 2.5" IDE hard drive, model ST9420AG (420.8MB formatted capacity) - C/H/S = 988/16/52 = 420872192 bytes, labelled 'L2.1 KILLER INSTINCT 2 DISK (C)1985 NINTENDO/RARE' - EPM7096 - Altera EPM7096LC68-10 labelled 'KI-U92 A-19488 (C)1994 NINTENDO/RARE' (PLCC68) - EPM7128x - Altera MAX EPM7128ELC84-10 CPLD labelled 'KI-U103 A-19486 (C)1994 NINTENDO/RARE' (PLCC84) - EPM7128y - Altera MAX EPM7128ELC84-10 CPLD labelled 'KI-U104 A-19487 (C)1994 NINTENDO/RARE' (PLCC84) - EPM7032x - Altera EPM7032LC44-15T CPLD - - For KI labelled 'KI-U96 A-19489 (C)1994 NINTENDO/RARE' (PLCC44) - - For KI2 labelled 'K12-U96 A-20351 (C)1996 NINTENDO/RARE' (PLCC44). Note if the PCB has this chip it is a dedicated KI2 PCB. - If the software is replaced with KI 1 (boot ROM and HDD) the board will boot but immediately jumps to test mode and then freezes. - Also, the top title "Killer Instinct" flashes rapidly. If the sticker on U96 is missing (so can't be identified as a KI 2) and - someone has tried to make it run KI 1 and it has the above symptoms, it is likely a dedicated KI 2 PCB. - EPM7032y - Altera EPM7032LC44-15T CPLD labelled 'K12-U1 A-20383 (C)1996 NINTENDO/RARE' (PLCC44) - This IC is mounted on a small PCB (5772-14668-01) and connected between the IDE44 interface on the main board and the IDE44 Hard Drive. - It is used only with the KI2 conversion kit. This is mainly a protection device to stop game swaps on a KI 1 PCB. However if the - sub board is removed and all the EPROMs and HDD are changed, the main board will run Killer Instinct, providing U96 is the correct - chip for KI. If U96 is the type for KI2, then the main board will only run KI2 and can't be converted to KI. - HSync - 15.3846kHz - VSync - 58.9634Hz - - ROMs - ---- - - Killer Instinct: - U10 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U10 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U11 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U11 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U12 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U12 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U13 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U13 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U33 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U33 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U34 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U34 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U35 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U35 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U36 - ST 27C4001 EPROM labelled 'L1 KILLER INSTINCT U36 MUSIC/SPCH (C) 1994 Nintendo/Rare' (DIP32) - U98 - ST 27C4001 EPROM labelled 'L1.5D KILLER INSTINCT U98 ROM 1 (C) 1994 Nintendo/Rare' (DIP32) - Note earlier revisions exist, this is the last revision. - - Killer Instinct 2: - U10 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U10 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U11 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U11 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U12 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U12 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U13 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U13 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U33 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U33 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U34 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U34 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U35 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U35 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U36 - ST 27C4001 EPROM labelled 'L1.0 KILLER INSTINCT 2 U36 MUSIC/SPCH (C) 1995 Nintendo/Rare' (DIP32) - U98 - ST 27C4001 EPROM labelled 'L1.4 KILLER INSTINCT 2 U98 (C) 1995 Nintendo/Rare' (DIP32) - Note earlier revisions exist, this is the last revision. - - BOOT ROMs for IDE HDD to Compact Flash conversion - ------------------------------------------------- - Killer Instinct: - U98 - ST 27C4001 or 27C040 EPROM. File name = KI_L15DI.U98, CRC32 = 230F55FB - - Killer Instinct 2 Dedicated PCB (U96 labelled 'K12-U96 A-20351') - U98 - ST 27C4001 or 27C040 EPROM. File name = KI2_L14P.U98.BIN, CRC32 = D80C937A - - Killer Instinct 2 on Killer Instinct 1 PCB (U96 labelled 'KI-U96 A-19489') with KI 2 protection PCB 5772-14668-01 - U98 - ST 27C4001 or 27C040 EPROM. File name = KI2_D14P.U98, CRC32 = D716D428 - -***************************************************************************/ - -#include "emu.h" -#include "audio/dcs.h" - -#include "bus/ata/ataintf.h" -#include "bus/ata/idehd.h" -#include "cpu/adsp2100/adsp2100.h" -#include "cpu/mips/mips3.h" -#include "emupal.h" -#include "screen.h" - - -class kinst_state : public driver_device -{ -public: - kinst_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_rambase(*this, "rambase"), - m_rambase2(*this, "rambase2"), - m_control(*this, "control"), - m_rombase(*this, "rombase"), - m_maincpu(*this, "maincpu"), - m_ata(*this, "ata"), - m_dcs(*this, "dcs"), - m_palette(*this, "palette") - { - } - - void init_kinst(); - void init_kinst2(); - - void kinst(machine_config &config); - -protected: - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - -private: - required_shared_ptr<uint32_t> m_rambase; - required_shared_ptr<uint32_t> m_rambase2; - required_shared_ptr<uint32_t> m_control; - required_shared_ptr<uint32_t> m_rombase; - required_device<mips3_device> m_maincpu; - required_device<ata_interface_device> m_ata; - required_device<dcs_audio_2k_device> m_dcs; - required_device<palette_device> m_palette; - - uint32_t *m_video_base; - const uint8_t *m_control_map; - emu_timer *m_irq0_stop_timer; - - enum - { - TIMER_IRQ0_STOP - }; - - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(irq0_start); - DECLARE_READ32_MEMBER(control_r); - DECLARE_WRITE32_MEMBER(control_w); - DECLARE_READ32_MEMBER(ide_r); - DECLARE_WRITE32_MEMBER(ide_w); - DECLARE_READ32_MEMBER(ide_extra_r); - DECLARE_WRITE32_MEMBER(ide_extra_w); - - void main_map(address_map &map); -}; - - - -/* constants */ -#define MASTER_CLOCK XTAL(50'000'000) - - - -/************************************* - * - * Machine start - * - *************************************/ - -void kinst_state::machine_start() -{ - /* set the fastest DRC options */ - m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS); - - /* configure fast RAM regions */ - m_maincpu->add_fastram(0x08000000, 0x087fffff, false, m_rambase2); - m_maincpu->add_fastram(0x00000000, 0x0007ffff, false, m_rambase); - m_maincpu->add_fastram(0x1fc00000, 0x1fc7ffff, true, m_rombase); - - m_irq0_stop_timer = timer_alloc(TIMER_IRQ0_STOP); -} - - - -/************************************* - * - * Machine init - * - *************************************/ - -void kinst_state::machine_reset() -{ - ide_hdd_device *hdd = m_ata->subdevice<ata_slot_device>("0")->subdevice<ide_hdd_device>("hdd"); - uint16_t *identify_device = hdd->identify_device_buffer(); - - if (strncmp(machine().system().name, "kinst2", 6) != 0) - { - /* kinst: tweak the model number so we pass the check */ - identify_device[27] = ('S' << 8) | 'T'; - identify_device[28] = ('9' << 8) | '1'; - identify_device[29] = ('5' << 8) | '0'; - identify_device[30] = ('A' << 8) | 'G'; - identify_device[31] = (' ' << 8) | ' '; - } - else - { - /* kinst2: tweak the model number so we pass the check */ - identify_device[10] = ('0' << 8) | '0'; - identify_device[11] = ('S' << 8) | 'T'; - identify_device[12] = ('9' << 8) | '1'; - identify_device[13] = ('5' << 8) | '0'; - identify_device[14] = ('A' << 8) | 'G'; - } - - /* set a safe base location for video */ - m_video_base = &m_rambase[0x30000/4]; -} - - - -/************************************* - * - * Video refresh - * - *************************************/ - -uint32_t kinst_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - const pen_t *pen = m_palette->pens(); - - /* loop over rows and copy to the destination */ - for (int y = cliprect.min_y; y <= cliprect.max_y; y++) - { - uint32_t *src = &m_video_base[640/4 * y]; - uint32_t *dest = &bitmap.pix32(y, cliprect.min_x); - - /* loop over columns */ - for (int x = cliprect.min_x; x < cliprect.max_x; x += 2) - { - uint32_t data = *src++; - - /* store two pixels */ - *dest++ = pen[(data >> 0) & 0x7fff]; - *dest++ = pen[(data >> 16) & 0x7fff]; - } - } - return 0; -} - - - -/************************************* - * - * Interrupt handling - * - *************************************/ - -void kinst_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - switch (id) - { - case TIMER_IRQ0_STOP: - m_maincpu->set_input_line(0, CLEAR_LINE); - break; - default: - throw emu_fatalerror("Unknown id in kinst_state::device_timer"); - } -} - - -INTERRUPT_GEN_MEMBER(kinst_state::irq0_start) -{ - device.execute().set_input_line(0, ASSERT_LINE); - m_irq0_stop_timer->adjust(attotime::from_usec(50)); -} - - -/************************************* - * - * IDE controller access - * - *************************************/ - -READ32_MEMBER(kinst_state::ide_r) -{ - return m_ata->read_cs0(offset / 2, mem_mask); -} - - -WRITE32_MEMBER(kinst_state::ide_w) -{ - m_ata->write_cs0(offset / 2, data, mem_mask); -} - - -READ32_MEMBER(kinst_state::ide_extra_r) -{ - return m_ata->read_cs1(6, 0xff); -} - - -WRITE32_MEMBER(kinst_state::ide_extra_w) -{ - m_ata->write_cs1(6, data, 0xff); -} - - - -/************************************* - * - * Control handling - * - *************************************/ - -READ32_MEMBER(kinst_state::control_r) -{ - uint32_t result; - static const char *const portnames[] = { "P1", "P2", "VOLUME", "UNUSED", "DSW" }; - - /* apply shuffling */ - offset = m_control_map[offset / 2]; - result = m_control[offset]; - - switch (offset) - { - case 2: /* $90 -- sound return */ - result = ioport(portnames[offset])->read(); - result &= ~0x0002; - if (m_dcs->control_r() & 0x800) - result |= 0x0002; - break; - - case 0: /* $80 */ - case 1: /* $88 */ - case 3: /* $98 */ - result = ioport(portnames[offset])->read(); - break; - - case 4: /* $a0 */ - result = ioport(portnames[offset])->read(); - if (m_maincpu->pc() == 0x802d428) - m_maincpu->spin_until_interrupt(); - break; - } - - return result; -} - - -WRITE32_MEMBER(kinst_state::control_w) -{ - /* apply shuffling */ - offset = m_control_map[offset / 2]; - uint32_t olddata = m_control[offset]; - COMBINE_DATA(&m_control[offset]); - - switch (offset) - { - case 0: /* $80 - VRAM buffer control */ - if (data & 4) - m_video_base = &m_rambase[0x58000/4]; - else - m_video_base = &m_rambase[0x30000/4]; - break; - - case 1: /* $88 - sound reset */ - m_dcs->reset_w(~data & 0x01); - break; - - case 2: /* $90 - sound control */ - if (!(olddata & 0x02) && (m_control[offset] & 0x02)) - m_dcs->data_w(m_control[3]); - break; - - case 3: /* $98 - sound data */ - break; - } -} - - - -/************************************* - * - * Main CPU memory handlers - * - *************************************/ - -void kinst_state::main_map(address_map &map) -{ - map.unmap_value_high(); - map(0x00000000, 0x0007ffff).ram().share("rambase"); - map(0x08000000, 0x087fffff).ram().share("rambase2"); - map(0x10000080, 0x100000ff).rw(FUNC(kinst_state::control_r), FUNC(kinst_state::control_w)).share("control"); - map(0x10000100, 0x1000013f).rw(FUNC(kinst_state::ide_r), FUNC(kinst_state::ide_w)); - map(0x10000170, 0x10000173).rw(FUNC(kinst_state::ide_extra_r), FUNC(kinst_state::ide_extra_w)); - map(0x1fc00000, 0x1fc7ffff).rom().region("user1", 0).share("rombase"); -} - - - - -/************************************* - * - * Port definitions - * - *************************************/ - -static INPUT_PORTS_START( kinst ) - PORT_START("P1") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 High Attack - Quick") - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 High Attack - Medium") - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 High Attack - Fierce") - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Low Attack - Quick") - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("P1 Low Attack - Medium") - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("P1 Low Attack - Fierce") - PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) - PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) - PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) - PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) - PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_SERVICE_NO_TOGGLE( 0x00001000, IP_ACTIVE_LOW ) - PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_COIN3 ) - PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_COIN4 ) - PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_CUSTOM ) /* door */ - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("P2") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 High Attack - Quick") - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 High Attack - Medium") - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 High Attack - Fierce") - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Low Attack - Quick") - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Low Attack - Medium") - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Low Attack - Fierce") - PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) - PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x00001000, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BILL1 ) /* bill */ - PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_CUSTOM ) /* coin door */ - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("VOLUME") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_CUSTOM ) /* sound status */ - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_VOLUME_UP ) - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) - PORT_BIT( 0x0000fff0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("UNUSED") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED ) /* verify */ - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("DSW") - PORT_DIPNAME( 0x00000003, 0x00000003, "Blood Level" ) - PORT_DIPSETTING( 0x00000003, DEF_STR( High )) - PORT_DIPSETTING( 0x00000002, DEF_STR( Medium )) - PORT_DIPSETTING( 0x00000001, DEF_STR( Low )) - PORT_DIPSETTING( 0x00000000, DEF_STR( None )) - PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Demo_Sounds )) - PORT_DIPSETTING( 0x00000000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000004, DEF_STR( On )) - PORT_DIPNAME( 0x00000008, 0x00000008, "Finishing Moves" ) - PORT_DIPSETTING( 0x00000000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000008, DEF_STR( On )) - PORT_DIPNAME( 0x00000010, 0x00000010, "Display Warning" ) - PORT_DIPSETTING( 0x00000000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000010, DEF_STR( On )) - PORT_DIPNAME( 0x00000020, 0x00000020, "Blood" ) - PORT_DIPSETTING( 0x00000020, "Red" ) - PORT_DIPSETTING( 0x00000000, "White" ) - PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unused )) - PORT_DIPSETTING( 0x00000040, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000000, DEF_STR( On )) - PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unused )) - PORT_DIPSETTING( 0x00000080, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000000, DEF_STR( On )) - PORT_DIPNAME( 0x00000100, 0x00000100, "Coinage Source" ) - PORT_DIPSETTING( 0x00000100, "Dipswitch" ) - PORT_DIPSETTING( 0x00000000, "Disk" ) - PORT_DIPNAME( 0x00003e00, 0x00003e00, DEF_STR( Coinage )) - PORT_DIPSETTING( 0x00003e00, "USA-1" ) - PORT_DIPSETTING( 0x00003c00, "USA-2" ) - PORT_DIPSETTING( 0x00003a00, "USA-3" ) - PORT_DIPSETTING( 0x00003800, "USA-4" ) - PORT_DIPSETTING( 0x00003400, "USA-9" ) - PORT_DIPSETTING( 0x00003200, "USA-10" ) - PORT_DIPSETTING( 0x00003600, "USA-ECA" ) - PORT_DIPSETTING( 0x00003000, "USA-Free Play" ) - PORT_DIPSETTING( 0x00002e00, "German-1" ) - PORT_DIPSETTING( 0x00002c00, "German-2" ) - PORT_DIPSETTING( 0x00002a00, "German-3" ) - PORT_DIPSETTING( 0x00002800, "German-4" ) - PORT_DIPSETTING( 0x00002600, "German-ECA" ) - PORT_DIPSETTING( 0x00002000, "German-Free Play" ) - PORT_DIPSETTING( 0x00001e00, "French-1" ) - PORT_DIPSETTING( 0x00001c00, "French-2" ) - PORT_DIPSETTING( 0x00001a00, "French-3" ) - PORT_DIPSETTING( 0x00001800, "French-4" ) - PORT_DIPSETTING( 0x00001600, "French-ECA" ) - PORT_DIPSETTING( 0x00001000, "French-Free Play" ) - PORT_DIPNAME( 0x00004000, 0x00004000, "Coin Counters" ) - PORT_DIPSETTING( 0x00004000, "1" ) - PORT_DIPSETTING( 0x00000000, "2" ) - PORT_DIPNAME( 0x00008000, 0x00008000, "Test Switch" ) - PORT_DIPSETTING( 0x00008000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000000, DEF_STR( On )) - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) -INPUT_PORTS_END - - -static INPUT_PORTS_START( kinst2 ) - PORT_START("P1") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 High Attack - Quick") - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 High Attack - Medium") - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 High Attack - Fierce") - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Low Attack - Quick") - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("P1 Low Attack - Medium") - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("P1 Low Attack - Fierce") - PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) - PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) - PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) - PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) - PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_SERVICE_NO_TOGGLE( 0x00001000, IP_ACTIVE_LOW ) - PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_COIN3 ) - PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_COIN4 ) - PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_CUSTOM ) /* door */ - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("P2") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 High Attack - Quick") - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 High Attack - Medium") - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 High Attack - Fierce") - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Low Attack - Quick") - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Low Attack - Medium") - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Low Attack - Fierce") - PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) - PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x00001000, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BILL1 ) /* bill */ - PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_CUSTOM ) /* coin door */ - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("VOLUME") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_CUSTOM ) /* sound status */ - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_VOLUME_UP ) - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) - PORT_BIT( 0x0000fff0, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("UNUSED") - PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED ) /* verify */ - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("DSW") - PORT_DIPNAME( 0x00000003, 0x00000003, "Blood Level" ) - PORT_DIPSETTING( 0x00000003, DEF_STR( High )) - PORT_DIPSETTING( 0x00000002, DEF_STR( Medium )) - PORT_DIPSETTING( 0x00000001, DEF_STR( Low )) - PORT_DIPSETTING( 0x00000000, DEF_STR( None )) - PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Demo_Sounds )) - PORT_DIPSETTING( 0x00000000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000004, DEF_STR( On )) - PORT_DIPNAME( 0x00000008, 0x00000008, "Finishing Moves" ) - PORT_DIPSETTING( 0x00000000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000008, DEF_STR( On )) - PORT_DIPNAME( 0x00000010, 0x00000010, "Display Warning" ) - PORT_DIPSETTING( 0x00000000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000010, DEF_STR( On )) - PORT_DIPNAME( 0x00000020, 0x00000020, DEF_STR( Unused )) - PORT_DIPSETTING( 0x00000020, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000000, DEF_STR( On )) - PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unused )) - PORT_DIPSETTING( 0x00000040, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000000, DEF_STR( On )) - PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unused )) - PORT_DIPSETTING( 0x00000080, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000000, DEF_STR( On )) - PORT_DIPNAME( 0x00000100, 0x00000100, "Coinage Source" ) - PORT_DIPSETTING( 0x00000100, "Dipswitch" ) - PORT_DIPSETTING( 0x00000000, "Disk" ) - PORT_DIPNAME( 0x00003e00, 0x00003e00, DEF_STR( Coinage )) - PORT_DIPSETTING( 0x00003e00, "USA-1" ) - PORT_DIPSETTING( 0x00003c00, "USA-2" ) - PORT_DIPSETTING( 0x00003a00, "USA-3" ) - PORT_DIPSETTING( 0x00003800, "USA-4" ) - PORT_DIPSETTING( 0x00003400, "USA-9" ) - PORT_DIPSETTING( 0x00003200, "USA-10" ) - PORT_DIPSETTING( 0x00003600, "USA-ECA" ) - PORT_DIPSETTING( 0x00003000, "USA-Free Play" ) - PORT_DIPSETTING( 0x00002e00, "German-1" ) - PORT_DIPSETTING( 0x00002c00, "German-2" ) - PORT_DIPSETTING( 0x00002a00, "German-3" ) - PORT_DIPSETTING( 0x00002800, "German-4" ) - PORT_DIPSETTING( 0x00002600, "German-ECA" ) - PORT_DIPSETTING( 0x00002000, "German-Free Play" ) - PORT_DIPSETTING( 0x00001e00, "French-1" ) - PORT_DIPSETTING( 0x00001c00, "French-2" ) - PORT_DIPSETTING( 0x00001a00, "French-3" ) - PORT_DIPSETTING( 0x00001800, "French-4" ) - PORT_DIPSETTING( 0x00001600, "French-ECA" ) - PORT_DIPSETTING( 0x00001000, "French-Free Play" ) - PORT_DIPNAME( 0x00004000, 0x00004000, "Coin Counters" ) - PORT_DIPSETTING( 0x00004000, "1" ) - PORT_DIPSETTING( 0x00000000, "2" ) - PORT_DIPNAME( 0x00008000, 0x00008000, "Test Switch" ) - PORT_DIPSETTING( 0x00008000, DEF_STR( Off )) - PORT_DIPSETTING( 0x00000000, DEF_STR( On )) - PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) -INPUT_PORTS_END - - - - -/************************************* - * - * Machine driver - * - *************************************/ - -void kinst_state::kinst(machine_config &config) -{ - /* basic machine hardware */ - R4600LE(config, m_maincpu, MASTER_CLOCK*2); - m_maincpu->set_icache_size(16384); - m_maincpu->set_dcache_size(16384); - m_maincpu->set_addrmap(AS_PROGRAM, &kinst_state::main_map); - m_maincpu->set_vblank_int("screen", FUNC(kinst_state::irq0_start)); - - ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true); - m_ata->irq_handler().set_inputline("maincpu", 1); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_size(320, 240); - screen.set_visarea(0, 319, 0, 239); - screen.set_screen_update(FUNC(kinst_state::screen_update)); - - PALETTE(config, m_palette, palette_device::BGR_555); - - /* sound hardware */ - DCS_AUDIO_2K(config, m_dcs, 0); -} - - - -/************************************* - * - * ROM definition(s) - * - *************************************/ - -ROM_START( kinst ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ - ROM_DEFAULT_BIOS("v1.5d") - ROM_SYSTEM_BIOS(0, "v1.5d", "Killer Instinct (v1.5d)") - ROMX_LOAD( "ki-l15d.u98", 0x00000, 0x80000, CRC(7b65ca3d) SHA1(607394d4ba1713f38c2cb5159303cace9cde991e), ROM_BIOS(0) ) - ROM_SYSTEM_BIOS(1, "v1.4", "Killer Instinct (v1.4)") - ROMX_LOAD( "ki-l14.u98", 0x00000, 0x80000, CRC(afedb75f) SHA1(07254f20707377f7195e64675eb6458e663c1a9a), ROM_BIOS(1) ) - ROM_SYSTEM_BIOS(2, "v1.3", "Killer Instinct (v1.3)") - ROMX_LOAD( "ki-l13.u98", 0x00000, 0x80000, CRC(65f7ea31) SHA1(7f21620a512549db6821a0b4fa53681a767b7974), ROM_BIOS(2) ) - ROM_SYSTEM_BIOS(3, "proto-v4.7", "Killer Instinct (proto v4.7)") - ROMX_LOAD( "ki-p47.u98", 0x00000, 0x80000, CRC(05e67bcb) SHA1(501e69b3026394f69229a6e9866c1037502b86bb), ROM_BIOS(3) ) - ROM_SYSTEM_BIOS(4, "v1.5d-anyide", "Killer Instinct (v1.5d AnyIDE)") // unofficial version, allows use of alternate hard drives or CF cards - ROMX_LOAD( "ki_l15di.u98", 0x00000, 0x80000, CRC(230f55fb) SHA1(f5f12311aae922d12f98d72ac8fdd77b7b084af2), ROM_BIOS(4) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "u10-l1", 0x000000, 0x80000, CRC(b6cc155f) SHA1(810d455df8f385d76143e9d7d048f2b555ff8bf0) ) - ROM_LOAD16_BYTE( "u11-l1", 0x200000, 0x80000, CRC(0b5e05df) SHA1(0595909cb667c38ac7c8c7bd0646b28899e27777) ) - ROM_LOAD16_BYTE( "u12-l1", 0x400000, 0x80000, CRC(d05ce6ad) SHA1(7a8ee405c118fd176b66353fa7bfab888cc63cd2) ) - ROM_LOAD16_BYTE( "u13-l1", 0x600000, 0x80000, CRC(7d0954ea) SHA1(ea4d1f153eb284f1bcfc5295fbce316bba6083f4) ) - ROM_LOAD16_BYTE( "u33-l1", 0x800000, 0x80000, CRC(8bbe4f0c) SHA1(b22e365bc8d58a80eaac226be14b4bb8d9a04844) ) - ROM_LOAD16_BYTE( "u34-l1", 0xa00000, 0x80000, CRC(b2e73603) SHA1(ee439f5162a2b3379d3f802328017bb3c68547d2) ) - ROM_LOAD16_BYTE( "u35-l1", 0xc00000, 0x80000, CRC(0aaef4fc) SHA1(48c4c954ac9db648f28ad64f9845e19ec432eec3) ) - ROM_LOAD16_BYTE( "u36-l1", 0xe00000, 0x80000, CRC(0577bb60) SHA1(cc78070cc41701e9a91fde5cfbdc7e1e83354854) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst", 0, SHA1(81d833236e994528d1482979261401b198d1ca53) ) -ROM_END - - -ROM_START( kinst2 ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ - ROM_DEFAULT_BIOS("v1.4") - ROM_SYSTEM_BIOS(0, "v1.4", "Killer Instinct 2 (v1.4)") - ROMX_LOAD( "ki2-l14.u98", 0x00000, 0x80000, CRC(27d0285e) SHA1(aa7a2a9d72a47dd0ea2ee7b2776b79288060b179), ROM_BIOS(0) ) - ROM_SYSTEM_BIOS(1, "v1.3", "Killer Instinct 2 (v1.3)") - ROMX_LOAD( "ki2-l13.u98", 0x00000, 0x80000, CRC(25ebde3b) SHA1(771d150fb4de0a2ceb279954b9545458e93e2405), ROM_BIOS(1) ) - ROM_SYSTEM_BIOS(2, "v1.1", "Killer Instinct 2 (v1.1)") - ROMX_LOAD( "ki2-l11.u98", 0x00000, 0x80000, CRC(0cb8de1e) SHA1(fe447f4b1d29b524f57c5ba1890652ef6afff88a), ROM_BIOS(2) ) - ROM_SYSTEM_BIOS(3, "v1.0", "Killer Instinct 2 (v1.0)") - ROMX_LOAD( "ki2-l10.u98", 0x00000, 0x80000, CRC(b17b4b3d) SHA1(756629cd1b51ae50f2b9818765dd3d277c3019b3), ROM_BIOS(3) ) - ROM_SYSTEM_BIOS(4, "v1.4-anyide", "Killer Instinct 2 (v1.4 AnyIDE)") - ROMX_LOAD( "ki2_l14p.u98", 0x00000, 0x80000, CRC(d80c937a) SHA1(85a009638f2eada4c63240fc30a9e7be59afab7f), ROM_BIOS(4) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) - ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) - ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) - ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) - ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) - ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) -ROM_END - - -ROM_START( kinst2uk ) - ROM_REGION32_LE( 0x80000, "user1", 0 ) /* 512k for R4600 code */ - ROM_DEFAULT_BIOS("v1.4k") - ROM_SYSTEM_BIOS(0, "v1.4k", "Killer Instinct 2 (v1.4k, upgrade kit)") - ROMX_LOAD( "ki2-l14k.u98", 0x00000, 0x80000, CRC(9cbd00a8) SHA1(926dce4bb9016331ea40d3c337a9ace896f07493), ROM_BIOS(0) ) - ROM_SYSTEM_BIOS(1, "v1.3k", "Killer Instinct 2 (v1.3k, upgrade kit)") - ROMX_LOAD( "ki2-l13k.u98", 0x00000, 0x80000, CRC(3b4f16fc) SHA1(c28416f94453fd1f73ba01025276a04610569d12), ROM_BIOS(1) ) - ROM_SYSTEM_BIOS(2, "v1.4-anyide", "Killer Instinct 2 (v1.4k, upgrade kit AnyIDE)") - ROMX_LOAD( "ki2_d14p.u98", 0x00000, 0x80000, CRC(d716d428) SHA1(1a3b000fdc35b3824a0c8142ba9b496490894543), ROM_BIOS(2) ) - - ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF ) /* sound data */ - ROM_LOAD16_BYTE( "ki2_l1.u10", 0x000000, 0x80000, CRC(fdf6ed51) SHA1(acfc9460cd5df01403b7f00b2f68c2a8734ad6d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u11", 0x200000, 0x80000, CRC(f9e70024) SHA1(fe7fc78f1c60b15f2bbdc4c455f55cdf30f48ed4) ) - ROM_LOAD16_BYTE( "ki2_l1.u12", 0x400000, 0x80000, CRC(2994c199) SHA1(9997a83432cb720f65b40a8af46f31a5d0d16d8e) ) - ROM_LOAD16_BYTE( "ki2_l1.u13", 0x600000, 0x80000, CRC(3fe6327b) SHA1(7ff164fc2f079d039921594be92208973d43aa03) ) - ROM_LOAD16_BYTE( "ki2_l1.u33", 0x800000, 0x80000, CRC(6f4dcdcf) SHA1(0ab6dbfb76e9fa2db072e287864ad1f9d514dd9b) ) - ROM_LOAD16_BYTE( "ki2_l1.u34", 0xa00000, 0x80000, CRC(5db48206) SHA1(48456a7b6592c40bc9c664dcd2ee2cfd91942811) ) - ROM_LOAD16_BYTE( "ki2_l1.u35", 0xc00000, 0x80000, CRC(7245ce69) SHA1(24a3ff009c8a7f5a0bfcb198b8dcb5df365770d3) ) - ROM_LOAD16_BYTE( "ki2_l1.u36", 0xe00000, 0x80000, CRC(8920acbb) SHA1(0fca72c40067034939b984b4bf32972a5a6c26af) ) - - DISK_REGION( "ata:0:hdd:image" ) - DISK_IMAGE( "kinst2", 0, SHA1(e7c9291b4648eae0012ea0cc230731ed4987d1d5) ) -ROM_END - -/************************************* - * - * Driver initialization - * - *************************************/ - -void kinst_state::init_kinst() -{ - static const uint8_t kinst_control_map[8] = { 0,1,2,3,4,5,6,7 }; - - /* set up the control register mapping */ - m_control_map = kinst_control_map; -} - - -void kinst_state::init_kinst2() -{ - static const uint8_t kinst2_control_map[8] = { 2,4,1,0,3,5,6,7 }; - - // read: $80 on ki2 = $90 on ki - // read: $88 on ki2 = $a0 on ki - // write: $80 on ki2 = $90 on ki - // write: $90 on ki2 = $88 on ki - // write: $98 on ki2 = $80 on ki - // write: $a0 on ki2 = $98 on ki - - /* set up the control register mapping */ - m_control_map = kinst2_control_map; -} - - - -/************************************* - * - * Game driver(s) - * - *************************************/ - - // versions selectable by changing bioses - -GAME( 1994, kinst, 0, kinst, kinst, kinst_state, init_kinst, ROT0, "Rare", "Killer Instinct", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, kinst2, 0, kinst, kinst2, kinst_state, init_kinst2, ROT0, "Rare", "Killer Instinct 2", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, kinst2uk, kinst2, kinst, kinst2, kinst_state, init_kinst2, ROT0, "Rare", "Killer Instinct 2 (Upgrade kit)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) |