From 034c26325bd6ccab0f86a022d8f2c06f7cf492e9 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Tue, 13 Nov 2012 08:48:09 +0000 Subject: [PATCH] ballbomb : added music [Robbbert] --- src/mame/audio/8080bw.c | 49 ++++++++++++++++++++++++++++++++++++++ src/mame/drivers/8080bw.c | 6 ++++- src/mame/includes/8080bw.h | 2 ++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/mame/audio/8080bw.c b/src/mame/audio/8080bw.c index c07b0c2b0aa..76b9176a6b4 100644 --- a/src/mame/audio/8080bw.c +++ b/src/mame/audio/8080bw.c @@ -181,6 +181,55 @@ WRITE8_MEMBER(_8080bw_state::cosmo_sh_port_2_w) /* */ /*******************************************************/ +/************************************* + * + * Discrete Sound + * (copied from indianbt) + * + *************************************/ + +static const discrete_dac_r1_ladder ballbomb_music_dac = + {3, {0, RES_K(47), RES_K(12)}, 0, 0, 0, CAP_U(0.1)}; + +#define BALLBOMB_MUSIC_CLK (3993.6*2*2*2) + +/* Nodes - Inputs */ +#define BALLBOMB_MUSIC_DATA NODE_01 +/* Nodes - Sounds */ +#define BALLBOMB_MUSIC NODE_11 + +DISCRETE_SOUND_START(ballbomb) + + DISCRETE_INPUT_DATA (BALLBOMB_MUSIC_DATA) + +/****************************************************************************** + * + * Music Generator + * + ******************************************************************************/ + DISCRETE_NOTE(NODE_20, 1, BALLBOMB_MUSIC_CLK, BALLBOMB_MUSIC_DATA, 255, 5, DISC_CLK_IS_FREQ) + + // Convert count to 7492 output + DISCRETE_TRANSFORM2(NODE_21, NODE_20, 2, "01>0+") + + DISCRETE_DAC_R1(NODE_22, NODE_21, DEFAULT_TTL_V_LOGIC_1, &ballbomb_music_dac) + +/****************************************************************************** + * + * Final Mixing and Output + * + ******************************************************************************/ + DISCRETE_CRFILTER(NODE_90, NODE_22, RES_K(10), CAP_U(0.1)) + + DISCRETE_OUTPUT(NODE_90, 21000) + +DISCRETE_SOUND_END + +WRITE8_MEMBER( _8080bw_state::ballbomb_01_w ) +{ + discrete_sound_w(m_discrete, space, BALLBOMB_MUSIC_DATA, data|0x80); +} + WRITE8_MEMBER(_8080bw_state::ballbomb_sh_port_1_w) { UINT8 rising_bits = data & ~m_port_1_last_extra; diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c index 9ba117fb37c..8c6c38cc08f 100644 --- a/src/mame/drivers/8080bw.c +++ b/src/mame/drivers/8080bw.c @@ -1593,7 +1593,7 @@ INPUT_PORTS_END static ADDRESS_MAP_START( ballbomb_io_map, AS_IO, 8, _8080bw_state ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(ballbomb_01_w) AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(ballbomb_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w) @@ -1628,6 +1628,10 @@ static MACHINE_CONFIG_DERIVED_CLASS( ballbomb, mw8080bw_root, _8080bw_state ) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) + + MCFG_SOUND_ADD("discrete", DISCRETE, 0) + MCFG_SOUND_CONFIG_DISCRETE(ballbomb) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h index 066e496921a..ebbe7c7785b 100644 --- a/src/mame/includes/8080bw.h +++ b/src/mame/includes/8080bw.h @@ -56,6 +56,7 @@ public: DECLARE_WRITE8_MEMBER(lrescue_sh_port_1_w); DECLARE_WRITE8_MEMBER(lrescue_sh_port_2_w); DECLARE_WRITE8_MEMBER(cosmo_sh_port_2_w); + DECLARE_WRITE8_MEMBER(ballbomb_01_w); DECLARE_WRITE8_MEMBER(ballbomb_sh_port_1_w); DECLARE_WRITE8_MEMBER(ballbomb_sh_port_2_w); DECLARE_WRITE8_MEMBER(indianbt_sh_port_1_w); @@ -120,6 +121,7 @@ public: /*----------- defined in audio/8080bw.c -----------*/ extern const samples_interface lrescue_samples_interface; +DISCRETE_SOUND_EXTERN( ballbomb ); DISCRETE_SOUND_EXTERN( indianbt ); DISCRETE_SOUND_EXTERN( polaris );