diff options
author | R. Belmont <rb6502@users.noreply.github.com> | 2016-12-31 16:15:10 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-31 16:15:10 -0500 |
commit | 551a5d37b079ce19e1e294cd666c644dfaa9d07a (patch) | |
tree | 5240cd4bdfbf6f5ac44c3914eafce8d069e15d39 | |
parent | c6a5c50f27bdad67d31a31a788b674f5d7ec0dfd (diff) | |
parent | 8bc95cca4d2306e2f64958f8f6311cf7b01251df (diff) |
Merge pull request #1899 from ajrhacker/asuka_ls157
asuka, mofflott: Add 74LS157 for MSM5205 interface (nw)
-rw-r--r-- | src/mame/drivers/asuka.cpp | 27 | ||||
-rw-r--r-- | src/mame/includes/asuka.h | 19 |
2 files changed, 29 insertions, 17 deletions
diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp index 2c1b34d6724..77144702d7a 100644 --- a/src/mame/drivers/asuka.cpp +++ b/src/mame/drivers/asuka.cpp @@ -271,16 +271,16 @@ WRITE8_MEMBER(asuka_state::sound_bankswitch_2151_w) WRITE_LINE_MEMBER(asuka_state::asuka_msm5205_vck) { - if (m_adpcm_data != -1) - { - m_msm->data_w(m_adpcm_data & 0x0f); - m_adpcm_data = -1; - } - else + if (!state) + return; + + m_adpcm_ff = !m_adpcm_ff; + m_adpcm_select->select_w(m_adpcm_ff); + + if (m_adpcm_ff) { - m_adpcm_data = memregion("ymsnd")->base()[m_adpcm_pos]; + m_adpcm_select->ba_w(m_sound_data[m_adpcm_pos]); m_adpcm_pos = (m_adpcm_pos + 1) & 0xffff; - m_msm->data_w(m_adpcm_data >> 4); } } @@ -292,6 +292,7 @@ WRITE8_MEMBER(asuka_state::asuka_msm5205_address_w) WRITE8_MEMBER(asuka_state::asuka_msm5205_start_w) { m_msm->reset_w(0); + m_adpcm_ff = false; } WRITE8_MEMBER(asuka_state::asuka_msm5205_stop_w) @@ -778,7 +779,7 @@ void asuka_state::machine_start() membank("audiobank")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x04000); save_item(NAME(m_adpcm_pos)); - save_item(NAME(m_adpcm_data)); + save_item(NAME(m_adpcm_ff)); save_item(NAME(m_current_round)); save_item(NAME(m_current_bank)); @@ -792,7 +793,7 @@ void asuka_state::machine_start() void asuka_state::machine_reset() { m_adpcm_pos = 0; - m_adpcm_data = -1; + m_adpcm_ff = false; m_current_round = 0; m_current_bank = 0; m_video_ctrl = 0; @@ -930,6 +931,9 @@ static MACHINE_CONFIG_START( asuka, asuka_state ) MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MCFG_DEVICE_ADD("adpcm_select", LS157, 0) + MCFG_74157_OUT_CB(DEVWRITE8("msm", msm5205_device, data_w)) + MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0) MCFG_TC0140SYT_MASTER_CPU("maincpu") MCFG_TC0140SYT_SLAVE_CPU("audiocpu") @@ -1064,6 +1068,9 @@ static MACHINE_CONFIG_START( mofflott, asuka_state ) MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MCFG_DEVICE_ADD("adpcm_select", LS157, 0) + MCFG_74157_OUT_CB(DEVWRITE8("msm", msm5205_device, data_w)) + MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0) MCFG_TC0140SYT_MASTER_CPU("maincpu") MCFG_TC0140SYT_SLAVE_CPU("audiocpu") diff --git a/src/mame/includes/asuka.h b/src/mame/includes/asuka.h index e2503666fc1..8dbd790738e 100644 --- a/src/mame/includes/asuka.h +++ b/src/mame/includes/asuka.h @@ -8,6 +8,7 @@ #include "machine/taitoio.h" #include "sound/msm5205.h" +#include "machine/74157.h" #include "video/pc090oj.h" #include "video/tc0100scn.h" #include "video/tc0110pcr.h" @@ -26,26 +27,28 @@ public: m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_msm(*this, "msm"), + m_adpcm_select(*this, "adpcm_select"), + m_sound_data(*this, "ymsnd"), m_pc090oj(*this, "pc090oj"), m_tc0100scn(*this, "tc0100scn"), m_tc0110pcr(*this, "tc0110pcr"), m_tc0220ioc(*this, "tc0220ioc") { } /* video-related */ - uint16_t m_video_ctrl; - uint16_t m_video_mask; + u16 m_video_ctrl; + u16 m_video_mask; /* c-chip */ int m_current_round; int m_current_bank; - uint8_t m_cval[26]; - uint8_t m_cc_port; - uint8_t m_restart_status; + u8 m_cval[26]; + u8 m_cc_port; + u8 m_restart_status; /* misc */ - int m_adpcm_pos; - int m_adpcm_data; + u16 m_adpcm_pos; + bool m_adpcm_ff; optional_shared_ptr<uint8_t> m_cadash_shared_ram; @@ -53,6 +56,8 @@ public: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; optional_device<msm5205_device> m_msm; + optional_device<ls157_device> m_adpcm_select; + optional_region_ptr<u8> m_sound_data; required_device<pc090oj_device> m_pc090oj; required_device<tc0100scn_device> m_tc0100scn; required_device<tc0110pcr_device> m_tc0110pcr; |