diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2017-06-26 22:54:23 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2017-06-26 22:54:23 -0400 |
commit | 431ede847028b37029c0f5824018129aa1af81b5 (patch) | |
tree | 67a3ae2c8dad7a1e69ab05fcce6dad442bb4b2bc | |
parent | b6e896dab9b3f37e21be88bfc1fccf796765296d (diff) |
okim6258, okim6376: Replace custom handlers with device_clock_changed (nw)
-rw-r--r-- | src/devices/sound/okim6258.cpp | 17 | ||||
-rw-r--r-- | src/devices/sound/okim6258.h | 3 | ||||
-rw-r--r-- | src/devices/sound/okim6376.cpp | 12 | ||||
-rw-r--r-- | src/devices/sound/okim6376.h | 4 | ||||
-rw-r--r-- | src/mame/drivers/x68k.cpp | 2 | ||||
-rw-r--r-- | src/mame/machine/mpu4.cpp | 2 |
6 files changed, 13 insertions, 27 deletions
diff --git a/src/devices/sound/okim6258.cpp b/src/devices/sound/okim6258.cpp index ac82ea267d9..491229a4e81 100644 --- a/src/devices/sound/okim6258.cpp +++ b/src/devices/sound/okim6258.cpp @@ -50,8 +50,7 @@ okim6258_device::okim6258_device(const machine_config &mconfig, const char *tag, : device_t(mconfig, OKIM6258, tag, owner, clock), device_sound_interface(mconfig, *this), m_status(0), - m_master_clock(0), - m_divider(0), + m_divider(512), m_adpcm_type(0), m_data_in(0), m_nibble_shift(0), @@ -112,8 +111,6 @@ void okim6258_device::device_start() { compute_tables(); - m_master_clock = clock(); - m_divider = dividers[m_start_divider]; m_stream = stream_alloc(0, 1, clock()/m_divider); @@ -189,7 +186,6 @@ void okim6258_device::sound_stream_update(sound_stream &stream, stream_sample_t void okim6258_device::state_save_register() { save_item(NAME(m_status)); - save_item(NAME(m_master_clock)); save_item(NAME(m_divider)); save_item(NAME(m_data_in)); save_item(NAME(m_nibble_shift)); @@ -231,10 +227,8 @@ int16_t okim6258_device::clock_adpcm(uint8_t nibble) void okim6258_device::set_divider(int val) { - int divider = dividers[val]; - m_divider = dividers[val]; - m_stream->set_sample_rate(m_master_clock / divider); + notify_clock_changed(); } @@ -244,10 +238,9 @@ void okim6258_device::set_divider(int val) ***********************************************************************************************/ -void okim6258_device::set_clock(int val) +void okim6258_device::device_clock_changed() { - m_master_clock = val; - m_stream->set_sample_rate(m_master_clock / m_divider); + m_stream->set_sample_rate(clock() / m_divider); } @@ -259,7 +252,7 @@ void okim6258_device::set_clock(int val) int okim6258_device::get_vclk() { - return (m_master_clock / m_divider); + return (clock() / m_divider); } diff --git a/src/devices/sound/okim6258.h b/src/devices/sound/okim6258.h index 65313d8480d..ebaa9ed1559 100644 --- a/src/devices/sound/okim6258.h +++ b/src/devices/sound/okim6258.h @@ -58,13 +58,13 @@ public: DECLARE_WRITE8_MEMBER( ctrl_w ); void set_divider(int val); - void set_clock(int val); int get_vclk(); protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; + virtual void device_clock_changed() override; // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; @@ -75,7 +75,6 @@ private: uint8_t m_status; - uint32_t m_master_clock; /* master clock frequency */ uint32_t m_start_divider; uint32_t m_divider; /* master clock divider */ uint8_t m_adpcm_type; /* 3/4 bit ADPCM select */ diff --git a/src/devices/sound/okim6376.cpp b/src/devices/sound/okim6376.cpp index 17adf11b49f..0446cf50eb4 100644 --- a/src/devices/sound/okim6376.cpp +++ b/src/devices/sound/okim6376.cpp @@ -120,8 +120,7 @@ okim6376_device::okim6376_device(const machine_config &mconfig, const char *tag, m_latch(0), //m_stage[OKIM6376_VOICES], m_stream(nullptr), - m_master_clock(0), - m_divisor(0), + m_divisor(8), m_channel(0), m_nar(0), m_nartimer(0), @@ -148,7 +147,6 @@ void okim6376_device::device_start() m_stage[0] = 0; m_stage[1] = 0; m_latch = 0; - m_master_clock = clock(); m_divisor = divisor_table[0]; m_nar = 1; m_nartimer = 0; @@ -359,7 +357,7 @@ void okim6376_device::generate_adpcm(struct ADPCMVoice *voice, int16_t *buffer, void okim6376_device::postload() { - set_frequency(m_master_clock); + notify_clock_changed(); } void okim6376_device::adpcm_state_save_register(struct ADPCMVoice *voice, int index) @@ -395,13 +393,11 @@ void okim6376_device::okim6376_state_save_register() save_item(NAME(m_st_update)); save_item(NAME(m_ch2)); save_item(NAME(m_ch2_update)); - save_item(NAME(m_master_clock)); } -void okim6376_device::set_frequency(int frequency) +void okim6376_device::device_clock_changed() { - m_master_clock = frequency; - m_stream->set_sample_rate(m_master_clock / m_divisor); + m_stream->set_sample_rate(clock() / m_divisor); } diff --git a/src/devices/sound/okim6376.h b/src/devices/sound/okim6376.h index 7fe83bbf5a5..52760be23ca 100644 --- a/src/devices/sound/okim6376.h +++ b/src/devices/sound/okim6376.h @@ -21,12 +21,11 @@ public: DECLARE_READ_LINE_MEMBER( busy_r ); DECLARE_READ_LINE_MEMBER( nar_r ); - void set_frequency(int frequency); - protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; + virtual void device_clock_changed() override; // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; @@ -58,7 +57,6 @@ private: int32_t m_latch; /* Command data is held before transferring to either channel */ uint8_t m_stage[OKIM6376_VOICES];/* If a sample is playing, flag that we have a command staged */ sound_stream *m_stream; /* which stream are we playing on? */ - uint32_t m_master_clock; /* master clock frequency */ uint8_t m_divisor; /* can be 8,10,16, and is read out of ROM data */ uint8_t m_channel; uint8_t m_nar; /* Next Address Ready */ diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp index 0be83bea167..19da99f1a6e 100644 --- a/src/mame/drivers/x68k.cpp +++ b/src/mame/drivers/x68k.cpp @@ -728,7 +728,7 @@ WRITE8_MEMBER(x68k_state::x68k_ct_w) m_adpcm.clock = data & 0x02; x68k_set_adpcm(); - m_okim6258->set_clock(data & 0x02 ? 4000000 : 8000000); + m_okim6258->set_unscaled_clock(data & 0x02 ? 4000000 : 8000000); } /* diff --git a/src/mame/machine/mpu4.cpp b/src/mame/machine/mpu4.cpp index 6165b3f6d8c..d6718c4b4c3 100644 --- a/src/mame/machine/mpu4.cpp +++ b/src/mame/machine/mpu4.cpp @@ -1448,7 +1448,7 @@ WRITE8_MEMBER(mpu4_state::ic3ss_w) if (freq) { - m_msm6376->set_frequency(freq); + m_msm6376->set_unscaled_clock(freq); } } |