diff --git a/.gitattributes b/.gitattributes index 1e79c17de4c..5c4858f8b6f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5446,6 +5446,8 @@ src/mame/video/decodmd1.c svneol=native#text/plain src/mame/video/decodmd1.h svneol=native#text/plain src/mame/video/decodmd2.c svneol=native#text/plain src/mame/video/decodmd2.h svneol=native#text/plain +src/mame/video/decodmd3.c svneol=native#text/plain +src/mame/video/decodmd3.h svneol=native#text/plain src/mame/video/decospr.c svneol=native#text/plain src/mame/video/decospr.h svneol=native#text/plain src/mame/video/deniam.c svneol=native#text/plain diff --git a/src/mame/drivers/de_3b.c b/src/mame/drivers/de_3b.c index 7de10924553..720dc9d180e 100644 --- a/src/mame/drivers/de_3b.c +++ b/src/mame/drivers/de_3b.c @@ -5,6 +5,7 @@ #include "emu.h" #include "machine/decopincpu.h" +#include "video/decodmd3.h" #include "audio/decobsmt.h" #include "machine/genpin.h" #include "machine/nvram.h" @@ -15,11 +16,13 @@ class de_3b_state : public driver_device public: de_3b_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_decobsmt(*this, "decobsmt") + m_decobsmt(*this, "decobsmt"), + m_dmdtype3(*this, "decodmd") { } // devices required_device m_decobsmt; + required_device m_dmdtype3; DECLARE_WRITE8_MEMBER(lamp0_w) { }; DECLARE_WRITE8_MEMBER(lamp1_w) { }; @@ -27,6 +30,9 @@ public: DECLARE_WRITE8_MEMBER(switch_w); DECLARE_WRITE8_MEMBER(sound_w); DECLARE_READ8_MEMBER(dmd_status_r); + DECLARE_WRITE8_MEMBER(pia2c_pa_w); + DECLARE_READ8_MEMBER(pia2c_pb_r); + DECLARE_WRITE8_MEMBER(pia2c_pb_w); // devcb2 callbacks DECLARE_READ8_MEMBER(display_r); @@ -150,10 +156,27 @@ WRITE8_MEMBER( de_3b_state::sound_w ) READ8_MEMBER( de_3b_state::dmd_status_r ) { - //return m_dmdtype3->status_r(space,offset); - return 0; + return m_dmdtype3->status_r(space,offset); } +WRITE8_MEMBER( de_3b_state::pia2c_pa_w ) +{ + /* DMD data */ + m_dmdtype3->data_w(space,offset,data); + logerror("DMD: Data write %02x\n", data); +} + +READ8_MEMBER( de_3b_state::pia2c_pb_r ) +{ + return m_dmdtype3->busy_r(space,offset); +} + +WRITE8_MEMBER( de_3b_state::pia2c_pb_w ) +{ + /* DMD ctrl */ + m_dmdtype3->ctrl_w(space,offset,data); + logerror("DMD: Control write %02x\n", data); +} READ8_MEMBER(de_3b_state::display_r) { UINT8 ret = 0x00; @@ -164,7 +187,7 @@ READ8_MEMBER(de_3b_state::display_r) // ret = pia28_w7_r(space,0); break; case 3: -// ret = pia2c_pb_r(space,0); + ret = pia2c_pb_r(space,0); break; } @@ -173,13 +196,13 @@ READ8_MEMBER(de_3b_state::display_r) WRITE8_MEMBER(de_3b_state::display_w) { -/* switch(offset) + switch(offset) { case 0: - dig0_w(space,0,data); +// dig0_w(space,0,data); break; case 1: - dig1_w(space,0,data); +// dig1_w(space,0,data); break; case 2: pia2c_pa_w(space,0,data); @@ -188,9 +211,9 @@ WRITE8_MEMBER(de_3b_state::display_w) pia2c_pb_w(space,0,data); break; case 4: - pia34_pa_w(space,0,data); +// pia34_pa_w(space,0,data); break; - }*/ + } } WRITE8_MEMBER(de_3b_state::lamps_w) @@ -227,6 +250,8 @@ static MACHINE_CONFIG_START( de_3b, de_3b_state ) /* sound hardware */ MCFG_DECOBSMT_ADD(DECOBSMT_TAG) + + MCFG_DECODMD_TYPE3_ADD("decodmd",":cpu3") MACHINE_CONFIG_END /*------------------------------------------------------------- @@ -236,8 +261,8 @@ ROM_START(batmanf) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnova.401", 0x0000, 0x10000, CRC(4e62df4e) SHA1(6c3be65fc8825f47cd08755b58fdcf3652ede702)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000001, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) - ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000000, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) + ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000000, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) + ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000001, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -249,8 +274,8 @@ ROM_START(batmanf3) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batcpua.302", 0x0000, 0x10000, CRC(5ae7ce69) SHA1(13409c7c993bd9940f3a72f3bac8c8c57a665b3f)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bmfrom0a.300", 0x00000001, 0x00080000, CRC(764bb217) SHA1(2923d2d2924faa4bdc6e67087fb8ce694d27809a)) - ROM_LOAD16_BYTE("bmfrom3a.300", 0x00000000, 0x00080000, CRC(b4e3b515) SHA1(0f8bf08bc480eed575da54bfc0135f38a86302d4)) + ROM_LOAD16_BYTE("bmfrom0a.300", 0x00000000, 0x00080000, CRC(764bb217) SHA1(2923d2d2924faa4bdc6e67087fb8ce694d27809a)) + ROM_LOAD16_BYTE("bmfrom3a.300", 0x00000001, 0x00080000, CRC(b4e3b515) SHA1(0f8bf08bc480eed575da54bfc0135f38a86302d4)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -262,8 +287,8 @@ ROM_START(bmf_uk) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnove.401", 0x0000, 0x10000, CRC(80f6e4af) SHA1(dd233d2150dcb50b74a70e6ff89c74a3f0d8fae1)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000001, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) - ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000000, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) + ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000000, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) + ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000001, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -275,8 +300,8 @@ ROM_START(bmf_cn) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovc.401", 0x0000, 0x10000, CRC(99936537) SHA1(08ff9c6a1fcb3f198190d24bbc75ea1178427fda)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000001, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) - ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000000, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) + ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000000, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) + ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000001, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -288,8 +313,8 @@ ROM_START(bmf_no) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovn.401", 0x0000, 0x10000, CRC(79dd48b4) SHA1(eefdf423f9638e293e51bd31413de898ec4eb83a)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000001, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) - ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000000, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) + ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000000, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) + ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000001, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -301,8 +326,8 @@ ROM_START(bmf_sv) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovt.401", 0x0000, 0x10000, CRC(854029ab) SHA1(044c2fff6f3e8995c48344f727c1cd9079f7e232)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000001, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) - ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000000, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) + ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000000, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) + ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000001, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -314,8 +339,8 @@ ROM_START(bmf_at) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovh.401", 0x0000, 0x10000, CRC(acba13d7) SHA1(b5e5dc5ffc926612ea3d592b6d4e8e02f6290bc7)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0g.401", 0x00000001, 0x00080000, CRC(3a2d7d53) SHA1(340107290d58bfb8b9a6613215eb556626fe2461)) - ROM_LOAD16_BYTE("bfdrom3g.401", 0x00000000, 0x00080000, CRC(94e424f1) SHA1(3a6daf9cbd38e21e2c6447ff1fb0e86b4c03f971)) + ROM_LOAD16_BYTE("bfdrom0g.401", 0x00000000, 0x00080000, CRC(3a2d7d53) SHA1(340107290d58bfb8b9a6613215eb556626fe2461)) + ROM_LOAD16_BYTE("bfdrom3g.401", 0x00000001, 0x00080000, CRC(94e424f1) SHA1(3a6daf9cbd38e21e2c6447ff1fb0e86b4c03f971)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -327,8 +352,8 @@ ROM_START(bmf_ch) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovs.401", 0x0000, 0x10000, CRC(4999d5f9) SHA1(61a9220da38e05360a9496504fa7b11aff14515d)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0g.401", 0x00000001, 0x00080000, CRC(3a2d7d53) SHA1(340107290d58bfb8b9a6613215eb556626fe2461)) - ROM_LOAD16_BYTE("bfdrom3g.401", 0x00000000, 0x00080000, CRC(94e424f1) SHA1(3a6daf9cbd38e21e2c6447ff1fb0e86b4c03f971)) + ROM_LOAD16_BYTE("bfdrom0g.401", 0x00000000, 0x00080000, CRC(3a2d7d53) SHA1(340107290d58bfb8b9a6613215eb556626fe2461)) + ROM_LOAD16_BYTE("bfdrom3g.401", 0x00000001, 0x00080000, CRC(94e424f1) SHA1(3a6daf9cbd38e21e2c6447ff1fb0e86b4c03f971)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -340,8 +365,8 @@ ROM_START(bmf_de) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovg.401", 0x0000, 0x10000, CRC(dd37e99a) SHA1(7949ed43df38849d927f6ed0afa8c3f77cd74b6a)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0g.401", 0x00000001, 0x00080000, CRC(3a2d7d53) SHA1(340107290d58bfb8b9a6613215eb556626fe2461)) - ROM_LOAD16_BYTE("bfdrom3g.401", 0x00000000, 0x00080000, CRC(94e424f1) SHA1(3a6daf9cbd38e21e2c6447ff1fb0e86b4c03f971)) + ROM_LOAD16_BYTE("bfdrom0g.401", 0x00000000, 0x00080000, CRC(3a2d7d53) SHA1(340107290d58bfb8b9a6613215eb556626fe2461)) + ROM_LOAD16_BYTE("bfdrom3g.401", 0x00000001, 0x00080000, CRC(94e424f1) SHA1(3a6daf9cbd38e21e2c6447ff1fb0e86b4c03f971)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -353,8 +378,8 @@ ROM_START(bmf_be) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovb.401", 0x0000, 0x10000, CRC(21309873) SHA1(cebd0c5c05dc5c0a2eb8563ad5c4759f78d6a4b9)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0f.401", 0x00000001, 0x00080000, CRC(e7473f6f) SHA1(f5951a9b6a8776073adf10e38b9d68d6d444240a)) - ROM_LOAD16_BYTE("bfdrom3f.401", 0x00000000, 0x00080000, CRC(f7951709) SHA1(ace5b374d1e382d6f612b2bafc0e9fdde9e21014)) + ROM_LOAD16_BYTE("bfdrom0f.401", 0x00000000, 0x00080000, CRC(e7473f6f) SHA1(f5951a9b6a8776073adf10e38b9d68d6d444240a)) + ROM_LOAD16_BYTE("bfdrom3f.401", 0x00000001, 0x00080000, CRC(f7951709) SHA1(ace5b374d1e382d6f612b2bafc0e9fdde9e21014)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -366,8 +391,8 @@ ROM_START(bmf_fr) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovf.401", 0x0000, 0x10000, CRC(4baa793d) SHA1(4ba258d11f1bd7a2078ae6cd823a11e10ca96627)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0f.401", 0x00000001, 0x00080000, CRC(e7473f6f) SHA1(f5951a9b6a8776073adf10e38b9d68d6d444240a)) - ROM_LOAD16_BYTE("bfdrom3f.401", 0x00000000, 0x00080000, CRC(f7951709) SHA1(ace5b374d1e382d6f612b2bafc0e9fdde9e21014)) + ROM_LOAD16_BYTE("bfdrom0f.401", 0x00000000, 0x00080000, CRC(e7473f6f) SHA1(f5951a9b6a8776073adf10e38b9d68d6d444240a)) + ROM_LOAD16_BYTE("bfdrom3f.401", 0x00000001, 0x00080000, CRC(f7951709) SHA1(ace5b374d1e382d6f612b2bafc0e9fdde9e21014)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -379,8 +404,8 @@ ROM_START(bmf_nl) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovd.401", 0x0000, 0x10000, CRC(6ae4570c) SHA1(e863d6d0963910a993f2a0b8ddeefba48d304ca6)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0f.401", 0x00000001, 0x00080000, CRC(e7473f6f) SHA1(f5951a9b6a8776073adf10e38b9d68d6d444240a)) - ROM_LOAD16_BYTE("bfdrom3f.401", 0x00000000, 0x00080000, CRC(f7951709) SHA1(ace5b374d1e382d6f612b2bafc0e9fdde9e21014)) + ROM_LOAD16_BYTE("bfdrom0f.401", 0x00000000, 0x00080000, CRC(e7473f6f) SHA1(f5951a9b6a8776073adf10e38b9d68d6d444240a)) + ROM_LOAD16_BYTE("bfdrom3f.401", 0x00000001, 0x00080000, CRC(f7951709) SHA1(ace5b374d1e382d6f612b2bafc0e9fdde9e21014)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -392,8 +417,8 @@ ROM_START(bmf_it) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovi.401", 0x0000, 0x10000, CRC(7053ef9e) SHA1(918ab3e250b5965998ca0a38e1b8ba3cc012083f)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0i.401", 0x00000001, 0x00080000, CRC(23051253) SHA1(155669a3fecd6e67838b10e71a57a6b871c8762a)) - ROM_LOAD16_BYTE("bfdrom3i.401", 0x00000000, 0x00080000, CRC(82b61a41) SHA1(818c8fdbf44e29fe0ec5362a34ac948e98002efa)) + ROM_LOAD16_BYTE("bfdrom0i.401", 0x00000000, 0x00080000, CRC(23051253) SHA1(155669a3fecd6e67838b10e71a57a6b871c8762a)) + ROM_LOAD16_BYTE("bfdrom3i.401", 0x00000001, 0x00080000, CRC(82b61a41) SHA1(818c8fdbf44e29fe0ec5362a34ac948e98002efa)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -405,8 +430,8 @@ ROM_START(bmf_sp) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnova.401", 0x0000, 0x10000, CRC(4e62df4e) SHA1(6c3be65fc8825f47cd08755b58fdcf3652ede702)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0l.401", 0x00000001, 0x00080000, CRC(b22b10d9) SHA1(c8f5637b00b0701d47a3b6bc0fdae08ae1a8df64)) - ROM_LOAD16_BYTE("bfdrom3l.401", 0x00000000, 0x00080000, CRC(016b8666) SHA1(c10b7fc2c1e5b8382ff5b021a6b70f3a550b190e)) + ROM_LOAD16_BYTE("bfdrom0l.401", 0x00000000, 0x00080000, CRC(b22b10d9) SHA1(c8f5637b00b0701d47a3b6bc0fdae08ae1a8df64)) + ROM_LOAD16_BYTE("bfdrom3l.401", 0x00000001, 0x00080000, CRC(016b8666) SHA1(c10b7fc2c1e5b8382ff5b021a6b70f3a550b190e)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -418,8 +443,8 @@ ROM_START(bmf_jp) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnovj.401", 0x0000, 0x10000, CRC(eef9bef0) SHA1(ac37ae12673351be939a969ecbc5b68c3995dca0)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000001, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) - ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000000, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) + ROM_LOAD16_BYTE("bfdrom0a.401", 0x00000000, 0x00080000, CRC(8a3c20ad) SHA1(37415ac7ba178981dffce3a17502f39ab29d90ea)) + ROM_LOAD16_BYTE("bfdrom3a.401", 0x00000001, 0x00080000, CRC(5ef46847) SHA1(a80f241db3d309f0bcb455051e33fc2b74e2ddcd)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -431,8 +456,8 @@ ROM_START(bmf_time) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("batnova.401", 0x0000, 0x10000, CRC(4e62df4e) SHA1(6c3be65fc8825f47cd08755b58fdcf3652ede702)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bfdrom0t.401", 0x00000001, 0x00080000, CRC(b83b8d28) SHA1(b90e6a6fa55dadbf0e752745b87d1e8e9d7ccfa7)) - ROM_LOAD16_BYTE("bfdrom3t.401", 0x00000000, 0x00080000, CRC(a024b1a5) SHA1(2fc8697fa98b7de7a844ca4d6a162b96cc751447)) + ROM_LOAD16_BYTE("bfdrom0t.401", 0x00000000, 0x00080000, CRC(b83b8d28) SHA1(b90e6a6fa55dadbf0e752745b87d1e8e9d7ccfa7)) + ROM_LOAD16_BYTE("bfdrom3t.401", 0x00000001, 0x00080000, CRC(a024b1a5) SHA1(2fc8697fa98b7de7a844ca4d6a162b96cc751447)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bmfu7.bin", 0x0000, 0x10000, CRC(58c0d144) SHA1(88a404d3625c7c154892282598b4949ac97de12b)) ROM_REGION(0x1000000, "bsmt", 0) @@ -447,8 +472,8 @@ ROM_START(baywatch) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("baycpua.400", 0x0000, 0x10000, CRC(89facfda) SHA1(71720b1da227752b0e276390abd08c742bca9090)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("bayrom0a.400", 0x00000001, 0x00080000, CRC(43d615c6) SHA1(7c843b6d5215305b02a55c9fa1d62375ef0766ea)) - ROM_LOAD16_BYTE("bayrom3a.400", 0x00000000, 0x00080000, CRC(41bcb66b) SHA1(e6f0a9236e14c2e919881ca1ffe3356aaa121730)) + ROM_LOAD16_BYTE("bayrom0a.400", 0x00000000, 0x00080000, CRC(43d615c6) SHA1(7c843b6d5215305b02a55c9fa1d62375ef0766ea)) + ROM_LOAD16_BYTE("bayrom3a.400", 0x00000001, 0x00080000, CRC(41bcb66b) SHA1(e6f0a9236e14c2e919881ca1ffe3356aaa121730)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("bayw.u7", 0x0000, 0x10000, CRC(90d6d8a8) SHA1(482c5643453f21a078257aa13398845ef19cab3c)) ROM_REGION(0x1000000, "bsmt", 0) @@ -463,8 +488,8 @@ ROM_START(frankst) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("franka.103", 0x0000, 0x10000, CRC(a9aba9be) SHA1(1cc22fcbc0f51a17037637c04e606579956c9cba)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("frdspr0a.103", 0x00000001, 0x00080000, CRC(9dd09c7d) SHA1(c5668e53d6c914667a59538f82222ec2efc6f187)) - ROM_LOAD16_BYTE("frdspr3a.103", 0x00000000, 0x00080000, CRC(73b538bb) SHA1(07d7ae21f062d15711d72af03bfcd52608f75a5f)) + ROM_LOAD16_BYTE("frdspr0a.103", 0x00000000, 0x00080000, CRC(9dd09c7d) SHA1(c5668e53d6c914667a59538f82222ec2efc6f187)) + ROM_LOAD16_BYTE("frdspr3a.103", 0x00000001, 0x00080000, CRC(73b538bb) SHA1(07d7ae21f062d15711d72af03bfcd52608f75a5f)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("frsnd.u7", 0x0000, 0x10000, CRC(084f856c) SHA1(c91331a32b565c2ed3f96156f44143dc22009e8e)) ROM_REGION(0x1000000, "bsmt", 0) @@ -477,8 +502,8 @@ ROM_START(frankstg) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("franka.103", 0x0000, 0x10000, CRC(a9aba9be) SHA1(1cc22fcbc0f51a17037637c04e606579956c9cba)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("frdspr0g.101", 0x00000001, 0x00080000, CRC(5e27ec02) SHA1(351d6f1b7d72e415f2bf5780b6533dbd67579261)) - ROM_LOAD16_BYTE("frdspr3g.101", 0x00000000, 0x00080000, CRC(d6c607b5) SHA1(876d4bd2a5b89f1a28ff7cd45494c7245f147d27)) + ROM_LOAD16_BYTE("frdspr0g.101", 0x00000000, 0x00080000, CRC(5e27ec02) SHA1(351d6f1b7d72e415f2bf5780b6533dbd67579261)) + ROM_LOAD16_BYTE("frdspr3g.101", 0x00000001, 0x00080000, CRC(d6c607b5) SHA1(876d4bd2a5b89f1a28ff7cd45494c7245f147d27)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("frsnd.u7", 0x0000, 0x10000, CRC(084f856c) SHA1(c91331a32b565c2ed3f96156f44143dc22009e8e)) ROM_REGION(0x1000000, "bsmt", 0) @@ -494,8 +519,8 @@ ROM_START(mav_402) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("mavcpua.404", 0x0000, 0x10000, CRC(9f06bd8d) SHA1(3b931af5455ed9c40f2b6c884427a326bba8f75a)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("mavdisp0.402", 0x00000001, 0x00080000, CRC(4e643525) SHA1(30b91c91c2f1295cdd018023c5ac783570a0aeea)) - ROM_LOAD16_BYTE("mavdisp3.402", 0x00000000, 0x00080000, CRC(8c5f9460) SHA1(6369b4c98ec6fd5e769275b44631b2b6dd5c411b)) + ROM_LOAD16_BYTE("mavdisp0.402", 0x00000000, 0x00080000, CRC(4e643525) SHA1(30b91c91c2f1295cdd018023c5ac783570a0aeea)) + ROM_LOAD16_BYTE("mavdisp3.402", 0x00000001, 0x00080000, CRC(8c5f9460) SHA1(6369b4c98ec6fd5e769275b44631b2b6dd5c411b)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("mavu7.dat", 0x0000, 0x10000, CRC(427e6ab9) SHA1(6ad9295097f3d498383c91adf4ca667f797f29b1)) ROM_REGION(0x1000000, "bsmt", 0) @@ -507,8 +532,8 @@ ROM_START(mav_401) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("mavcpua.404", 0x0000, 0x10000, CRC(9f06bd8d) SHA1(3b931af5455ed9c40f2b6c884427a326bba8f75a)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("mavdsar0.401", 0x00000001, 0x00080000, CRC(35b811af) SHA1(1e235a0f16ef0eecca5b6ec7a2234ed1dc4e4440)) - ROM_LOAD16_BYTE("mavdsar3.401", 0x00000000, 0x00080000, CRC(c4c126ae) SHA1(b4841e83ec075bddc919217b65afaac97709e69b)) + ROM_LOAD16_BYTE("mavdsar0.401", 0x00000000, 0x00080000, CRC(35b811af) SHA1(1e235a0f16ef0eecca5b6ec7a2234ed1dc4e4440)) + ROM_LOAD16_BYTE("mavdsar3.401", 0x00000001, 0x00080000, CRC(c4c126ae) SHA1(b4841e83ec075bddc919217b65afaac97709e69b)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("mavu7.dat", 0x0000, 0x10000, CRC(427e6ab9) SHA1(6ad9295097f3d498383c91adf4ca667f797f29b1)) ROM_REGION(0x1000000, "bsmt", 0) @@ -520,8 +545,8 @@ ROM_START(mav_400) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("mavgc5.400", 0x0000, 0x10000, CRC(e2d0a88b) SHA1(d1571edba47aecc871ac0cfdaabca31774f70fa1)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("mavdisp0.400", 0x00000001, 0x00080000, CRC(b6069484) SHA1(2878d9a0151194bd4a0e12e2f75b02a5d7316b68)) - ROM_LOAD16_BYTE("mavdisp3.400", 0x00000000, 0x00080000, CRC(149f871f) SHA1(e29a8bf149b77bccaeed202786cf76d9a4fd51df)) + ROM_LOAD16_BYTE("mavdisp0.400", 0x00000000, 0x00080000, CRC(b6069484) SHA1(2878d9a0151194bd4a0e12e2f75b02a5d7316b68)) + ROM_LOAD16_BYTE("mavdisp3.400", 0x00000001, 0x00080000, CRC(149f871f) SHA1(e29a8bf149b77bccaeed202786cf76d9a4fd51df)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("mavu7.dat", 0x0000, 0x10000, CRC(427e6ab9) SHA1(6ad9295097f3d498383c91adf4ca667f797f29b1)) ROM_REGION(0x1000000, "bsmt", 0) @@ -533,8 +558,8 @@ ROM_START(mav_100) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("mavcpu.100", 0x0000, 0x10000, CRC(13fdc959) SHA1(f8155f0fe5d4c3fe55000ab3b57f298fd9229fef)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("mavdsp0.100", 0x00000001, 0x00080000, CRC(3e01f5c8) SHA1(8e40f399c77aa17bebbefe04742ff2ff95508323)) - ROM_LOAD16_BYTE("mavdsp3.100", 0x00000000, 0x00080000, CRC(e2b623f2) SHA1(7b5a6d0db30f3deedb8fe0e1731c81ec836a66f5)) + ROM_LOAD16_BYTE("mavdsp0.100", 0x00000000, 0x00080000, CRC(3e01f5c8) SHA1(8e40f399c77aa17bebbefe04742ff2ff95508323)) + ROM_LOAD16_BYTE("mavdsp3.100", 0x00000001, 0x00080000, CRC(e2b623f2) SHA1(7b5a6d0db30f3deedb8fe0e1731c81ec836a66f5)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("mavu7.dat", 0x0000, 0x10000, CRC(427e6ab9) SHA1(6ad9295097f3d498383c91adf4ca667f797f29b1)) ROM_REGION(0x1000000, "bsmt", 0) @@ -549,8 +574,8 @@ ROM_START(ctcheese) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("ctcc5.bin", 0x0000, 0x10000, CRC(465d41de) SHA1(0e30b527d5b47f8823cbe6f196052b090e69e907)) ROM_REGION(0x01000000, "cpu3", 0) - ROM_LOAD16_BYTE("ctcdsp0.bin", 0x00000001, 0x00080000, CRC(6885734d) SHA1(9ac82c9c8bf4e66d2999fbfd08617ef6c266dfe8)) - ROM_LOAD16_BYTE("ctcdsp3.bin", 0x00000000, 0x00080000, CRC(0c2b3f3c) SHA1(cb730cc6fdd2a2786d25b46b1c45466ee56132d1)) + ROM_LOAD16_BYTE("ctcdsp0.bin", 0x00000000, 0x00080000, CRC(6885734d) SHA1(9ac82c9c8bf4e66d2999fbfd08617ef6c266dfe8)) + ROM_LOAD16_BYTE("ctcdsp3.bin", 0x00000001, 0x00080000, CRC(0c2b3f3c) SHA1(cb730cc6fdd2a2786d25b46b1c45466ee56132d1)) ROM_REGION(0x010000, "soundcpu", 0) ROM_LOAD("ctcu7.bin", 0x0000, 0x10000, CRC(406b9b9e) SHA1(f3f86c368c92ee0cb47323e6e0ca0fa05b6122bd)) ROM_REGION(0x1000000, "bsmt", 0) diff --git a/src/mame/mame.mak b/src/mame/mame.mak index 3abec250452..86d5ae13252 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -1936,6 +1936,7 @@ $(MAMEOBJ)/pinball.a: \ $(MACHINE)/decopincpu.o \ $(VIDEO)/decodmd1.o \ $(VIDEO)/decodmd2.o \ + $(VIDEO)/decodmd3.o \ $(DRIVERS)/de_3b.o \ $(DRIVERS)/flicker.o \ $(DRIVERS)/g627.o \ diff --git a/src/mame/video/decodmd2.c b/src/mame/video/decodmd2.c index 8ef8f8c3f1c..73f424579f3 100644 --- a/src/mame/video/decodmd2.c +++ b/src/mame/video/decodmd2.c @@ -108,7 +108,7 @@ MC6845_UPDATE_ROW( dmd_update_row ) { for(dot=0;dot<8;dot++) { - intensity = (RAM[addr] >> (7-dot) & 0x01) | ((RAM[addr+0x200] >> (7-dot) & 0x01) << 1); + intensity = ((RAM[addr] >> (7-dot) & 0x01) << 1) | (RAM[addr+0x200] >> (7-dot) & 0x01); bitmap.pix32(y,x+dot) = MAKE_RGB(0x3f*intensity,0x2a*intensity,0x00); } addr++; diff --git a/src/mame/video/decodmd3.c b/src/mame/video/decodmd3.c new file mode 100644 index 00000000000..25c7a14b164 --- /dev/null +++ b/src/mame/video/decodmd3.c @@ -0,0 +1,204 @@ +/* + * Data East Pinball / Sega Pinball Dot Matrix Display + * + * Type 3: 192x64 + * 68000 @ 12MHz + * 68B45 CRTC + */ + +#include "decodmd3.h" +#include "rendlay.h" + +const device_type DECODMD3 = &device_creator; + +WRITE8_MEMBER( decodmd_type3_device::data_w ) +{ + m_latch = data; +} + +READ8_MEMBER( decodmd_type3_device::busy_r ) +{ + UINT8 ret = 0x00; + + ret = (m_status & 0x0f) << 3; + + if(m_busy) + return 0x80 | ret; + else + return 0x00 | ret; +} + +WRITE8_MEMBER( decodmd_type3_device::ctrl_w ) +{ + if(!(m_ctrl & 0x01) && (data & 0x01)) + { + m_cpu->set_input_line(M68K_IRQ_1,ASSERT_LINE); + m_busy = true; + m_command = m_latch; + } + if((m_ctrl & 0x02) && !(data & 0x02)) + { + m_cpu->set_input_line(INPUT_LINE_RESET,PULSE_LINE); + logerror("DMD3: Reset\n"); + } + m_ctrl = data; +} + +READ16_MEMBER( decodmd_type3_device::status_r ) +{ + return m_status; +} + +WRITE16_MEMBER( decodmd_type3_device::status_w ) +{ + m_status = data & 0x0f; +} + +READ16_MEMBER( decodmd_type3_device::latch_r ) +{ + // clear IRQ? + m_cpu->set_input_line(M68K_IRQ_1,CLEAR_LINE); + m_busy = false; + return m_command; +} + +TIMER_DEVICE_CALLBACK_MEMBER(decodmd_type3_device::dmd_irq) +{ + m_cpu->set_input_line(M68K_IRQ_2, HOLD_LINE); +} + +WRITE16_MEMBER( decodmd_type3_device::crtc_address_w ) +{ + if(ACCESSING_BITS_8_15) + { + m_mc6845->address_w(space,offset,data >> 8); + m_crtc_index = data >> 8; + } +} + +READ16_MEMBER( decodmd_type3_device::crtc_status_r ) +{ + if(ACCESSING_BITS_8_15) + return m_mc6845->register_r(space,offset); + else + return 0xff; +} + +WRITE16_MEMBER( decodmd_type3_device::crtc_register_w ) +{ + if(ACCESSING_BITS_8_15) + { + if(m_crtc_index == 9) // hack!! + data -= 0x100; + m_mc6845->register_w(space,offset,data >> 8); + m_crtc_reg[m_crtc_index] = data >> 8; + } +} + +MC6845_UPDATE_ROW( dmd64_update_row ) +{ + decodmd_type3_device *state = downcast(device->owner()); + UINT8* RAM = state->m_ram->pointer(); + UINT8 x,dot,intensity; + UINT16 addr = ((ma & 0x7ff) << 2) | ((ra & 0x02) << 12); + addr += ((ra & 0x01) * 24); + + for(x=0;x<192;x+=16) + { + for(dot=0;dot<8;dot++) + { + intensity = ((RAM[addr+1] >> (7-dot) & 0x01) << 1) | (RAM[addr+0x801] >> (7-dot) & 0x01); + bitmap.pix32(y,x+dot) = MAKE_RGB(0x3f*intensity,0x2a*intensity,0x00); + } + for(dot=8;dot<16;dot++) + { + intensity = ((RAM[addr] >> (15-dot) & 0x01) << 1) | (RAM[addr+0x800] >> (15-dot) & 0x01); + bitmap.pix32(y,x+dot) = MAKE_RGB(0x3f*intensity,0x2a*intensity,0x00); + } + addr+=2; + } +} + +MC6845_INTERFACE( decodmd3_6845_intf ) +{ + false, /* show border area */ + 16, /* number of pixels per video memory address */ + NULL, /* begin_update */ + dmd64_update_row, /* update_row */ + NULL, /* end_update */ + DEVCB_NULL, /* on_de_changed */ + DEVCB_NULL, /* on_cur_changed */ + DEVCB_NULL, /* on_hsync_changed */ + DEVCB_NULL, /* on_vsync_changed */ + NULL +}; + +static ADDRESS_MAP_START( decodmd3_map, AS_PROGRAM, 16, decodmd_type3_device ) + AM_RANGE(0x00000000, 0x000fffff) AM_ROMBANK("dmdrom") + AM_RANGE(0x00800000, 0x0080ffff) AM_RAMBANK("dmdram") + AM_RANGE(0x00c00010, 0x00c00011) AM_READWRITE(crtc_status_r,crtc_address_w) + AM_RANGE(0x00c00012, 0x00c00013) AM_WRITE(crtc_register_w) + AM_RANGE(0x00c00020, 0x00c00021) AM_READWRITE(latch_r,status_w) +ADDRESS_MAP_END + +static MACHINE_CONFIG_FRAGMENT( decodmd3 ) + /* basic machine hardware */ + MCFG_CPU_ADD("dmdcpu", M68000, XTAL_12MHz) + MCFG_CPU_PROGRAM_MAP(decodmd3_map) + + MCFG_QUANTUM_TIME(attotime::from_hz(60)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer",decodmd_type3_device,dmd_irq,attotime::from_hz(150)) + + MCFG_MC6845_ADD("dmd6845",MC6845,NULL,XTAL_12MHz / 4,decodmd3_6845_intf) // TODO: confirm clock speed + + MCFG_DEFAULT_LAYOUT(layout_lcd) + + MCFG_SCREEN_ADD("dmd",RASTER) + MCFG_SCREEN_SIZE(192, 64) + MCFG_SCREEN_VISIBLE_AREA(0, 192-1, 0, 64-1) + MCFG_SCREEN_UPDATE_DEVICE("dmd6845",mc6845_device, screen_update) + MCFG_SCREEN_REFRESH_RATE(60) + + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("64K") + +MACHINE_CONFIG_END + +machine_config_constructor decodmd_type3_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( decodmd3 ); +} + +decodmd_type3_device::decodmd_type3_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, DECODMD3, "Data East Pinball Dot Matrix Display Type 3", tag, owner, clock, "decodmd3", __FILE__), + m_cpu(*this,"dmdcpu"), + m_mc6845(*this,"dmd6845"), + m_ram(*this,RAM_TAG), + m_rambank(*this,"dmdram"), + m_rombank(*this,"dmdrom") +{} + +void decodmd_type3_device::device_start() +{ +} + +void decodmd_type3_device::device_reset() +{ + UINT8* ROM; + UINT8* RAM = m_ram->pointer(); + m_rom = memregion(m_gfxtag); + + ROM = m_rom->base(); + memset(RAM,0,0x10000); + m_rambank->configure_entry(0, &RAM[0]); + m_rambank->set_entry(0); + m_rombank->configure_entry(0, &ROM[0]); + m_rombank->set_entry(0); +} + +void decodmd_type3_device::static_set_gfxregion(device_t &device, const char *tag) +{ + decodmd_type3_device &cpuboard = downcast(device); + cpuboard.m_gfxtag = tag; +} diff --git a/src/mame/video/decodmd3.h b/src/mame/video/decodmd3.h new file mode 100644 index 00000000000..9cbb1cdf4e5 --- /dev/null +++ b/src/mame/video/decodmd3.h @@ -0,0 +1,62 @@ +/* + * Data East Pinball DMD Type 3 Display + */ + +#ifndef DECODMD3_H_ +#define DECODMD3_H_ + +#include "emu.h" +#include "cpu/m68000/m68000.h" +#include "video/mc6845.h" +#include "machine/ram.h" + +#define MCFG_DECODMD_TYPE3_ADD(_tag, _region) \ + MCFG_DEVICE_ADD(_tag, DECODMD3, 0) \ + decodmd_type3_device::static_set_gfxregion(*device, _region); + +class decodmd_type3_device : public device_t +{ +public: + decodmd_type3_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + required_device m_cpu; + required_device m_mc6845; + required_device m_ram; + required_memory_bank m_rambank; + required_memory_bank m_rombank; + + DECLARE_WRITE8_MEMBER(data_w); + DECLARE_READ8_MEMBER(busy_r); + DECLARE_WRITE8_MEMBER(ctrl_w); + DECLARE_READ16_MEMBER(latch_r); + DECLARE_READ16_MEMBER(status_r); + DECLARE_WRITE16_MEMBER(status_w); + DECLARE_WRITE16_MEMBER(crtc_address_w); + DECLARE_WRITE16_MEMBER(crtc_register_w); + DECLARE_READ16_MEMBER(crtc_status_r); + TIMER_DEVICE_CALLBACK_MEMBER(dmd_irq); + + static void static_set_gfxregion(device_t &device, const char *tag); + + memory_region* m_rom; + +protected: + virtual machine_config_constructor device_mconfig_additions() const; + virtual void device_start(); + virtual void device_reset(); + +private: + UINT8 m_status; + UINT8 m_crtc_index; + UINT8 m_crtc_reg[0x100]; + UINT8 m_latch; + UINT8 m_ctrl; + UINT8 m_busy; + UINT8 m_command; + + const char* m_gfxtag; +}; + +extern const device_type DECODMD3; + + +#endif /* DECODMD3_H_ */