From 16603f32b83b8c1e71a9ecd30f03121ecd5e2a3c Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 11 Nov 2017 17:01:49 +0100 Subject: mmagic: added sound samples [Robbert] --- src/mame/drivers/mmagic.cpp | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/src/mame/drivers/mmagic.cpp b/src/mame/drivers/mmagic.cpp index ccb0d8be365..b9830e4e728 100644 --- a/src/mame/drivers/mmagic.cpp +++ b/src/mame/drivers/mmagic.cpp @@ -49,6 +49,8 @@ #include "emu.h" #include "cpu/i8085/i8085.h" +#include "sound/samples.h" +#include "speaker.h" #include "screen.h" @@ -71,12 +73,14 @@ public: m_maincpu(*this, "maincpu"), m_screen(*this, "screen"), m_palette(*this, "palette"), + m_samples(*this,"samples"), m_vram(*this, "vram"), m_tiles(*this, "tiles"), m_colors(*this, "colors"), m_ball_x(0x00), m_ball_y(0x00), - m_color(0x00) + m_color(0x00), + m_audio(0x00) {} DECLARE_READ8_MEMBER(vblank_r); @@ -94,6 +98,7 @@ private: required_device m_maincpu; required_device m_screen; required_device m_palette; + required_device m_samples; required_shared_ptr m_vram; required_region_ptr m_tiles; required_region_ptr m_colors; @@ -101,6 +106,7 @@ private: uint8_t m_ball_x; uint8_t m_ball_y; uint8_t m_color; + uint8_t m_audio; }; @@ -245,10 +251,33 @@ uint32_t mmagic_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap // AUDIO EMULATION //************************************************************************** +static const char *const mmagic_sample_names[] = +{ + "*mmagic", + "4", + "3", + "5", + "2", + "2-2", + "6", + "6-2", + "1", + nullptr +}; + WRITE8_MEMBER( mmagic_state::audio_w ) { if (LOG_AUDIO) logerror("audio_w: %02x\n", data); + + data ^= 0xff; + if (data != m_audio) + { + if (BIT(data, 7)) + m_samples->start(0, m_audio & 7); + + m_audio = data; + } } @@ -262,6 +291,7 @@ void mmagic_state::machine_start() save_item(NAME(m_ball_x)); save_item(NAME(m_ball_y)); save_item(NAME(m_color)); + save_item(NAME(m_audio)); } @@ -271,7 +301,7 @@ void mmagic_state::machine_start() static MACHINE_CONFIG_START( mmagic ) // basic machine hardware - MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz) // NEC D8085A + MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz) // NEC D8085A MCFG_CPU_PROGRAM_MAP(mmagic_mem) MCFG_CPU_IO_MAP(mmagic_io) @@ -283,7 +313,12 @@ static MACHINE_CONFIG_START( mmagic ) MCFG_PALETTE_ADD_3BIT_RGB("palette") // sound hardware - // TODO: SN76477 + discrete sound + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("samples", SAMPLES, 0) + MCFG_SAMPLES_CHANNELS(1) + MCFG_SAMPLES_NAMES(mmagic_sample_names) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) + // TODO: replace samples with SN76477 + discrete sound MACHINE_CONFIG_END @@ -315,4 +350,4 @@ ROM_END //************************************************************************** // YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS -GAME( 1979, mmagic, 0, mmagic, mmagic, mmagic_state, 0, ROT270, "Nintendo", "Monkey Magic", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) +GAME( 1979, mmagic, 0, mmagic, mmagic, mmagic_state, 0, ROT270, "Nintendo", "Monkey Magic", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) -- cgit v1.2.3