diff options
Diffstat (limited to 'src/mame/drivers/amaticmg.cpp')
-rw-r--r-- | src/mame/drivers/amaticmg.cpp | 36 |
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 /* |