From 194fc276a4fd0cbcec42b3e6f100b73421bae8f8 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 7 Sep 2021 17:00:39 +0200 Subject: kinst: do some driver cleanups --- src/mame/drivers/kinst.cpp | 355 ++++++++++++++------------------------------- 1 file changed, 112 insertions(+), 243 deletions(-) diff --git a/src/mame/drivers/kinst.cpp b/src/mame/drivers/kinst.cpp index 22da24f134b..b48418ac643 100644 --- a/src/mame/drivers/kinst.cpp +++ b/src/mame/drivers/kinst.cpp @@ -202,9 +202,7 @@ public: m_palette(*this, "palette"), m_rambase(*this, "rambase"), m_rambase2(*this, "rambase2"), - m_control(*this, "control"), - m_rombase(*this, "user1"), - m_ports(*this, { "P1", "P2", "VOLUME", "UNUSED", "DSW" }) + m_rombase(*this, "user1") { } @@ -212,13 +210,11 @@ public: void init_kinst2(); void kinst(machine_config &config); + void kinst2(machine_config &config); -protected: - enum - { - TIMER_IRQ0_STOP - }; + DECLARE_CUSTOM_INPUT_MEMBER(sound_status_r) { return BIT(m_dcs->control_r(), 11); } +protected: required_device m_maincpu; required_device m_ata; required_device m_dcs; @@ -226,9 +222,9 @@ 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; void kinst_map(address_map &map); + void kinst2_map(address_map &map); uint32_t ide_r(offs_t offset, uint32_t mem_mask = ~0); void ide_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); @@ -236,20 +232,27 @@ protected: private: required_shared_ptr m_rambase; required_shared_ptr m_rambase2; - required_shared_ptr m_control; required_region_ptr m_rombase; - required_ioport_array<5> m_ports; - - uint32_t *m_video_base; - const uint8_t *m_control_map; - emu_timer *m_irq0_stop_timer; uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(irq0_start); - uint32_t control_r(offs_t offset); - void control_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); uint32_t ide_extra_r(); void ide_extra_w(uint32_t data); + + void vram_control_w(offs_t offset, uint32_t data, uint32_t mem_mask); + void sound_reset_w(offs_t offset, uint32_t data, uint32_t mem_mask); + void sound_control_w(offs_t offset, uint32_t data, uint32_t mem_mask); + void sound_data_w(offs_t offset, uint32_t data, uint32_t mem_mask); + void coin_control_w(offs_t offset, uint32_t data, uint32_t mem_mask); + + uint32_t m_hdd_serial_offset; + uint32_t *m_video_base; + + uint32_t m_vram_control = 0; + uint32_t m_sound_reset = 0; + uint32_t m_sound_control = 0; + uint32_t m_sound_data = 0; + uint32_t m_coin_control = 0; }; @@ -262,7 +265,6 @@ public: protected: virtual void machine_start() override; - virtual void machine_reset() override; void kinst2uk_map(address_map &map); @@ -270,10 +272,10 @@ protected: void cpld_w(offs_t offset, uint32_t data, uint32_t mem_mask); private: - uint8_t m_prot_sel; - uint8_t m_prot_cnt; - uint8_t m_prot_rega; - uint8_t m_prot_regb; + uint8_t m_prot_sel = 0; + uint8_t m_prot_cnt = 0; + uint8_t m_prot_rega = 0; + uint8_t m_prot_regb = 0; }; @@ -294,7 +296,12 @@ void kinst_state::machine_start() 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); + // register for savestates + save_item(NAME(m_vram_control)); + save_item(NAME(m_sound_reset)); + save_item(NAME(m_sound_control)); + save_item(NAME(m_sound_data)); + save_item(NAME(m_coin_control)); } @@ -302,6 +309,7 @@ void kinst2uk_state::machine_start() { kinst_state::machine_start(); + // register for savestates save_item(NAME(m_prot_sel)); save_item(NAME(m_prot_cnt)); save_item(NAME(m_prot_rega)); @@ -321,38 +329,19 @@ void kinst_state::machine_reset() ide_hdd_device *hdd = m_ata->subdevice("0")->subdevice("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'; - } + // insert harddisk model number so we pass the check + for (int i = 10; i < 20; i++) + identify_device[i] = ('0' << 8) | '0'; + for (int i = 27; i < 47; i++) + identify_device[i] = (' ' << 8) | ' '; - /* set a safe base location for video */ - m_video_base = &m_rambase[0x30000/4]; -} + static const char serial[9] = "ST9150AG"; + for (int i = 0; i < 4; i++) + identify_device[m_hdd_serial_offset + i] = serial[i * 2] << 8 | serial[i * 2 + 1]; -void kinst2uk_state::machine_reset() -{ - kinst_state::machine_reset(); - - m_prot_sel = 0; - m_prot_cnt = 0; - m_prot_rega = 0; - m_prot_regb = 0; + // set a safe base location for video + m_video_base = &m_rambase[0x30000/4]; } @@ -394,23 +383,9 @@ uint32_t kinst_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, * *************************************/ -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)); + m_maincpu->pulse_input_line(0, attotime::from_usec(50)); } @@ -494,68 +469,43 @@ void kinst2uk_state::cpld_w(offs_t offset, uint32_t data, uint32_t mem_mask) * *************************************/ -uint32_t kinst_state::control_r(offs_t offset) +void kinst_state::vram_control_w(offs_t offset, uint32_t data, uint32_t mem_mask) { - uint32_t result; + COMBINE_DATA(&m_vram_control); + if (m_vram_control & 4) + m_video_base = &m_rambase[0x58000/4]; + else + m_video_base = &m_rambase[0x30000/4]; +} - // apply shuffling - offset = m_control_map[offset / 2]; - result = m_control[offset]; - switch (offset) - { - case 2: // $90 -- sound return - result = m_ports[offset]->read(); - result &= ~0x0002; - if (m_dcs->control_r() & 0x800) - result |= 0x0002; - break; - - case 0: // $80 - case 1: // $88 - case 3: // $98 - result = m_ports[offset]->read(); - break; - - case 4: // $a0 - result = m_ports[offset]->read(); - if (m_maincpu->pc() == 0x802d428) - m_maincpu->spin_until_interrupt(); - break; - } - - return result; +void kinst_state::sound_reset_w(offs_t offset, uint32_t data, uint32_t mem_mask) +{ + COMBINE_DATA(&m_sound_reset); + m_dcs->reset_w(m_sound_reset & 0x01); } -void kinst_state::control_w(offs_t offset, uint32_t data, uint32_t mem_mask) +void kinst_state::sound_control_w(offs_t offset, uint32_t data, uint32_t mem_mask) { - // apply shuffling - offset = m_control_map[offset / 2]; - uint32_t olddata = m_control[offset]; - COMBINE_DATA(&m_control[offset]); + uint32_t prev = m_sound_control; + COMBINE_DATA(&m_sound_control); - 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; + if (!(prev & 0x02) && (m_sound_control & 0x02)) + m_dcs->data_w(m_sound_data); +} - 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; +void kinst_state::sound_data_w(offs_t offset, uint32_t data, uint32_t mem_mask) +{ + COMBINE_DATA(&m_sound_data); +} - case 3: // $98 - sound data - break; - } + +void kinst_state::coin_control_w(offs_t offset, uint32_t data, uint32_t mem_mask) +{ + COMBINE_DATA(&m_coin_control); + // d0: coincounter? (only on coin slot 1,2) } @@ -571,13 +521,35 @@ void kinst_state::kinst_map(address_map &map) map.unmap_value_high(); map(0x00000000, 0x0007ffff).ram().share(m_rambase); map(0x08000000, 0x087fffff).ram().share(m_rambase2); - map(0x10000080, 0x100000ff).rw(FUNC(kinst_state::control_r), FUNC(kinst_state::control_w)).share("control"); + + map(0x10000080, 0x10000083).portr("P1").w(FUNC(kinst_state::vram_control_w)); + map(0x10000088, 0x1000008b).portr("P2").w(FUNC(kinst_state::sound_reset_w)); + map(0x10000090, 0x10000093).portr("VOLUME").w(FUNC(kinst_state::sound_control_w)); + map(0x10000098, 0x1000009b).portr("UNUSED").w(FUNC(kinst_state::sound_data_w)); + map(0x100000a0, 0x100000a3).portr("DSW").nopw(); + map(0x100000b0, 0x100000b3).w(FUNC(kinst_state::coin_control_w)); + 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); } +void kinst_state::kinst2_map(address_map &map) +{ + kinst_map(map); + + // control mapping is shuffled around + map(0x10000080, 0x10000083).portr("VOLUME").w(FUNC(kinst_state::sound_control_w)); + map(0x10000088, 0x1000008b).portr("DSW").nopw(); + map(0x10000090, 0x10000093).portr("P2").w(FUNC(kinst_state::sound_reset_w)); + map(0x10000098, 0x1000009b).portr("P1").w(FUNC(kinst_state::vram_control_w)); + map(0x100000a0, 0x100000a3).portr("UNUSED").w(FUNC(kinst_state::sound_data_w)); + map(0x100000b0, 0x100000b3).nopw(); + map(0x100000b8, 0x100000bb).w(FUNC(kinst_state::coin_control_w)); +} + + void kinst2uk_state::kinst2uk_map(address_map &map) { kinst_map(map); @@ -610,7 +582,7 @@ static INPUT_PORTS_START( kinst ) 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( 0x00008000, IP_ACTIVE_LOW, IPT_CUSTOM ) // door PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("P2") @@ -628,20 +600,20 @@ static INPUT_PORTS_START( kinst ) 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( 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( 0x00000002, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(kinst_state, sound_status_r) 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( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED ) // verify PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("DSW") @@ -703,111 +675,12 @@ 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_INCLUDE( kinst ) - 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_MODIFY("DSW") 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 @@ -847,6 +720,15 @@ void kinst_state::kinst(machine_config &config) } +void kinst_state::kinst2(machine_config &config) +{ + kinst(config); + + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &kinst_state::kinst2_map); +} + + void kinst2uk_state::kinst2uk(machine_config &config) { kinst(config); @@ -955,26 +837,13 @@ ROM_END 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; + m_hdd_serial_offset = 27; } 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; + m_hdd_serial_offset = 11; } } // anonymous namespace @@ -987,8 +856,8 @@ void kinst_state::init_kinst2() * *************************************/ - // versions selectable by changing bioses +// 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, kinst2uk, kinst2, kinst2uk_state, init_kinst, ROT0, "Rare", "Killer Instinct 2 (Upgrade kit)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, kinst2, 0, kinst2, kinst2, kinst_state, init_kinst2, ROT0, "Rare", "Killer Instinct 2", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, kinst2uk, kinst2, kinst2uk, kinst2, kinst2uk_state, init_kinst2, ROT0, "Rare", "Killer Instinct 2 (upgrade kit)", MACHINE_SUPPORTS_SAVE ) -- cgit v1.2.3