summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commitabac83b8dc2c2be07ceef8d11166a22735f567cb (patch)
treeb3fd204fff80fc339b44936c3ae7abbd3e9b9430
parent6c25ec2365e53b04ccab7e140b29829333a8eae0 (diff)
okim6258: converted to use inline config. nw.
-rw-r--r--src/emu/sound/okim6258.c7
-rw-r--r--src/emu/sound/okim6258.h30
-rw-r--r--src/mess/drivers/x68k.c12
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)