diff --git a/src/mame/drivers/qdrmfgp.cpp b/src/mame/drivers/qdrmfgp.cpp index 6c3c29a22be..87120385a8e 100644 --- a/src/mame/drivers/qdrmfgp.cpp +++ b/src/mame/drivers/qdrmfgp.cpp @@ -11,10 +11,6 @@ OSC :18.43200MHz/32.00000MHz Other(GQ460):Konami 053252,054156,056832,054539 Other(GE557):Konami 056832,058141,058143 -TODO: -- qdrmfgp2 requires an interrupt hack following an IDE READ_MULTIPLE - command - -- driver by Hau @@ -34,9 +30,6 @@ GP1 HDD data contents: #include "speaker.h" -#define IDE_HACK 1 - - /************************************* * * 68k CPU memory handlers @@ -204,29 +197,6 @@ WRITE16_MEMBER(qdrmfgp_state::sndram_w) } } -/*************/ - - -READ16_MEMBER(qdrmfgp_state::gp2_ide_std_r) -{ - if (offset == 0x07) - { - switch (m_maincpu->pcbase()) - { - case 0xdb4c: - if ((m_workram[0x5fa4/2] - m_maincpu->state_int(M68K_D0)) <= 0x10) - m_gp2_irq_control = 1; - break; - - case 0xdec2: - m_gp2_irq_control = 1; - default: - break; - } - } - return m_ata->read_cs0(offset, mem_mask); -} - /************************************* * @@ -268,30 +238,9 @@ INTERRUPT_GEN_MEMBER(qdrmfgp_state::qdrmfgp2_interrupt) WRITE_LINE_MEMBER(qdrmfgp_state::gp2_ide_interrupt) { -#if IDE_HACK - if (m_control & 0x0010) - { - if (state != CLEAR_LINE) - { - if (m_gp2_irq_control) - { - m_gp2_irq_control = 0; - } - else - { - m_maincpu->set_input_line(M68K_IRQ_5, ASSERT_LINE); - } - } - else - { - m_maincpu->set_input_line(5, CLEAR_LINE); - } - } -#else if (m_control & 0x0010) if (state != CLEAR_LINE) m_maincpu->set_input_line(M68K_IRQ_5, ASSERT_LINE); -#endif } @@ -341,11 +290,7 @@ ADDRESS_MAP_START(qdrmfgp_state::qdrmfgp2_map) AM_RANGE(0x880000, 0x881fff) AM_READWRITE(gp2_vram_r, gp2_vram_w) /* vram */ AM_RANGE(0x89f000, 0x8a0fff) AM_READWRITE(gp2_vram_mirror_r, gp2_vram_mirror_w) /* vram (mirror) */ AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */ -#if IDE_HACK - AM_RANGE(0xa00000, 0xa0000f) AM_READ(gp2_ide_std_r) AM_DEVWRITE("ata", ata_interface_device, write_cs0) /* IDE control regs */ -#else AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0) /* IDE control regs */ -#endif AM_RANGE(0xa40000, 0xa4000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs1, write_cs1) /* IDE status control reg */ AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w) /* sound ram */ ADDRESS_MAP_END diff --git a/src/mame/includes/qdrmfgp.h b/src/mame/includes/qdrmfgp.h index dcb8d48dc2b..39665416597 100644 --- a/src/mame/includes/qdrmfgp.h +++ b/src/mame/includes/qdrmfgp.h @@ -27,6 +27,15 @@ public: { } + void qdrmfgp(machine_config &config); + void qdrmfgp2(machine_config &config); + + DECLARE_CUSTOM_INPUT_MEMBER(battery_sensor_r); + +protected: + virtual void machine_reset() override; + +private: required_device m_maincpu; required_shared_ptr m_nvram; required_shared_ptr m_workram; @@ -55,14 +64,12 @@ public: DECLARE_WRITE16_MEMBER(sndram_w); DECLARE_READ16_MEMBER(gp2_ide_std_r); DECLARE_READ16_MEMBER(inputs_r); - DECLARE_CUSTOM_INPUT_MEMBER(battery_sensor_r); - - virtual void machine_reset() override; DECLARE_MACHINE_START(qdrmfgp); DECLARE_VIDEO_START(qdrmfgp); DECLARE_MACHINE_START(qdrmfgp2); DECLARE_VIDEO_START(qdrmfgp2); + uint32_t screen_update_qdrmfgp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(qdrmfgp2_interrupt); TIMER_CALLBACK_MEMBER(gp2_timer_callback); @@ -72,8 +79,7 @@ public: DECLARE_WRITE_LINE_MEMBER(k054539_irq1_gen); K056832_CB_MEMBER(qdrmfgp_tile_callback); K056832_CB_MEMBER(qdrmfgp2_tile_callback); - void qdrmfgp(machine_config &config); - void qdrmfgp2(machine_config &config); + void qdrmfgp2_map(address_map &map); void qdrmfgp_k054539_map(address_map &map); void qdrmfgp_map(address_map &map);