qdrmfgp.cpp: removed ide hack now that Ted Green's work allows it. Fixes MT06685. There's a regression with audio, though, possibly related to the recently fixed one in djmain.cpp (nw)

This commit is contained in:
Ivan Vangelista 2018-02-22 18:04:59 +01:00
parent dfedfb6574
commit f024759b01
2 changed files with 11 additions and 60 deletions

View File

@ -11,10 +11,6 @@ OSC :18.43200MHz/32.00000MHz
Other(GQ460):Konami 053252,054156,056832,054539 Other(GQ460):Konami 053252,054156,056832,054539
Other(GE557):Konami 056832,058141,058143 Other(GE557):Konami 056832,058141,058143
TODO:
- qdrmfgp2 requires an interrupt hack following an IDE READ_MULTIPLE
command
-- --
driver by Hau driver by Hau
@ -34,9 +30,6 @@ GP1 HDD data contents:
#include "speaker.h" #include "speaker.h"
#define IDE_HACK 1
/************************************* /*************************************
* *
* 68k CPU memory handlers * 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) 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 (m_control & 0x0010)
if (state != CLEAR_LINE) if (state != CLEAR_LINE)
m_maincpu->set_input_line(M68K_IRQ_5, ASSERT_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(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(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 */ 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 */ 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(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 */ AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w) /* sound ram */
ADDRESS_MAP_END ADDRESS_MAP_END

View File

@ -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<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_shared_ptr<uint16_t> m_nvram; required_shared_ptr<uint16_t> m_nvram;
required_shared_ptr<uint16_t> m_workram; required_shared_ptr<uint16_t> m_workram;
@ -55,14 +64,12 @@ public:
DECLARE_WRITE16_MEMBER(sndram_w); DECLARE_WRITE16_MEMBER(sndram_w);
DECLARE_READ16_MEMBER(gp2_ide_std_r); DECLARE_READ16_MEMBER(gp2_ide_std_r);
DECLARE_READ16_MEMBER(inputs_r); DECLARE_READ16_MEMBER(inputs_r);
DECLARE_CUSTOM_INPUT_MEMBER(battery_sensor_r);
virtual void machine_reset() override;
DECLARE_MACHINE_START(qdrmfgp); DECLARE_MACHINE_START(qdrmfgp);
DECLARE_VIDEO_START(qdrmfgp); DECLARE_VIDEO_START(qdrmfgp);
DECLARE_MACHINE_START(qdrmfgp2); DECLARE_MACHINE_START(qdrmfgp2);
DECLARE_VIDEO_START(qdrmfgp2); DECLARE_VIDEO_START(qdrmfgp2);
uint32_t screen_update_qdrmfgp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_qdrmfgp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(qdrmfgp2_interrupt); INTERRUPT_GEN_MEMBER(qdrmfgp2_interrupt);
TIMER_CALLBACK_MEMBER(gp2_timer_callback); TIMER_CALLBACK_MEMBER(gp2_timer_callback);
@ -72,8 +79,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(k054539_irq1_gen); DECLARE_WRITE_LINE_MEMBER(k054539_irq1_gen);
K056832_CB_MEMBER(qdrmfgp_tile_callback); K056832_CB_MEMBER(qdrmfgp_tile_callback);
K056832_CB_MEMBER(qdrmfgp2_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 qdrmfgp2_map(address_map &map);
void qdrmfgp_k054539_map(address_map &map); void qdrmfgp_k054539_map(address_map &map);
void qdrmfgp_map(address_map &map); void qdrmfgp_map(address_map &map);