diff options
author | therealmogminer@gmail.com <therealmogminer@gmail.com> | 2015-11-16 00:31:47 +0100 |
---|---|---|
committer | Miodrag Milanovic <mmicko@gmail.com> | 2016-01-23 17:30:14 +0100 |
commit | 5a9fb4c34030492adbaf690627d8f612000db550 (patch) | |
tree | 422a7849b17adbb74df8f9f4047a237e6c47cb68 /src/devices/sound | |
parent | eec584eec6f551faa6b931ed14fe64419f73252f (diff) |
Remove this==NULL comps, nw
Diffstat (limited to 'src/devices/sound')
-rw-r--r-- | src/devices/sound/sn76477.cpp | 450 | ||||
-rw-r--r-- | src/devices/sound/sn76477.h | 25 |
2 files changed, 82 insertions, 393 deletions
diff --git a/src/devices/sound/sn76477.cpp b/src/devices/sound/sn76477.cpp index ba31190b5ce..f94bf98d1e3 100644 --- a/src/devices/sound/sn76477.cpp +++ b/src/devices/sound/sn76477.cpp @@ -76,27 +76,10 @@ #define LOG(n,x) do { if (VERBOSE >= (n)) logerror x; } while (0) -#define CHECK_CHIP_NUM assert(this != NULL) -#define CHECK_CHIP_NUM_AND_BOOLEAN CHECK_CHIP_NUM; assert((state & 0x01) == state) -#define CHECK_CHIP_NUM_AND_POSITIVE CHECK_CHIP_NUM; assert(data >= 0.0) -#define CHECK_CHIP_NUM_AND_VOLTAGE CHECK_CHIP_NUM; assert((data >= 0.0) && (data <= 5.0)) -#define CHECK_CHIP_NUM_AND_CAP_VOLTAGE CHECK_CHIP_NUM; assert(((data >= 0.0) && (data <= 5.0)) || (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)) - - - -/***************************************************************************** - * - * Test Mode - * - * 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 +#define CHECK_BOOLEAN assert((state & 0x01) == state) +#define CHECK_POSITIVE assert(data >= 0.0) +#define CHECK_VOLTAGE assert((data >= 0.0) && (data <= 5.0)) +#define CHECK_CAP_VOLTAGE assert(((data >= 0.0) && (data <= 5.0)) || (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT)) /***************************************************************************** * @@ -233,11 +216,11 @@ void sn76477_device::device_start() intialize_noise(); // 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); + mixer_a_w(m_mixer_a); + mixer_b_w(m_mixer_b); + mixer_c_w(m_mixer_c); + envelope_1_w(m_envelope_1); + envelope_2_w(m_envelope_2); m_one_shot_cap_voltage = ONE_SHOT_CAP_VOLTAGE_MIN; m_slf_cap_voltage = SLF_CAP_VOLTAGE_MIN; @@ -966,45 +949,31 @@ inline UINT32 sn76477_device::generate_next_real_noise_bit() * *****************************************************************************/ -void sn76477_device::_SN76477_enable_w(UINT32 data) +WRITE_LINE_MEMBER(sn76477_device::enable_w) { - m_enable = data; + CHECK_BOOLEAN; - /* if falling edge */ - if (!m_enable) + if (state != m_enable) { - /* start the attack phase */ - m_attack_decay_cap_voltage = AD_CAP_VOLTAGE_MIN; - - /* one-shot runs regardless of envelope mode */ - m_one_shot_running_ff = 1; - } -} + m_channel->update(); + m_enable = state; -void sn76477_device::SN76477_test_enable_w(UINT32 data) -{ - if (data != m_enable) - { - m_channel->update(); + /* if falling edge */ + if (!m_enable) + { + /* start the attack phase */ + m_attack_decay_cap_voltage = AD_CAP_VOLTAGE_MIN; - _SN76477_enable_w(data); + /* one-shot runs regardless of envelope mode */ + m_one_shot_running_ff = 1; + } log_enable_line(); } } -WRITE_LINE_MEMBER( sn76477_device::enable_w ) -{ -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; - - SN76477_test_enable_w(state); -#endif -} - - /***************************************************************************** * @@ -1012,219 +981,142 @@ WRITE_LINE_MEMBER( sn76477_device::enable_w ) * *****************************************************************************/ -void sn76477_device::_SN76477_mixer_a_w(UINT32 data) -{ - m_mixer_mode = (m_mixer_mode & ~0x01) | (data << 0); -} - - WRITE_LINE_MEMBER( sn76477_device::mixer_a_w ) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; + CHECK_BOOLEAN; if (state != ((m_mixer_mode >> 0) & 0x01)) { m_channel->update(); - _SN76477_mixer_a_w(state); + m_mixer_mode = (m_mixer_mode & ~0x01) | state; log_mixer_mode(); } -#endif } - -void sn76477_device::_SN76477_mixer_b_w(UINT32 data) -{ - m_mixer_mode = (m_mixer_mode & ~0x02) | (data << 1); -} - - WRITE_LINE_MEMBER( sn76477_device::mixer_b_w ) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; + CHECK_BOOLEAN; if (state != ((m_mixer_mode >> 1) & 0x01)) { m_channel->update(); - _SN76477_mixer_b_w(state); + m_mixer_mode = (m_mixer_mode & ~0x02) | (state << 1); log_mixer_mode(); } -#endif -} - - -void sn76477_device::_SN76477_mixer_c_w(UINT32 data) -{ - m_mixer_mode = (m_mixer_mode & ~0x04) | (data << 2); } - WRITE_LINE_MEMBER( sn76477_device::mixer_c_w ) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; + CHECK_BOOLEAN; if (state != ((m_mixer_mode >> 2) & 0x01)) { m_channel->update(); - _SN76477_mixer_c_w(state); + m_mixer_mode = (m_mixer_mode & ~0x04) | (state << 2); log_mixer_mode(); } -#endif } - - /***************************************************************************** * * Set envelope select inputs * *****************************************************************************/ -void sn76477_device::_SN76477_envelope_1_w(UINT32 data) -{ - m_envelope_mode = (m_envelope_mode & ~0x01) | (data << 0); -} - - WRITE_LINE_MEMBER( sn76477_device::envelope_1_w ) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; + CHECK_BOOLEAN; if (state != ((m_envelope_mode >> 0) & 0x01)) { m_channel->update(); - _SN76477_envelope_1_w(state); + m_envelope_mode = (m_envelope_mode & ~0x01) | state; log_envelope_mode(); } -#endif -} - - -void sn76477_device::_SN76477_envelope_2_w(UINT32 data) -{ - m_envelope_mode = (m_envelope_mode & ~0x02) | (data << 1); } - WRITE_LINE_MEMBER( sn76477_device::envelope_2_w ) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; + CHECK_BOOLEAN; if (state != ((m_envelope_mode >> 1) & 0x01)) { m_channel->update(); - _SN76477_envelope_2_w(state); + m_envelope_mode = (m_envelope_mode & ~0x02) | (state << 1); log_envelope_mode(); } -#endif } - - /***************************************************************************** * * Set VCO select input * *****************************************************************************/ -void sn76477_device::_SN76477_vco_w(UINT32 data) -{ - m_vco_mode = data; -} - - WRITE_LINE_MEMBER( sn76477_device::vco_w ) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; + CHECK_BOOLEAN; if (state != m_vco_mode) { m_channel->update(); - _SN76477_vco_w(state); + m_vco_mode = state; log_vco_mode(); } -#endif } - - /***************************************************************************** * * Set one-shot resistor * *****************************************************************************/ -void sn76477_device::_SN76477_one_shot_res_w(double data) -{ - m_one_shot_res = data; -} - - void sn76477_device::one_shot_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_one_shot_res) { m_channel->update(); - _SN76477_one_shot_res_w(data); + m_one_shot_res = data; log_one_shot_time(); } -#endif } - - /***************************************************************************** * * Set one-shot capacitor * *****************************************************************************/ -void sn76477_device::_SN76477_one_shot_cap_w(double data) -{ - m_one_shot_cap = data; -} - - void sn76477_device::one_shot_cap_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_one_shot_cap) { m_channel->update(); - _SN76477_one_shot_cap_w(data); + m_one_shot_cap = data; log_one_shot_time(); } -#endif } - - /***************************************************************************** * * Set the voltage on the one-shot capacitor @@ -1233,8 +1125,7 @@ void sn76477_device::one_shot_cap_w(double data) void sn76477_device::one_shot_cap_voltage_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_CAP_VOLTAGE; + CHECK_CAP_VOLTAGE; if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) { @@ -1261,71 +1152,48 @@ void sn76477_device::one_shot_cap_voltage_w(double data) log_one_shot_time(); } } -#endif } - - /***************************************************************************** * * Set SLF resistor * *****************************************************************************/ -void sn76477_device::_SN76477_slf_res_w(double data) -{ - m_slf_res = data; -} - - void sn76477_device::slf_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_slf_res) { m_channel->update(); - _SN76477_slf_res_w(data); + m_slf_res = data; log_slf_freq(); } -#endif } - - /***************************************************************************** * * Set SLF capacitor * *****************************************************************************/ -void sn76477_device::_SN76477_slf_cap_w(double data) -{ - m_slf_cap = data; -} - - void sn76477_device::slf_cap_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_slf_cap) { m_channel->update(); - _SN76477_slf_cap_w(data); + m_slf_cap = data; log_slf_freq(); } -#endif } - - /***************************************************************************** * * Set the voltage on the SLF capacitor @@ -1336,8 +1204,7 @@ void sn76477_device::slf_cap_w(double data) void sn76477_device::slf_cap_voltage_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_CAP_VOLTAGE; + CHECK_CAP_VOLTAGE; if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) { @@ -1364,71 +1231,48 @@ void sn76477_device::slf_cap_voltage_w(double data) log_slf_freq(); } } -#endif } - - /***************************************************************************** * * Set VCO resistor * *****************************************************************************/ -void sn76477_device::_SN76477_vco_res_w(double data) -{ - m_vco_res = data; -} - - void sn76477_device::vco_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_vco_res) { m_channel->update(); - _SN76477_vco_res_w(data); + m_vco_res = data; log_vco_freq(); } -#endif } - - /***************************************************************************** * * Set VCO capacitor * *****************************************************************************/ -void sn76477_device::_SN76477_vco_cap_w(double data) -{ - m_vco_cap = data; -} - - void sn76477_device::vco_cap_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_vco_cap) { m_channel->update(); - _SN76477_vco_cap_w(data); + m_vco_cap = data; log_vco_freq(); } -#endif } - - /***************************************************************************** * * Set the voltage on the VCO capacitor @@ -1437,8 +1281,7 @@ void sn76477_device::vco_cap_w(double data) void sn76477_device::vco_cap_voltage_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_CAP_VOLTAGE; + CHECK_CAP_VOLTAGE; if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) { @@ -1465,73 +1308,50 @@ void sn76477_device::vco_cap_voltage_w(double data) log_vco_freq(); } } -#endif } - - /***************************************************************************** * * Set VCO voltage * *****************************************************************************/ -void sn76477_device::_SN76477_vco_voltage_w(double data) -{ - m_vco_voltage = data; -} - - void sn76477_device::vco_voltage_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_VOLTAGE; + CHECK_VOLTAGE; if (data != m_vco_voltage) { m_channel->update(); - _SN76477_vco_voltage_w(data); + m_vco_voltage = data; log_vco_ext_voltage(); log_vco_duty_cycle(); } -#endif } - - /***************************************************************************** * * Set pitch voltage * *****************************************************************************/ -void sn76477_device::_SN76477_pitch_voltage_w(double data) -{ - m_pitch_voltage = data; -} - - void sn76477_device::pitch_voltage_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_VOLTAGE; + CHECK_VOLTAGE; if (data != m_pitch_voltage) { m_channel->update(); - _SN76477_pitch_voltage_w(data); + m_pitch_voltage = data; log_vco_pitch_voltage(); log_vco_duty_cycle(); } -#endif } - - /***************************************************************************** * * Set noise external clock @@ -1540,8 +1360,7 @@ void sn76477_device::pitch_voltage_w(double data) WRITE_LINE_MEMBER( sn76477_device::noise_clock_w ) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_BOOLEAN; + CHECK_BOOLEAN; if (state != m_noise_clock) { @@ -1556,111 +1375,78 @@ WRITE_LINE_MEMBER( sn76477_device::noise_clock_w ) m_real_noise_bit_ff = generate_next_real_noise_bit(); } } -#endif } - - /***************************************************************************** * * Set noise clock resistor * *****************************************************************************/ -void sn76477_device::_SN76477_noise_clock_res_w(double data) -{ - if (data == 0) - { - m_noise_clock_ext = 1; - } - else - { - m_noise_clock_ext = 0; - - m_noise_clock_res = data; - } -} - - void sn76477_device::noise_clock_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (((data == 0) && !m_noise_clock_ext) || ((data != 0) && (data != m_noise_clock_res))) { m_channel->update(); - _SN76477_noise_clock_res_w(data); + if (data == 0) + { + m_noise_clock_ext = 1; + } + else + { + m_noise_clock_ext = 0; + + m_noise_clock_res = data; + } log_noise_gen_freq(); } -#endif } - - /***************************************************************************** * * Set noise filter resistor * *****************************************************************************/ -void sn76477_device::_SN76477_noise_filter_res_w(double data) -{ - m_noise_filter_res = data; -} - - void sn76477_device::noise_filter_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_noise_filter_res) { m_channel->update(); - _SN76477_noise_filter_res_w(data); + m_noise_filter_res = data; log_noise_filter_freq(); } -#endif } - - /***************************************************************************** * * Set noise filter capacitor * *****************************************************************************/ -void sn76477_device::_SN76477_noise_filter_cap_w(double data) -{ - m_noise_filter_cap = data; -} - - void sn76477_device::noise_filter_cap_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_noise_filter_cap) { m_channel->update(); - _SN76477_noise_filter_cap_w(data); + m_noise_filter_cap = data; log_noise_filter_freq(); } -#endif } - - /***************************************************************************** * * Set the voltage on the noise filter capacitor @@ -1669,8 +1455,7 @@ void sn76477_device::noise_filter_cap_w(double data) void sn76477_device::noise_filter_cap_voltage_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_CAP_VOLTAGE; + CHECK_CAP_VOLTAGE; if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) { @@ -1697,102 +1482,69 @@ void sn76477_device::noise_filter_cap_voltage_w(double data) log_noise_filter_freq(); } } -#endif } - - /***************************************************************************** * * Set attack resistor * *****************************************************************************/ -void sn76477_device::_SN76477_attack_res_w(double data) -{ - m_attack_res = data; -} - - void sn76477_device::attack_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_attack_res) { m_channel->update(); - _SN76477_attack_res_w(data); + m_attack_res = data; log_attack_time(); } -#endif } - - /***************************************************************************** * * Set decay resistor * *****************************************************************************/ -void sn76477_device::_SN76477_decay_res_w(double data) -{ - m_decay_res = data; -} - - void sn76477_device::decay_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_decay_res) { m_channel->update(); - _SN76477_decay_res_w(data); + m_decay_res = data; log_decay_time(); } -#endif } - - /***************************************************************************** * * Set attack/decay capacitor * *****************************************************************************/ -void sn76477_device::_SN76477_attack_decay_cap_w(double data) -{ - m_attack_decay_cap = data; -} - - void sn76477_device::attack_decay_cap_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_attack_decay_cap) { m_channel->update(); - _SN76477_attack_decay_cap_w(data); + m_attack_decay_cap = data; log_attack_time(); log_decay_time(); } -#endif } - - /***************************************************************************** * * Set the voltage on the attack/decay capacitor @@ -1801,8 +1553,7 @@ void sn76477_device::attack_decay_cap_w(double data) void sn76477_device::attack_decay_cap_voltage_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_CAP_VOLTAGE; + CHECK_CAP_VOLTAGE; if (data == SN76477_EXTERNAL_VOLTAGE_DISCONNECT) { @@ -1831,70 +1582,48 @@ void sn76477_device::attack_decay_cap_voltage_w(double data) log_decay_time(); } } -#endif } - - /***************************************************************************** * * Set amplitude resistor * *****************************************************************************/ -void sn76477_device::_SN76477_amplitude_res_w(double data) -{ - m_amplitude_res = data; -} - - void sn76477_device::amplitude_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_amplitude_res) { m_channel->update(); - _SN76477_amplitude_res_w(data); + m_amplitude_res = data; log_voltage_out(); } -#endif } - - /***************************************************************************** * * Set feedback resistor * *****************************************************************************/ -void sn76477_device::_SN76477_feedback_res_w(double data) -{ - m_feedback_res = data; -} - - void sn76477_device::feedback_res_w(double data) { -#if TEST_MODE == 0 - CHECK_CHIP_NUM_AND_POSITIVE; + CHECK_POSITIVE; if (data != m_feedback_res) { m_channel->update(); - _SN76477_feedback_res_w(data); + m_feedback_res = data; log_voltage_out(); } -#endif } - /***************************************************************************** * * State saving @@ -1982,22 +1711,7 @@ void sn76477_device::sound_stream_update(sound_stream &stream, stream_sample_t * stream_sample_t *buffer = outputs[0]; - -#if TEST_MODE - static int recursing = 0; /* we need to prevent recursion since enable_w calls machine().input().code_pressed_once(KEYCODE_SPACE->update */ - - if () && !recursing) - { - recursing = 1; - - machine().sound().system_enable(); - SN76477_test_enable_w(!m_enable); - } - - recursing = 0; -#endif - - /* compute charging values, doing it here ensures that we always use the latest values */ + /* compute charging values, doing it here ensures that we always use the latest values */ one_shot_cap_charging_step = compute_one_shot_cap_charging_rate() / m_our_sample_rate; one_shot_cap_discharging_step = compute_one_shot_cap_discharging_rate() / m_our_sample_rate; diff --git a/src/devices/sound/sn76477.h b/src/devices/sound/sn76477.h index 6c582c74b09..849229c22d7 100644 --- a/src/devices/sound/sn76477.h +++ b/src/devices/sound/sn76477.h @@ -304,31 +304,6 @@ private: inline UINT32 generate_next_real_noise_bit(); void state_save_register(); - - void _SN76477_enable_w(UINT32 data); - void _SN76477_vco_w(UINT32 data); - void _SN76477_mixer_a_w(UINT32 data); - void _SN76477_mixer_b_w(UINT32 data); - void _SN76477_mixer_c_w(UINT32 data); - void _SN76477_envelope_1_w(UINT32 data); - void _SN76477_envelope_2_w(UINT32 data); - void _SN76477_one_shot_res_w(double data); - void _SN76477_one_shot_cap_w(double data); - void _SN76477_slf_res_w(double data); - void _SN76477_slf_cap_w(double data); - void _SN76477_vco_res_w(double data); - void _SN76477_vco_cap_w(double data); - void _SN76477_vco_voltage_w(double data); - void _SN76477_noise_clock_res_w(double data); - void _SN76477_noise_filter_res_w(double data); - void _SN76477_noise_filter_cap_w(double data); - void _SN76477_decay_res_w(double data); - void _SN76477_attack_res_w(double data); - void _SN76477_attack_decay_cap_w(double data); - void _SN76477_amplitude_res_w(double data); - void _SN76477_feedback_res_w(double data); - void _SN76477_pitch_voltage_w(double data); - void SN76477_test_enable_w(UINT32 data); }; extern const device_type SN76477; |