mirror of
https://github.com/holub/mame
synced 2025-07-04 01:18:59 +03:00
megacdcd: Eliminate machine().device (nw)
This commit is contained in:
parent
7445de12e3
commit
31bc949682
@ -1054,6 +1054,7 @@ void ngcd_state::neocd(machine_config &config)
|
|||||||
|
|
||||||
// temporary until things are cleaned up
|
// temporary until things are cleaned up
|
||||||
LC89510_TEMP(config, m_tempcdc, 0); // cd controller
|
LC89510_TEMP(config, m_tempcdc, 0); // cd controller
|
||||||
|
m_tempcdc->set_cdrom_tag("cdrom");
|
||||||
m_tempcdc->set_is_neoCD(true);
|
m_tempcdc->set_is_neoCD(true);
|
||||||
m_tempcdc->set_type1_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type1), this);
|
m_tempcdc->set_type1_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type1), this);
|
||||||
m_tempcdc->set_type2_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type2), this);
|
m_tempcdc->set_type2_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type2), this);
|
||||||
|
@ -303,6 +303,8 @@ void sega_segacd_device::device_add_mconfig(machine_config &config)
|
|||||||
// temporary until things are cleaned up
|
// temporary until things are cleaned up
|
||||||
LC89510_TEMP(config, m_lc89510_temp, 0); // cd controller
|
LC89510_TEMP(config, m_lc89510_temp, 0); // cd controller
|
||||||
m_lc89510_temp->set_cdc_do_dma_callback(FUNC(sega_segacd_device::SegaCD_CDC_Do_DMA), this); // hack
|
m_lc89510_temp->set_cdc_do_dma_callback(FUNC(sega_segacd_device::SegaCD_CDC_Do_DMA), this); // hack
|
||||||
|
m_lc89510_temp->set_cdrom_tag("^cdrom");
|
||||||
|
m_lc89510_temp->set_68k_tag(m_scdcpu);
|
||||||
|
|
||||||
TIMER(config, m_stopwatch_timer).configure_generic(timer_device::expired_delegate()); //stopwatch timer
|
TIMER(config, m_stopwatch_timer).configure_generic(timer_device::expired_delegate()); //stopwatch timer
|
||||||
TIMER(config, m_stamp_timer).configure_generic(FUNC(sega_segacd_device::stamp_timer_callback));
|
TIMER(config, m_stamp_timer).configure_generic(FUNC(sega_segacd_device::stamp_timer_callback));
|
||||||
|
@ -98,17 +98,17 @@
|
|||||||
#define CHECK_SCD_LV5_INTERRUPT \
|
#define CHECK_SCD_LV5_INTERRUPT \
|
||||||
if (segacd_irq_mask & 0x20) \
|
if (segacd_irq_mask & 0x20) \
|
||||||
{ \
|
{ \
|
||||||
machine.device(":segacd:segacd_68k")->execute().set_input_line(5, HOLD_LINE); \
|
m_68k->set_input_line(5, HOLD_LINE); \
|
||||||
}
|
}
|
||||||
#define CHECK_SCD_LV4_INTERRUPT \
|
#define CHECK_SCD_LV4_INTERRUPT \
|
||||||
if (segacd_irq_mask & 0x10) \
|
if (segacd_irq_mask & 0x10) \
|
||||||
{ \
|
{ \
|
||||||
machine.device(":segacd:segacd_68k")->execute().set_input_line(4, HOLD_LINE); \
|
m_68k->set_input_line(4, HOLD_LINE); \
|
||||||
}
|
}
|
||||||
#define CHECK_SCD_LV4_INTERRUPT_A \
|
#define CHECK_SCD_LV4_INTERRUPT_A \
|
||||||
if (segacd_irq_mask & 0x10) \
|
if (segacd_irq_mask & 0x10) \
|
||||||
{ \
|
{ \
|
||||||
machine().device(":segacd:segacd_68k")->execute().set_input_line(4, HOLD_LINE); \
|
m_68k->set_input_line(4, HOLD_LINE); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -135,6 +135,9 @@ DEFINE_DEVICE_TYPE(LC89510_TEMP, lc89510_temp_device, "lc89510_temp", "lc89510_t
|
|||||||
|
|
||||||
lc89510_temp_device::lc89510_temp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
lc89510_temp_device::lc89510_temp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: device_t(mconfig, LC89510_TEMP, tag, owner, clock)
|
: device_t(mconfig, LC89510_TEMP, tag, owner, clock)
|
||||||
|
, m_cdrom(*this, finder_base::DUMMY_TAG)
|
||||||
|
, m_cdda(*this, "cdda")
|
||||||
|
, m_68k(*this, finder_base::DUMMY_TAG)
|
||||||
{
|
{
|
||||||
segacd_dma_callback = segacd_dma_delegate(FUNC(lc89510_temp_device::Fake_CDC_Do_DMA), this);
|
segacd_dma_callback = segacd_dma_delegate(FUNC(lc89510_temp_device::Fake_CDC_Do_DMA), this);
|
||||||
type1_interrupt_callback = interrupt_delegate(FUNC(lc89510_temp_device::dummy_interrupt_callback), this);
|
type1_interrupt_callback = interrupt_delegate(FUNC(lc89510_temp_device::dummy_interrupt_callback), this);
|
||||||
@ -173,8 +176,6 @@ void lc89510_temp_device::device_start()
|
|||||||
type1_interrupt_callback.bind_relative_to(*owner());
|
type1_interrupt_callback.bind_relative_to(*owner());
|
||||||
type2_interrupt_callback.bind_relative_to(*owner());
|
type2_interrupt_callback.bind_relative_to(*owner());
|
||||||
type3_interrupt_callback.bind_relative_to(*owner());
|
type3_interrupt_callback.bind_relative_to(*owner());
|
||||||
|
|
||||||
m_cdda = (cdda_device*)subdevice("cdda");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lc89510_temp_device::device_reset()
|
void lc89510_temp_device::device_reset()
|
||||||
@ -1105,10 +1106,7 @@ void lc89510_temp_device::reset_cd(void)
|
|||||||
lc89510_Reset();
|
lc89510_Reset();
|
||||||
|
|
||||||
{
|
{
|
||||||
cdrom_image_device *cddevice = machine().device<cdrom_image_device>("cdrom");
|
segacd.cd = m_cdrom->get_cdrom_file();
|
||||||
if ( cddevice )
|
|
||||||
{
|
|
||||||
segacd.cd = cddevice->get_cdrom_file();
|
|
||||||
if ( segacd.cd )
|
if ( segacd.cd )
|
||||||
{
|
{
|
||||||
segacd.toc = cdrom_get_toc( segacd.cd );
|
segacd.toc = cdrom_get_toc( segacd.cd );
|
||||||
@ -1116,7 +1114,6 @@ void lc89510_temp_device::reset_cd(void)
|
|||||||
m_cdda->stop_audio(); //stop any pending CD-DA
|
m_cdda->stop_audio(); //stop any pending CD-DA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,6 +23,9 @@ public:
|
|||||||
|
|
||||||
template <typename... T> void set_cdc_do_dma_callback(T &&... args) { segacd_dma_callback = segacd_dma_delegate(std::forward<T>(args)...); }
|
template <typename... T> void set_cdc_do_dma_callback(T &&... args) { segacd_dma_callback = segacd_dma_delegate(std::forward<T>(args)...); }
|
||||||
|
|
||||||
|
template <typename T> void set_cdrom_tag(T &&tag) { m_cdrom.set_tag(std::forward<T>(tag)); }
|
||||||
|
template <typename T> void set_68k_tag(T &&tag) { m_68k.set_tag(std::forward<T>(tag)); }
|
||||||
|
|
||||||
|
|
||||||
lc89510_temp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
lc89510_temp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
@ -79,7 +82,11 @@ protected:
|
|||||||
void dummy_interrupt_callback(void);
|
void dummy_interrupt_callback(void);
|
||||||
|
|
||||||
|
|
||||||
|
required_device<cdrom_image_device> m_cdrom;
|
||||||
|
required_device<cdda_device> m_cdda;
|
||||||
|
|
||||||
// HACK for neoCD handling
|
// HACK for neoCD handling
|
||||||
|
optional_device<cpu_device> m_68k;
|
||||||
bool is_neoCD;
|
bool is_neoCD;
|
||||||
|
|
||||||
|
|
||||||
@ -159,7 +166,6 @@ protected:
|
|||||||
bool CDD_Import(running_machine& machine);
|
bool CDD_Import(running_machine& machine);
|
||||||
|
|
||||||
uint16_t segacd_irq_mask;
|
uint16_t segacd_irq_mask;
|
||||||
cdda_device* m_cdda;
|
|
||||||
|
|
||||||
/* NeoCD */
|
/* NeoCD */
|
||||||
uint16_t nff0002;
|
uint16_t nff0002;
|
||||||
|
Loading…
Reference in New Issue
Block a user