diff --git a/src/devices/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h index 47f116abd60..4deaac2423f 100644 --- a/src/devices/cpu/tms32025/tms32025.h +++ b/src/devices/cpu/tms32025/tms32025.h @@ -23,25 +23,6 @@ #pragma once -#define MCFG_TMS32025_BIO_IN_CB(_devcb) \ - downcast(*device).set_bio_in_cb(DEVCB_##_devcb); /* BIO input */ - -#define MCFG_TMS32025_HOLD_IN_CB(_devcb) \ - downcast(*device).set_hold_in_cb(DEVCB_##_devcb); /* HOLD input */ - -#define MCFG_TMS32025_HOLD_ACK_OUT_CB(_devcb) \ - downcast(*device).set_hold_ack_out_cb(DEVCB_##_devcb); /* HOLD Acknowledge output */ - -#define MCFG_TMS32025_XF_OUT_CB(_devcb) \ - downcast(*device).set_xf_out_cb(DEVCB_##_devcb); /* XF output */ - -#define MCFG_TMS32025_DR_IN_CB(_devcb) \ - downcast(*device).set_dr_in_cb(DEVCB_##_devcb); /* Serial Data Receive input */ - -#define MCFG_TMS32025_DX_OUT_CB(_devcb) \ - downcast(*device).set_dx_out_cb(DEVCB_##_devcb); /* Serial Data Transmit output */ - - /**************************************************************************** * Interrupt constants */ @@ -84,12 +65,6 @@ public: tms32025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration helpers - template devcb_base &set_bio_in_cb(Object &&cb) { return m_bio_in.set_callback(std::forward(cb)); } - template devcb_base &set_hold_in_cb(Object &&cb) { return m_hold_in.set_callback(std::forward(cb)); } - template devcb_base &set_hold_ack_out_cb(Object &&cb) { return m_hold_ack_out.set_callback(std::forward(cb)); } - template devcb_base &set_xf_out_cb(Object &&cb) { return m_xf_out.set_callback(std::forward(cb)); } - template devcb_base &set_dr_in_cb(Object &&cb) { return m_dr_in.set_callback(std::forward(cb)); } - template devcb_base &set_dx_out_cb(Object &&cb) { return m_dx_out.set_callback(std::forward(cb)); } auto bio_in_cb() { return m_bio_in.bind(); } auto hold_in_cb() { return m_hold_in.bind(); } auto hold_ack_out_cb() { return m_hold_ack_out.bind(); } diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp index 14a5efa1a9c..6167a3d461a 100644 --- a/src/mame/drivers/coolpool.cpp +++ b/src/mame/drivers/coolpool.cpp @@ -764,12 +764,12 @@ MACHINE_CONFIG_START(coolpool_state::coolpool) MCFG_TMS340X0_TO_SHIFTREG_CB(coolpool_state, to_shiftreg) /* write to shiftreg function */ MCFG_TMS340X0_FROM_SHIFTREG_CB(coolpool_state, from_shiftreg) /* read from shiftreg function */ - MCFG_DEVICE_ADD("dsp", TMS32026,XTAL(40'000'000)) - MCFG_DEVICE_PROGRAM_MAP(coolpool_dsp_pgm_map) - MCFG_DEVICE_IO_MAP(coolpool_dsp_io_map) - MCFG_TMS32025_BIO_IN_CB(READ16(*this, coolpool_state, dsp_bio_line_r)) - MCFG_TMS32025_HOLD_IN_CB(READ16(*this, coolpool_state, dsp_hold_line_r)) -// MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(*this, coolpool_state, dsp_HOLDA_signal_w)) + tms32026_device& dsp(TMS32026(config, m_dsp, XTAL(40'000'000))); + dsp.set_addrmap(AS_PROGRAM, &coolpool_state::coolpool_dsp_pgm_map); + dsp.set_addrmap(AS_IO, &coolpool_state::coolpool_dsp_io_map); + dsp.bio_in_cb().set(FUNC(coolpool_state::dsp_bio_line_r)); + dsp.hold_in_cb().set(FUNC(coolpool_state::dsp_hold_line_r)); +// dsp.hold_ack_out_cb().set(FUNC(coolpool_state::dsp_HOLDA_signal_w)); MCFG_GENERIC_LATCH_16_ADD("main2dsp") MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("dsp", 0)) /* ??? I have no idea who should generate this! */ @@ -805,8 +805,7 @@ MACHINE_CONFIG_START(coolpool_state::_9ballsht) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_PROGRAM_MAP(nballsht_map) - MCFG_DEVICE_MODIFY("dsp") - MCFG_DEVICE_IO_MAP(nballsht_dsp_io_map) + subdevice("dsp")->set_addrmap(AS_IO, &coolpool_state::nballsht_dsp_io_map); MACHINE_CONFIG_END diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp index d7a135d46bc..7afbacf550b 100644 --- a/src/mame/drivers/namcos21.cpp +++ b/src/mame/drivers/namcos21.cpp @@ -1930,21 +1930,21 @@ MACHINE_CONFIG_START(namcos21_state::namcos21) configure_c65_namcos21(config); - MCFG_DEVICE_ADD("dspmaster", TMS32025,24000000) /* 24 MHz? overclocked */ - MCFG_DEVICE_PROGRAM_MAP(master_dsp_program) - MCFG_DEVICE_DATA_MAP(master_dsp_data) - MCFG_DEVICE_IO_MAP(master_dsp_io) - MCFG_TMS32025_HOLD_IN_CB(CONSTANT(0)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP) - MCFG_TMS32025_XF_OUT_CB(WRITE16(*this, namcos21_state, dsp_xf_w)) + tms32025_device& dspmaster(TMS32025(config, m_dspmaster, 24000000)); /* 24 MHz? overclocked */ + dspmaster.set_addrmap(AS_PROGRAM, &namcos21_state::master_dsp_program); + dspmaster.set_addrmap(AS_DATA, &namcos21_state::master_dsp_data); + dspmaster.set_addrmap(AS_IO, &namcos21_state::master_dsp_io); + dspmaster.hold_in_cb().set_constant(0); + dspmaster.hold_ack_out_cb().set_nop(); + dspmaster.xf_out_cb().set(FUNC(namcos21_state::dsp_xf_w)); - MCFG_DEVICE_ADD("dspslave", TMS32025,24000000*4) /* 24 MHz?; overclocked */ - MCFG_DEVICE_PROGRAM_MAP(slave_dsp_program) - MCFG_DEVICE_DATA_MAP(slave_dsp_data) - MCFG_DEVICE_IO_MAP(slave_dsp_io) - MCFG_TMS32025_HOLD_IN_CB(CONSTANT(0)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP) - MCFG_TMS32025_XF_OUT_CB(WRITE16(*this, namcos21_state, slave_XF_output_w)) + tms32025_device& dspslave(TMS32025(config, m_dspslave, 24000000*4)); /* 24 MHz? overclocked */ + dspslave.set_addrmap(AS_PROGRAM, &namcos21_state::slave_dsp_program); + dspslave.set_addrmap(AS_DATA, &namcos21_state::slave_dsp_data); + dspslave.set_addrmap(AS_IO, &namcos21_state::slave_dsp_io); + dspslave.hold_in_cb().set_constant(0); + dspslave.hold_ack_out_cb().set_nop(); + dspslave.xf_out_cb().set(FUNC(namcos21_state::slave_XF_output_w)); MCFG_QUANTUM_TIME(attotime::from_hz(12000)) @@ -1995,14 +1995,14 @@ MACHINE_CONFIG_START(namcos21_state::driveyes) configure_c65_namcos21(config); - MCFG_DEVICE_ADD("dsp", TMS32025,24000000*2) /* 24 MHz? overclocked */ - MCFG_DEVICE_PROGRAM_MAP(winrun_dsp_program) - MCFG_DEVICE_DATA_MAP(winrun_dsp_data) - MCFG_DEVICE_IO_MAP(winrun_dsp_io) - MCFG_TMS32025_BIO_IN_CB(READ16(*this, namcos21_state, winrun_poly_reset_r)) - MCFG_TMS32025_HOLD_IN_CB(CONSTANT(0)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP) - MCFG_TMS32025_XF_OUT_CB(NOOP) + tms32025_device& dsp(TMS32025(config, m_dsp, 24000000*2)); /* 24 MHz? overclocked */ + dsp.set_addrmap(AS_PROGRAM, &namcos21_state::winrun_dsp_program); + dsp.set_addrmap(AS_DATA, &namcos21_state::winrun_dsp_data); + dsp.set_addrmap(AS_IO, &namcos21_state::winrun_dsp_io); + dsp.bio_in_cb().set(FUNC(namcos21_state::winrun_poly_reset_r)); + dsp.hold_in_cb().set_constant(0); + dsp.hold_ack_out_cb().set_nop(); + dsp.xf_out_cb().set_nop(); MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */ @@ -2054,14 +2054,14 @@ MACHINE_CONFIG_START(namcos21_state::winrun) configure_c65_namcos21(config); - MCFG_DEVICE_ADD("dsp", TMS32025,24000000) /* 24 MHz? overclocked */ - MCFG_DEVICE_PROGRAM_MAP(winrun_dsp_program) - MCFG_DEVICE_DATA_MAP(winrun_dsp_data) - MCFG_DEVICE_IO_MAP(winrun_dsp_io) - MCFG_TMS32025_BIO_IN_CB(READ16(*this, namcos21_state, winrun_poly_reset_r)) - MCFG_TMS32025_HOLD_IN_CB(CONSTANT(0)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(NOOP) - MCFG_TMS32025_XF_OUT_CB(NOOP) + tms32025_device& dsp(TMS32025(config, m_dsp, 24000000)); /* 24 MHz? overclocked */ + dsp.set_addrmap(AS_PROGRAM, &namcos21_state::winrun_dsp_program); + dsp.set_addrmap(AS_DATA, &namcos21_state::winrun_dsp_data); + dsp.set_addrmap(AS_IO, &namcos21_state::winrun_dsp_io); + dsp.bio_in_cb().set(FUNC(namcos21_state::winrun_poly_reset_r)); + dsp.hold_in_cb().set_constant(0); + dsp.hold_ack_out_cb().set_nop(); + dsp.xf_out_cb().set_nop(); MCFG_DEVICE_ADD("gpu", M68000,12288000) /* graphics coprocessor */ MCFG_DEVICE_PROGRAM_MAP(winrun_gpu_map) diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index ea9e61104cc..a2aeb4bbdbd 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -3759,26 +3759,28 @@ MACHINE_CONFIG_START(namcos22_state::namcos22) MCFG_DEVICE_PROGRAM_MAP(namcos22_am) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22_interrupt) - MCFG_DEVICE_ADD("master", TMS32025,SS22_MASTER_CLOCK) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(master_dsp_program) - MCFG_DEVICE_DATA_MAP(master_dsp_data) - MCFG_DEVICE_IO_MAP(master_dsp_io) - MCFG_TMS32025_BIO_IN_CB(READ16(*this, namcos22_state, pdp_status_r)) - MCFG_TMS32025_HOLD_IN_CB(READ16(*this, namcos22_state, dsp_hold_signal_r)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(*this, namcos22_state, dsp_hold_ack_w)) - MCFG_TMS32025_XF_OUT_CB(WRITE16(*this, namcos22_state, dsp_xf_output_w)) - MCFG_TMS32025_DR_IN_CB(READ16(*this, namcos22_state, master_serial_io_r)) + tms32025_device& master(TMS32025(config, m_master, SS22_MASTER_CLOCK)); /* ? */ + master.set_addrmap(AS_PROGRAM, &namcos22_state::master_dsp_program); + master.set_addrmap(AS_DATA, &namcos22_state::master_dsp_data); + master.set_addrmap(AS_IO, &namcos22_state::master_dsp_io); + master.bio_in_cb().set(FUNC(namcos22_state::pdp_status_r)); + master.hold_in_cb().set(FUNC(namcos22_state::dsp_hold_signal_r)); + master.hold_ack_out_cb().set(FUNC(namcos22_state::dsp_hold_ack_w)); + master.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w)); + master.dr_in_cb().set(FUNC(namcos22_state::master_serial_io_r)); + MCFG_TIMER_DRIVER_ADD_SCANLINE("master_st", namcos22_state, dsp_master_serial_irq, "screen", 0, 1) - MCFG_DEVICE_ADD("slave", TMS32025,SS22_MASTER_CLOCK) /* ? */ - MCFG_DEVICE_PROGRAM_MAP(slave_dsp_program) - MCFG_DEVICE_DATA_MAP(slave_dsp_data) - MCFG_DEVICE_IO_MAP(slave_dsp_io) - MCFG_TMS32025_BIO_IN_CB(READ16(*this, namcos22_state, dsp_bioz_r)) - MCFG_TMS32025_HOLD_IN_CB(READ16(*this, namcos22_state, dsp_hold_signal_r)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(*this, namcos22_state, dsp_hold_ack_w)) - MCFG_TMS32025_XF_OUT_CB(WRITE16(*this, namcos22_state, dsp_xf_output_w)) - MCFG_TMS32025_DX_OUT_CB(WRITE16(*this, namcos22_state, slave_serial_io_w)) + tms32025_device& slave(TMS32025(config, m_slave, SS22_MASTER_CLOCK)); /* ? */ + slave.set_addrmap(AS_PROGRAM, &namcos22_state::slave_dsp_program); + slave.set_addrmap(AS_DATA, &namcos22_state::slave_dsp_data); + slave.set_addrmap(AS_IO, &namcos22_state::slave_dsp_io); + slave.bio_in_cb().set(FUNC(namcos22_state::dsp_bioz_r)); + slave.hold_in_cb().set(FUNC(namcos22_state::dsp_hold_signal_r)); + slave.hold_ack_out_cb().set(FUNC(namcos22_state::dsp_hold_ack_w)); + slave.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w)); + slave.dx_out_cb().set(FUNC(namcos22_state::slave_serial_io_w)); + MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_st", namcos22_state, dsp_slave_serial_irq, "screen", 0, 1) MCFG_DEVICE_ADD("mcu", NAMCO_C74, SS22_MASTER_CLOCK/3) // C74 on the CPU board has no periodic interrupts, it runs entirely off Timer A0 @@ -3828,26 +3830,28 @@ MACHINE_CONFIG_START(namcos22_state::namcos22s) MCFG_DEVICE_PROGRAM_MAP(namcos22s_am) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos22_state, namcos22s_interrupt) - MCFG_DEVICE_ADD("master", TMS32025,SS22_MASTER_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(master_dsp_program) - MCFG_DEVICE_DATA_MAP(master_dsp_data) - MCFG_DEVICE_IO_MAP(master_dsp_io) - MCFG_TMS32025_BIO_IN_CB(READ16(*this, namcos22_state, pdp_status_r)) - MCFG_TMS32025_HOLD_IN_CB(READ16(*this, namcos22_state, dsp_hold_signal_r)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(*this, namcos22_state, dsp_hold_ack_w)) - MCFG_TMS32025_XF_OUT_CB(WRITE16(*this, namcos22_state, dsp_xf_output_w)) - MCFG_TMS32025_DR_IN_CB(READ16(*this, namcos22_state, master_serial_io_r)) + tms32025_device& master(TMS32025(config, m_master, SS22_MASTER_CLOCK)); + master.set_addrmap(AS_PROGRAM, &namcos22_state::master_dsp_program); + master.set_addrmap(AS_DATA, &namcos22_state::master_dsp_data); + master.set_addrmap(AS_IO, &namcos22_state::master_dsp_io); + master.bio_in_cb().set(FUNC(namcos22_state::pdp_status_r)); + master.hold_in_cb().set(FUNC(namcos22_state::dsp_hold_signal_r)); + master.hold_ack_out_cb().set(FUNC(namcos22_state::dsp_hold_ack_w)); + master.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w)); + master.dr_in_cb().set(FUNC(namcos22_state::master_serial_io_r)); + MCFG_TIMER_DRIVER_ADD_SCANLINE("master_st", namcos22_state, dsp_master_serial_irq, "screen", 0, 1) - MCFG_DEVICE_ADD("slave", TMS32025,SS22_MASTER_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(slave_dsp_program) - MCFG_DEVICE_DATA_MAP(slave_dsp_data) - MCFG_DEVICE_IO_MAP(slave_dsp_io) - MCFG_TMS32025_BIO_IN_CB(READ16(*this, namcos22_state, dsp_bioz_r)) - MCFG_TMS32025_HOLD_IN_CB(READ16(*this, namcos22_state, dsp_hold_signal_r)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(*this, namcos22_state, dsp_hold_ack_w)) - MCFG_TMS32025_XF_OUT_CB(WRITE16(*this, namcos22_state, dsp_xf_output_w)) - MCFG_TMS32025_DX_OUT_CB(WRITE16(*this, namcos22_state, slave_serial_io_w)) + tms32025_device& slave(TMS32025(config, m_slave, SS22_MASTER_CLOCK)); + slave.set_addrmap(AS_PROGRAM, &namcos22_state::slave_dsp_program); + slave.set_addrmap(AS_DATA, &namcos22_state::slave_dsp_data); + slave.set_addrmap(AS_IO, &namcos22_state::slave_dsp_io); + slave.bio_in_cb().set(FUNC(namcos22_state::dsp_bioz_r)); + slave.hold_in_cb().set(FUNC(namcos22_state::dsp_hold_signal_r)); + slave.hold_ack_out_cb().set(FUNC(namcos22_state::dsp_hold_ack_w)); + slave.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w)); + slave.dx_out_cb().set(FUNC(namcos22_state::slave_serial_io_w)); + MCFG_TIMER_DRIVER_ADD_SCANLINE("slave_st", namcos22_state, dsp_slave_serial_irq, "screen", 0, 1) MCFG_DEVICE_ADD("mcu", M37710S4, SS22_MASTER_CLOCK/3) diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp index bdddcf3e54f..5973c5b82e5 100644 --- a/src/mame/drivers/taitoair.cpp +++ b/src/mame/drivers/taitoair.cpp @@ -712,11 +712,11 @@ MACHINE_CONFIG_START(taitoair_state::airsys) MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(16'000'000) / 4) // Z8400AB1 MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_ADD("dsp", TMS32025, XTAL(36'000'000)) // Unverified - MCFG_DEVICE_PROGRAM_MAP(DSP_map_program) - MCFG_DEVICE_DATA_MAP(DSP_map_data) - MCFG_TMS32025_HOLD_IN_CB(READ16(*this, taitoair_state, dsp_HOLD_signal_r)) - MCFG_TMS32025_HOLD_ACK_OUT_CB(WRITE16(*this, taitoair_state, dsp_HOLDA_signal_w)) + tms32025_device& dsp(TMS32025(config, m_dsp, XTAL(36'000'000))); // Unverified + dsp.set_addrmap(AS_PROGRAM, &taitoair_state::DSP_map_program); + dsp.set_addrmap(AS_DATA, &taitoair_state::DSP_map_data); + dsp.hold_in_cb().set(FUNC(taitoair_state::dsp_HOLD_signal_r)); + dsp.hold_ack_out_cb().set(FUNC(taitoair_state::dsp_HOLDA_signal_w)); MCFG_QUANTUM_PERFECT_CPU("maincpu")