summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2014-10-12 11:54:06 +0000
committer smf- <smf-@users.noreply.github.com>2014-10-12 11:54:06 +0000
commit616eeffd47001a05dd35287611c9b13dda1de8c9 (patch)
treeadbe2045a2c5074987172422da363e1b6692000f /src/emu/machine
parentab592dea638e66ce4b426fe70ad6342b68ba99e0 (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.c59
-rw-r--r--src/emu/machine/fdc37c665gt.h35
-rw-r--r--src/emu/machine/machine.mak8
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