mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
cdp1861, cdp1862: Convert callbacks to devcb3 (nw)
This commit is contained in:
parent
85ada1a28b
commit
06559ae451
@ -54,13 +54,13 @@ READ_LINE_MEMBER( vp590_device::gd_r )
|
||||
//-------------------------------------------------
|
||||
|
||||
MACHINE_CONFIG_START(vp590_device::device_add_mconfig)
|
||||
MCFG_DEVICE_ADD(CDP1862_TAG, CDP1862, CPD1862_CLOCK)
|
||||
MCFG_CDP1861_RD_CALLBACK(READLINE(DEVICE_SELF, vp590_device, rd_r))
|
||||
MCFG_CDP1861_BD_CALLBACK(READLINE(DEVICE_SELF, vp590_device, bd_r))
|
||||
MCFG_CDP1861_GD_CALLBACK(READLINE(DEVICE_SELF, vp590_device, gd_r))
|
||||
MCFG_CDP1862_LUMINANCE(RES_R(510), RES_R(360), RES_K(1), RES_K(1.5)) // R3, R4, R5, R6
|
||||
MCFG_CDP1862_CHROMINANCE(RES_K(3.9), RES_K(10), RES_K(2), RES_K(3.3)) // R7, R8, R9, R10
|
||||
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
|
||||
CDP1862(config, m_cgc, 7.15909_MHz_XTAL);
|
||||
m_cgc->rdata_cb().set(FUNC(vp590_device::rd_r));
|
||||
m_cgc->bdata_cb().set(FUNC(vp590_device::bd_r));
|
||||
m_cgc->gdata_cb().set(FUNC(vp590_device::gd_r));
|
||||
m_cgc->set_luminance(RES_R(510), RES_R(360), RES_K(1), RES_K(1.5)); // R3, R4, R5, R6
|
||||
m_cgc->set_chrominance(RES_K(3.9), RES_K(10), RES_K(2), RES_K(3.3)); // R7, R8, R9, R10
|
||||
m_cgc->set_screen(SCREEN_TAG);
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -41,7 +41,7 @@ DEFINE_DEVICE_TYPE(CDP1861, cdp1861_device, "cdp1861", "RCA CDP1861")
|
||||
cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, CDP1861, tag, owner, clock)
|
||||
, device_video_interface(mconfig, *this)
|
||||
, m_write_irq(*this)
|
||||
, m_write_int(*this)
|
||||
, m_write_dma_out(*this)
|
||||
, m_write_efx(*this)
|
||||
, m_disp(0)
|
||||
@ -59,7 +59,7 @@ cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, d
|
||||
void cdp1861_device::device_start()
|
||||
{
|
||||
// resolve callbacks
|
||||
m_write_irq.resolve_safe();
|
||||
m_write_int.resolve_safe();
|
||||
m_write_dma_out.resolve_safe();
|
||||
m_write_efx.resolve_safe();
|
||||
|
||||
@ -93,7 +93,7 @@ void cdp1861_device::device_reset()
|
||||
m_dmaout = 0;
|
||||
m_dispon = 0;
|
||||
|
||||
m_write_irq(CLEAR_LINE);
|
||||
m_write_int(CLEAR_LINE);
|
||||
m_write_dma_out(CLEAR_LINE);
|
||||
m_write_efx(CLEAR_LINE);
|
||||
}
|
||||
@ -114,7 +114,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
|
||||
{
|
||||
if (m_disp)
|
||||
{
|
||||
m_write_irq(ASSERT_LINE);
|
||||
m_write_int(ASSERT_LINE);
|
||||
}
|
||||
|
||||
m_int_timer->adjust(screen().time_until_pos( SCANLINE_INT_END, 0));
|
||||
@ -123,7 +123,7 @@ void cdp1861_device::device_timer(emu_timer &timer, device_timer_id id, int para
|
||||
{
|
||||
if (m_disp)
|
||||
{
|
||||
m_write_irq(CLEAR_LINE);
|
||||
m_write_int(CLEAR_LINE);
|
||||
}
|
||||
|
||||
m_int_timer->adjust(screen().time_until_pos(SCANLINE_INT_START, 0));
|
||||
@ -230,7 +230,7 @@ WRITE_LINE_MEMBER( cdp1861_device::disp_off_w )
|
||||
|
||||
m_dispoff = state;
|
||||
|
||||
m_write_irq(CLEAR_LINE);
|
||||
m_write_int(CLEAR_LINE);
|
||||
m_write_dma_out(CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
@ -33,18 +33,7 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_CDP1861_IRQ_CALLBACK(_write) \
|
||||
downcast<cdp1861_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
|
||||
|
||||
#define MCFG_CDP1861_DMA_OUT_CALLBACK(_write) \
|
||||
downcast<cdp1861_device &>(*device).set_dma_out_wr_callback(DEVCB_##_write);
|
||||
|
||||
#define MCFG_CDP1861_EFX_CALLBACK(_write) \
|
||||
downcast<cdp1861_device &>(*device).set_efx_wr_callback(DEVCB_##_write);
|
||||
|
||||
|
||||
#define MCFG_CDP1861_SCREEN_ADD(_cdptag, _tag, _clock) \
|
||||
MCFG_VIDEO_SET_SCREEN(_tag) \
|
||||
MCFG_SCREEN_ADD(_tag, RASTER) \
|
||||
MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1861_device, screen_update) \
|
||||
MCFG_SCREEN_RAW_PARAMS(_clock, cdp1861_device::SCREEN_WIDTH, cdp1861_device::HBLANK_END, cdp1861_device::HBLANK_START, cdp1861_device::TOTAL_SCANLINES, cdp1861_device::SCANLINE_VBLANK_END, cdp1861_device::SCANLINE_VBLANK_START)
|
||||
@ -88,9 +77,9 @@ public:
|
||||
// construction/destruction
|
||||
cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_dma_out_wr_callback(Object &&cb) { return m_write_dma_out.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_efx_wr_callback(Object &&cb) { return m_write_efx.set_callback(std::forward<Object>(cb)); }
|
||||
auto int_cb() { return m_write_int.bind(); }
|
||||
auto dma_out_cb() { return m_write_dma_out.bind(); }
|
||||
auto efx_cb() { return m_write_efx.bind(); }
|
||||
|
||||
DECLARE_WRITE8_MEMBER( dma_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( disp_on_w );
|
||||
@ -114,7 +103,7 @@ private:
|
||||
TIMER_DMA
|
||||
};
|
||||
|
||||
devcb_write_line m_write_irq;
|
||||
devcb_write_line m_write_int;
|
||||
devcb_write_line m_write_dma_out;
|
||||
devcb_write_line m_write_efx;
|
||||
|
||||
|
@ -29,35 +29,6 @@
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS / CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define CPD1862_CLOCK XTAL(7'159'090)
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_CDP1861_RD_CALLBACK(_read) \
|
||||
downcast<cdp1862_device &>(*device).set_rd_rd_callback(DEVCB_##_read);
|
||||
|
||||
#define MCFG_CDP1861_BD_CALLBACK(_read) \
|
||||
downcast<cdp1862_device &>(*device).set_bd_rd_callback(DEVCB_##_read);
|
||||
|
||||
#define MCFG_CDP1861_GD_CALLBACK(_read) \
|
||||
downcast<cdp1862_device &>(*device).set_gd_rd_callback(DEVCB_##_read);
|
||||
|
||||
#define MCFG_CDP1862_LUMINANCE(_r, _b, _g, _bkg) \
|
||||
downcast<cdp1862_device &>(*device).set_luminance(_r, _b, _g, _bkg);
|
||||
|
||||
#define MCFG_CDP1862_CHROMINANCE(_r, _b, _g, _bkg) \
|
||||
downcast<cdp1862_device &>(*device).set_chrominance(_r, _b, _g, _bkg);
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
@ -71,9 +42,9 @@ public:
|
||||
// construction/destruction
|
||||
cdp1862_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
template <class Object> devcb_base &set_rd_rd_callback(Object &&cb) { return m_read_rd.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_bd_rd_callback(Object &&cb) { return m_read_bd.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_gd_rd_callback(Object &&cb) { return m_read_gd.set_callback(std::forward<Object>(cb)); }
|
||||
auto rdata_cb() { return m_read_rd.bind(); }
|
||||
auto bdata_cb() { return m_read_bd.bind(); }
|
||||
auto gdata_cb() { return m_read_gd.bind(); }
|
||||
|
||||
void set_luminance(double r, double b, double g, double bkg) { m_lum_r = r; m_lum_b = b; m_lum_g = g; m_lum_bkg = bkg; }
|
||||
void set_chrominance(double r, double b, double g, double bkg) { m_chr_r = r; m_chr_b = b; m_chr_g = g; m_chr_bkg = bkg; }
|
||||
|
@ -251,10 +251,10 @@ MACHINE_CONFIG_START(elf2_state::elf2)
|
||||
/* video hardware */
|
||||
config.set_default_layout(layout_elf2);
|
||||
|
||||
MCFG_DEVICE_ADD(CDP1861_TAG, CDP1861, XTAL(3'579'545)/2)
|
||||
MCFG_CDP1861_IRQ_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT))
|
||||
MCFG_CDP1861_DMA_OUT_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT))
|
||||
MCFG_CDP1861_EFX_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
|
||||
CDP1861(config, m_vdc, XTAL(3'579'545)/2).set_screen(SCREEN_TAG);
|
||||
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
|
||||
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
|
||||
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
|
||||
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL(3'579'545)/2)
|
||||
|
||||
/* devices */
|
||||
|
@ -660,10 +660,10 @@ MACHINE_CONFIG_START(studio2_state::studio2)
|
||||
m_maincpu->dma_wr_cb().set(m_vdc, FUNC(cdp1861_device::dma_w));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD(CDP1861_TAG, CDP1861, 1760000)
|
||||
MCFG_CDP1861_IRQ_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT))
|
||||
MCFG_CDP1861_DMA_OUT_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT))
|
||||
MCFG_CDP1861_EFX_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
|
||||
CDP1861(config, m_vdc, 1760000).set_screen(SCREEN_TAG);
|
||||
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
|
||||
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
|
||||
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
|
||||
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, 1760000)
|
||||
|
||||
/* sound hardware */
|
||||
@ -686,10 +686,10 @@ MACHINE_CONFIG_START(visicom_state::visicom)
|
||||
m_maincpu->dma_wr_cb().set(FUNC(visicom_state::dma_w));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_DEVICE_ADD(CDP1861_TAG, CDP1861, XTAL(3'579'545)/2)
|
||||
MCFG_CDP1861_IRQ_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT))
|
||||
MCFG_CDP1861_DMA_OUT_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT))
|
||||
MCFG_CDP1861_EFX_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
|
||||
CDP1861(config, m_vdc, XTAL(3'579'545)/2);
|
||||
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
|
||||
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
|
||||
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
|
||||
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL(3'579'545)/2)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(visicom_state, screen_update)
|
||||
|
||||
|
@ -716,10 +716,10 @@ MACHINE_CONFIG_START(vip_state::vip)
|
||||
m_maincpu->tpb_cb().set(m_exp, FUNC(vip_expansion_slot_device::tpb_w));
|
||||
|
||||
// video hardware
|
||||
MCFG_DEVICE_ADD(CDP1861_TAG, CDP1861, 3.52128_MHz_XTAL / 2)
|
||||
MCFG_CDP1861_IRQ_CALLBACK(WRITELINE(*this, vip_state, vdc_int_w))
|
||||
MCFG_CDP1861_DMA_OUT_CALLBACK(WRITELINE(*this, vip_state, vdc_dma_out_w))
|
||||
MCFG_CDP1861_EFX_CALLBACK(WRITELINE(*this, vip_state, vdc_ef1_w))
|
||||
CDP1861(config, m_vdc, 3.52128_MHz_XTAL / 2).set_screen(SCREEN_TAG);
|
||||
m_vdc->int_cb().set(FUNC(vip_state::vdc_int_w));
|
||||
m_vdc->dma_out_cb().set(FUNC(vip_state::vdc_dma_out_w));
|
||||
m_vdc->efx_cb().set(FUNC(vip_state::vdc_ef1_w));
|
||||
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, 3.52128_MHz_XTAL / 2)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(vip_state, screen_update)
|
||||
|
||||
|
@ -37,10 +37,10 @@ uint32_t osc1000b_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
|
||||
/* Machine Drivers */
|
||||
|
||||
MACHINE_CONFIG_START(tmc1800_state::tmc1800_video)
|
||||
MCFG_DEVICE_ADD(CDP1861_TAG, CDP1861, XTAL(1'750'000))
|
||||
MCFG_CDP1861_IRQ_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT))
|
||||
MCFG_CDP1861_DMA_OUT_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT))
|
||||
MCFG_CDP1861_EFX_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
|
||||
CDP1861(config, m_vdc, XTAL(1'750'000)).set_screen(SCREEN_TAG);
|
||||
m_vdc->int_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_INT);
|
||||
m_vdc->dma_out_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_DMAOUT);
|
||||
m_vdc->efx_cb().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF1);
|
||||
MCFG_CDP1861_SCREEN_ADD(CDP1861_TAG, SCREEN_TAG, XTAL(1'750'000))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user