From 3f44d746de4e98a3f4b8d47d5676342a630e9477 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 23 May 2017 18:58:14 +0200 Subject: a start at moving mame/audio devices to use device_add_mconfig insted of device_mconfig_additions (nw) --- src/mame/audio/alesis.cpp | 20 +-- src/mame/audio/atarijsa.cpp | 182 ++++++++++------------- src/mame/audio/atarijsa.h | 8 +- src/mame/audio/cage.cpp | 43 ++---- src/mame/audio/cage.h | 12 +- src/mame/audio/cclimber.cpp | 33 ++--- src/mame/audio/cclimber.h | 9 +- src/mame/audio/csd.cpp | 7 +- src/mame/audio/csd.h | 12 +- src/mame/audio/dcs.cpp | 353 +++++++++++++++++++------------------------- src/mame/audio/dcs.h | 32 ++-- src/mame/audio/decobsmt.cpp | 30 ++-- src/mame/audio/decobsmt.h | 10 +- src/mame/audio/dsbz80.cpp | 30 ++-- src/mame/audio/dsbz80.h | 8 +- src/mame/audio/efo_zsu.cpp | 17 +-- src/mame/audio/efo_zsu.h | 21 +-- src/mame/includes/alesis.h | 4 +- src/mame/includes/hng64.h | 1 + src/mame/video/hng64_3d.hxx | 2 +- 20 files changed, 356 insertions(+), 478 deletions(-) diff --git a/src/mame/audio/alesis.cpp b/src/mame/audio/alesis.cpp index 28f93391e6b..83eb55712fd 100644 --- a/src/mame/audio/alesis.cpp +++ b/src/mame/audio/alesis.cpp @@ -25,13 +25,6 @@ DEFINE_DEVICE_TYPE(ALESIS_DM3AG, alesis_dm3ag_device, "alesis_dm3ag", "Alesis DM IMPLEMENTATION ***************************************************************************/ -static MACHINE_CONFIG_START( alesis_dm3ag ) - MCFG_SPEAKER_STANDARD_STEREO("lspeaker1", "rspeaker1") - MCFG_SPEAKER_STANDARD_STEREO("lspeaker2", "rspeaker2") - MCFG_SOUND_ADD("dac", PCM54HP, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker1", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker1", 1.0) // PCM54HP DAC + R63/R73-75 + Sample and hold - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END //------------------------------------------------- // alesis_dm3ag_device - constructor @@ -45,13 +38,16 @@ alesis_dm3ag_device::alesis_dm3ag_device(const machine_config &mconfig, const ch } //------------------------------------------------- -// device_mconfig_additions +// device_add_mconfig //------------------------------------------------- -machine_config_constructor alesis_dm3ag_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( alesis_dm3ag ); -} +MACHINE_CONFIG_MEMBER( alesis_dm3ag_device::device_add_mconfig ) + MCFG_SPEAKER_STANDARD_STEREO("lspeaker1", "rspeaker1") + MCFG_SPEAKER_STANDARD_STEREO("lspeaker2", "rspeaker2") + MCFG_SOUND_ADD("dac", PCM54HP, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker1", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker1", 1.0) // PCM54HP DAC + R63/R73-75 + Sample and hold + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) +MACHINE_CONFIG_END //------------------------------------------------- // device_start - device-specific startup diff --git a/src/mame/audio/atarijsa.cpp b/src/mame/audio/atarijsa.cpp index 86a3d08cd05..d9884fb67d5 100644 --- a/src/mame/audio/atarijsa.cpp +++ b/src/mame/audio/atarijsa.cpp @@ -157,84 +157,6 @@ static ADDRESS_MAP_START( jsa3_oki2_map, AS_0, 8, atari_jsa_iiis_device ) ADDRESS_MAP_END - -//************************************************************************** -// MACHINE FRAGMENTS -//************************************************************************** - -// Fully populated JSA-I, not used by anyone -MACHINE_CONFIG_START( jsa_i_config ) - - // basic machine hardware - MCFG_CPU_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) - MCFG_CPU_PROGRAM_MAP(atarijsa1_map) - MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)JSA_MASTER_CLOCK/4/16/16/14) - - // sound hardware - MCFG_ATARI_SOUND_COMM_ADD("soundcomm", "cpu", WRITELINE(atari_jsa_base_device, main_int_write_line)) - - MCFG_YM2151_ADD("ym2151", JSA_MASTER_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen)) - MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(atari_jsa_base_device, ym2151_port_w)) - MCFG_MIXER_ROUTE(0, DEVICE_SELF_OWNER, 0.60, 0) - MCFG_MIXER_ROUTE(1, DEVICE_SELF_OWNER, 0.60, 1) - - MCFG_SOUND_ADD("pokey", POKEY, JSA_MASTER_CLOCK/2) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.40, 0) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.40, 1) - - MCFG_SOUND_ADD("tms", TMS5220C, JSA_MASTER_CLOCK*2/11) // potentially JSA_MASTER_CLOCK/9 as well - MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0, 0) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0, 1) -MACHINE_CONFIG_END - - -// Fully populated JSA-II -MACHINE_CONFIG_START( jsa_ii_config ) - - // basic machine hardware - MCFG_CPU_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) - MCFG_CPU_PROGRAM_MAP(atarijsa2_map) - MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)JSA_MASTER_CLOCK/4/16/16/14) - - // sound hardware - MCFG_ATARI_SOUND_COMM_ADD("soundcomm", "cpu", WRITELINE(atari_jsa_base_device, main_int_write_line)) - - MCFG_YM2151_ADD("ym2151", JSA_MASTER_CLOCK) - MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen)) - MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(atari_jsa_base_device, ym2151_port_w)) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.60, 0) - - MCFG_OKIM6295_ADD("oki1", JSA_MASTER_CLOCK/3, PIN7_HIGH) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 0) -MACHINE_CONFIG_END - - -// Fully populated JSA-III -MACHINE_CONFIG_DERIVED( jsa_iii_config, jsa_ii_config ) - - // basic machine hardware - MCFG_CPU_MODIFY("cpu") - MCFG_CPU_PROGRAM_MAP(atarijsa3_map) - - MCFG_DEVICE_MODIFY("oki1") - MCFG_DEVICE_ADDRESS_MAP(AS_0, jsa3_oki1_map) -MACHINE_CONFIG_END - - -// Fully populated JSA_IIIs -MACHINE_CONFIG_DERIVED( jsa_iiis_config, jsa_iii_config ) - - MCFG_DEVICE_MODIFY("ym2151") - MCFG_MIXER_ROUTE(1, DEVICE_SELF_OWNER, 0.60, 1) - - MCFG_OKIM6295_ADD("oki2", JSA_MASTER_CLOCK/3, PIN7_HIGH) - MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 1) - MCFG_DEVICE_ADDRESS_MAP(AS_0, jsa3_oki2_map) -MACHINE_CONFIG_END - - - //************************************************************************** // I/O PORT DEFINITIONS //************************************************************************** @@ -767,14 +689,34 @@ WRITE8_MEMBER( atari_jsa_i_device::pokey_w ) //------------------------------------------------- -// device_mconfig_additions - return a pointer to -// the device's machine fragment +// device_add_mconfig - add device configuration //------------------------------------------------- -machine_config_constructor atari_jsa_i_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( jsa_i_config ); -} +// Fully populated JSA-I, not used by anyone +MACHINE_CONFIG_MEMBER( atari_jsa_i_device::device_add_mconfig ) + + // basic machine hardware + MCFG_CPU_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) + MCFG_CPU_PROGRAM_MAP(atarijsa1_map) + MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)JSA_MASTER_CLOCK/4/16/16/14) + + // sound hardware + MCFG_ATARI_SOUND_COMM_ADD("soundcomm", "cpu", WRITELINE(atari_jsa_base_device, main_int_write_line)) + + MCFG_YM2151_ADD("ym2151", JSA_MASTER_CLOCK) + MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen)) + MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(atari_jsa_base_device, ym2151_port_w)) + MCFG_MIXER_ROUTE(0, DEVICE_SELF_OWNER, 0.60, 0) + MCFG_MIXER_ROUTE(1, DEVICE_SELF_OWNER, 0.60, 1) + + MCFG_SOUND_ADD("pokey", POKEY, JSA_MASTER_CLOCK/2) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.40, 0) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.40, 1) + + MCFG_SOUND_ADD("tms", TMS5220C, JSA_MASTER_CLOCK*2/11) // potentially JSA_MASTER_CLOCK/9 as well + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0, 0) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 1.0, 1) +MACHINE_CONFIG_END //------------------------------------------------- @@ -877,14 +819,28 @@ READ8_MEMBER( atari_jsa_ii_device::rdio_r ) //------------------------------------------------- -// device_mconfig_additions - return a pointer to -// the device's machine fragment +// device_add_mconfig - add device configuration //------------------------------------------------- -machine_config_constructor atari_jsa_ii_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( jsa_ii_config ); -} +// Fully populated JSA-II +MACHINE_CONFIG_MEMBER( atari_jsa_ii_device::device_add_mconfig ) + + // basic machine hardware + MCFG_CPU_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) + MCFG_CPU_PROGRAM_MAP(atarijsa2_map) + MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)JSA_MASTER_CLOCK/4/16/16/14) + + // sound hardware + MCFG_ATARI_SOUND_COMM_ADD("soundcomm", "cpu", WRITELINE(atari_jsa_base_device, main_int_write_line)) + + MCFG_YM2151_ADD("ym2151", JSA_MASTER_CLOCK) + MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen)) + MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(atari_jsa_base_device, ym2151_port_w)) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.60, 0) + + MCFG_OKIM6295_ADD("oki1", JSA_MASTER_CLOCK/3, PIN7_HIGH) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 0) +MACHINE_CONFIG_END //------------------------------------------------- @@ -945,14 +901,29 @@ READ8_MEMBER( atari_jsa_iii_device::rdio_r ) //------------------------------------------------- -// device_mconfig_additions - return a pointer to -// the device's machine fragment +// device_add_mconfig - add device configuration //------------------------------------------------- -machine_config_constructor atari_jsa_iii_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( jsa_iii_config ); -} + // Fully populated JSA-III +MACHINE_CONFIG_MEMBER( atari_jsa_iii_device::device_add_mconfig ) + + // basic machine hardware + MCFG_CPU_ADD("cpu", M6502, JSA_MASTER_CLOCK/2) + MCFG_CPU_PROGRAM_MAP(atarijsa3_map) + MCFG_DEVICE_PERIODIC_INT_DEVICE("soundcomm", atari_sound_comm_device, sound_irq_gen, (double)JSA_MASTER_CLOCK/4/16/16/14) + + // sound hardware + MCFG_ATARI_SOUND_COMM_ADD("soundcomm", "cpu", WRITELINE(atari_jsa_base_device, main_int_write_line)) + + MCFG_YM2151_ADD("ym2151", JSA_MASTER_CLOCK) + MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundcomm", atari_sound_comm_device, ym2151_irq_gen)) + MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(atari_jsa_base_device, ym2151_port_w)) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.60, 0) + + MCFG_OKIM6295_ADD("oki1", JSA_MASTER_CLOCK/3, PIN7_HIGH) + MCFG_DEVICE_ADDRESS_MAP(AS_0, jsa3_oki1_map) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 0) +MACHINE_CONFIG_END //------------------------------------------------- @@ -982,11 +953,18 @@ atari_jsa_iiis_device::atari_jsa_iiis_device(const machine_config &mconfig, cons //------------------------------------------------- -// device_mconfig_additions - return a pointer to -// the device's machine fragment +// device_add_mconfig - add device configuration //------------------------------------------------- -machine_config_constructor atari_jsa_iiis_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( jsa_iiis_config ); -} +// Fully populated JSA_IIIs +MACHINE_CONFIG_MEMBER( atari_jsa_iiis_device::device_add_mconfig ) + + atari_jsa_iii_device::device_add_mconfig(config); + + MCFG_DEVICE_MODIFY("ym2151") + MCFG_MIXER_ROUTE(1, DEVICE_SELF_OWNER, 0.60, 1) + + MCFG_OKIM6295_ADD("oki2", JSA_MASTER_CLOCK/3, PIN7_HIGH) + MCFG_MIXER_ROUTE(ALL_OUTPUTS, DEVICE_SELF_OWNER, 0.75, 1) + MCFG_DEVICE_ADDRESS_MAP(AS_0, jsa3_oki2_map) +MACHINE_CONFIG_END diff --git a/src/mame/audio/atarijsa.h b/src/mame/audio/atarijsa.h index a6664452765..83dc2ec0cb2 100644 --- a/src/mame/audio/atarijsa.h +++ b/src/mame/audio/atarijsa.h @@ -196,7 +196,7 @@ public: protected: // device level overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; virtual void device_reset() override; @@ -228,7 +228,7 @@ public: protected: // device level overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; virtual ioport_constructor device_input_ports() const override; required_ioport m_jsaii; @@ -253,7 +253,7 @@ public: protected: // device level overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; virtual ioport_constructor device_input_ports() const override; required_ioport m_jsaiii; @@ -270,7 +270,7 @@ public: protected: // device level overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; }; diff --git a/src/mame/audio/cage.cpp b/src/mame/audio/cage.cpp index 36cbf0c3655..55bcbde77bb 100644 --- a/src/mame/audio/cage.cpp +++ b/src/mame/audio/cage.cpp @@ -619,14 +619,11 @@ static ADDRESS_MAP_START( cage_map_seattle, AS_PROGRAM, 32, atari_cage_seattle_d ADDRESS_MAP_END +//------------------------------------------------- +// machine_add_config - add device configuration +//------------------------------------------------- -/************************************* - * - * CAGE machine driver - * - *************************************/ - -MACHINE_CONFIG_START( cage ) +MACHINE_CONFIG_MEMBER( atari_cage_device::device_add_mconfig ) /* basic machine hardware */ MCFG_CPU_ADD("cage", TMS32031, 33868800) @@ -664,36 +661,28 @@ MACHINE_CONFIG_START( cage ) MACHINE_CONFIG_END -MACHINE_CONFIG_DERIVED( cage_seattle, cage ) +DEFINE_DEVICE_TYPE(ATARI_CAGE_SEATTLE, atari_cage_seattle_device, "atari_cage_seattle", "Atari CAGE Seattle") - MCFG_CPU_MODIFY("cage") - MCFG_CPU_PROGRAM_MAP(cage_map_seattle) -MACHINE_CONFIG_END //------------------------------------------------- -// machine_config_additions - device-specific -// machine configurations +// atari_cage_seattle_device - constructor //------------------------------------------------- -machine_config_constructor atari_cage_device::device_mconfig_additions() const +atari_cage_seattle_device::atari_cage_seattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + atari_cage_device(mconfig, ATARI_CAGE_SEATTLE, tag, owner, clock) { - return MACHINE_CONFIG_NAME( cage ); } -DEFINE_DEVICE_TYPE(ATARI_CAGE_SEATTLE, atari_cage_seattle_device, "atari_cage_seattle", "Atari CAGE Seattle") - - //------------------------------------------------- -// atari_cage_seattle_device - constructor +// machine_add_config - add device configuration //------------------------------------------------- -atari_cage_seattle_device::atari_cage_seattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - atari_cage_device(mconfig, ATARI_CAGE_SEATTLE, tag, owner, clock) -{ -} -machine_config_constructor atari_cage_seattle_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( cage_seattle ); -} +MACHINE_CONFIG_MEMBER( atari_cage_seattle_device::device_add_mconfig ) + + atari_cage_device::device_add_mconfig(config); + + MCFG_CPU_MODIFY("cage") + MCFG_CPU_PROGRAM_MAP(cage_map_seattle) +MACHINE_CONFIG_END diff --git a/src/mame/audio/cage.h b/src/mame/audio/cage.h index 65a136f114b..11ace8d97fc 100644 --- a/src/mame/audio/cage.h +++ b/src/mame/audio/cage.h @@ -32,9 +32,6 @@ public: static void static_set_speedup(device_t &device, offs_t speedup) { downcast(device).m_speedup = speedup; } template static devcb_base &set_irqhandler_callback(device_t &device, Object &&cb) { return downcast(device).m_irqhandler.set_callback(std::forward(cb)); } - // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - void reset_w(int state); uint16_t main_r(); @@ -43,9 +40,7 @@ public: uint16_t control_r(); void control_w(uint16_t data); - TIMER_DEVICE_CALLBACK_MEMBER( dma_timer_callback ); void update_dma_state(address_space &space); - TIMER_DEVICE_CALLBACK_MEMBER( cage_timer_callback ); void update_timer(int which); void update_serial(); READ32_MEMBER( tms32031_io_r ); @@ -63,6 +58,10 @@ protected: // device-level overrides virtual void device_start() override; + virtual void device_add_mconfig(machine_config &config) override; + + TIMER_DEVICE_CALLBACK_MEMBER( dma_timer_callback ); + TIMER_DEVICE_CALLBACK_MEMBER( cage_timer_callback ); private: required_shared_ptr m_cageram; @@ -105,8 +104,9 @@ public: // construction/destruction atari_cage_seattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; }; diff --git a/src/mame/audio/cclimber.cpp b/src/mame/audio/cclimber.cpp index a7a2be05318..9da3460cf17 100644 --- a/src/mame/audio/cclimber.cpp +++ b/src/mame/audio/cclimber.cpp @@ -20,17 +20,6 @@ SAMPLES_START_CB_MEMBER( cclimber_audio_device::sh_start ) } } -MACHINE_CONFIG_START( cclimber_audio ) - MCFG_SOUND_ADD("aysnd", AY8910, SND_CLOCK/2) - MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(cclimber_audio_device, sample_select_w)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, ":speaker", 0.5) - - MCFG_SOUND_ADD("samples", SAMPLES, 0) - MCFG_SAMPLES_CHANNELS(1) - MCFG_SAMPLES_START_CB(cclimber_audio_device, sh_start) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, ":speaker", 0.5) -MACHINE_CONFIG_END - //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** @@ -38,10 +27,6 @@ MACHINE_CONFIG_END DEFINE_DEVICE_TYPE(CCLIMBER_AUDIO, cclimber_audio_device, "cclimber_audio", "Crazy Climber Sound Board") -//************************************************************************** -// JSA IIIS-SPECIFIC IMPLEMENTATION -//************************************************************************** - //------------------------------------------------- // cclimber_audio_device: Constructor //------------------------------------------------- @@ -69,14 +54,20 @@ void cclimber_audio_device::device_start() } //------------------------------------------------- -// device_mconfig_additions - return a pointer to -// the device's machine fragment +// device_add_mconfig - add device configuration //------------------------------------------------- -machine_config_constructor cclimber_audio_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( cclimber_audio ); -} +MACHINE_CONFIG_MEMBER( cclimber_audio_device::device_add_mconfig ) + MCFG_SOUND_ADD("aysnd", AY8910, SND_CLOCK/2) + MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(cclimber_audio_device, sample_select_w)) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, ":speaker", 0.5) + + MCFG_SOUND_ADD("samples", SAMPLES, 0) + MCFG_SAMPLES_CHANNELS(1) + MCFG_SAMPLES_START_CB(cclimber_audio_device, sh_start) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, ":speaker", 0.5) +MACHINE_CONFIG_END + WRITE8_MEMBER( cclimber_audio_device::sample_select_w ) { diff --git a/src/mame/audio/cclimber.h b/src/mame/audio/cclimber.h index c5cc6faefaf..e11b471ffe7 100644 --- a/src/mame/audio/cclimber.h +++ b/src/mame/audio/cclimber.h @@ -39,14 +39,11 @@ public: DECLARE_WRITE8_MEMBER( sample_trigger_w ); DECLARE_WRITE8_MEMBER( sample_rate_w ); DECLARE_WRITE8_MEMBER( sample_volume_w ); - DECLARE_WRITE8_MEMBER( sample_select_w ); - - SAMPLES_START_CB_MEMBER( sh_start ); protected: // device level overrides virtual void device_start() override; - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; void play_sample(int start,int freq,int volume); @@ -57,6 +54,10 @@ private: int m_sample_volume; optional_device m_samples; optional_region_ptr m_samples_region; + + DECLARE_WRITE8_MEMBER( sample_select_w ); + + SAMPLES_START_CB_MEMBER( sh_start ); }; diff --git a/src/mame/audio/csd.cpp b/src/mame/audio/csd.cpp index eb2e20efb98..3158de444db 100644 --- a/src/mame/audio/csd.cpp +++ b/src/mame/audio/csd.cpp @@ -35,7 +35,7 @@ ADDRESS_MAP_END // machine configuration //------------------------------------------------- -static MACHINE_CONFIG_START(midway_cheap_squeak_deluxe) +MACHINE_CONFIG_MEMBER(midway_cheap_squeak_deluxe_device::device_add_mconfig) MCFG_CPU_ADD("cpu", M68000, XTAL_16MHz/2) MCFG_CPU_PROGRAM_MAP(csdeluxe_map) @@ -50,11 +50,6 @@ static MACHINE_CONFIG_START(midway_cheap_squeak_deluxe) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END -machine_config_constructor midway_cheap_squeak_deluxe_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( midway_cheap_squeak_deluxe ); -} - //------------------------------------------------- // rom_region - device-specific ROM region //------------------------------------------------- diff --git a/src/mame/audio/csd.h b/src/mame/audio/csd.h index 2c9062dd73b..4af49a552bc 100644 --- a/src/mame/audio/csd.h +++ b/src/mame/audio/csd.h @@ -34,14 +34,9 @@ public: DECLARE_WRITE_LINE_MEMBER(sirq_w); DECLARE_WRITE_LINE_MEMBER(reset_w); - // internal communications - DECLARE_WRITE8_MEMBER(porta_w); - DECLARE_WRITE8_MEMBER(portb_w); - DECLARE_WRITE_LINE_MEMBER(irq_w); - protected: // device-level overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; @@ -55,6 +50,11 @@ private: // internal state uint8_t m_status; uint16_t m_dacval; + + // internal communications + DECLARE_WRITE8_MEMBER(porta_w); + DECLARE_WRITE8_MEMBER(portb_w); + DECLARE_WRITE_LINE_MEMBER(irq_w); }; // device type definition diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp index 6c679713b4f..02959b70cdb 100644 --- a/src/mame/audio/dcs.cpp +++ b/src/mame/audio/dcs.cpp @@ -445,177 +445,6 @@ static ADDRESS_MAP_START( denver_io_map, AS_IO, 16, dcs_audio_device ) ADDRESS_MAP_END -/************************************* - * - * Original DCS Machine Drivers - * - *************************************/ - -/* Basic DCS system with ADSP-2105 and 2k of SRAM (T-unit, V-unit, Killer Instinct) */ -MACHINE_CONFIG_START( dcs_audio_2k ) - MCFG_CPU_ADD("dcs", ADSP2105, XTAL_10MHz) - 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) - - MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) - MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) - - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("dac", DMADAC, 0) // AD-1851 16bit mono - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - - -/* Basic DCS system with ADSP-2105 and 2k of SRAM, using a UART for communications (X-unit) */ -MACHINE_CONFIG_DERIVED( dcs_audio_2k_uart, dcs_audio_2k ) - - MCFG_CPU_MODIFY("dcs") - MCFG_CPU_DATA_MAP(dcs_2k_uart_data_map) -MACHINE_CONFIG_END - - -/* Basic DCS system with ADSP-2105 and 8k of SRAM (Wolf-unit) */ -MACHINE_CONFIG_DERIVED( dcs_audio_8k, dcs_audio_2k ) - - MCFG_CPU_MODIFY("dcs") - MCFG_CPU_PROGRAM_MAP(dcs_8k_program_map) - MCFG_CPU_DATA_MAP(dcs_8k_data_map) -MACHINE_CONFIG_END - -MACHINE_CONFIG_DERIVED( dcs_audio_wpc, dcs_audio_2k ) - MCFG_CPU_MODIFY("dcs") - MCFG_CPU_PROGRAM_MAP(dcs_wpc_program_map) - MCFG_CPU_DATA_MAP(dcs_wpc_data_map) -MACHINE_CONFIG_END - - -/************************************* - * - * DCS2 Machine Drivers - * - *************************************/ - -MACHINE_CONFIG_START( dcs2_audio_2115 ) - MCFG_CPU_ADD("dcs2", ADSP2115, XTAL_16MHz) - 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) - - MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) - MCFG_TIMER_DEVICE_ADD("dcs_sport_timer", DEVICE_SELF, dcs_audio_device, sport0_irq) - MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) - MCFG_TIMER_DEVICE_ADD("dcs_hle_timer", DEVICE_SELF, dcs_audio_device, transfer_watchdog_callback) - - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("dac1", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - - MCFG_SOUND_ADD("dac2", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_DERIVED( dcs2_audio_2104, dcs2_audio_2115 ) - MCFG_CPU_REPLACE("dcs2", ADSP2104, XTAL_16MHz) - 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 - - - -/************************************* - * - * DSIO Machine Drivers - * - *************************************/ - -MACHINE_CONFIG_START( dcs2_audio_dsio ) - MCFG_CPU_ADD("dsio", ADSP2181, XTAL_32MHz) - 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_ADSP21XX_DMOVLAY_CB(WRITE32(dcs_audio_device, dmovlay_callback)) // callback for adsp 2181 dmovlay instruction - MCFG_CPU_PROGRAM_MAP(dsio_program_map) - MCFG_CPU_DATA_MAP(dsio_data_map) - MCFG_CPU_IO_MAP(dsio_io_map) - - MCFG_DEVICE_ADD("data_map_bank", ADDRESS_MAP_BANK, 0) - MCFG_DEVICE_PROGRAM_MAP(dsio_rambank_map) - MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) - MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16) - MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14) - MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000) - - MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) - MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) - MCFG_TIMER_DEVICE_ADD("dcs_sport_timer", DEVICE_SELF, dcs_audio_device, sport0_irq) // roadburn needs this to pass harware test - - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("dac1", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - - MCFG_SOUND_ADD("dac2", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) -MACHINE_CONFIG_END - - - -/************************************* - * - * Denver Machine Drivers - * - *************************************/ - -MACHINE_CONFIG_START( dcs2_audio_denver ) - MCFG_CPU_ADD("denver", ADSP2181, XTAL_33_333MHz) - 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_ADSP21XX_DMOVLAY_CB(WRITE32(dcs_audio_device, dmovlay_callback)) // callback for adsp 2181 dmovlay instruction - MCFG_CPU_PROGRAM_MAP(denver_program_map) - MCFG_CPU_DATA_MAP(denver_data_map) - MCFG_CPU_IO_MAP(denver_io_map) - - MCFG_DEVICE_ADD("data_map_bank", ADDRESS_MAP_BANK, 0) - MCFG_DEVICE_PROGRAM_MAP(denver_rambank_map) - MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) - MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16) - MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14) - MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000) - - MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) - MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) - MCFG_TIMER_DEVICE_ADD("dcs_sport_timer", DEVICE_SELF, dcs_audio_device, sport0_irq) // Atlantis driver waits for sport0 rx interrupts - - MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - - MCFG_SOUND_ADD("dac1", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - - MCFG_SOUND_ADD("dac2", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - - MCFG_SOUND_ADD("dac3", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - - MCFG_SOUND_ADD("dac4", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - - MCFG_SOUND_ADD("dac5", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - - MCFG_SOUND_ADD("dac6", DMADAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) -MACHINE_CONFIG_END - - - /************************************* * * ADSP booting @@ -2488,6 +2317,24 @@ int dcs_audio_device::preprocess_write(uint16_t data) return result; } +/* Basic DCS system with ADSP-2105 and 2k of SRAM (T-unit, V-unit, Killer Instinct) */ + +MACHINE_CONFIG_MEMBER( dcs_audio_device::add_mconfig_dcs ) + MCFG_CPU_ADD("dcs", ADSP2105, XTAL_10MHz) + 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) + + MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) + MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) + + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("dac", DMADAC, 0) // AD-1851 16bit mono + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) +MACHINE_CONFIG_END + DEFINE_DEVICE_TYPE(DCS_AUDIO_2K, dcs_audio_2k_device, "dcs_audio_2k", "DCS Audio 2K") //------------------------------------------------- @@ -2499,10 +2346,10 @@ dcs_audio_2k_device::dcs_audio_2k_device(const machine_config &mconfig, const ch { } -machine_config_constructor dcs_audio_2k_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs_audio_2k ); -} +MACHINE_CONFIG_MEMBER( dcs_audio_2k_device::device_add_mconfig ) + + dcs_audio_device::add_mconfig_dcs(config); +MACHINE_CONFIG_END DEFINE_DEVICE_TYPE(DCS_AUDIO_2K_UART, dcs_audio_2k_uart_device, "dcs_audio_2k_uart", "DCS Audio 2K UART") @@ -2515,10 +2362,14 @@ dcs_audio_2k_uart_device::dcs_audio_2k_uart_device(const machine_config &mconfig { } -machine_config_constructor dcs_audio_2k_uart_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs_audio_2k_uart ); -} +/* Basic DCS system with ADSP-2105 and 2k of SRAM, using a UART for communications (X-unit) */ +MACHINE_CONFIG_MEMBER( dcs_audio_2k_uart_device::device_add_mconfig ) + + dcs_audio_device::add_mconfig_dcs(config); + + MCFG_CPU_MODIFY("dcs") + MCFG_CPU_DATA_MAP(dcs_2k_uart_data_map) +MACHINE_CONFIG_END DEFINE_DEVICE_TYPE(DCS_AUDIO_8K, dcs_audio_8k_device, "dcs_audio_8k", "DCS Audio 8K") @@ -2531,10 +2382,15 @@ dcs_audio_8k_device::dcs_audio_8k_device(const machine_config &mconfig, const ch { } -machine_config_constructor dcs_audio_8k_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs_audio_8k ); -} +/* Basic DCS system with ADSP-2105 and 8k of SRAM (Wolf-unit) */ +MACHINE_CONFIG_MEMBER( dcs_audio_8k_device::device_add_mconfig ) + + dcs_audio_device::add_mconfig_dcs(config); + + MCFG_CPU_MODIFY("dcs") + MCFG_CPU_PROGRAM_MAP(dcs_8k_program_map) + MCFG_CPU_DATA_MAP(dcs_8k_data_map) +MACHINE_CONFIG_END DEFINE_DEVICE_TYPE(DCS_AUDIO_WPC, dcs_audio_wpc_device, "dcs_audio_wpc", "DCS Audio WPC") @@ -2547,11 +2403,14 @@ dcs_audio_wpc_device::dcs_audio_wpc_device(const machine_config &mconfig, const { } -machine_config_constructor dcs_audio_wpc_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs_audio_wpc ); -} +MACHINE_CONFIG_MEMBER( dcs_audio_wpc_device::device_add_mconfig ) + dcs_audio_device::add_mconfig_dcs(config); + + MCFG_CPU_MODIFY("dcs") + MCFG_CPU_PROGRAM_MAP(dcs_wpc_program_map) + MCFG_CPU_DATA_MAP(dcs_wpc_data_map) +MACHINE_CONFIG_END //------------------------------------------------- @@ -2563,6 +2422,26 @@ dcs2_audio_device::dcs2_audio_device(const machine_config &mconfig, device_type { } +MACHINE_CONFIG_MEMBER( dcs2_audio_device::add_mconfig_dcs2 ) + MCFG_CPU_ADD("dcs2", ADSP2115, XTAL_16MHz) + 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) + + MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) + MCFG_TIMER_DEVICE_ADD("dcs_sport_timer", DEVICE_SELF, dcs_audio_device, sport0_irq) + MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) + MCFG_TIMER_DEVICE_ADD("dcs_hle_timer", DEVICE_SELF, dcs_audio_device, transfer_watchdog_callback) + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("dac1", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + + MCFG_SOUND_ADD("dac2", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) +MACHINE_CONFIG_END DEFINE_DEVICE_TYPE(DCS2_AUDIO_2115, dcs2_audio_2115_device, "dcs2_audio_2115", "DCS2 Audio 2115") @@ -2575,10 +2454,11 @@ dcs2_audio_2115_device::dcs2_audio_2115_device(const machine_config &mconfig, co { } -machine_config_constructor dcs2_audio_2115_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs2_audio_2115 ); -} +MACHINE_CONFIG_MEMBER( dcs2_audio_2115_device::device_add_mconfig ) + + dcs2_audio_device::add_mconfig_dcs2(config); + +MACHINE_CONFIG_END DEFINE_DEVICE_TYPE(DCS2_AUDIO_2104, dcs2_audio_2104_device, "dcs2_audio_2104", "DCS2 Audio 2104") @@ -2586,16 +2466,22 @@ DEFINE_DEVICE_TYPE(DCS2_AUDIO_2104, dcs2_audio_2104_device, "dcs2_audio_2104", " // dcs2_audio_2104_device - constructor //------------------------------------------------- + dcs2_audio_2104_device::dcs2_audio_2104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : dcs2_audio_device(mconfig, DCS2_AUDIO_2104, tag, owner, clock) { } -machine_config_constructor dcs2_audio_2104_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs2_audio_2104 ); -} +MACHINE_CONFIG_MEMBER( dcs2_audio_2104_device::device_add_mconfig ) + dcs2_audio_device::add_mconfig_dcs2(config); + + MCFG_CPU_REPLACE("dcs2", ADSP2104, XTAL_16MHz) + 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 DEFINE_DEVICE_TYPE(DCS2_AUDIO_DSIO, dcs2_audio_dsio_device, "dcs2_audio_dsio", "DCS2 Audio DSIO") @@ -2608,10 +2494,35 @@ dcs2_audio_dsio_device::dcs2_audio_dsio_device(const machine_config &mconfig, co { } -machine_config_constructor dcs2_audio_dsio_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs2_audio_dsio ); -} +MACHINE_CONFIG_MEMBER( dcs2_audio_dsio_device::device_add_mconfig ) + MCFG_CPU_ADD("dsio", ADSP2181, XTAL_32MHz) + 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_ADSP21XX_DMOVLAY_CB(WRITE32(dcs_audio_device, dmovlay_callback)) // callback for adsp 2181 dmovlay instruction + MCFG_CPU_PROGRAM_MAP(dsio_program_map) + MCFG_CPU_DATA_MAP(dsio_data_map) + MCFG_CPU_IO_MAP(dsio_io_map) + + MCFG_DEVICE_ADD("data_map_bank", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(dsio_rambank_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000) + + MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) + MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) + MCFG_TIMER_DEVICE_ADD("dcs_sport_timer", DEVICE_SELF, dcs_audio_device, sport0_irq) // roadburn needs this to pass harware test + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("dac1", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + + MCFG_SOUND_ADD("dac2", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) +MACHINE_CONFIG_END + DEFINE_DEVICE_TYPE(DCS2_AUDIO_DENVER, dcs2_audio_denver_device, "dcs2_audio_denver", "DCS2 Audio Denver") @@ -2624,7 +2535,43 @@ dcs2_audio_denver_device::dcs2_audio_denver_device(const machine_config &mconfig { } -machine_config_constructor dcs2_audio_denver_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dcs2_audio_denver ); -} +MACHINE_CONFIG_MEMBER( dcs2_audio_denver_device::device_add_mconfig ) + MCFG_CPU_ADD("denver", ADSP2181, XTAL_33_333MHz) + 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_ADSP21XX_DMOVLAY_CB(WRITE32(dcs_audio_device, dmovlay_callback)) // callback for adsp 2181 dmovlay instruction + MCFG_CPU_PROGRAM_MAP(denver_program_map) + MCFG_CPU_DATA_MAP(denver_data_map) + MCFG_CPU_IO_MAP(denver_io_map) + + MCFG_DEVICE_ADD("data_map_bank", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(denver_rambank_map) + MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(14) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x2000) + + MCFG_TIMER_DEVICE_ADD("dcs_reg_timer", DEVICE_SELF, dcs_audio_device, dcs_irq) + MCFG_TIMER_DEVICE_ADD("dcs_int_timer", DEVICE_SELF, dcs_audio_device, internal_timer_callback) + MCFG_TIMER_DEVICE_ADD("dcs_sport_timer", DEVICE_SELF, dcs_audio_device, sport0_irq) // Atlantis driver waits for sport0 rx interrupts + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("dac1", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + + MCFG_SOUND_ADD("dac2", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + + MCFG_SOUND_ADD("dac3", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + + MCFG_SOUND_ADD("dac4", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + + MCFG_SOUND_ADD("dac5", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + + MCFG_SOUND_ADD("dac6", DMADAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) +MACHINE_CONFIG_END diff --git a/src/mame/audio/dcs.h b/src/mame/audio/dcs.h index bd3f7e0643c..7c068779dba 100644 --- a/src/mame/audio/dcs.h +++ b/src/mame/audio/dcs.h @@ -111,6 +111,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; + void add_mconfig_dcs(machine_config &config); struct sdrc_state { @@ -228,8 +229,9 @@ public: // construction/destruction dcs_audio_2k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; }; @@ -244,9 +246,9 @@ public: // construction/destruction dcs_audio_2k_uart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - + virtual void device_add_mconfig(machine_config &config) override; }; // device type definition @@ -260,9 +262,9 @@ public: // construction/destruction dcs_audio_8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - + virtual void device_add_mconfig(machine_config &config) override; }; // device type definition @@ -276,8 +278,9 @@ public: // construction/destruction dcs_audio_wpc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; }; // device type definition @@ -294,6 +297,7 @@ protected: // device-level overrides virtual void device_start() override; + void add_mconfig_dcs2(machine_config &config); }; // dcs2_audio_2115_device @@ -304,9 +308,9 @@ public: // construction/destruction dcs2_audio_2115_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - + virtual void device_add_mconfig(machine_config &config) override; }; // device type definition @@ -320,9 +324,9 @@ public: // construction/destruction dcs2_audio_2104_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - + virtual void device_add_mconfig(machine_config &config) override; }; // device type definition @@ -336,9 +340,9 @@ public: // construction/destruction dcs2_audio_dsio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - + virtual void device_add_mconfig(machine_config &config) override; }; // device type definition @@ -352,9 +356,9 @@ public: // construction/destruction dcs2_audio_denver_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +protected: // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - + virtual void device_add_mconfig(machine_config &config) override; }; // device type definition diff --git a/src/mame/audio/decobsmt.cpp b/src/mame/audio/decobsmt.cpp index bd0062dbf59..56a290bf440 100644 --- a/src/mame/audio/decobsmt.cpp +++ b/src/mame/audio/decobsmt.cpp @@ -35,7 +35,18 @@ void decobsmt_device::bsmt_ready_callback() m_ourcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); /* BSMT is ready */ } -MACHINE_CONFIG_START( decobsmt ) +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(DECOBSMT, decobsmt_device, "decobsmt", "Data East/Sega/Stern BSMT2000 Sound Board") + + +//------------------------------------------------- +// device_add_mconfig - add device configuration +//------------------------------------------------- + +MACHINE_CONFIG_MEMBER( decobsmt_device::device_add_mconfig ) MCFG_CPU_ADD(M6809_TAG, M6809, (3579580/2)) MCFG_CPU_PROGRAM_MAP(decobsmt_map) MCFG_CPU_PERIODIC_INT_DRIVER(decobsmt_device, decobsmt_firq_interrupt, 489) /* Fixed FIRQ of 489Hz as measured on real (pinball) machine */ @@ -48,23 +59,6 @@ MACHINE_CONFIG_START( decobsmt ) MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) MACHINE_CONFIG_END -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - -DEFINE_DEVICE_TYPE(DECOBSMT, decobsmt_device, "decobsmt", "Data East/Sega/Stern BSMT2000 Sound Board") - - -//------------------------------------------------- -// machine_config_additions - device-specific -// machine configurations -//------------------------------------------------- - -machine_config_constructor decobsmt_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( decobsmt ); -} - //************************************************************************** // LIVE DEVICE //************************************************************************** diff --git a/src/mame/audio/decobsmt.h b/src/mame/audio/decobsmt.h index 9615a7649bd..41cce0e3282 100644 --- a/src/mame/audio/decobsmt.h +++ b/src/mame/audio/decobsmt.h @@ -32,15 +32,11 @@ public: DECLARE_WRITE_LINE_MEMBER(bsmt_reset_line); - INTERRUPT_GEN_MEMBER(decobsmt_firq_interrupt); - - void bsmt_ready_callback(); - protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; private: required_device m_ourcpu; @@ -49,6 +45,10 @@ private: uint8_t m_bsmt_latch; uint8_t m_bsmt_reset; uint8_t m_bsmt_comms; + + INTERRUPT_GEN_MEMBER(decobsmt_firq_interrupt); + + void bsmt_ready_callback(); }; diff --git a/src/mame/audio/dsbz80.cpp b/src/mame/audio/dsbz80.cpp index 3330cc865b7..34d3cc33938 100644 --- a/src/mame/audio/dsbz80.cpp +++ b/src/mame/audio/dsbz80.cpp @@ -32,7 +32,18 @@ static ADDRESS_MAP_START( dsbz80io_map, AS_IO, 8, dsbz80_device ) ADDRESS_MAP_END -MACHINE_CONFIG_START( dsbz80 ) +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +DEFINE_DEVICE_TYPE(DSBZ80, dsbz80_device, "dsbz80_device", "Sega Z80-based Digital Sound Board") + + +//------------------------------------------------- +// device_add_mconfig - add device configuration +//------------------------------------------------- + +MACHINE_CONFIG_MEMBER( dsbz80_device::device_add_mconfig ) MCFG_CPU_ADD(Z80_TAG, Z80, 4000000) /* unknown clock, but probably pretty slow considering the z80 does like nothing */ MCFG_CPU_PROGRAM_MAP(dsbz80_map) MCFG_CPU_IO_MAP(dsbz80io_map) @@ -45,23 +56,6 @@ MACHINE_CONFIG_START( dsbz80 ) MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxc)) MACHINE_CONFIG_END -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - -DEFINE_DEVICE_TYPE(DSBZ80, dsbz80_device, "dsbz80_device", "Sega Z80-based Digital Sound Board") - - -//------------------------------------------------- -// machine_config_additions - device-specific -// machine configurations -//------------------------------------------------- - -machine_config_constructor dsbz80_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( dsbz80 ); -} - //************************************************************************** // LIVE DEVICE //************************************************************************** diff --git a/src/mame/audio/dsbz80.h b/src/mame/audio/dsbz80.h index e8c18c96781..018232c4b9c 100644 --- a/src/mame/audio/dsbz80.h +++ b/src/mame/audio/dsbz80.h @@ -27,9 +27,6 @@ public: // construction/destruction dsbz80_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - // static configuration template static devcb_base &set_rxd_handler(device_t &device, _Object &&object) { return downcast(device).m_rxd_handler.set_callback(std::forward<_Object>(object)); } @@ -37,7 +34,6 @@ public: required_device m_uart; DECLARE_WRITE_LINE_MEMBER(write_txd); - DECLARE_WRITE_LINE_MEMBER(output_txd); DECLARE_WRITE8_MEMBER(mpeg_trigger_w); DECLARE_WRITE8_MEMBER(mpeg_start_w); @@ -50,7 +46,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - + virtual void device_add_mconfig(machine_config &config) override; virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; private: @@ -60,6 +56,8 @@ private: int mp_pos, audio_pos, audio_avail; devcb_write_line m_rxd_handler; + + DECLARE_WRITE_LINE_MEMBER(output_txd); }; diff --git a/src/mame/audio/efo_zsu.cpp b/src/mame/audio/efo_zsu.cpp index 66b31213dcd..4a590b85695 100644 --- a/src/mame/audio/efo_zsu.cpp +++ b/src/mame/audio/efo_zsu.cpp @@ -187,8 +187,7 @@ TIMER_CALLBACK_MEMBER(cedar_magnet_sound_device::reset_assert_callback) } - -static MACHINE_CONFIG_START( efo_zsu ) +MACHINE_CONFIG_MEMBER( efo_zsu_device::device_add_mconfig ) MCFG_CPU_ADD("soundcpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(zsu_map) MCFG_CPU_IO_MAP(zsu_io) @@ -237,8 +236,8 @@ static MACHINE_CONFIG_START( efo_zsu ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( cedar_magnet_sound ) - MCFG_FRAGMENT_ADD(efo_zsu) +MACHINE_CONFIG_MEMBER( cedar_magnet_sound_device::device_add_mconfig ) + efo_zsu_device::device_add_mconfig(config); MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_PROGRAM_MAP(cedar_magnet_sound_map) @@ -247,16 +246,6 @@ static MACHINE_CONFIG_START( cedar_magnet_sound ) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(cedar_magnet_sound_device, ay0_porta_w)) MACHINE_CONFIG_END -machine_config_constructor efo_zsu_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( efo_zsu ); -} - -machine_config_constructor cedar_magnet_sound_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( cedar_magnet_sound ); -} - void efo_zsu_device::device_start() { memory_bank *rombank = membank("rombank"); diff --git a/src/mame/audio/efo_zsu.h b/src/mame/audio/efo_zsu.h index c0e6bf00542..1b32dde43e8 100644 --- a/src/mame/audio/efo_zsu.h +++ b/src/mame/audio/efo_zsu.h @@ -37,6 +37,14 @@ public: DECLARE_WRITE8_MEMBER(sound_command_w); DECLARE_WRITE8_MEMBER(adpcm_fifo_w); + +protected: + efo_zsu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); + + virtual void device_add_mconfig(machine_config &config) override; + virtual void device_start() override; + +private: DECLARE_WRITE8_MEMBER(ay1_porta_w); DECLARE_WRITE_LINE_MEMBER(ctc1_z0_w); @@ -46,12 +54,6 @@ public: DECLARE_WRITE_LINE_MEMBER(ctc0_z1_w); DECLARE_WRITE_LINE_MEMBER(ctc0_z2_w); DECLARE_WRITE_LINE_MEMBER(fifo_dor_w); - -protected: - efo_zsu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); - - virtual machine_config_constructor device_mconfig_additions() const override; - virtual void device_start() override; }; @@ -72,13 +74,14 @@ public: // construction/destruction cedar_magnet_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - DECLARE_WRITE8_MEMBER(ay0_porta_w); - TIMER_CALLBACK_MEMBER(reset_assert_callback) override; protected: - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; virtual void device_start() override; + +private: + DECLARE_WRITE8_MEMBER(ay0_porta_w); }; #endif // MAME_AUDIO_EFO_ZSU_H diff --git a/src/mame/includes/alesis.h b/src/mame/includes/alesis.h index cdcf4723b56..8cbadadd0ca 100644 --- a/src/mame/includes/alesis.h +++ b/src/mame/includes/alesis.h @@ -30,9 +30,6 @@ public: // construction/destruction alesis_dm3ag_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // optional information overrides - virtual machine_config_constructor device_mconfig_additions() const override; - // device interface DECLARE_WRITE8_MEMBER(write); @@ -41,6 +38,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + virtual void device_add_mconfig(machine_config &config) override; private: static const device_timer_id TIMER_DAC_UPDATE = 1; diff --git a/src/mame/includes/hng64.h b/src/mame/includes/hng64.h index 631742d4563..d9e873e4a24 100644 --- a/src/mame/includes/hng64.h +++ b/src/mame/includes/hng64.h @@ -340,6 +340,7 @@ public: std::unique_ptr m_poly_renderer; TIMER_CALLBACK_MEMBER(hng64_3dfifo_processed); + emu_timer *m_3dfifo_timer; uint8_t *m_texturerom; uint16_t* m_vertsrom; diff --git a/src/mame/video/hng64_3d.hxx b/src/mame/video/hng64_3d.hxx index 7f96c7412ad..b0d711a3216 100644 --- a/src/mame/video/hng64_3d.hxx +++ b/src/mame/video/hng64_3d.hxx @@ -71,7 +71,7 @@ g_profiler.start(PROFILER_USER1); } // Schedule a small amount of time to let the 3d hardware rasterize the display buffer - machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(0x200*8), timer_expired_delegate(FUNC(hng64_state::hng64_3dfifo_processed), this)); + m_3dfifo_timer->adjust(m_maincpu->cycles_to_attotime(0x200*8)); g_profiler.stop(); } -- cgit v1.2.3