summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/amaticmg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/amaticmg.cpp')
-rw-r--r--src/mame/drivers/amaticmg.cpp36
1 files changed, 31 insertions, 5 deletions
diff --git a/src/mame/drivers/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp
index 65a18f9ed6f..5f251a75ae9 100644
--- a/src/mame/drivers/amaticmg.cpp
+++ b/src/mame/drivers/amaticmg.cpp
@@ -413,6 +413,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/i8255.h"
+#include "machine/ds1994.h"
#include "sound/3812intf.h"
#include "video/mc6845.h"
//#include "sound/dac.h"
@@ -439,6 +440,7 @@ public:
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
+ m_tch(*this, "touch_m"),
m_lamps(*this, "lamp%u", 0U)
{
}
@@ -464,10 +466,14 @@ private:
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ optional_device<ds1994_device> m_tch;
output_finder<7> m_lamps;
uint8_t m_nmi_mask;
+ DECLARE_READ8_MEMBER(epm_code_r);
+ DECLARE_READ8_MEMBER(touchm_r);
+ DECLARE_WRITE8_MEMBER(touchm_w);
DECLARE_WRITE8_MEMBER(rombank_w);
DECLARE_WRITE8_MEMBER(nmi_mask_w);
DECLARE_WRITE8_MEMBER(unk80_w);
@@ -592,6 +598,20 @@ void amaticmg_state::amaticmg2_palette(palette_device &palette) const
/************************************
* Read/Write Handlers *
************************************/
+READ8_MEMBER( amaticmg_state::epm_code_r )
+{
+ return 0x65;
+}
+
+READ8_MEMBER( amaticmg_state::touchm_r )
+{
+ return m_tch->read() & 1;
+}
+
+WRITE8_MEMBER( amaticmg_state::touchm_w )
+{
+ m_tch->write(data & 1);
+}
WRITE8_MEMBER( amaticmg_state::rombank_w )
{
@@ -687,9 +707,11 @@ void amaticmg_state::amaticmg2_portmap(address_map &map)
map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x20, 0x23).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x40, 0x41).w("ymsnd", FUNC(ym3812_device::write));
- map(0x60, 0x60).w("crtc", FUNC(mc6845_device::address_w)); // 0e for mg_iii_vger_3.64_v_8309
+ map(0x60, 0x60).w("crtc", FUNC(mc6845_device::address_w)); // 0e for mg_iii_vger_3.64_v_8309
map(0x61, 0x61).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // 0f for mg_iii_vger_3.64_v_8309
map(0xc0, 0xc0).w(FUNC(amaticmg_state::rombank_w));
+ map(0xe0, 0xe0).rw(FUNC(amaticmg_state::touchm_r),FUNC(amaticmg_state::touchm_w)); // Touch Memory DS1994f
+ map(0xe4, 0xe4).r(FUNC(amaticmg_state::epm_code_r)); // Input(0x00E4) must give back 0x65 in case of EPM Code 8201
map(0xe6, 0xe6).w(FUNC(amaticmg_state::nmi_mask_w));
map(0xe8, 0xeb).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
}
@@ -912,8 +934,9 @@ void amaticmg_state::amaticmg2(machine_config &config)
m_gfxdecode->set_info(gfx_amaticmg2);
m_palette->set_init(FUNC(amaticmg_state::amaticmg2_palette));
m_palette->set_entries(0x10000);
-}
+ DS1994(config, "touch_m");
+}
void amaticmg_state::amaticmg4(machine_config &config)
{
@@ -967,9 +990,12 @@ ROM_START( am_mg24 )
ROM_LOAD( "multi_2.4_zg2.i18.bin", 0x080000, 0x80000, CRC(b504e1b8) SHA1(ffa17a2c212eb2fffb89b131868e69430cb41203) )
ROM_LOAD( "multi_2.4_zg3.i33.bin", 0x000000, 0x80000, CRC(9b66bb4d) SHA1(64035d2028a9b68164c87475a1ec9754453ad572) )
- ROM_REGION( 0x20000/*0x0400*/, "proms", 0 )
- ROM_LOAD( "n82s147a_1.bin", 0x0000, 0x0200, NO_DUMP )
- ROM_LOAD( "n82s147a_2.bin", 0x0200, 0x0200, NO_DUMP )
+ ROM_REGION( 0x4000, "proms", 0 )
+ ROM_LOAD( "m2061295.bin", 0x0000, 0x1c00, CRC(05f4a6af) SHA1(b14e9c80d3313fa5bf076d129a509a711d80f982) )
+ ROM_LOAD( "m2080196.bin", 0x2000, 0x1c00, CRC(8cf6c3a6) SHA1(6454077c2ab94093e878cbc1c0102bbb6c4bc367) )
+
+ ROM_REGION( 0x0248, "touch_m", 0 )
+ ROM_LOAD( "ds1994.bin", 0x0000, 0x0248, CRC(7f581301) SHA1(33b2652f053a5e09442ccaa078b5d245255bb415) )
ROM_END
/*