From c52cbce4769073a6965ad3ed78c47cd26680edfe Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 13 Apr 2019 11:13:48 +0900 Subject: k053260.cpp : Updates Simplify handlers, Use std::s, Shorter type values, Fix spacings --- src/devices/sound/k053260.cpp | 54 ++++++++++++++++++++----------------------- src/devices/sound/k053260.h | 48 +++++++++++++++++++------------------- src/mame/drivers/tmnt.cpp | 2 +- 3 files changed, 50 insertions(+), 54 deletions(-) diff --git a/src/devices/sound/k053260.cpp b/src/devices/sound/k053260.cpp index cc5294b0b59..91a149845f1 100644 --- a/src/devices/sound/k053260.cpp +++ b/src/devices/sound/k053260.cpp @@ -55,9 +55,11 @@ #include "emu.h" #include "k053260.h" +#include + #define LOG 0 -#define CLOCKS_PER_SAMPLE 32 +static constexpr int CLOCKS_PER_SAMPLE = 32; @@ -73,7 +75,7 @@ DEFINE_DEVICE_TYPE(K053260, k053260_device, "k053260", "K053260 KDSC") // k053260_device - constructor //------------------------------------------------- -k053260_device::k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) +k053260_device::k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : device_t(mconfig, K053260, tag, owner, clock) , device_sound_interface(mconfig, *this) , device_rom_interface(mconfig, *this, 21) @@ -82,7 +84,7 @@ k053260_device::k053260_device(const machine_config &mconfig, const char *tag, d , m_mode(0) , m_voice{ { *this }, { *this }, { *this }, { *this } } { - memset(m_portdata, 0, sizeof(m_portdata)); + std::fill(std::begin(m_portdata), std::end(m_portdata), 0); } @@ -135,24 +137,24 @@ void k053260_device::rom_bank_updated() } -READ8_MEMBER( k053260_device::main_read ) +u8 k053260_device::main_read(offs_t offset) { // sub-to-main ports return m_portdata[2 + (offset & 1)]; } -WRITE8_MEMBER( k053260_device::main_write ) +void k053260_device::main_write(offs_t offset, u8 data) { // main-to-sub ports m_portdata[offset & 1] = data; } -READ8_MEMBER( k053260_device::read ) +u8 k053260_device::read(offs_t offset) { offset &= 0x3f; - uint8_t ret = 0; + u8 ret = 0; switch (offset) { @@ -181,7 +183,7 @@ READ8_MEMBER( k053260_device::read ) } -WRITE8_MEMBER( k053260_device::write ) +void k053260_device::write(offs_t offset, u8 data) { offset &= 0x3f; @@ -207,7 +209,7 @@ WRITE8_MEMBER( k053260_device::write ) case 0x28: // key on/off { - uint8_t rising_edge = data & ~m_keyon; + u8 rising_edge = data & ~m_keyon; for (int i = 0; i < 4; i++) { @@ -261,19 +263,13 @@ WRITE8_MEMBER( k053260_device::write ) } } - -static inline int limit( int val, int max, int min ) +static inline int limit(int val, int max, int min) { - if ( val > max ) - val = max; - else if ( val < min ) - val = min; - - return val; + return std::max(min, std::min(max, val)); } -#define MAXOUT 0x7fff -#define MINOUT -0x8000 +static constexpr s32 MAXOUT = 0x7fff; +static constexpr s32 MINOUT = -0x8000; //------------------------------------------------- // sound_stream_update - handle a stream update @@ -299,8 +295,8 @@ void k053260_device::sound_stream_update(sound_stream &stream, stream_sample_t * } else { - memset(outputs[0], 0, samples * sizeof(*outputs[0])); - memset(outputs[1], 0, samples * sizeof(*outputs[1])); + std::fill_n(&outputs[0][0], samples, 0); + std::fill_n(&outputs[1][0], samples, 0); } } @@ -343,7 +339,7 @@ void k053260_device::KDSC_Voice::voice_reset() update_pan_volume(); } -void k053260_device::KDSC_Voice::set_register(offs_t offset, uint8_t data) +void k053260_device::KDSC_Voice::set_register(offs_t offset, u8 data) { switch (offset & 0x7) { @@ -374,13 +370,13 @@ void k053260_device::KDSC_Voice::set_register(offs_t offset, uint8_t data) } } -void k053260_device::KDSC_Voice::set_loop_kadpcm(uint8_t data) +void k053260_device::KDSC_Voice::set_loop_kadpcm(u8 data) { m_loop = BIT(data, 0); m_kadpcm = BIT(data, 4); } -void k053260_device::KDSC_Voice::set_pan(uint8_t data) +void k053260_device::KDSC_Voice::set_pan(u8 data) { m_pan = data & 0x7; update_pan_volume(); @@ -417,7 +413,7 @@ void k053260_device::KDSC_Voice::play(stream_sample_t *outputs) { m_counter = m_counter - 0x1000 + m_pitch; - uint32_t bytepos = ++m_position >> ( m_kadpcm ? 1 : 0 ); + u32 bytepos = ++m_position >> ( m_kadpcm ? 1 : 0 ); /* Yes, _pre_increment. Playback must start 1 byte position after the start address written to the register, or else ADPCM sounds will @@ -441,12 +437,12 @@ void k053260_device::KDSC_Voice::play(stream_sample_t *outputs) } } - uint8_t romdata = m_device.read_byte(m_start + bytepos); + u8 romdata = m_device.read_byte(m_start + bytepos); if (m_kadpcm) { if (m_position & 1) romdata >>= 4; // decode low nybble, then high nybble - static const int8_t kadpcm_table[] = {0,1,2,4,8,16,32,64,-128,-64,-32,-16,-8,-4,-2,-1}; + static const s8 kadpcm_table[] = {0,1,2,4,8,16,32,64,-128,-64,-32,-16,-8,-4,-2,-1}; m_output += kadpcm_table[romdata & 0xf]; } else @@ -459,9 +455,9 @@ void k053260_device::KDSC_Voice::play(stream_sample_t *outputs) outputs[1] += m_output * m_pan_volume[1]; } -uint8_t k053260_device::KDSC_Voice::read_rom() +u8 k053260_device::KDSC_Voice::read_rom() { - uint32_t offs = m_start + m_position; + u32 offs = m_start + m_position; m_position = (m_position + 1) & 0xffff; diff --git a/src/devices/sound/k053260.h b/src/devices/sound/k053260.h index 666f0657cd8..63639808a7d 100644 --- a/src/devices/sound/k053260.h +++ b/src/devices/sound/k053260.h @@ -22,12 +22,12 @@ class k053260_device : public device_t, public device_rom_interface { public: - k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - DECLARE_READ8_MEMBER( main_read ); - DECLARE_WRITE8_MEMBER( main_write ); - DECLARE_READ8_MEMBER( read ); - DECLARE_WRITE8_MEMBER( write ); + u8 main_read(offs_t offset); + void main_write(offs_t offset, u8 data); + u8 read(offs_t offset); + void write(offs_t offset, u8 data); protected: // device-level overrides @@ -46,9 +46,9 @@ private: sound_stream * m_stream; // live state - uint8_t m_portdata[4]; - uint8_t m_keyon; - uint8_t m_mode; + u8 m_portdata[4]; + u8 m_keyon; + u8 m_mode; // per voice state class KDSC_Voice @@ -58,37 +58,37 @@ private: inline void voice_start(int index); inline void voice_reset(); - inline void set_register(offs_t offset, uint8_t data); - inline void set_loop_kadpcm(uint8_t data); - inline void set_pan(uint8_t data); + inline void set_register(offs_t offset, u8 data); + inline void set_loop_kadpcm(u8 data); + inline void set_pan(u8 data); inline void update_pan_volume(); inline void key_on(); inline void key_off(); inline void play(stream_sample_t *outputs); inline bool playing() { return m_playing; } - inline uint8_t read_rom(); + inline u8 read_rom(); private: // pointer to owning device k053260_device &m_device; // live state - uint32_t m_position = 0; - uint16_t m_pan_volume[2]; - uint16_t m_counter = 0; - int8_t m_output = 0; - bool m_playing = false; + u32 m_position = 0; + u16 m_pan_volume[2]; + u16 m_counter = 0; + s8 m_output = 0; + bool m_playing = false; // per voice registers - uint32_t m_start = 0; - uint16_t m_length = 0; - uint16_t m_pitch = 0; - uint8_t m_volume = 0; + u32 m_start = 0; + u16 m_length = 0; + u16 m_pitch = 0; + u8 m_volume = 0; // bit packed registers - uint8_t m_pan = 0; - bool m_loop = false; - bool m_kadpcm = false; + u8 m_pan = 0; + bool m_loop = false; + bool m_kadpcm = false; } m_voice[4]; }; diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp index 2a206cb76bd..8baa1c3f356 100644 --- a/src/mame/drivers/tmnt.cpp +++ b/src/mame/drivers/tmnt.cpp @@ -171,7 +171,7 @@ INTERRUPT_GEN_MEMBER(tmnt_state::lgtnfght_interrupt) WRITE8_MEMBER(tmnt_state::glfgreat_sound_w) { - m_k053260->main_write(space, offset, data); + m_k053260->main_write(offset, data); if (offset) m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); // Z80 -- cgit v1.2.3