diff options
author | Fabio Priuli <etabeta78@users.noreply.github.com> | 2014-04-11 05:59:33 +0000 |
---|---|---|
committer | Fabio Priuli <etabeta78@users.noreply.github.com> | 2014-04-11 05:59:33 +0000 |
commit | abac83b8dc2c2be07ceef8d11166a22735f567cb (patch) | |
tree | b3fd204fff80fc339b44936c3ae7abbd3e9b9430 | |
parent | 6c25ec2365e53b04ccab7e140b29829333a8eae0 (diff) |
okim6258: converted to use inline config. nw.
-rw-r--r-- | src/emu/sound/okim6258.c | 7 | ||||
-rw-r--r-- | src/emu/sound/okim6258.h | 30 | ||||
-rw-r--r-- | src/mess/drivers/x68k.c | 12 |
3 files changed, 24 insertions, 25 deletions
diff --git a/src/emu/sound/okim6258.c b/src/emu/sound/okim6258.c index 8d3a2cc66c3..0f1bbe5e3ed 100644 --- a/src/emu/sound/okim6258.c +++ b/src/emu/sound/okim6258.c @@ -108,16 +108,11 @@ static void compute_tables(void) void okim6258_device::device_start() { - const okim6258_interface *intf = (const okim6258_interface *)static_config(); - compute_tables(); m_master_clock = clock(); - m_adpcm_type = intf->adpcm_type; - /* D/A precision is 10-bits but 12-bit data can be output serially to an external DAC */ - m_output_bits = intf->output_12bits ? 12 : 10; - m_divider = dividers[intf->divider]; + m_divider = dividers[m_start_divider]; m_stream = stream_alloc(0, 1, clock()/m_divider); diff --git a/src/emu/sound/okim6258.h b/src/emu/sound/okim6258.h index 9e1f2087c57..affbb5019be 100644 --- a/src/emu/sound/okim6258.h +++ b/src/emu/sound/okim6258.h @@ -10,8 +10,8 @@ #define TYPE_3BITS 0 #define TYPE_4BITS 1 -#define OUTPUT_10BITS 0 -#define OUTPUT_12BITS 1 +#define OUTPUT_10BITS 10 +#define OUTPUT_12BITS 12 //************************************************************************** @@ -23,19 +23,20 @@ #define MCFG_OKIM6258_REPLACE(_tag, _clock) \ MCFG_DEVICE_REPLACE(_tag, OKIM6258, _clock) +#define MCFG_OKIM6258_DIVIDER(_div) \ + okim6258_device::set_start_div(*device, _div); + +#define MCFG_OKIM6258_ADPCM_TYPE(_type) \ + okim6258_device::set_type(*device, _type); + +#define MCFG_OKIM6258_OUT_BITS(_bits) \ + okim6258_device::set_outbits(*device, _bits); + //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -struct okim6258_interface -{ - int divider; - int adpcm_type; - int output_12bits; -}; - - // ======================> okim6258_device class okim6258_device : public device_t, @@ -45,6 +46,11 @@ public: okim6258_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); ~okim6258_device() { } + // static configuration + static void set_start_div(device_t &device, int div) { downcast<okim6258_device &>(device).m_start_divider = div; } + static void set_type(device_t &device, int type) { downcast<okim6258_device &>(device).m_adpcm_type = type; } + static void set_outbits(device_t &device, int outbit) { downcast<okim6258_device &>(device).m_output_bits = outbit; } + protected: // device-level overrides virtual void device_start(); @@ -71,13 +77,15 @@ private: UINT8 m_status; UINT32 m_master_clock; /* master clock frequency */ + UINT32 m_start_divider; UINT32 m_divider; /* master clock divider */ UINT8 m_adpcm_type; /* 3/4 bit ADPCM select */ UINT8 m_data_in; /* ADPCM data-in register */ UINT8 m_nibble_shift; /* nibble select */ sound_stream *m_stream; /* which stream are we playing on? */ - UINT8 m_output_bits; + UINT8 m_output_bits; /* D/A precision is 10-bits but 12-bit data can be + output serially to an external DAC */ INT32 m_signal; INT32 m_step; diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c index d07bd1271ea..ca22e5258bc 100644 --- a/src/mess/drivers/x68k.c +++ b/src/mess/drivers/x68k.c @@ -1359,13 +1359,6 @@ static const hd63450_interface dmac_interface = {attotime::from_usec(32),attotime::from_nsec(450),attotime::from_nsec(50),attotime::from_nsec(50)}, // Burst mode timing (guesstimate) }; -static const okim6258_interface x68k_okim6258_interface = -{ - FOSC_DIV_BY_512, - TYPE_4BITS, - OUTPUT_10BITS, -}; - static INPUT_PORTS_START( x68000 ) PORT_START("ctrltype") PORT_CONFNAME(0x0f, 0x00, "Joystick Port 1") @@ -1870,8 +1863,11 @@ static MACHINE_CONFIG_FRAGMENT( x68000_base ) MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(x68k_state,x68k_ct_w)) // CT1, CT2 from YM2151 port 0x1b MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) + MCFG_OKIM6258_ADD("okim6258", 4000000) - MCFG_SOUND_CONFIG(x68k_okim6258_interface) + MCFG_OKIM6258_DIVIDER(FOSC_DIV_BY_512) + MCFG_OKIM6258_ADPCM_TYPE(TYPE_4BITS) + MCFG_OKIM6258_OUT_BITS(OUTPUT_10BITS) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) |