diff --git a/src/emu/sound/sn76477.c b/src/emu/sound/sn76477.c index 2fdbb996cdc..cf6fba26a11 100644 --- a/src/emu/sound/sn76477.c +++ b/src/emu/sound/sn76477.c @@ -32,7 +32,6 @@ #include "sn76477.h" - /***************************************************************************** * * Debugging @@ -79,54 +78,16 @@ * * Test Mode * - * in test mode, the interface structure - * passed in by the driver is not used. - * Instead, the values for all the inputs - * can be specified by modifing the structure - * below. Calls by the driver to the input - * setter functions are ignored. Use the - * space bar to enable/disable the chip. + * in test mode, calls by the driver to + * the input setter functions are ignored. + * Interface values can be set in device_start + * to any desired test value. + * Use the space bar to enable/disable the chip. * *****************************************************************************/ #define TEST_MODE 0 - -#if TEST_MODE - -static const sn76477_interface empty_interface = -{ - 0, /* 4 noise_clock_res */ - 0, /* 5 filter_res */ - 0, /* 6 filter_cap */ - 0, /* 7 decay_res */ - 0, /* 8 attack_decay_cap */ - 0, /* 10 attack_res */ - 0, /* 11 amplitude_res */ - 0, /* 12 feedback_res */ - 0, /* 16 vco_voltage */ - 0, /* 17 vco_cap */ - 0, /* 18 vco_res */ - 0, /* 19 pitch_voltage */ - 0, /* 20 slf_res */ - 0, /* 21 slf_cap */ - 0, /* 23 oneshot_cap */ - 0, /* 24 oneshot_res */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 0, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 0 /* 9 enable */ -}; - -#define test_interface empty_interface - -#endif - - - /***************************************************************************** * * Constants @@ -231,58 +192,17 @@ sn76477_device::sn76477_device(const machine_config &mconfig, const char *tag, d m_noise_gen_count(0), m_attack_decay_cap_voltage(0), m_rng(0), + m_mixer_a(0), + m_mixer_b(0), + m_mixer_c(0), + m_envelope_1(0), + m_envelope_2(0), m_channel(NULL), m_our_sample_rate(0), m_file(NULL) { } -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void sn76477_device::device_config_complete() -{ - // inherit a copy of the static data - const sn76477_interface *intf = reinterpret_cast(static_config()); - if (intf != NULL) - #if TEST_MODE == 0 - *static_cast(this) = *intf; - - // or initialize to defaults if none provided - else - { - m_intf_noise_clock_res = 0.0; - m_intf_noise_filter_res = 0.0; - m_intf_noise_filter_cap = 0.0; - m_intf_decay_res = 0.0; - m_intf_attack_decay_cap = 0.0; - m_intf_attack_res = 0.0; - m_intf_amplitude_res = 0.0; - m_intf_feedback_res = 0.0; - m_intf_vco_voltage = 0.0; - m_intf_vco_cap = 0.0; - m_intf_vco_res = 0.0; - m_intf_pitch_voltage = 0.0; - m_intf_slf_res = 0.0; - m_intf_slf_cap = 0.0; - m_intf_one_shot_cap = 0.0; - m_intf_one_shot_res = 0.0; - m_intf_vco = 0; - m_intf_mixer_a = 0; - m_intf_mixer_b = 0; - m_intf_mixer_c = 0; - m_intf_envelope_1 = 0; - m_intf_envelope_2 = 0; - m_intf_enable = 0; - } - #else - intf = &test_interface; - #endif -} - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -302,30 +222,12 @@ void sn76477_device::device_start() intialize_noise(); - /* set up interface values */ - _SN76477_enable_w(m_intf_enable); - _SN76477_vco_w(m_intf_vco); - _SN76477_mixer_a_w(m_intf_mixer_a); - _SN76477_mixer_b_w(m_intf_mixer_b); - _SN76477_mixer_c_w(m_intf_mixer_c); - _SN76477_envelope_1_w(m_intf_envelope_1); - _SN76477_envelope_2_w(m_intf_envelope_2); - _SN76477_one_shot_res_w(m_intf_one_shot_res); - _SN76477_one_shot_cap_w(m_intf_one_shot_cap); - _SN76477_slf_res_w(m_intf_slf_res); - _SN76477_slf_cap_w(m_intf_slf_cap); - _SN76477_vco_res_w(m_intf_vco_res); - _SN76477_vco_cap_w(m_intf_vco_cap); - _SN76477_vco_voltage_w(m_intf_vco_voltage); - _SN76477_noise_clock_res_w(m_intf_noise_clock_res); - _SN76477_noise_filter_res_w(m_intf_noise_filter_res); - _SN76477_noise_filter_cap_w(m_intf_noise_filter_cap); - _SN76477_decay_res_w(m_intf_decay_res); - _SN76477_attack_res_w(m_intf_attack_res); - _SN76477_attack_decay_cap_w(m_intf_attack_decay_cap); - _SN76477_amplitude_res_w(m_intf_amplitude_res); - _SN76477_feedback_res_w(m_intf_feedback_res); - _SN76477_pitch_voltage_w(m_intf_pitch_voltage); + // set up mixer and envelope modes, based on interface values + _SN76477_mixer_a_w(m_mixer_a); + _SN76477_mixer_b_w(m_mixer_b); + _SN76477_mixer_c_w(m_mixer_c); + _SN76477_envelope_1_w(m_envelope_1); + _SN76477_envelope_2_w(m_envelope_2); m_one_shot_cap_voltage = ONE_SHOT_CAP_VOLTAGE_MIN; m_slf_cap_voltage = SLF_CAP_VOLTAGE_MIN; diff --git a/src/emu/sound/sn76477.h b/src/emu/sound/sn76477.h index c472fc19e41..07260c66b89 100644 --- a/src/emu/sound/sn76477.h +++ b/src/emu/sound/sn76477.h @@ -41,48 +41,112 @@ #include "machine/rescap.h" - /***************************************************************************** * * Interface definition * *****************************************************************************/ -struct sn76477_interface -{ - double m_intf_noise_clock_res; - double m_intf_noise_filter_res; - double m_intf_noise_filter_cap; - double m_intf_decay_res; - double m_intf_attack_decay_cap; - double m_intf_attack_res; - double m_intf_amplitude_res; - double m_intf_feedback_res; - double m_intf_vco_voltage; - double m_intf_vco_cap; - double m_intf_vco_res; - double m_intf_pitch_voltage; - double m_intf_slf_res; - double m_intf_slf_cap; - double m_intf_one_shot_cap; - double m_intf_one_shot_res; - UINT32 m_intf_vco; - UINT32 m_intf_mixer_a; - UINT32 m_intf_mixer_b; - UINT32 m_intf_mixer_c; - UINT32 m_intf_envelope_1; - UINT32 m_intf_envelope_2; - UINT32 m_intf_enable; -}; + +#define MCFG_SN76477_NOISE_PARAMS(_clock_res, _filter_res, _filter_cap) \ + sn76477_device::set_noise_params(*device, _clock_res, _filter_res, _filter_cap); + +#define MCFG_SN76477_DECAY_RES(_decay_res) \ + sn76477_device::set_decay_res(*device, _decay_res); + +#define MCFG_SN76477_ATTACK_PARAMS(_decay_cap, _res) \ + sn76477_device::set_attack_params(*device, _decay_cap, _res); + +#define MCFG_SN76477_AMP_RES(_amp_res) \ + sn76477_device::set_amp_res(*device, _amp_res); + +#define MCFG_SN76477_FEEDBACK_RES(_feedback_res) \ + sn76477_device::set_feedack_res(*device, _feedback_res); + +#define MCFG_SN76477_VCO_PARAMS(_volt, _cap, _res) \ + sn76477_device::set_vco_params(*device, _volt, _cap, _res); + +#define MCFG_SN76477_PITCH_VOLTAGE(_volt) \ + sn76477_device::set_pitch_voltage(*device, _volt); + +#define MCFG_SN76477_SLF_PARAMS(_cap, _res) \ + sn76477_device::set_slf_params(*device, _cap, _res); + +#define MCFG_SN76477_ONESHOT_PARAMS(_cap, _res) \ + sn76477_device::set_oneshot_params(*device, _cap, _res); + +#define MCFG_SN76477_VCO_MODE(_mode) \ + sn76477_device::set_vco_mode(*device, _mode); + +#define MCFG_SN76477_MIXER_PARAMS(_a, _b, _c) \ + sn76477_device::set_mixer_params(*device, _a, _b, _c); + +#define MCFG_SN76477_ENVELOPE_PARAMS(_env1, _env2) \ + sn76477_device::set_envelope_params(*device, _env1, _env2); + +#define MCFG_SN76477_ENABLE(_enable) \ + sn76477_device::set_enable(*device, _enable); class sn76477_device : public device_t, - public device_sound_interface, - public sn76477_interface + public device_sound_interface { public: sn76477_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); ~sn76477_device() {} + static void set_noise_params(device_t &device, double clock_res, double filter_res, double filter_cap) + { + sn76477_device &dev = downcast(device); + dev.m_noise_clock_res = clock_res; + dev.m_noise_filter_res = filter_res; + dev.m_noise_filter_cap = filter_cap; + } + static void set_decay_res(device_t &device, double decay_res) { downcast(device).m_decay_res = decay_res; } + static void set_attack_params(device_t &device, double decay_cap, double res) + { + sn76477_device &dev = downcast(device); + dev.m_attack_decay_cap = decay_cap; + dev.m_attack_res = res; + } + static void set_amp_res(device_t &device, double amp_res) { downcast(device).m_amplitude_res = amp_res; } + static void set_feedack_res(device_t &device, double feedback_res) { downcast(device).m_feedback_res = feedback_res; } + static void set_vco_params(device_t &device, double volt, double cap, double res) + { + sn76477_device &dev = downcast(device); + dev.m_vco_voltage = volt; + dev.m_vco_cap = cap; + dev.m_vco_res = res; + } + static void set_pitch_voltage(device_t &device, double volt) { downcast(device).m_pitch_voltage = volt; } + static void set_slf_params(device_t &device, double cap, double res) + { + sn76477_device &dev = downcast(device); + dev.m_slf_cap = cap; + dev.m_slf_res = res; + } + static void set_oneshot_params(device_t &device, double cap, double res) + { + sn76477_device &dev = downcast(device); + dev.m_one_shot_cap = cap; + dev.m_one_shot_res = res; + } + static void set_vco_mode(device_t &device, UINT32 mode) { downcast(device).m_vco_mode = mode; } + static void set_mixer_params(device_t &device, UINT32 a, UINT32 b, UINT32 c) + { + sn76477_device &dev = downcast(device); + dev.m_mixer_a = a; + dev.m_mixer_b = b; + dev.m_mixer_c = c; + } + static void set_envelope_params(device_t &device, UINT32 env1, UINT32 env2) + { + sn76477_device &dev = downcast(device); + dev.m_envelope_1 = env1; + dev.m_envelope_2 = env2; + } + static void set_enable(device_t &device, UINT32 enable) { downcast(device).m_enable = enable; } + + /* these functions take 0 or 1 as a logic input */ WRITE_LINE_MEMBER( enable_w ); /* active LO, 0 = enabled, 1 = disabled */ WRITE_LINE_MEMBER( mixer_a_w ); @@ -125,7 +189,6 @@ public: protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_stop(); @@ -188,6 +251,13 @@ private: UINT32 m_rng; /* current value of the random number generator */ + // configured by the drivers and used to setup m_mixer_mode & m_envelope_mode at start + UINT32 m_mixer_a; + UINT32 m_mixer_b; + UINT32 m_mixer_c; + UINT32 m_envelope_1; + UINT32 m_envelope_2; + /* others */ sound_stream *m_channel; /* returned by stream_create() */ int m_our_sample_rate; /* from machine.sample_rate() */ diff --git a/src/mame/audio/8080bw.c b/src/mame/audio/8080bw.c index 44eefaf76ef..46b288009c4 100644 --- a/src/mame/audio/8080bw.c +++ b/src/mame/audio/8080bw.c @@ -761,32 +761,6 @@ WRITE8_MEMBER(_8080bw_state::polaris_sh_port_3_w) #define SCHASER_4V SCHASER_HSYNC /2 /4 #define SCHASER_8V SCHASER_HSYNC /2 /8 -const sn76477_interface schaser_sn76477_interface = -{ - RES_K( 47), /* 4 noise_res */ - RES_K(330), /* 5 filter_res */ - CAP_P(470), /* 6 filter_cap */ - RES_M(2.2), /* 7 decay_res */ - CAP_U(1.0), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - 0, /* 11 amplitude_res (variable) */ - RES_K(33), /* 12 feedback_res */ - 0, /* 16 vco_voltage */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(39), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(120), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - CAP_U(0.1), /* 23 oneshot_cap */ - RES_K(220), /* 24 oneshot_res */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; /* Nodes - Inputs */ #define SCHASER_DOT_EN NODE_01 @@ -1068,33 +1042,6 @@ WRITE8_MEMBER(_8080bw_state::rollingc_sh_port_w) /* Correct samples not available */ /*****************************************/ -const sn76477_interface lupin3_sn76477_interface = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - RES_K(100), /* 10 attack_res */ - RES_K(56), /* 11 amplitude_res */ - RES_K(10), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(8.2), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(120), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - const char *const lupin3_sample_names[] = { "*lupin3", diff --git a/src/mame/audio/astrof.c b/src/mame/audio/astrof.c index c1deab2c018..6fffe476509 100644 --- a/src/mame/audio/astrof.c +++ b/src/mame/audio/astrof.c @@ -192,37 +192,21 @@ WRITE8_MEMBER(astrof_state::tomahawk_audio_w) } -static const sn76477_interface tomahawk_sn76477_interface = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - 0, /* 10 attack_res (N/C) */ - RES_K(47), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.033), /* 17 vco_cap */ - RES_K(33), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(47), /* 20 slf_res */ - CAP_U(2.2), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 0, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - MACHINE_CONFIG_FRAGMENT( tomahawk_audio ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(tomahawk_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res N/C + MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res: N/C + MCFG_SN76477_AMP_RES(RES_K(47)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.033), RES_K(33)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(2.2), RES_K(47)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/audio/crbaloon.c b/src/mame/audio/crbaloon.c index 8f59ac3d9ce..69728df122a 100644 --- a/src/mame/audio/crbaloon.c +++ b/src/mame/audio/crbaloon.c @@ -135,42 +135,24 @@ static DISCRETE_SOUND_START(crbaloon) DISCRETE_SOUND_END - -static const sn76477_interface crbaloon_sn76477_interface = -{ - RES_K( 47), /* 4 noise_res */ - RES_K(330), /* 5 filter_res */ - CAP_P(470), /* 6 filter_cap */ - RES_K(220), /* 7 decay_res */ - CAP_U(1.0), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_M( 1), /* 11 amplitude_res */ - RES_K(200), /* 12 feedback_res */ - 5.0, /* 16 vco_voltage */ - CAP_P(470), /* 17 vco_cap */ - RES_K(330), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K( 20), /* 20 slf_res (variable) */ - CAP_P(420), /* 21 slf_cap */ - CAP_U(1.0), /* 23 oneshot_cap */ - RES_K( 47), /* 24 oneshot_res */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B (variable) */ - 1, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 0 /* 9 enable (variable) */ -}; - - - MACHINE_CONFIG_FRAGMENT( crbaloon_audio ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(crbaloon_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(470)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(220)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(1.0), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_M(1)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(200)) // feedback_res + MCFG_SN76477_VCO_PARAMS(5.0, CAP_P(470), RES_K(330)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_P(420), RES_K(20)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.0), RES_K(47)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 1) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(0) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) MCFG_SOUND_ADD("discrete", DISCRETE, 0) diff --git a/src/mame/audio/mw8080bw.c b/src/mame/audio/mw8080bw.c index 3326fd66e31..cef4603eed9 100644 --- a/src/mame/audio/mw8080bw.c +++ b/src/mame/audio/mw8080bw.c @@ -2708,34 +2708,6 @@ WRITE8_MEMBER(mw8080bw_state::dogpatch_audio_w) * Apr 2007, D.R. *************************************/ -static const sn76477_interface spcenctr_sn76477_interface = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - RES_K(100), /* 10 attack_res */ - RES_K(56), /* 11 amplitude_res */ - RES_K(10), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.047), /* 17 vco_cap */ - RES_K(56), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(150), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - /* nodes - inputs */ #define SPCENCTR_ENEMY_SHIP_SHOT_EN NODE_01 #define SPCENCTR_PLAYER_SHOT_EN NODE_02 @@ -3210,7 +3182,19 @@ MACHINE_CONFIG_FRAGMENT( spcenctr_audio ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(spcenctr_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.047), RES_K(56)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(150)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MCFG_SOUND_ADD("discrete", DISCRETE, 0) @@ -3508,35 +3492,6 @@ WRITE8_MEMBER(mw8080bw_state::bowler_audio_6_w) * *************************************/ -static const sn76477_interface invaders_sn76477_interface = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - RES_K(100), /* 10 attack_res */ - RES_K(56), /* 11 amplitude_res */ - RES_K(10), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(8.2), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(120), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - - static const char *const invaders_sample_names[] = { "*invaders", @@ -3560,7 +3515,19 @@ MACHINE_CONFIG_FRAGMENT( invaders_samples_audio ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(invaders_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_SOUND_ADD("samples", SAMPLES, 0) @@ -4128,7 +4095,19 @@ MACHINE_CONFIG_FRAGMENT( invaders_audio ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(invaders_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_SOUND_ADD("discrete", DISCRETE, 0) @@ -4564,62 +4543,6 @@ WRITE8_MEMBER(mw8080bw_state::blueshrk_audio_w) * *************************************/ -static const sn76477_interface invad2ct_p1_sn76477_interface = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - RES_K(100), /* 10 attack_res */ - RES_K(56), /* 11 amplitude_res */ - RES_K(10), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(8.2), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(120), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - -static const sn76477_interface invad2ct_p2_sn76477_interface = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - RES_K(100), /* 10 attack_res */ - RES_K(56), /* 11 amplitude_res */ - RES_K(10), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.047), /* 17 vco_cap */ - RES_K(39), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(120), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - static const discrete_op_amp_1sht_info invad2ct_invader_hit_1sht = { DISC_OP_AMP_1SHT_1 | DISC_OP_AMP_IS_NORTON, @@ -4757,11 +4680,35 @@ MACHINE_CONFIG_FRAGMENT( invad2ct_audio ) MCFG_SOUND_ROUTE(1, "spk2", 0.5) MCFG_SOUND_ADD("sn1", SN76477, 0) - MCFG_SOUND_CONFIG(invad2ct_p1_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "spk1", 0.3) MCFG_SOUND_ADD("sn2", SN76477, 0) - MCFG_SOUND_CONFIG(invad2ct_p2_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.047), RES_K(39)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "spk2", 0.3) MACHINE_CONFIG_END diff --git a/src/mame/audio/n8080.c b/src/mame/audio/n8080.c index a4d175a6b00..c1ae5765161 100644 --- a/src/mame/audio/n8080.c +++ b/src/mame/audio/n8080.c @@ -10,61 +10,6 @@ static const double ATTACK_RATE = 10e-6 * 500; static const double DECAY_RATE = 10e-6 * 16000; -static const sn76477_interface sheriff_sn76477_interface = -{ - RES_K(36) , /* 04 */ - RES_K(100) , /* 05 */ - CAP_N(1) , /* 06 */ - RES_K(620) , /* 07 */ - CAP_U(1) , /* 08 */ - RES_K(20) , /* 10 */ - RES_K(150) , /* 11 */ - RES_K(47) , /* 12 */ - 0 , /* 16 */ - CAP_N(1) , /* 17 */ - RES_M(1.5) , /* 18 */ - 0 , /* 19 */ - RES_M(1.5) , /* 20 */ - CAP_N(47) , /* 21 */ - CAP_N(47) , /* 23 */ - RES_K(560) , /* 24 */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable */ -}; - - -static const sn76477_interface spacefev_sn76477_interface = -{ - RES_K(36) , /* 04 */ - RES_K(150) , /* 05 */ - CAP_N(1) , /* 06 */ - RES_M(1) , /* 07 */ - CAP_U(1) , /* 08 */ - RES_K(20) , /* 10 */ - RES_K(150) , /* 11 */ - RES_K(47) , /* 12 */ - 0 , /* 16 */ - CAP_N(1) , /* 17 */ - RES_M(1.5) , /* 18 */ - 0 , /* 19 */ - RES_M(1) , /* 20 */ - CAP_N(47) , /* 21 */ - CAP_N(47) , /* 23 */ - RES_K(820) , /* 24 */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable */ -}; - void n8080_state::spacefev_update_SN76477_status() { @@ -564,7 +509,19 @@ MACHINE_CONFIG_FRAGMENT( spacefev_sound ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(spacefev_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(36), RES_K(150), CAP_N(1)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_M(1)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(1.0), RES_K(20)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_N(1), RES_M(1.5)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_N(47), RES_M(1)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_N(47), RES_K(820)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) MACHINE_CONFIG_END @@ -586,7 +543,19 @@ MACHINE_CONFIG_FRAGMENT( sheriff_sound ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(sheriff_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(36), RES_K(100), CAP_N(1)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(620)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(1.0), RES_K(20)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_N(1), RES_M(1.5)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_N(47), RES_M(1.5)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_N(47), RES_K(560)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35) MACHINE_CONFIG_END diff --git a/src/mame/audio/snk6502.c b/src/mame/audio/snk6502.c index 57af3888aca..c43e9aa4911 100644 --- a/src/mame/audio/snk6502.c +++ b/src/mame/audio/snk6502.c @@ -92,212 +92,6 @@ const char *const fantasy_sample_names[] = }; -const sn76477_interface sasuke_sn76477_intf_1 = -{ - RES_K(470), /* 4 noise_res */ - RES_K(150), /* 5 filter_res */ - CAP_P(4700), /* 6 filter_cap */ - RES_K(22), /* 7 decay_res */ - CAP_U(10), /* 8 attack_decay_cap */ - RES_K(10), /* 10 attack_res */ - RES_K(100), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0 /* NC */, /* 16 vco_voltage */ - 0 /* NC */, /* 17 vco_cap */ - 0 /* NC */, /* 18 vco_res */ - 0 /* NC */, /* 19 pitch_voltage */ - RES_K(10), /* 20 slf_res */ - 0 /* NC */, /* 21 slf_cap */ - CAP_U(2.2), /* 23 oneshot_cap */ - RES_K(100), /* 24 oneshot_res */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 1, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ - - // ic48 GND: 2,22,26,27,28 +5V: 1,15,25 -}; - -const sn76477_interface sasuke_sn76477_intf_2 = -{ - RES_K(340), /* 4 noise_res */ - RES_K(47), /* 5 filter_res */ - CAP_P(100), /* 6 filter_cap */ - RES_K(470), /* 7 decay_res */ - CAP_U(4.7), /* 8 attack_decay_cap */ - RES_K(10), /* 10 attack_res */ - RES_K(100), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0 /* NC */, /* 16 vco_voltage */ - CAP_P(220), /* 17 vco_cap */ - RES_K(1000), /* 18 vco_res */ - 0 /* NC */, /* 19 pitch_voltage */ - RES_K(220), /* 20 slf_res */ - 0 /* NC */, /* 21 slf_cap */ - CAP_U(22), /* 23 oneshot_cap */ - RES_K(47), /* 24 oneshot_res */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 1, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 1, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ - - // ic51 GND: 2,26,27 +5V: 1,15,22,25,28 -}; - -const sn76477_interface sasuke_sn76477_intf_3 = -{ - RES_K(330), /* 4 noise_res */ - RES_K(47), /* 5 filter_res */ - CAP_P(100), /* 6 filter_cap */ - RES_K(1), /* 7 decay_res */ - 0 /* NC */, /* 8 attack_decay_cap */ - RES_K(1), /* 10 attack_res */ - RES_K(100), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0 /* NC */, /* 16 vco_voltage */ - CAP_P(1000), /* 17 vco_cap */ - RES_K(1000), /* 18 vco_res */ - 0 /* NC */, /* 19 pitch_voltage */ - RES_K(10), /* 20 slf_res */ - CAP_U(1), /* 21 slf_cap */ - CAP_U(2.2), /* 23 oneshot_cap */ - RES_K(150), /* 24 oneshot_res */ - 0, /* 22 vco */ - 1, /* 26 mixer A */ - 1, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ - - // ic52 GND: 2,22,27,28 +5V: 1,15,25,26 -}; - -const sn76477_interface satansat_sn76477_intf = -{ - RES_K(470), /* 4 noise_res */ - RES_M(1.5), /* 5 filter_res */ - CAP_P(220), /* 6 filter_cap */ - 0, /* 7 decay_res */ - 0, /* 8 attack_decay_cap */ - 0, /* 10 attack_res */ - RES_K(47), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage */ - 0, /* 17 vco_cap */ - 0, /* 18 vco_res */ - 0, /* 19 pitch_voltage */ - 0, /* 20 slf_res */ - 0, /* 21 slf_cap */ - 0, /* 23 oneshot_cap */ - 0, /* 24 oneshot_res */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 1, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 1, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ - - // ??? GND: 2,26,27 +5V: 15,25 -}; - -const sn76477_interface vanguard_sn76477_intf_1 = -{ - RES_K(470), /* 4 noise_res */ - RES_M(1.5), /* 5 filter_res */ - CAP_P(220), /* 6 filter_cap */ - 0, /* 7 decay_res */ - 0, /* 8 attack_decay_cap */ - 0, /* 10 attack_res */ - RES_K(47), /* 11 amplitude_res */ - RES_K(4.7), /* 12 feedback_res */ - 0, /* 16 vco_voltage */ - 0, /* 17 vco_cap */ - 0, /* 18 vco_res */ - 0, /* 19 pitch_voltage */ - 0, /* 20 slf_res */ - 0, /* 21 slf_cap */ - 0, /* 23 oneshot_cap */ - 0, /* 24 oneshot_res */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 1, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 1, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ - - // SHOT A GND: 2,9,26,27 +5V: 15,25 -}; - -const sn76477_interface vanguard_sn76477_intf_2 = -{ - RES_K(10), /* 4 noise_res */ - RES_K(30), /* 5 filter_res */ - 0, /* 6 filter_cap */ - 0, /* 7 decay_res */ - 0, /* 8 attack_decay_cap */ - 0, /* 10 attack_res */ - RES_K(47), /* 11 amplitude_res */ - RES_K(4.7), /* 12 feedback_res */ - 0, /* 16 vco_voltage */ - 0, /* 17 vco_cap */ - 0, /* 18 vco_res */ - 0, /* 19 pitch_voltage */ - 0, /* 20 slf_res */ - 0, /* 21 slf_cap */ - 0, /* 23 oneshot_cap */ - 0, /* 24 oneshot_res */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 1, /* 25 mixer B */ - 0, /* 27 mixer C */ - 0, /* 1 envelope 1 */ - 1, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ - - // SHOT B GND: 1,2,26,27 +5V: 15,25,28 -}; - -const sn76477_interface fantasy_sn76477_intf = -{ - RES_K(470), /* 4 noise_res */ - RES_M(1.5), /* 5 filter_res */ - CAP_P(220), /* 6 filter_cap */ - 0, /* 7 decay_res */ - 0, /* 8 attack_decay_cap */ - 0, /* 10 attack_res */ - RES_K(470), /* 11 amplitude_res */ - RES_K(4.7), /* 12 feedback_res */ - 0, /* 16 vco_voltage */ - 0, /* 17 vco_cap */ - 0, /* 18 vco_res */ - 0, /* 19 pitch_voltage */ - 0, /* 20 slf_res */ - 0, /* 21 slf_cap */ - 0, /* 23 oneshot_cap */ - 0, /* 24 oneshot_res */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 1, /* 25 mixer B */ - 0, /* 27 mixer C */ - /* schematic does not show pin 1 grounded, but it must be. */ - /* otherwise it is using the VCO for the envelope, but the VCO is not hooked up */ - 0, /* 1 envelope 1 */ - 1, /* 28 envelope 2 */ - 0 /* 9 enable (variable) */ - - // BOMB GND: 2,9,26,27 +5V: 15,25 -}; - - /************************************************************************ * fantasy Sound System Analog emulation * July 2008, D. Renaud diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c index 70ed8cf7a28..262741d7b4d 100644 --- a/src/mame/drivers/8080bw.c +++ b/src/mame/drivers/8080bw.c @@ -1389,7 +1389,19 @@ static MACHINE_CONFIG_DERIVED_CLASS( schaser, mw8080bw_root, _8080bw_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(schaser_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(470)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_M(2.2)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(1.0), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(0) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(33)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(39)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.1), RES_K(220)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE_EX(0, "discrete", 1.0, 0) MCFG_SOUND_ADD("discrete", DISCRETE, 0) @@ -1662,7 +1674,19 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3, mw8080bw_root, _8080bw_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(lupin3_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_SOUND_ADD("samples", SAMPLES, 0) @@ -1694,7 +1718,19 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3a, mw8080bw_root, _8080bw_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(lupin3_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_SOUND_ADD("samples", SAMPLES, 0) diff --git a/src/mame/drivers/dai3wksi.c b/src/mame/drivers/dai3wksi.c index 0b3f8e4181d..b642736505a 100644 --- a/src/mame/drivers/dai3wksi.c +++ b/src/mame/drivers/dai3wksi.c @@ -321,184 +321,9 @@ WRITE8_MEMBER(dai3wksi_state::dai3wksi_audio_3_w) m_ic81->vco_w((~data >> 3) & 0x01); /* player shoot vco control */ } - -/* Invader Hit */ -static const sn76477_interface dai3wksi_sn76477_ic76 = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - RES_K(4.7), /* 7 decay_res */ - CAP_U(0.1), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_K(150), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage (variable) */ - CAP_U(0.022), /* 17 vco_cap */ - RES_K(33), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - 0, /* 20 slf_res (N/C) */ - 0, /* 21 slf_cap (N/C) */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 0, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 0, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 0 /* 9 enable */ -}; - - -/* Ship Movement */ -static const sn76477_interface dai3wksi_sn76477_ic77 = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - RES_K(4.7), /* 7 decay_res */ - CAP_U(0.1), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_K(150), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - 0, /* 17 vco_cap (N/C) */ - 0, /* 18 vco_res (N/C) */ - 0, /* 19 pitch_voltage */ - RES_K(200), /* 20 slf_res */ - CAP_U(0.0022), /* 21 slf_cap */ - CAP_U(10), /* 23 oneshot_cap */ - RES_K(4.7), /* 24 oneshot_res */ - 5, /* 22 vco */ - 5, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 5, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - -/* Danger */ -static const sn76477_interface dai3wksi_sn76477_ic78 = -{ - RES_K(47), /* 4 noise_res */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - RES_K(200), /* 7 decay_res */ - CAP_U(0.1), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_K(150), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.47), /* 17 vco_cap */ - RES_K(75), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(47), /* 20 slf_res */ - CAP_N(1), /* 21 slf_cap */ - CAP_U(10), /* 23 oneshot_cap */ - RES_K(22), /* 24 oneshot_res */ - 5, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 5, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - -/* Invader Marching Noise */ -static const sn76477_interface dai3wksi_sn76477_ic79 = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - RES_K(56), /* 7 decay_res */ - CAP_U(0.1), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_K(150), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.01), /* 17 vco_cap */ - RES_K(100), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(150), /* 20 slf_res */ - CAP_N(1), /* 21 slf_cap */ - CAP_U(10), /* 23 oneshot_cap */ - RES_K(22), /* 24 oneshot_res */ - 5, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 5, /* 1 envelope 1 (variable)*/ - 5, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - -/* Big Planet Explosion */ -static const sn76477_interface dai3wksi_sn76477_ic80 = -{ - RES_K(47), /* 4 noise_res */ - RES_K(330), /* 5 filter_res */ - CAP_P(470), /* 6 filter_cap */ - RES_M(2), /* 7 decay_res */ - CAP_U(1), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_K(150), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - 0, /* 17 vco_cap (N/C) */ - 0, /* 18 vco_res (N/C) */ - 5.0, /* 19 pitch_voltage */ - 0, /* 20 slf_res (N/C) */ - 0, /* 21 slf_cap (N/C) */ - CAP_U(10), /* 23 oneshot_cap */ - RES_K(55), /* 24 oneshot_res */ - 5, /* 22 vco */ - 0, /* 26 mixer A */ - 5, /* 25 mixer B */ - 0, /* 27 mixer C */ - 5, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - -/* Plane Shoot noise */ -static const sn76477_interface dai3wksi_sn76477_ic81 = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - RES_K(200), /* 7 decay_res */ - CAP_U(10), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_K(150), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 2.5, /* 16 vco_voltage */ - CAP_U(0.01), /* 17 vco_cap */ - RES_K(100), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(100), /* 20 slf_res */ - CAP_N(0.47), /* 21 slf_cap */ - CAP_U(10), /* 23 oneshot_cap */ - RES_K(6.8), /* 24 oneshot_res */ - 0, /* 22 vco (variable) */ - 0, /* 26 mixer A */ - 5, /* 25 mixer B */ - 5, /* 27 mixer C */ - 5, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - #endif - /************************************* * * Memory handlers @@ -609,28 +434,106 @@ static MACHINE_CONFIG_START( dai3wksi, dai3wksi_state ) MCFG_SAMPLES_NAMES(dai3wksi_sample_names) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) #else + // Invader Hit MCFG_SOUND_ADD("ic76", SN76477, 0) - MCFG_SOUND_CONFIG(dai3wksi_sn76477_ic76) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(RES_K(4.7)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(0.1), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.022), RES_K(33)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(0, 0) // slf caps + res: N/C + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(0) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) + // Ship Movement MCFG_SOUND_ADD("ic77", SN76477, 0) - MCFG_SOUND_CONFIG(dai3wksi_sn76477_ic77) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(RES_K(4.7)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(0.1), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, 0, 0) // VCO volt + cap + res: N/C + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.0022), RES_K(200)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(10), RES_K(4.7)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(5) // VCO mode + MCFG_SN76477_MIXER_PARAMS(5, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(5, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) + // Danger MCFG_SOUND_ADD("ic78", SN76477, 0) - MCFG_SOUND_CONFIG(dai3wksi_sn76477_ic78) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), 0, 0) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(200)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(0.1), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.47), RES_K(75)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_N(1), RES_K(47)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(10), RES_K(22)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(5) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(5, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) + // Invader Marching Noise MCFG_SOUND_ADD("ic79", SN76477, 0) - MCFG_SOUND_CONFIG(dai3wksi_sn76477_ic79) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(RES_K(56)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(0.1), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.01), RES_K(100)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_N(1), RES_K(150)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(10), RES_K(22)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(5) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(5, 5) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) + // Big Planet Explosion MCFG_SOUND_ADD("ic80", SN76477, 0) - MCFG_SOUND_CONFIG(dai3wksi_sn76477_ic80) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(470)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_M(2)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(1.0), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, 0, 0) // VCO volt + cap + res: N/C + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(0, 0) // slf caps + res: N/C + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(10), RES_K(55)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(5) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 5, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(5, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) + // Plane Shoot noise MCFG_SOUND_ADD("ic81", SN76477, 0) - MCFG_SOUND_CONFIG(dai3wksi_sn76477_ic81) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(RES_K(200)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(10), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(150)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2.5, CAP_U(0.01), RES_K(100)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_N(0.47), RES_K(100)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(10), RES_K(6.8)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 5, 5) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(5, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) #endif MACHINE_CONFIG_END diff --git a/src/mame/drivers/gp_1.c b/src/mame/drivers/gp_1.c index dddde6c9a66..8a1073a92d3 100644 --- a/src/mame/drivers/gp_1.c +++ b/src/mame/drivers/gp_1.c @@ -442,37 +442,22 @@ static MACHINE_CONFIG_START( gp_1, gp_1_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("gp1", gp_1_state, zero_timer, attotime::from_hz(120)) // mains freq*2 MACHINE_CONFIG_END -static const sn76477_interface sn76477_intf = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - 0, /* 10 attack_res (nc) */ - RES_K(220), /* 11 amplitude_res */ - RES_K(47), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(56), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(220), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 0, /* 22 vco (nc) */ - 0, /* 26 mixer A (nc) */ - 0, /* 25 mixer B (nc) */ - 0, /* 27 mixer C (nc) */ - 0, /* 1 envelope 1 (nc) */ - 1, /* 28 envelope 2 */ - 1 /* 9 enable (variable) 1=off */ -}; - static MACHINE_CONFIG_DERIVED( gp_1s, gp_1 ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(sn76477_intf) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res: N/C + MCFG_SN76477_AMP_RES(RES_K(220)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(56)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(220)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(0) // VCO mode: N/C + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C: N/C + MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_REMOVE("ppi") diff --git a/src/mame/drivers/laserbat.c b/src/mame/drivers/laserbat.c index ce63e464965..4fa1fdbbc4d 100644 --- a/src/mame/drivers/laserbat.c +++ b/src/mame/drivers/laserbat.c @@ -530,34 +530,6 @@ UINT32 laserbat_state::screen_update_laserbat(screen_device &screen, bitmap_ind1 return 0; } -/* Laser Battle sound **********************************/ - -static const sn76477_interface laserbat_sn76477_interface = -{ - RES_K(47), /* 4 noise_res R21 47K */ - 0, /* 5 filter_res (variable) */ - CAP_P(1000), /* 6 filter_cap C21 1000 pF */ - 0, /* 7 decay_res */ - 0, /* 8 attack_decay_cap */ - 0, /* 10 attack_res */ - RES_K(47), /* 11 amplitude_res R26 47K */ - 0, /* 12 feedback_res (variable) */ - 5.0 * RES_K(2.2) / (RES_K(2.2) + RES_K(4.7)), /* 16 vco_voltage */ - 0, /* 17 vco_cap */ - 0, /* 18 vco_res (variable) */ - 5.0, /* 19 pitch_voltage */ - 0, /* 20 slf_res (variable) */ - CAP_U(4.7), /* 21 slf_cap C24 4.7 uF */ - 0, /* 23 oneshot_cap */ - 0, /* 24 oneshot_res */ - 0, /* 22 vco (variable) */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B (variable) */ - 0, /* 27 mixer C */ - 0, /* 1 envelope 1 */ - 1, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; /* Cat'N Mouse sound ***********************************/ @@ -683,7 +655,6 @@ static MACHINE_CONFIG_START( laserbat, laserbat_state ) MCFG_CPU_IO_MAP(laserbat_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", laserbat_state, laserbat_interrupt) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -712,7 +683,19 @@ static MACHINE_CONFIG_START( laserbat, laserbat_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) // output not connected - MCFG_SOUND_CONFIG(laserbat_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), 0, CAP_P(1000)) // noise + filter: R21 47K + N/C + C21 1000 pF + MCFG_SN76477_DECAY_RES(0) // decay_res + MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(47)) // amplitude_res: R26 47K + MCFG_SN76477_FEEDBACK_RES(RES_K(200)) // feedback_res + MCFG_SN76477_VCO_PARAMS(5.0 * RES_K(2.2) / (RES_K(2.2) + RES_K(4.7)), 0, 0) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(4.7), 0) // slf caps + res: C24 4.7 uF + (variable) + MCFG_SN76477_ONESHOT_PARAMS(0,0) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_TMS3615_ADD("tms1", 4000000/8/2) // 250 kHz, from second chip's clock out MCFG_SOUND_ROUTE(TMS3615_FOOTAGE_8, "mono", 1.0) diff --git a/src/mame/drivers/malzak.c b/src/mame/drivers/malzak.c index 1b1e54c5a2a..818229bd540 100644 --- a/src/mame/drivers/malzak.c +++ b/src/mame/drivers/malzak.c @@ -271,33 +271,6 @@ PALETTE_INIT_MEMBER(malzak_state, malzak) } -static const sn76477_interface sn76477_intf = -{ - 0, /* N/C */ /* 4 noise_res */ - 0, /* N/C */ /* 5 filter_res */ - 0, /* N/C */ /* 6 filter_cap */ - 0, /* N/C */ /* 7 decay_res */ - 0, /* N/C */ /* 8 attack_decay_cap */ - RES_K(100), /* 10 attack_res */ - RES_K(56), /* 11 amplitude_res */ - RES_K(10), /* 12 feedback_res */ - 0, /* N/C */ /* 16 vco_voltage */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(8.2), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(120), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* N/C */ /* 23 oneshot_cap */ - 0, /* N/C */ /* 24 oneshot_res */ - 0, /* 22 vco */ - 1, /* 26 mixer A */ - 1, /* 25 mixer B */ - 1, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 1, /* 28 envelope 2 */ - 1 /* 9 enable */ -}; - READ8_MEMBER(malzak_state::videoram_r) { return m_videoram[offset]; @@ -359,11 +332,35 @@ static MACHINE_CONFIG_START( malzak, malzak_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("sn1", SN76477, 0) - MCFG_SOUND_CONFIG(sn76477_intf) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(1, 1, 1) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("sn2", SN76477, 0) - MCFG_SOUND_CONFIG(sn76477_intf) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(1, 1, 1) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END diff --git a/src/mame/drivers/rotaryf.c b/src/mame/drivers/rotaryf.c index fb8651925ef..9c175ad0720 100644 --- a/src/mame/drivers/rotaryf.c +++ b/src/mame/drivers/rotaryf.c @@ -41,34 +41,6 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(rotaryf_interrupt); }; -static const sn76477_interface rotaryf_sn76477_interface = -{ - 0, /* 4 noise_res (N/C) */ - 0, /* 5 filter_res (N/C) */ - 0, /* 6 filter_cap (N/C) */ - 0, /* 7 decay_res (N/C) */ - 0, /* 8 attack_decay_cap (N/C) */ - RES_K(100), /* 10 attack_res */ - RES_K(56), /* 11 amplitude_res */ - RES_K(10), /* 12 feedback_res */ - 0, /* 16 vco_voltage (N/C) */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(8.2), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(120), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - 0, /* 23 oneshot_cap (N/C) */ - 0, /* 24 oneshot_res (N/C) */ - 1, /* 22 vco */ - 0, /* 26 mixer A */ - 0, /* 25 mixer B */ - 0, /* 27 mixer C */ - 1, /* 1 envelope 1 */ - 0, /* 28 envelope 2 */ - 1 /* 9 enable (variable) */ -}; - - static const char *const rotaryf_sample_names[] = { @@ -269,9 +241,23 @@ static MACHINE_CONFIG_START( rotaryf, rotaryf_state ) MCFG_SCREEN_UPDATE_DRIVER(rotaryf_state, screen_update_rotaryf) MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(rotaryf_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(0, 0, 0) // noise + filter: N/C + MCFG_SN76477_DECAY_RES(0) // decay_res: N/C + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(100)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(56)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(8.2)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(120)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res: N/C + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) + MCFG_SOUND_ADD("samples", SAMPLES, 0) MCFG_SAMPLES_CHANNELS(6) MCFG_SAMPLES_NAMES(rotaryf_sample_names) diff --git a/src/mame/drivers/route16.c b/src/mame/drivers/route16.c index 68c3591323d..0427f280b42 100644 --- a/src/mame/drivers/route16.c +++ b/src/mame/drivers/route16.c @@ -553,34 +553,6 @@ static INPUT_PORTS_START( ttmahjng ) INPUT_PORTS_END -static const sn76477_interface sn76477_intf = -{ - RES_K(47), /* 4 noise_res */ - RES_K(150), /* 5 filter_res */ - CAP_U(0.001), /* 6 filter_cap */ - RES_M(3.3), /* 7 decay_res */ - CAP_U(1), /* 8 attack_decay_cap */ - RES_K(4.7), /* 10 attack_res */ - RES_K(200), /* 11 amplitude_res */ - RES_K(55), /* 12 feedback_res (5k + 100k pot) */ - 5.0*2/(2+10), /* 16 vco_voltage */ - CAP_U(0.022), /* 17 vco_cap */ - RES_K(100), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage */ - RES_K(75), /* 20 slf_res */ - CAP_U(1.0), /* 21 slf_cap */ - CAP_U(2.2), /* 23 oneshot_cap */ - RES_K(4.7), /* 24 oneshot_res */ - 0, /* 22 vco (variable) */ - 0, /* 26 mixer A (variable) */ - 0, /* 25 mixer B (variable) */ - 0, /* 27 mixer C (variable) */ - 0, /* 1 envelope 1 (variable) */ - 0, /* 28 envelope 2 (variable) */ - 1 /* 9 enable (variable) */ -}; - - static MACHINE_CONFIG_START( route16, route16_state ) /* basic machine hardware */ @@ -633,7 +605,19 @@ static MACHINE_CONFIG_DERIVED( stratvox, route16 ) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(route16_state, stratvox_sn76477_w)) /* SN76477 commands (not used in Route 16?) */ MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(sn76477_intf) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(150), CAP_U(0.001)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_M(3.3)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(1), RES_K(4.7)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(200)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(55)) // feedback_res + MCFG_SN76477_VCO_PARAMS(5.0 * 2/ (2 + 10), CAP_U(0.022), RES_K(100)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(1.0), RES_K(75)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(2.2), RES_K(4.7)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_DAC_ADD("dac") diff --git a/src/mame/drivers/snk6502.c b/src/mame/drivers/snk6502.c index 8b8f2690c34..ee19ce4657a 100644 --- a/src/mame/drivers/snk6502.c +++ b/src/mame/drivers/snk6502.c @@ -834,15 +834,54 @@ static MACHINE_CONFIG_START( sasuke, snk6502_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12) MCFG_SOUND_ADD("sn76477.1", SN76477, 0) - MCFG_SOUND_CONFIG(sasuke_sn76477_intf_1) + // ic48 GND: 2,22,26,27,28 +5V: 1,15,25 + MCFG_SN76477_NOISE_PARAMS(RES_K(470), RES_K(150), CAP_P(4700)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(22)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(10), RES_K(10)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(100)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, 0, 0) // VCO volt + cap + res: N/C + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage: N/C + MCFG_SN76477_SLF_PARAMS(0, RES_K(10)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(2.2), RES_K(100)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 1, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("sn76477.2", SN76477, 0) - MCFG_SOUND_CONFIG(sasuke_sn76477_intf_2) + // ic51 GND: 2,26,27 +5V: 1,15,22,25,28 + MCFG_SN76477_NOISE_PARAMS(RES_K(340), RES_K(47), CAP_P(100)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(470)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(4.7), RES_K(10)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(100)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_P(220), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage: N/C + MCFG_SN76477_SLF_PARAMS(0, RES_K(220)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(22), RES_K(47)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(1) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 1, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("sn76477.3", SN76477, 0) - MCFG_SOUND_CONFIG(sasuke_sn76477_intf_3) + // ic52 GND: 2,22,27,28 +5V: 1,15,25,26 + MCFG_SN76477_NOISE_PARAMS(RES_K(330), RES_K(47), CAP_P(100)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(1)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(0, RES_K(1)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(100)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_P(1000), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage: N/C + MCFG_SN76477_SLF_PARAMS(CAP_U(1), RES_K(10)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(2.2), RES_K(150)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(1, 1, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -863,7 +902,20 @@ static MACHINE_CONFIG_DERIVED( satansat, sasuke ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_REPLACE("sn76477.1", SN76477, 0) - MCFG_SOUND_CONFIG(satansat_sn76477_intf) + // ??? GND: 2,26,27 +5V: 15,25 + MCFG_SN76477_NOISE_PARAMS(RES_K(470), RES_M(1.5), CAP_P(220)) // noise + filter + MCFG_SN76477_DECAY_RES(0) // decay_res + MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(47)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(47)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, 0, 0) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(0, 0) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 1, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_REMOVE("sn76477.2") @@ -912,11 +964,37 @@ static MACHINE_CONFIG_START( vanguard, snk6502_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ADD("sn76477.1", SN76477, 0) - MCFG_SOUND_CONFIG(vanguard_sn76477_intf_1) + // SHOT A GND: 2,9,26,27 +5V: 15,25 + MCFG_SN76477_NOISE_PARAMS(RES_K(470), RES_M(1.5), CAP_P(220)) // noise + filter + MCFG_SN76477_DECAY_RES(0) // decay_res + MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(47)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(4.7)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, 0, 0) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(0, 0) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 1, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(1, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("sn76477.2", SN76477, 0) - MCFG_SOUND_CONFIG(vanguard_sn76477_intf_2) + // SHOT B GND: 1,2,26,27 +5V: 15,25,28 + MCFG_SN76477_NOISE_PARAMS(RES_K(10), RES_K(30), 0) // noise + filter + MCFG_SN76477_DECAY_RES(0) // decay_res + MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(47)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(4.7)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, 0, 0) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(0, 0) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 1, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END @@ -932,7 +1010,22 @@ static MACHINE_CONFIG_DERIVED( fantasy, vanguard ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) MCFG_SOUND_REPLACE("sn76477.1", SN76477, 0) - MCFG_SOUND_CONFIG(fantasy_sn76477_intf) + // BOMB GND: 2,9,26,27 +5V: 15,25 + MCFG_SN76477_NOISE_PARAMS(RES_K(470), RES_M(1.5), CAP_P(220)) // noise + filter + MCFG_SN76477_DECAY_RES(0) // decay_res + MCFG_SN76477_ATTACK_PARAMS(0, 0) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(470)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(4.7)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, 0, 0) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(0, 0) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(0, 0) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 1, 0) // mixer A, B, C + // schematic does not show pin 1 grounded, but it must be. + // otherwise it is using the VCO for the envelope, but the VCO is not hooked up + MCFG_SN76477_ENVELOPE_PARAMS(0, 1) // envelope 1, 2 + MCFG_SN76477_ENABLE(0) // enable MCFG_SOUND_ROUTE_EX(0, "discrete", 1.0, 0) MCFG_SOUND_ADD("discrete", DISCRETE, 0) diff --git a/src/mame/drivers/spectra.c b/src/mame/drivers/spectra.c index d308e11c01e..efd3b4eafc1 100644 --- a/src/mame/drivers/spectra.c +++ b/src/mame/drivers/spectra.c @@ -218,33 +218,6 @@ TIMER_DEVICE_CALLBACK_MEMBER( spectra_state::outtimer) m_out_offs = 0xff; } -static const sn76477_interface sn76477_intf = -{ - RES_M(1000), /* 4 noise_res */ - RES_M(1000), /* 5 filter_res */ - CAP_N(0), /* 6 filter_cap */ - RES_K(470), /* 7 decay_res */ - CAP_N(1), /* 8 attack_decay_cap */ - RES_K(22), /* 10 attack_res */ - RES_K(100), /* 11 amplitude_res */ - RES_K(52), /* 12 feedback_res */ - 5.0, /* 16 vco_voltage */ - CAP_U(0.01), /* 17 vco_cap */ - RES_K(390), /* 18 vco_res */ - 0.0, /* 19 pitch_voltage */ - RES_M(1), /* 20 slf_res */ - CAP_U(0.1), /* 21 slf_cap */ - CAP_U(0.47), /* 23 oneshot_cap */ - RES_K(470), /* 24 oneshot_res */ - 0, /* 22 vco (variable) */ - 0, /* 26 mixer A (grounded) */ - 0, /* 25 mixer B (variable) */ - 0, /* 27 mixer C (variable) */ - 0, /* 1 envelope 1 (variable) */ - 0, /* 28 envelope 2 (grounded) */ - 1 /* 9 enable (variable) */ -}; - static MACHINE_CONFIG_START( spectra, spectra_state ) /* basic machine hardware */ @@ -268,9 +241,22 @@ static MACHINE_CONFIG_START( spectra, spectra_state ) /* Sound */ MCFG_FRAGMENT_ADD( genpin_audio ) + MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) - MCFG_SOUND_CONFIG(sn76477_intf) + MCFG_SN76477_NOISE_PARAMS(RES_M(1000), RES_M(1000), CAP_N(0)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(470)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_N(1), RES_K(22)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(100)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(52)) // feedback_res + MCFG_SN76477_VCO_PARAMS(5.0, CAP_U(0.01), RES_K(390)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(0.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_M(1)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.47), RES_K(470)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END diff --git a/src/mame/drivers/toratora.c b/src/mame/drivers/toratora.c index 136015ed3f6..fd9926dd114 100644 --- a/src/mame/drivers/toratora.c +++ b/src/mame/drivers/toratora.c @@ -192,34 +192,6 @@ WRITE8_MEMBER(toratora_state::clear_timer_w) * *************************************/ -static const sn76477_interface sn76477_intf = -{ - RES_K(47), /* 4 noise_res */ -// RES_K(120), /* 5 filter_res */ - RES_M(1.2), /* 5 filter_res */ - CAP_P(470), /* 6 filter_cap */ - RES_K(680), /* 7 decay_res */ - CAP_U(0.2), /* 8 attack_decay_cap */ - RES_K(3.3), /* 10 attack_res */ - 0, /* 11 amplitude_res (variable) */ - RES_K(50), /* 12 feedback_res */ - 0, /* 16 vco_voltage (variable) */ - CAP_U(0.1), /* 17 vco_cap */ - RES_K(51), /* 18 vco_res */ - 5.0, /* 19 pitch_voltage (N/C) */ - RES_K(470), /* 20 slf_res */ - CAP_U(0.1), /* 21 slf_cap */ - CAP_U(0.1), /* 23 oneshot_cap */ - RES_M(1), /* 24 oneshot_res */ - 0, /* 22 vco (variable) */ - 0, /* 26 mixer A (variable) */ - 0, /* 25 mixer B (variable) */ - 0, /* 27 mixer C (variable) */ - 0, /* 1 envelope 1 (variable) */ - 0, /* 28 envelope 2 (variable) */ - 1 /* 9 enable (variable) */ -}; - WRITE8_MEMBER(toratora_state::sn1_port_a_u2_u3_w) { @@ -415,11 +387,35 @@ static MACHINE_CONFIG_START( toratora, toratora_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("sn1", SN76477, 0) - MCFG_SOUND_CONFIG(sn76477_intf) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_M(1.2) /* RES_K(120) */, CAP_P(470)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(0.2), RES_K(3.3)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(0) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(50)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(51)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(470)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.1), RES_M(1)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("sn2", SN76477, 0) - MCFG_SOUND_CONFIG(sn76477_intf) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_M(1.2) /* RES_K(120) */, CAP_P(470)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(0.2), RES_K(3.3)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(0) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(50)) // feedback_res + MCFG_SN76477_VCO_PARAMS(0, CAP_U(0.1), RES_K(51)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(5.0) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(470)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.1), RES_M(1)) // oneshot caps + res + MCFG_SN76477_VCO_MODE(0) // VCO mode + MCFG_SN76477_MIXER_PARAMS(0, 0, 0) // mixer A, B, C + MCFG_SN76477_ENVELOPE_PARAMS(0, 0) // envelope 1, 2 + MCFG_SN76477_ENABLE(1) // enable MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h index 265df8deda4..5ac14d3b427 100644 --- a/src/mame/includes/8080bw.h +++ b/src/mame/includes/8080bw.h @@ -165,7 +165,4 @@ extern const char *const lupin3_sample_names[]; DISCRETE_SOUND_EXTERN( ballbomb ); DISCRETE_SOUND_EXTERN( indianbt ); DISCRETE_SOUND_EXTERN( polaris ); - -extern const sn76477_interface lupin3_sn76477_interface; -extern const sn76477_interface schaser_sn76477_interface; DISCRETE_SOUND_EXTERN( schaser ); diff --git a/src/mame/includes/snk6502.h b/src/mame/includes/snk6502.h index 6a93497e9ef..de1e75c4e61 100644 --- a/src/mame/includes/snk6502.h +++ b/src/mame/includes/snk6502.h @@ -149,10 +149,3 @@ DISCRETE_SOUND_EXTERN( fantasy ); extern const char *const sasuke_sample_names[]; extern const char *const vanguard_sample_names[]; extern const char *const fantasy_sample_names[]; -extern const sn76477_interface sasuke_sn76477_intf_1; -extern const sn76477_interface sasuke_sn76477_intf_2; -extern const sn76477_interface sasuke_sn76477_intf_3; -extern const sn76477_interface satansat_sn76477_intf; -extern const sn76477_interface vanguard_sn76477_intf_1; -extern const sn76477_interface vanguard_sn76477_intf_2; -extern const sn76477_interface fantasy_sn76477_intf; diff --git a/src/mess/drivers/abc80.c b/src/mess/drivers/abc80.c index 1006959e25f..f3937b0a964 100644 --- a/src/mess/drivers/abc80.c +++ b/src/mess/drivers/abc80.c @@ -245,31 +245,6 @@ INPUT_PORTS_END // DEVICE CONFIGURATION //************************************************************************** -//------------------------------------------------- -// sn76477_interface csg_intf -//------------------------------------------------- - -static const sn76477_interface csg_intf = -{ - RES_K(47), // 4 noise_res R26 47k - RES_K(330), // 5 filter_res R24 330k - CAP_P(390), // 6 filter_cap C52 390p - RES_K(47), // 7 decay_res R23 47k - CAP_U(10), // 8 attack_decay_cap C50 10u/35V - RES_K(2.2), // 10 attack_res R21 2.2k - RES_K(33), // 11 amplitude_res R19 33k - RES_K(10), // 12 feedback_res R18 10k - 0, // 16 vco_voltage 0V or 2.5V - CAP_N(10) , // 17 vco_cap C48 10n - RES_K(100), // 18 vco_res R20 100k - 0, // 19 pitch_voltage N/C - RES_K(220), // 20 slf_res R22 220k - CAP_U(1), // 21 slf_cap C51 1u/35V - CAP_U(0.1), // 23 oneshot_cap C53 0.1u - RES_K(330) // 24 oneshot_res R25 330k -}; - - //------------------------------------------------- // Z80PIO //------------------------------------------------- @@ -523,7 +498,15 @@ static MACHINE_CONFIG_START( abc80, abc80_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD(SN76477_TAG, SN76477, 0) - MCFG_SOUND_CONFIG(csg_intf) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter: R26 47k - R24 330k - C52 390p + MCFG_SN76477_DECAY_RES(RES_K(47)) // decay_res: R23 47k + MCFG_SN76477_ATTACK_PARAMS(CAP_U(10), RES_K(2.2)) // attack_decay_cap + attack_res: C50 10u/35V - R21 2.2k + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res: R19 33k + MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res: R18 10k + MCFG_SN76477_VCO_PARAMS(0, CAP_N(10), RES_K(100)) // VCO volt + cap + res: 0V or 2.5V - C48 10n - R20 100k + MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage: N/C + MCFG_SN76477_SLF_PARAMS(CAP_U(1), RES_K(220)) // slf caps + res: C51 1u/35V - R22 220k + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.1), RES_K(330)) // oneshot caps + res: C53 0.1u - R25 330k MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices diff --git a/src/mess/drivers/hec2hrp.c b/src/mess/drivers/hec2hrp.c index 78878fb35af..974d7cf9f96 100644 --- a/src/mess/drivers/hec2hrp.c +++ b/src/mess/drivers/hec2hrp.c @@ -425,7 +425,15 @@ static MACHINE_CONFIG_START( hec2hr, hec2hrp_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25) MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) /* Son 1bit*/ @@ -471,11 +479,19 @@ static MACHINE_CONFIG_START( hec2hrp, hec2hrp_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25)// Sound level for cassette, as it is in mono => output channel=0 MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) // Son 1bit - MCFG_DISCRETE_INTF( hec2hrp ) + MCFG_DISCRETE_INTF(hec2hrp) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) /* Gestion cassette*/ @@ -531,7 +547,15 @@ static MACHINE_CONFIG_START( hec2mx40, hec2hrp_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25)// Sound level for cassette, as it is in mono => output channel=0 MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) // Son 1bit @@ -586,7 +610,15 @@ static MACHINE_CONFIG_START( hec2hrx, hec2hrp_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25)// Sound level for cassette, as it is in mono => output channel=0 MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) // Son 1bit @@ -639,7 +671,15 @@ static MACHINE_CONFIG_START( hec2mdhrx, hec2hrp_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25)// Sound level for cassette, as it is in mono => output channel=0 MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) // Son 1bit @@ -695,7 +735,15 @@ static MACHINE_CONFIG_START( hec2mx80, hec2hrp_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25)// Sound level for cassette, as it is in mono => output channel=0 MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) // Son 1bit diff --git a/src/mess/drivers/interact.c b/src/mess/drivers/interact.c index 4f03fbdb092..87bb66e37ec 100644 --- a/src/mess/drivers/interact.c +++ b/src/mess/drivers/interact.c @@ -149,7 +149,15 @@ static MACHINE_CONFIG_START( interact, interact_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25) /* Sound level for cassette, as it is in mono => output channel=0*/ MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) /* Son 1bit*/ @@ -196,7 +204,15 @@ static MACHINE_CONFIG_START( hector1, interact_state ) MCFG_SOUND_ROUTE(0, "mono", 0.25)/* Sound level for cassette, as it is in mono => output channel=0*/ MCFG_SOUND_ADD("sn76477", SN76477, 0) - MCFG_SOUND_CONFIG(hector_sn76477_interface) + MCFG_SN76477_NOISE_PARAMS(RES_K(47), RES_K(330), CAP_P(390)) // noise + filter + MCFG_SN76477_DECAY_RES(RES_K(680)) // decay_res + MCFG_SN76477_ATTACK_PARAMS(CAP_U(47), RES_K(180)) // attack_decay_cap + attack_res + MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res + MCFG_SN76477_FEEDBACK_RES(RES_K(100)) // feedback_res + MCFG_SN76477_VCO_PARAMS(2, CAP_N(47), RES_K(1000)) // VCO volt + cap + res + MCFG_SN76477_PITCH_VOLTAGE(2) // pitch_voltage + MCFG_SN76477_SLF_PARAMS(CAP_U(0.1), RES_K(180)) // slf caps + res + MCFG_SN76477_ONESHOT_PARAMS(CAP_U(1.00001), RES_K(10000)) // oneshot caps + res MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.1) MCFG_SOUND_ADD("discrete", DISCRETE, 0) /* Son 1bit*/ diff --git a/src/mess/includes/hec2hrp.h b/src/mess/includes/hec2hrp.h index 7cd06115b99..46221efa6f1 100644 --- a/src/mess/includes/hec2hrp.h +++ b/src/mess/includes/hec2hrp.h @@ -186,7 +186,4 @@ public: void hector_disc2_reset(); }; -/* Sound function*/ -extern const sn76477_interface hector_sn76477_interface; - extern const floppy_interface minidisc_floppy_interface; diff --git a/src/mess/machine/hec2hrp.c b/src/mess/machine/hec2hrp.c index c3214045252..842745d7fbe 100644 --- a/src/mess/machine/hec2hrp.c +++ b/src/mess/machine/hec2hrp.c @@ -818,26 +818,6 @@ void hec2hrp_state::Update_Sound(address_space &space, UINT8 data) m_sn->enable_w(m_Pin_Value[9][m_AU[14]]); } -const sn76477_interface hector_sn76477_interface = -{ - RES_K(47), /* 4 noise_res*/ - RES_K(330), /* 5 filter_res*/ - CAP_P(390), /* 6 filter_cap*/ - RES_K(680), /* 7 decay_res*/ - CAP_U(47), /* 8 attack_decay_cap*/ - RES_K(180), /* 10 attack_res*/ - RES_K(33), /* 11 amplitude_res*/ - RES_K(100), /* 12 feedback_res*/ - 2, /* 16 vco_voltage*/ - CAP_N(47) , /* 17 vco_cap*/ - RES_K(1000), /* 18 vco_res*/ - 2, /* 19 pitch_voltage*/ - RES_K(180), /* 20 slf_res*/ - CAP_U(0.1), /* 21 slf_cap*/ - CAP_U(1.00001), /* 23 oneshot_cap*/ - RES_K(10000) /* 24 oneshot_res*/ -}; - void hec2hrp_state::hector_reset(int hr, int with_D2 ) { // Initialization Hector