diff options
author | 2014-10-12 11:54:06 +0000 | |
---|---|---|
committer | 2014-10-12 11:54:06 +0000 | |
commit | 616eeffd47001a05dd35287611c9b13dda1de8c9 (patch) | |
tree | adbe2045a2c5074987172422da363e1b6692000f /src/emu/machine | |
parent | ab592dea638e66ce4b426fe70ad6342b68ba99e0 (diff) |
Beatmania IIDX Twinkle hardware: The IDE DMA is now hooked up, but the sound board isn't running well enough yet for it to make a difference. Hooked up the FDC37665GT and HLE the XVD701 and the 68k sound board responses to get most of the games booting. There is no sound and the games all fail with a hdd error when you start a stage. Beatmania IIDX with DDR 2nd Club Version wants the GQ863 hard disk. [smf]
Diffstat (limited to 'src/emu/machine')
-rw-r--r-- | src/emu/machine/fdc37c665gt.c | 59 | ||||
-rw-r--r-- | src/emu/machine/fdc37c665gt.h | 35 | ||||
-rw-r--r-- | src/emu/machine/machine.mak | 8 |
3 files changed, 102 insertions, 0 deletions
diff --git a/src/emu/machine/fdc37c665gt.c b/src/emu/machine/fdc37c665gt.c new file mode 100644 index 00000000000..3c69626ca48 --- /dev/null +++ b/src/emu/machine/fdc37c665gt.c @@ -0,0 +1,59 @@ +#include "fdc37c665gt.h" + +fdc37c665gt_device::fdc37c665gt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, FDC37C665GT, "FDC37C665GT", tag, owner, clock, "fdc37c665gt", __FILE__), + m_uart1(*this, "uart1"), + m_uart2(*this, "uart2") +{ +} + +READ8_MEMBER(fdc37c665gt_device::read) +{ + UINT8 data = 0; + + if ((offset & 0x3f8) == 0x3f8) + { + data = m_uart1->ins8250_r(space, offset & 7, mem_mask); + } + else if ((offset & 0x3f8) == 0x2f8) + { + data = m_uart2->ins8250_r(space, offset & 7, mem_mask); + } + else + { + printf("fdc37c665gt_device::read %04x %02x\n", offset, data); + } + return data; +} + +WRITE8_MEMBER(fdc37c665gt_device::write) +{ + if ((offset & 0x3f8) == 0x3f8) + { + m_uart1->ins8250_w(space, offset & 7, data, mem_mask); + } + else if ((offset & 0x3f8) == 0x2f8) + { + m_uart2->ins8250_w(space, offset & 7, data, mem_mask); + } + else + { + printf("fdc37c665gt_device::write %04x %02x\n", offset, data); + } +} + +void fdc37c665gt_device::device_start() +{ +} + +static MACHINE_CONFIG_FRAGMENT(fdc37c665gt) + MCFG_DEVICE_ADD("uart1", NS16550, XTAL_24MHz/13) + MCFG_DEVICE_ADD("uart2", NS16550, XTAL_24MHz/13) +MACHINE_CONFIG_END + +machine_config_constructor fdc37c665gt_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME(fdc37c665gt); +} + +const device_type FDC37C665GT = &device_creator<fdc37c665gt_device>; diff --git a/src/emu/machine/fdc37c665gt.h b/src/emu/machine/fdc37c665gt.h new file mode 100644 index 00000000000..4002c7ff684 --- /dev/null +++ b/src/emu/machine/fdc37c665gt.h @@ -0,0 +1,35 @@ +/* +* fdc37c665gt.h +* +*/ + +#ifndef _FDC37C665GT_H_ +#define _FDC37C665GT_H_ + +#pragma once + +#include "ins8250.h" + +class fdc37c665gt_device : public device_t +{ +public: + // construction/destruction + fdc37c665gt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + DECLARE_READ8_MEMBER(read); + DECLARE_WRITE8_MEMBER(write); + +protected: + // device-level overrides + virtual void device_start(); + virtual machine_config_constructor device_mconfig_additions() const; + +private: + required_device<ns16550_device> m_uart1; + required_device<ns16550_device> m_uart2; +}; + +// device type definition +extern const device_type FDC37C665GT; + +#endif diff --git a/src/emu/machine/machine.mak b/src/emu/machine/machine.mak index 764d5e01d55..dc8bca8373a 100644 --- a/src/emu/machine/machine.mak +++ b/src/emu/machine/machine.mak @@ -1898,3 +1898,11 @@ ifneq ($(filter DIABLO_HD,$(MACHINES)),) MACHINEOBJS += $(MACHINEOBJ)/diablo_hd.o endif +#------------------------------------------------- +# +#@src/emu/machine/fdc37c665gt.h,MACHINES += FDC37C665GT +#------------------------------------------------- + +ifneq ($(filter FDC37C665GT,$(MACHINES)),) +MACHINEOBJS += $(MACHINEOBJ)/fdc37c665gt.o +endif |