From 06e479859585a706751643ed7b69ba38204dee79 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 22 Apr 2014 17:38:46 +0000 Subject: [PATCH] adsp21xx_device: converted to devcb2 (nw) --- src/emu/cpu/adsp2100/2100ops.inc | 12 ++++++------ src/emu/cpu/adsp2100/adsp2100.c | 23 +++++++--------------- src/emu/cpu/adsp2100/adsp2100.h | 33 ++++++++++++++------------------ src/mame/audio/dcs.c | 31 ++++++++++-------------------- src/mame/drivers/gaelco3d.c | 9 +-------- src/mame/drivers/harddriv.c | 31 ++++++------------------------ src/mame/drivers/magictg.c | 8 -------- src/mame/drivers/metalmx.c | 8 -------- src/mame/drivers/stv.c | 7 ------- 9 files changed, 44 insertions(+), 118 deletions(-) diff --git a/src/emu/cpu/adsp2100/2100ops.inc b/src/emu/cpu/adsp2100/2100ops.inc index b0c40ee91be..efa149762e7 100644 --- a/src/emu/cpu/adsp2100/2100ops.inc +++ b/src/emu/cpu/adsp2100/2100ops.inc @@ -80,8 +80,8 @@ inline void adsp21xx_device::update_mstat() m_alt = temp; } if ((m_mstat ^ m_mstat_prev) & MSTAT_TIMER) - if (!m_timer_fired_func.isnull()) - m_timer_fired_func((m_mstat & MSTAT_TIMER) != 0); + if (!m_timer_fired_cb.isnull()) + m_timer_fired_cb((m_mstat & MSTAT_TIMER) != 0); if (m_mstat & MSTAT_STICKYV) m_astat_clear = ~(CFLAG | NFLAG | ZFLAG); else @@ -419,8 +419,8 @@ void adsp21xx_device::write_reg3(int regnum, INT32 val) case 0x05: cntr_stack_push(); m_cntr = val & 0x3fff; break; case 0x06: m_core.sb.s = (INT32)(val << 27) >> 27; break; case 0x07: m_px = val; break; - case 0x09: if (!m_sport_tx_func.isnull()) m_sport_tx_func(0, val); break; - case 0x0b: if (!m_sport_tx_func.isnull()) m_sport_tx_func(1, val); break; + case 0x09: if (!m_sport_tx_cb.isnull()) m_sport_tx_cb(0, val, 0xffff); break; + case 0x0b: if (!m_sport_tx_cb.isnull()) m_sport_tx_cb(1, val, 0xffff); break; case 0x0c: m_ifc = val; if (m_chip_type >= CHIP_TYPE_ADSP2181) @@ -500,8 +500,8 @@ INT32 adsp21xx_device::read_reg3(int regnum) case 0x05: return m_cntr; case 0x06: return m_core.sb.s; case 0x07: return m_px; - case 0x08: if (!m_sport_rx_func.isnull()) return m_sport_rx_func(0); else return 0; - case 0x0a: if (!m_sport_rx_func.isnull()) return m_sport_rx_func(1); else return 0; + case 0x08: if (!m_sport_rx_cb.isnull()) return m_sport_rx_cb(0); else return 0; + case 0x0a: if (!m_sport_rx_cb.isnull()) return m_sport_rx_cb(1); else return 0; case 0x0f: return pc_stack_pop_val(); default: logerror("ADSP %04x: Reading from an invalid register!\n", m_ppc); return 0; } diff --git a/src/emu/cpu/adsp2100/adsp2100.c b/src/emu/cpu/adsp2100/adsp2100.c index e3a530fe89f..e7e83602786 100644 --- a/src/emu/cpu/adsp2100/adsp2100.c +++ b/src/emu/cpu/adsp2100/adsp2100.c @@ -154,7 +154,10 @@ adsp21xx_device::adsp21xx_device(const machine_config &mconfig, device_type type m_icount(0), m_mstat_mask((m_chip_type >= CHIP_TYPE_ADSP2101) ? 0x7f : 0x0f), m_imask_mask((m_chip_type >= CHIP_TYPE_ADSP2181) ? 0x3ff : - (m_chip_type >= CHIP_TYPE_ADSP2101) ? 0x3f : 0x0f) + (m_chip_type >= CHIP_TYPE_ADSP2101) ? 0x3f : 0x0f), + m_sport_rx_cb(*this), + m_sport_tx_cb(*this), + m_timer_fired_cb(*this) { // initialize remaining state memset(&m_core, 0, sizeof(m_core)); @@ -291,18 +294,6 @@ adsp21xx_device::~adsp21xx_device() } -//------------------------------------------------- -// static_set_config - set the configuration -// structure -//------------------------------------------------- - -void adsp21xx_device::static_set_config(device_t &device, const adsp21xx_config &config) -{ - adsp21xx_device &adsp = downcast(device); - static_cast(adsp) = config; -} - - //------------------------------------------------- // load_boot_data - load the boot data from an // 8-bit ROM @@ -411,9 +402,9 @@ UINT16 adsp2181_device::idma_data_r() void adsp21xx_device::device_start() { - m_sport_rx_func.resolve(m_sport_rx_callback, *this); - m_sport_tx_func.resolve(m_sport_tx_callback, *this); - m_timer_fired_func.resolve(m_timer_fired, *this); + m_sport_rx_cb.resolve(); + m_sport_tx_cb.resolve(); + m_timer_fired_cb.resolve(); // get our address spaces m_program = &space(AS_PROGRAM); diff --git a/src/emu/cpu/adsp2100/adsp2100.h b/src/emu/cpu/adsp2100/adsp2100.h index 019cffeb9bf..de0fbccb56f 100644 --- a/src/emu/cpu/adsp2100/adsp2100.h +++ b/src/emu/cpu/adsp2100/adsp2100.h @@ -183,29 +183,22 @@ enum // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_ADSP21XX_CONFIG(_config) \ - adsp21xx_device::static_set_config(*device, _config); +#define MCFG_ADSP21XX_SPORT_RX_CB(_devcb) \ + devcb = &adsp21xx_device::set_sport_rx_callback(*device, DEVCB2_##_devcb); +#define MCFG_ADSP21XX_SPORT_TX_CB(_devcb) \ + devcb = &adsp21xx_device::set_sport_tx_callback(*device, DEVCB2_##_devcb); + +#define MCFG_ADSP21XX_TIMER_FIRED_CB(_devcb) \ + devcb = &adsp21xx_device::set_timer_fired_callback(*device, DEVCB2_##_devcb); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -class adsp21xx_device; - -// ======================> adsp21xx_config - -struct adsp21xx_config -{ - devcb_read32 m_sport_rx_callback; // callback for serial receive - devcb_write32 m_sport_tx_callback; // callback for serial transmit - devcb_write_line m_timer_fired; // callback for timer fired -}; - // ======================> adsp21xx_device -class adsp21xx_device : public cpu_device, - public adsp21xx_config +class adsp21xx_device : public cpu_device { protected: enum @@ -224,7 +217,9 @@ protected: public: // inline configuration helpers - static void static_set_config(device_t &device, const adsp21xx_config &config); + template static devcb2_base &set_sport_rx_callback(device_t &device, _Object object) { return downcast(device).m_sport_rx_cb.set_callback(object); } + template static devcb2_base &set_sport_tx_callback(device_t &device, _Object object) { return downcast(device).m_sport_tx_cb.set_callback(object); } + template static devcb2_base &set_timer_fired_callback(device_t &device, _Object object) { return downcast(device).m_timer_fired_cb.set_callback(object); } // public interfaces void load_boot_data(UINT8 *srcdata, UINT32 *dstdata); @@ -461,9 +456,9 @@ protected: UINT16 m_mask_table[0x4000]; UINT16 m_reverse_table[0x4000]; - devcb_resolved_read32 m_sport_rx_func; - devcb_resolved_write32 m_sport_tx_func; - devcb_resolved_write_line m_timer_fired_func; + devcb2_read32 m_sport_rx_cb; // callback for serial receive + devcb2_write32 m_sport_tx_cb; // callback for serial transmit + devcb2_write_line m_timer_fired_cb; // callback for timer fired // debugging #if ADSP_TRACK_HOTSPOTS diff --git a/src/mame/audio/dcs.c b/src/mame/audio/dcs.c index 68642fa9fbc..355c51872e8 100644 --- a/src/mame/audio/dcs.c +++ b/src/mame/audio/dcs.c @@ -432,22 +432,6 @@ static ADDRESS_MAP_START( denver_io_map, AS_IO, 16, dcs_audio_device ) ADDRESS_MAP_END - -/************************************* - * - * CPU configuration - * - *************************************/ - -static const adsp21xx_config adsp_config = -{ - DEVCB_NULL, /* callback for serial receive */ - DEVCB_DEVICE_MEMBER32(DEVICE_SELF_OWNER, dcs_audio_device, sound_tx_callback), /* callback for serial transmit */ - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, dcs_audio_device,timer_enable_callback) /* callback for timer fired */ -}; - - - /************************************* * * Original DCS Machine Drivers @@ -457,7 +441,8 @@ static const adsp21xx_config adsp_config = /* Basic DCS system with ADSP-2105 and 2k of SRAM (T-unit, V-unit, Killer Instinct) */ MACHINE_CONFIG_FRAGMENT( dcs_audio_2k ) MCFG_CPU_ADD("dcs", ADSP2105, XTAL_10MHz) - MCFG_ADSP21XX_CONFIG(adsp_config) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(dcs_audio_device, sound_tx_callback)) /* callback for serial transmit */ + MCFG_ADSP21XX_TIMER_FIRED_CB(WRITELINE(dcs_audio_device,timer_enable_callback)) /* callback for timer fired */ MCFG_CPU_PROGRAM_MAP(dcs_2k_program_map) MCFG_CPU_DATA_MAP(dcs_2k_data_map) @@ -502,7 +487,8 @@ MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( dcs2_audio_2115 ) MCFG_CPU_ADD("dcs2", ADSP2115, XTAL_16MHz) - MCFG_ADSP21XX_CONFIG(adsp_config) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(dcs_audio_device, sound_tx_callback)) /* callback for serial transmit */ + MCFG_ADSP21XX_TIMER_FIRED_CB(WRITELINE(dcs_audio_device,timer_enable_callback)) /* callback for timer fired */ MCFG_CPU_PROGRAM_MAP(dcs2_2115_program_map) MCFG_CPU_DATA_MAP(dcs2_2115_data_map) @@ -523,7 +509,8 @@ MACHINE_CONFIG_END MACHINE_CONFIG_DERIVED( dcs2_audio_2104, dcs2_audio_2115 ) MCFG_CPU_REPLACE("dcs2", ADSP2104, XTAL_16MHz) - MCFG_ADSP21XX_CONFIG(adsp_config) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(dcs_audio_device, sound_tx_callback)) /* callback for serial transmit */ + MCFG_ADSP21XX_TIMER_FIRED_CB(WRITELINE(dcs_audio_device,timer_enable_callback)) /* callback for timer fired */ MCFG_CPU_PROGRAM_MAP(dcs2_2104_program_map) MCFG_CPU_DATA_MAP(dcs2_2104_data_map) MACHINE_CONFIG_END @@ -538,7 +525,8 @@ MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( dcs2_audio_dsio ) MCFG_CPU_ADD("dsio", ADSP2181, XTAL_32MHz) - MCFG_ADSP21XX_CONFIG(adsp_config) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(dcs_audio_device, sound_tx_callback)) /* callback for serial transmit */ + MCFG_ADSP21XX_TIMER_FIRED_CB(WRITELINE(dcs_audio_device,timer_enable_callback)) /* callback for timer fired */ MCFG_CPU_PROGRAM_MAP(dsio_program_map) MCFG_CPU_DATA_MAP(dsio_data_map) MCFG_CPU_IO_MAP(dsio_io_map) @@ -565,7 +553,8 @@ MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( dcs2_audio_denver ) MCFG_CPU_ADD("denver", ADSP2181, XTAL_33_333MHz) - MCFG_ADSP21XX_CONFIG(adsp_config) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(dcs_audio_device, sound_tx_callback)) /* callback for serial transmit */ + MCFG_ADSP21XX_TIMER_FIRED_CB(WRITELINE(dcs_audio_device,timer_enable_callback)) /* callback for timer fired */ MCFG_CPU_PROGRAM_MAP(denver_program_map) MCFG_CPU_DATA_MAP(denver_data_map) MCFG_CPU_IO_MAP(denver_io_map) diff --git a/src/mame/drivers/gaelco3d.c b/src/mame/drivers/gaelco3d.c index c4572d5b6f0..a71028e3bfc 100644 --- a/src/mame/drivers/gaelco3d.c +++ b/src/mame/drivers/gaelco3d.c @@ -949,13 +949,6 @@ INPUT_PORTS_END * *************************************/ -static const adsp21xx_config adsp_config = -{ - DEVCB_NULL, /* callback for serial receive */ - DEVCB_DRIVER_MEMBER32(gaelco3d_state, adsp_tx_callback), /* callback for serial transmit */ - DEVCB_NULL /* callback for timer fired */ -}; - static const tms3203x_config tms_config = { true, @@ -977,7 +970,7 @@ static MACHINE_CONFIG_START( gaelco3d, gaelco3d_state ) MCFG_CPU_PROGRAM_MAP(tms_map) MCFG_CPU_ADD("adsp", ADSP2115, 16000000) - MCFG_ADSP21XX_CONFIG(adsp_config) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(gaelco3d_state, adsp_tx_callback)) MCFG_CPU_PROGRAM_MAP(adsp_program_map) MCFG_CPU_DATA_MAP(adsp_data_map) diff --git a/src/mame/drivers/harddriv.c b/src/mame/drivers/harddriv.c index 99d89ce8096..0a4cd19d3ef 100644 --- a/src/mame/drivers/harddriv.c +++ b/src/mame/drivers/harddriv.c @@ -1279,29 +1279,6 @@ static INPUT_PORTS_START( hdrivair ) INPUT_PORTS_END - -/************************************* - * - * CPU configuration - * - *************************************/ - -static const adsp21xx_config ds3sdsp_config = -{ - DEVCB_DRIVER_MEMBER32(harddriv_state, hdds3sdsp_serial_rx_callback), /* callback for serial receive */ - DEVCB_DRIVER_MEMBER32(harddriv_state, hdds3sdsp_serial_tx_callback), /* callback for serial transmit */ - DEVCB_DRIVER_LINE_MEMBER(harddriv_state, hdds3sdsp_timer_enable_callback) /* callback for timer fired */ -}; - -static const adsp21xx_config ds3xdsp_config = -{ - DEVCB_DRIVER_MEMBER32(harddriv_state, hdds3xdsp_serial_rx_callback), /* callback for serial receive */ - DEVCB_DRIVER_MEMBER32(harddriv_state, hdds3xdsp_serial_tx_callback), /* callback for serial transmit */ - DEVCB_DRIVER_LINE_MEMBER(harddriv_state, hdds3xdsp_timer_enable_callback) /* callback for timer fired */ -}; - - - /************************************* * * Main board pieces @@ -1421,13 +1398,17 @@ static MACHINE_CONFIG_FRAGMENT( ds3 ) MCFG_QUANTUM_TIME(attotime::from_hz(60000)) MCFG_CPU_ADD("ds3sdsp", ADSP2105, XTAL_10MHz) - MCFG_ADSP21XX_CONFIG(ds3sdsp_config) + MCFG_ADSP21XX_SPORT_RX_CB(READ32(harddriv_state, hdds3sdsp_serial_rx_callback)) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(harddriv_state, hdds3sdsp_serial_tx_callback)) + MCFG_ADSP21XX_TIMER_FIRED_CB(WRITELINE(harddriv_state, hdds3sdsp_timer_enable_callback)) MCFG_CPU_PROGRAM_MAP(ds3sdsp_program_map) MCFG_CPU_DATA_MAP(ds3sdsp_data_map) MCFG_TIMER_DRIVER_ADD("ds3sdsp_timer", harddriv_state, ds3sdsp_internal_timer_callback) MCFG_CPU_ADD("ds3xdsp", ADSP2105, XTAL_10MHz) - MCFG_ADSP21XX_CONFIG(ds3xdsp_config) + MCFG_ADSP21XX_SPORT_RX_CB(READ32(harddriv_state, hdds3xdsp_serial_rx_callback)) + MCFG_ADSP21XX_SPORT_TX_CB(WRITE32(harddriv_state, hdds3xdsp_serial_tx_callback)) + MCFG_ADSP21XX_TIMER_FIRED_CB(WRITELINE(harddriv_state, hdds3xdsp_timer_enable_callback)) MCFG_CPU_PROGRAM_MAP(ds3xdsp_program_map) MCFG_CPU_DATA_MAP(ds3xdsp_data_map) MCFG_TIMER_DRIVER_ADD("ds3xdsp_timer", harddriv_state, ds3xdsp_internal_timer_callback) diff --git a/src/mame/drivers/magictg.c b/src/mame/drivers/magictg.c index c16a3cc99dd..2f69e0484cc 100644 --- a/src/mame/drivers/magictg.c +++ b/src/mame/drivers/magictg.c @@ -888,13 +888,6 @@ static const mips3_config config = }; #endif -static const adsp21xx_config adsp_config = -{ - DEVCB_NULL, /* callback for serial receive */ - DEVCB_NULL,//sound_tx_callback, /* callback for serial transmit */ - DEVCB_NULL,//timer_enable_callback /* callback for timer fired */ -}; - static const voodoo_config voodoo_1_intf = { 2, // fbmem; @@ -928,7 +921,6 @@ static MACHINE_CONFIG_START( magictg, magictg_state ) MCFG_CPU_PROGRAM_MAP(magictg_map) MCFG_CPU_ADD("adsp", ADSP2181, 16000000) - MCFG_ADSP21XX_CONFIG(adsp_config) MCFG_CPU_PROGRAM_MAP(adsp_program_map) MCFG_CPU_DATA_MAP(adsp_data_map) MCFG_CPU_IO_MAP(adsp_io_map) diff --git a/src/mame/drivers/metalmx.c b/src/mame/drivers/metalmx.c index 60863b78a50..d2aa4799e63 100644 --- a/src/mame/drivers/metalmx.c +++ b/src/mame/drivers/metalmx.c @@ -688,13 +688,6 @@ INPUT_PORTS_END * *************************************/ -static const adsp21xx_config adsp_config = -{ - DEVCB_NULL, /* callback for serial receive */ - DEVCB_NULL, /* callback for serial transmit */ - DEVCB_NULL, /* callback for timer fired */ -}; - static const tms34010_config gsp_config = { TRUE, /* halt on reset */ @@ -718,7 +711,6 @@ static MACHINE_CONFIG_START( metalmx, metalmx_state ) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_ADD("adsp", ADSP2105, XTAL_10MHz) - MCFG_ADSP21XX_CONFIG(adsp_config) MCFG_CPU_PROGRAM_MAP(adsp_program_map) MCFG_CPU_DATA_MAP(adsp_data_map) diff --git a/src/mame/drivers/stv.c b/src/mame/drivers/stv.c index e5bb116e0f2..cb4432f180c 100644 --- a/src/mame/drivers/stv.c +++ b/src/mame/drivers/stv.c @@ -1146,12 +1146,6 @@ static ADDRESS_MAP_START( adsp_io_map, AS_IO, 16, stv_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_END -static const adsp21xx_config adsp_config = -{ - DEVCB_NULL, /* callback for serial receive */ - DEVCB_NULL,//sound_tx_callback, /* callback for serial transmit */ - DEVCB_NULL,//timer_enable_callback /* callback for timer fired */ -}; MACHINE_RESET_MEMBER(stv_state,batmanfr) { @@ -1174,7 +1168,6 @@ MACHINE_RESET_MEMBER(stv_state,batmanfr) static MACHINE_CONFIG_DERIVED( batmanfr, stv ) MCFG_CPU_ADD("adsp", ADSP2181, 16000000) - MCFG_ADSP21XX_CONFIG(adsp_config) MCFG_CPU_PROGRAM_MAP(adsp_program_map) MCFG_CPU_DATA_MAP(adsp_data_map) MCFG_CPU_IO_MAP(adsp_io_map)