mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
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:
parent
dfedfb6574
commit
f024759b01
@ -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
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user