diff --git a/src/emu/video/i8275x.c b/src/emu/video/i8275x.c index 0c4cbdecd14..b4efeff5ba5 100644 --- a/src/emu/video/i8275x.c +++ b/src/emu/video/i8275x.c @@ -88,7 +88,7 @@ i8275x_device::i8275x_device(const machine_config &mconfig, const char *tag, dev m_write_drq(*this), m_write_hrtc(*this), m_write_vrtc(*this), - m_display_pixels(NULL), + m_display_cb(NULL), m_status(0), m_param_idx(0), m_param_end(0), @@ -329,8 +329,8 @@ void i8275x_device::device_timer(emu_timer &timer, device_timer_id id, int param lc = (lc - 1) & 0x0f; } - if (m_display_pixels) - m_display_pixels(this, m_bitmap, + if (m_display_cb) + m_display_cb(this, m_bitmap, sx * m_hpixels_per_column, // x position on screen of starting point m_scanline, // y position on screen lc, // current line of char diff --git a/src/emu/video/i8275x.h b/src/emu/video/i8275x.h index bd72b29dcff..0819dc6e75b 100644 --- a/src/emu/video/i8275x.h +++ b/src/emu/video/i8275x.h @@ -45,11 +45,11 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_I8275_ADD(_tag, _clock, _hpixels_per_column, _display_func) \ - MCFG_DEVICE_ADD(_tag, I8275x, _clock) \ - downcast(device)->set_hpixels_per_column(_hpixels_per_column); \ - downcast(device)->set_display_func(_display_func); +#define MCFG_I8275_CHARACTER_WIDTH(_value) \ + i8275x_device::static_set_character_width(*device, _value); +#define MCFG_I8275_DISPLAY_CALLBACK(_func) \ + i8275x_device::static_set_display_callback(*device, _func); #define MCFG_I8275_DRQ_CALLBACK(_write) \ devcb = &i8275x_device::set_drq_wr_callback(*device, DEVCB2_##_write); @@ -88,8 +88,8 @@ public: // construction/destruction i8275x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - void set_hpixels_per_column(int hpixels_per_column) { m_hpixels_per_column = hpixels_per_column; } - void set_display_func(i8275_display_pixels_func func) { m_display_pixels = func; } + static void static_set_character_width(device_t &device, int value) { downcast(device).m_hpixels_per_column = value; } + static void static_set_display_callback(device_t &device, i8275_display_pixels_func func) { downcast(device).m_display_cb = func; } template static devcb2_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_drq.set_callback(object); } template static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_irq.set_callback(object); } @@ -178,7 +178,7 @@ protected: devcb2_write_line m_write_hrtc; devcb2_write_line m_write_vrtc; - i8275_display_pixels_func m_display_pixels; + i8275_display_pixels_func m_display_cb; int m_hpixels_per_column; bitmap_rgb32 m_bitmap; diff --git a/src/mess/drivers/wicat.c b/src/mess/drivers/wicat.c index ab2d84d3b58..6c27560d43c 100644 --- a/src/mess/drivers/wicat.c +++ b/src/mess/drivers/wicat.c @@ -887,7 +887,9 @@ static MACHINE_CONFIG_START( wicat, wicat_state ) MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette") - MCFG_I8275_ADD("video",XTAL_19_6608MHz/8,9,wicat_display_pixels) + MCFG_DEVICE_ADD("video", I8275x, XTAL_19_6608MHz/8) + MCFG_I8275_CHARACTER_WIDTH(9) + MCFG_I8275_DISPLAY_CALLBACK(wicat_display_pixels) MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("videodma",am9517a_device, dreq0_w)) MCFG_I8275_IRQ_CALLBACK(WRITELINE(wicat_state,crtc_cb)) MCFG_VIDEO_SET_SCREEN("screen") diff --git a/src/mess/drivers/zorba.c b/src/mess/drivers/zorba.c index b0ecf6e0d7c..0c899256a48 100644 --- a/src/mess/drivers/zorba.c +++ b/src/mess/drivers/zorba.c @@ -394,7 +394,9 @@ static MACHINE_CONFIG_START( zorba, zorba_state ) MCFG_PIT8253_CLK1(XTAL_24MHz / 3) /* Timer 1: ? */ MCFG_PIT8253_CLK2(XTAL_24MHz / 3) /* Timer 2: ? */ - MCFG_I8275_ADD("crtc", XTAL_14_31818MHz/7, 8, zorba_update_chr) + MCFG_DEVICE_ADD("crtc", I8275x, XTAL_14_31818MHz/7) + MCFG_I8275_CHARACTER_WIDTH(8) + MCFG_I8275_DISPLAY_CALLBACK(zorba_update_chr) MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w)) MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_FD1793x_ADD("fdc", XTAL_24MHz / 24) diff --git a/src/mess/video/mikromik.c b/src/mess/video/mikromik.c index c9950113f87..c757b225945 100644 --- a/src/mess/video/mikromik.c +++ b/src/mess/video/mikromik.c @@ -114,8 +114,11 @@ MACHINE_CONFIG_FRAGMENT( mm1m6_video ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", mm1) MCFG_PALETTE_ADD_MONOCHROME_GREEN_HIGHLIGHT("palette") - MCFG_I8275_ADD(I8275_TAG, XTAL_18_720MHz/8, 8, crtc_display_pixels) + MCFG_DEVICE_ADD(I8275_TAG, I8275x, XTAL_18_720MHz/8) + MCFG_I8275_CHARACTER_WIDTH(8) + MCFG_I8275_DISPLAY_CALLBACK(crtc_display_pixels) MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE(I8237_TAG, am9517a_device, dreq0_w)) + MCFG_I8275_VRTC_CALLBACK(DEVWRITELINE(UPD7220_TAG, upd7220_device, ext_sync_w)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) MCFG_DEVICE_ADD(UPD7220_TAG, UPD7220, XTAL_18_720MHz/8)