a start at moving mame/audio devices to use device_add_mconfig insted of device_mconfig_additions (nw)

This commit is contained in:
Ivan Vangelista 2017-05-23 18:58:14 +02:00
parent 099dd26e89
commit 3f44d746de
20 changed files with 357 additions and 479 deletions

View File

@ -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

View File

@ -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

View File

@ -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;
};

View File

@ -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,23 +661,6 @@ MACHINE_CONFIG_START( cage )
MACHINE_CONFIG_END
MACHINE_CONFIG_DERIVED( cage_seattle, cage )
MCFG_CPU_MODIFY("cage")
MCFG_CPU_PROGRAM_MAP(cage_map_seattle)
MACHINE_CONFIG_END
//-------------------------------------------------
// machine_config_additions - device-specific
// machine configurations
//-------------------------------------------------
machine_config_constructor atari_cage_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cage );
}
DEFINE_DEVICE_TYPE(ATARI_CAGE_SEATTLE, atari_cage_seattle_device, "atari_cage_seattle", "Atari CAGE Seattle")
@ -693,7 +673,16 @@ atari_cage_seattle_device::atari_cage_seattle_device(const machine_config &mconf
{
}
machine_config_constructor atari_cage_seattle_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cage_seattle );
}
//-------------------------------------------------
// machine_add_config - add device configuration
//-------------------------------------------------
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

View File

@ -32,9 +32,6 @@ public:
static void static_set_speedup(device_t &device, offs_t speedup) { downcast<atari_cage_device &>(device).m_speedup = speedup; }
template <class Object> static devcb_base &set_irqhandler_callback(device_t &device, Object &&cb) { return downcast<atari_cage_device &>(device).m_irqhandler.set_callback(std::forward<Object>(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<uint32_t> 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;
};

View File

@ -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 )
{

View File

@ -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<samples_device> m_samples;
optional_region_ptr<uint8_t> m_samples_region;
DECLARE_WRITE8_MEMBER( sample_select_w );
SAMPLES_START_CB_MEMBER( sh_start );
};

View File

@ -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
//-------------------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
//**************************************************************************

View File

@ -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<cpu_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();
};

View File

@ -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
//**************************************************************************

View File

@ -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<class _Object> static devcb_base &set_rxd_handler(device_t &device, _Object &&object) { return downcast<dsbz80_device &>(device).m_rxd_handler.set_callback(std::forward<_Object>(object)); }
@ -37,7 +34,6 @@ public:
required_device<i8251_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);
};

View File

@ -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");

View File

@ -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

View File

@ -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;

View File

@ -340,6 +340,7 @@ public:
std::unique_ptr<hng64_poly_renderer> m_poly_renderer;
TIMER_CALLBACK_MEMBER(hng64_3dfifo_processed);
emu_timer *m_3dfifo_timer;
uint8_t *m_texturerom;
uint16_t* m_vertsrom;

View File

@ -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();
}