diff --git a/src/devices/bus/ecbbus/grip.cpp b/src/devices/bus/ecbbus/grip.cpp index fd813260297..83d878f5d41 100644 --- a/src/devices/bus/ecbbus/grip.cpp +++ b/src/devices/bus/ecbbus/grip.cpp @@ -436,7 +436,7 @@ MACHINE_CONFIG_START(ecb_grip21_device::device_add_mconfig) MCFG_MC6845_OUT_DE_CB(WRITELINE(m_sti, z80sti_device, i1_w)) MCFG_MC6845_OUT_CUR_CB(WRITELINE(m_sti, z80sti_device, i1_w)) -// MCFG_MC6845_ADD(HD6345_TAG, HD6345, SCREEN_TAG, XTAL(16'000'000)/4) +// HD6345(config, HD6345_TAG, XTAL(16'000'000)/4).set_screen(SCREEN_TAG); I8255A(config, m_ppi); m_ppi->in_pa_callback().set(FUNC(ecb_grip21_device::ppi_pa_r)); diff --git a/src/mame/drivers/4roses.cpp b/src/mame/drivers/4roses.cpp index ee92065b970..30c55c598bf 100644 --- a/src/mame/drivers/4roses.cpp +++ b/src/mame/drivers/4roses.cpp @@ -478,10 +478,11 @@ MACHINE_CONFIG_START(_4roses_state::_4roses) MCFG_PALETTE_INIT_OWNER(_4roses_state,funworld) MCFG_VIDEO_START_OVERRIDE(_4roses_state,funworld) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8) /* 2MHz, guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - //MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/8)); /* 2MHz, guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(4); + //crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/5clown.cpp b/src/mame/drivers/5clown.cpp index b67f4767443..2a7103f4f64 100644 --- a/src/mame/drivers/5clown.cpp +++ b/src/mame/drivers/5clown.cpp @@ -1059,10 +1059,11 @@ MACHINE_CONFIG_START(_5clown_state::fclown) MCFG_PALETTE_ADD("palette", 256) MCFG_PALETTE_INIT_OWNER(_5clown_state, _5clown) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/16)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/albazg.cpp b/src/mame/drivers/albazg.cpp index 2a49b54963e..6ba6aaf7913 100644 --- a/src/mame/drivers/albazg.cpp +++ b/src/mame/drivers/albazg.cpp @@ -8,7 +8,7 @@ driver by Angelo Salese Notes: -The name of this hardware is "Alba ZG board",a newer revision of the - "Alba ZC board" used by Hanaroku (albazc.c driver). Test mode says clearly that this is + "Alba ZC board" used by Hanaroku (albazc.cpp driver). Test mode says clearly that this is from 1991. TODO: @@ -385,9 +385,10 @@ MACHINE_CONFIG_START(albazg_state::yumefuda) MCFG_SCREEN_UPDATE_DRIVER(albazg_state, screen_update_yumefuda) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", H46505, "screen", MASTER_CLOCK/16) /* hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + h46505_device &crtc(H46505(config, "crtc", MASTER_CLOCK/16)); /* hand tuned to get ~60 fps */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_yumefuda ) MCFG_PALETTE_ADD("palette", 0x80) diff --git a/src/mame/drivers/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp index cb6b0d475b4..fd6a449271d 100644 --- a/src/mame/drivers/amaticmg.cpp +++ b/src/mame/drivers/amaticmg.cpp @@ -871,10 +871,11 @@ MACHINE_CONFIG_START(amaticmg_state::amaticmg) MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) // no NMI mask? + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(4); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); // no NMI mask? MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_amaticmg) @@ -907,8 +908,7 @@ MACHINE_CONFIG_START(amaticmg_state::amaticmg2) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg2) - MCFG_DEVICE_MODIFY("crtc") - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, amaticmg_state, amaticmg2_irq)) + subdevice("crtc")->out_vsync_callback().set(FUNC(amaticmg_state::amaticmg2_irq)); MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_amaticmg2) MCFG_PALETTE_MODIFY("palette") @@ -928,8 +928,7 @@ MACHINE_CONFIG_START(amaticmg_state::amaticmg4) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(amaticmg_state, screen_update_amaticmg2) - MCFG_DEVICE_MODIFY("crtc") - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, amaticmg_state, amaticmg2_irq)) + subdevice("crtc")->out_vsync_callback().set(FUNC(amaticmg_state::amaticmg2_irq)); MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_amaticmg2) MCFG_PALETTE_MODIFY("palette") diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index 0994aedb98d..9c539f6085b 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -936,13 +936,13 @@ MACHINE_CONFIG_START(amstrad_state::amstrad_base) MCFG_PALETTE_ADD("palette", 32) MCFG_PALETTE_INIT_OWNER(amstrad_state,amstrad_cpc) - MCFG_MC6845_ADD("mc6845", HD6845, nullptr, 16_MHz_XTAL / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, amstrad_state, amstrad_de_changed)) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, amstrad_state, amstrad_hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, amstrad_state, amstrad_vsync_changed)) - MCFG_MC6845_OUT_CUR_CB(WRITELINE("exp", cpc_expansion_slot_device, cursor_w)) + HD6845(config, m_crtc, 16_MHz_XTAL / 16); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(16); + m_crtc->out_de_callback().set(FUNC(amstrad_state::amstrad_de_changed)); + m_crtc->out_hsync_callback().set(FUNC(amstrad_state::amstrad_hsync_changed)); + m_crtc->out_vsync_callback().set(FUNC(amstrad_state::amstrad_vsync_changed)); + m_crtc->out_cur_callback().set("exp", FUNC(cpc_expansion_slot_device::cursor_w)); MCFG_VIDEO_START_OVERRIDE(amstrad_state,amstrad) @@ -1058,12 +1058,12 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus) MCFG_PALETTE_ADD("palette", 4096) MCFG_PALETTE_INIT_OWNER(amstrad_state,amstrad_plus) - MCFG_MC6845_ADD("mc6845", AMS40489, nullptr, 40_MHz_XTAL / 40) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, amstrad_state, amstrad_plus_de_changed)) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, amstrad_state, amstrad_plus_hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, amstrad_state, amstrad_plus_vsync_changed)) + AMS40489(config, m_crtc, 40_MHz_XTAL / 40); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(16); + m_crtc->out_de_callback().set(FUNC(amstrad_state::amstrad_plus_de_changed)); + m_crtc->out_hsync_callback().set(FUNC(amstrad_state::amstrad_plus_hsync_changed)); + m_crtc->out_vsync_callback().set(FUNC(amstrad_state::amstrad_plus_vsync_changed)); MCFG_VIDEO_START_OVERRIDE(amstrad_state,amstrad) @@ -1136,12 +1136,12 @@ MACHINE_CONFIG_START(amstrad_state::gx4000) MCFG_PALETTE_ADD("palette", 4096) MCFG_PALETTE_INIT_OWNER(amstrad_state,amstrad_plus) - MCFG_MC6845_ADD("mc6845", AMS40489, nullptr, 40_MHz_XTAL / 40) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, amstrad_state, amstrad_plus_de_changed)) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, amstrad_state, amstrad_plus_hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, amstrad_state, amstrad_plus_vsync_changed)) + AMS40489(config, m_crtc, 40_MHz_XTAL / 40); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(16); + m_crtc->out_de_callback().set(FUNC(amstrad_state::amstrad_plus_de_changed)); + m_crtc->out_hsync_callback().set(FUNC(amstrad_state::amstrad_plus_hsync_changed)); + m_crtc->out_vsync_callback().set(FUNC(amstrad_state::amstrad_plus_vsync_changed)); MCFG_VIDEO_START_OVERRIDE(amstrad_state,amstrad) diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp index 34a529fca09..99a25d346dc 100644 --- a/src/mame/drivers/amusco.cpp +++ b/src/mame/drivers/amusco.cpp @@ -585,12 +585,14 @@ MACHINE_CONFIG_START(amusco_state::amusco) MCFG_PALETTE_ADD("palette",8*8) MCFG_PALETTE_INIT_OWNER(amusco_state, amusco) - MCFG_MC6845_ADD("crtc", R6545_1, "screen", CRTC_CLOCK) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_ADDR_CHANGED_CB(amusco_state, crtc_addr) - MCFG_MC6845_OUT_DE_CB(WRITELINE(m_pic, pic8259_device, ir1_w)) // IRQ1 sets 0x918 bit 3 - MCFG_MC6845_UPDATE_ROW_CB(amusco_state, update_row) + R6545_1(config, m_crtc, CRTC_CLOCK); /* guess */ + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_on_update_addr_change_callback(FUNC(amusco_state::crtc_addr), this); + m_crtc->out_de_callback().set(m_pic, FUNC(pic8259_device::ir1_w)); // IRQ1 sets 0x918 bit 3 + m_crtc->set_update_row_callback(FUNC(amusco_state::update_row), this); + /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp index 32627f0b1dc..f2245eba556 100644 --- a/src/mame/drivers/apricot.cpp +++ b/src/mame/drivers/apricot.cpp @@ -385,11 +385,12 @@ MACHINE_CONFIG_START(apricot_state::apricot) MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") - MCFG_MC6845_ADD("ic30", HD6845, "screen", 15_MHz_XTAL / 10) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(10) - MCFG_MC6845_UPDATE_ROW_CB(apricot_state, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, apricot_state, apricot_hd6845_de)) + HD6845(config, m_crtc, 15_MHz_XTAL / 10); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(10); + m_crtc->set_update_row_callback(FUNC(apricot_state::crtc_update_row), this); + m_crtc->out_de_callback().set(FUNC(apricot_state::apricot_hd6845_de)); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/apricotp.cpp b/src/mame/drivers/apricotp.cpp index d61eeac5b0b..f8edcb96795 100644 --- a/src/mame/drivers/apricotp.cpp +++ b/src/mame/drivers/apricotp.cpp @@ -597,10 +597,11 @@ MACHINE_CONFIG_START(fp_state::fp) MCFG_PALETTE_ADD("palette", 16) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_act_f1) - MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_CRT_TAG, 4000000) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(fp_state, update_row) + MC6845(config, m_crtc, 4000000); + m_crtc->set_screen(SCREEN_CRT_TAG); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(fp_state::update_row), this); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp index 41ae6f539f4..bfad6e7bda4 100644 --- a/src/mame/drivers/aussiebyte.cpp +++ b/src/mame/drivers/aussiebyte.cpp @@ -581,13 +581,14 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte) MCFG_FLOPPY_DRIVE_SOUND(true) /* devices */ - MCFG_MC6845_ADD("crtc", SY6545_1, "screen", 16_MHz_XTAL / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(aussiebyte_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(aussiebyte_state, crtc_update_addr) + SY6545_1(config, m_crtc, 16_MHz_XTAL / 8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(aussiebyte_state::crtc_update_row), this); + m_crtc->set_on_update_addr_change_callback(FUNC(aussiebyte_state::crtc_update_addr), this); - MCFG_DEVICE_ADD("rtc", MSM5832, 32.768_kHz_XTAL) + MSM5832(config, m_rtc, 32.768_kHz_XTAL); /* quickload */ MCFG_QUICKLOAD_ADD("quickload", aussiebyte_state, aussiebyte, "com,cpm", 3) diff --git a/src/mame/drivers/b16.cpp b/src/mame/drivers/b16.cpp index 60e85d4f235..b98ce63364b 100644 --- a/src/mame/drivers/b16.cpp +++ b/src/mame/drivers/b16.cpp @@ -281,9 +281,10 @@ MACHINE_CONFIG_START(b16_state::b16) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 400-1) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD(m_mc6845, H46505, "screen", XTAL(14'318'181)/5) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_mc6845, XTAL(14'318'181)/5); /* unknown clock, hand tuned to get ~60 fps */ + m_mc6845->set_screen("screen"); + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(8); AM9517A(config, m_dma8237, XTAL(14'318'181)/2); m_dma8237->in_memr_callback().set(FUNC(b16_state::memory_read_byte)); diff --git a/src/mame/drivers/banctec.cpp b/src/mame/drivers/banctec.cpp index 4c24975b1b1..c22150aa974 100644 --- a/src/mame/drivers/banctec.cpp +++ b/src/mame/drivers/banctec.cpp @@ -157,12 +157,12 @@ MACHINE_CONFIG_START(banctec_state::banctec) MCFG_PALETTE_ADD_MONOCHROME("palette") MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_banctec) - MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL(2'000'000)) /* (?) */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(banctec_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(banctec_state, crtc_addr) - + r6545_1_device &crtc(R6545_1(config, "crtc", XTAL(2'000'000))); /* (?) */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(banctec_state::crtc_update_row), this); + crtc.set_on_update_addr_change_callback(FUNC(banctec_state::crtc_addr), this); MACHINE_CONFIG_END ROM_START(banctec) diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp index 3316322b91e..9a330ed5756 100644 --- a/src/mame/drivers/blitz68k.cpp +++ b/src/mame/drivers/blitz68k.cpp @@ -1801,11 +1801,12 @@ MACHINE_CONFIG_START(blitz68k_state::cjffruit) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-8-1) MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k) - MCFG_MC6845_ADD(m_crtc, R6545_1, "screen", XTAL(22'118'400)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_ADDR_CHANGED_CB(blitz68k_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, blitz68k_state, crtc_vsync_irq1)) + R6545_1(config, m_crtc, XTAL(22'118'400)/8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(4); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq1)); ramdac_config(config); @@ -1832,11 +1833,12 @@ MACHINE_CONFIG_START(blitz68k_state::bankrob) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4) MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k) - MCFG_MC6845_ADD(m_crtc, H46505, "screen", XTAL(11'059'200)/4) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_ADDR_CHANGED_CB(blitz68k_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, blitz68k_state, crtc_vsync_irq3)) + H46505(config, m_crtc, XTAL(11'059'200)/4); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(4); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); @@ -1861,11 +1863,12 @@ MACHINE_CONFIG_START(blitz68k_state::bankroba) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+7, 256-1) MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k) - MCFG_MC6845_ADD(m_crtc, H46505, "screen", XTAL(11'059'200)/4) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_ADDR_CHANGED_CB(blitz68k_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, blitz68k_state, crtc_vsync_irq5)) + H46505(config, m_crtc, XTAL(11'059'200)/4); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(4); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq5)); ramdac_config(config); @@ -1889,11 +1892,12 @@ MACHINE_CONFIG_START(blitz68k_state::deucesw2) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k) - MCFG_MC6845_ADD(m_crtc, R6545_1, "screen", XTAL(22'118'400)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_ADDR_CHANGED_CB(blitz68k_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, blitz68k_state, crtc_vsync_irq3)) + R6545_1(config, m_crtc, XTAL(22'118'400)/8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(4); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); @@ -1919,11 +1923,12 @@ MACHINE_CONFIG_START(blitz68k_state::dualgame) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4) MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k) - MCFG_MC6845_ADD(m_crtc, H46505, "screen", XTAL(11'059'200)/4) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_ADDR_CHANGED_CB(blitz68k_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, blitz68k_state, crtc_vsync_irq3)) + H46505(config, m_crtc, XTAL(11'059'200)/4); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(4); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); @@ -1947,11 +1952,12 @@ MACHINE_CONFIG_START(blitz68k_state::hermit) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0+4, 256-1-4) MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k) - MCFG_MC6845_ADD(m_crtc, H46505, "screen", XTAL(22'118'400)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_ADDR_CHANGED_CB(blitz68k_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, blitz68k_state, crtc_vsync_irq1)) + H46505(config, m_crtc, XTAL(22'118'400)/8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(4); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq1)); ramdac_config(config); @@ -1980,11 +1986,12 @@ MACHINE_CONFIG_START(blitz68k_state::maxidbl) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) MCFG_SCREEN_UPDATE_DRIVER(blitz68k_state, screen_update_blitz68k_noblit) - MCFG_MC6845_ADD(m_crtc, H46505, "screen", XTAL(11'059'200)/4) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_ADDR_CHANGED_CB(blitz68k_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, blitz68k_state, crtc_vsync_irq3)) + H46505(config, m_crtc, XTAL(11'059'200)/4); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(4); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); diff --git a/src/mame/drivers/bmcbowl.cpp b/src/mame/drivers/bmcbowl.cpp index 3d5eb818798..fd4a9a355d9 100644 --- a/src/mame/drivers/bmcbowl.cpp +++ b/src/mame/drivers/bmcbowl.cpp @@ -24,9 +24,9 @@ BMC Bowling (c) 1994.05 BMC, Ltd BET(B)+START(1) - other tests START(1) - next test - press START(1)+HP(S) durning boot to see stats + press START(1)+HP(S) during boot to see stats - press CONFIRM(N) durning boot, to enter settings + press CONFIRM(N) during boot, to enter settings BET(B) - change page STOP1(X)/STOP3(V) - modify START(1)/SMALL(F) - move @@ -63,7 +63,7 @@ GREAT1 21.47727 DIPS: Place for 4 8 switch dips -dips 1 & 3 are all connected via resitors +dips 1 & 3 are all connected via resistors dips 2 & 4 are standard 8 switch dips EEPROM Label Use diff --git a/src/mame/drivers/bml3.cpp b/src/mame/drivers/bml3.cpp index 496afcd23ef..53da182aac9 100644 --- a/src/mame/drivers/bml3.cpp +++ b/src/mame/drivers/bml3.cpp @@ -976,10 +976,11 @@ MACHINE_CONFIG_START(bml3_state::bml3_common) /* Devices */ // CRTC clock should be synchronous with the CPU clock. - MCFG_MC6845_ADD("crtc", H46505, "screen", CPU_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(bml3_state, crtc_update_row) + H46505(config, m_crtc, CPU_CLOCK); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(bml3_state::crtc_update_row), this); // fire once per scan of an individual key // According to the service manual (p.65), the keyboard timer is driven by the horizontal video sync clock. diff --git a/src/mame/drivers/buster.cpp b/src/mame/drivers/buster.cpp index 42f1a7cb5df..27260e5d660 100644 --- a/src/mame/drivers/buster.cpp +++ b/src/mame/drivers/buster.cpp @@ -336,9 +336,10 @@ MACHINE_CONFIG_START(buster_state::buster) MCFG_SCREEN_UPDATE_DRIVER(buster_state, screen_update_buster) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(3'579'545)/4) //unknown clock / type - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", XTAL(3'579'545)/4)); //unknown clock / type + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_buster) diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp index e362d85f1ac..bee069bbe1d 100644 --- a/src/mame/drivers/bw12.cpp +++ b/src/mame/drivers/bw12.cpp @@ -566,10 +566,11 @@ MACHINE_CONFIG_START(bw12_state::common) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bw12) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, XTAL(16'000'000)/8) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(bw12_state, crtc_update_row) + MC6845(config, m_crtc, XTAL(16'000'000)/8); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(bw12_state::crtc_update_row), this); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp index 47ace41c866..8c5f0b3b171 100644 --- a/src/mame/drivers/c128.cpp +++ b/src/mame/drivers/c128.cpp @@ -1654,9 +1654,11 @@ MACHINE_CONFIG_START(c128_state::ntsc) m_nmi->output_handler().set_inputline(m_subcpu, m8502_device::NMI_LINE); // video hardware - MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, XTAL(16'000'000), vdc_videoram_map) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) + MOS8563(config, m_vdc, XTAL(16'000'000)); + m_vdc->set_screen(SCREEN_VDC_TAG); + m_vdc->set_addrmap(0, &c128_state::vdc_videoram_map); + m_vdc->set_show_border_area(true); + m_vdc->set_char_width(8); MCFG_SCREEN_ADD(SCREEN_VDC_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(640, 200) @@ -1836,9 +1838,11 @@ MACHINE_CONFIG_START(c128_state::pal) m_nmi->output_handler().set_inputline(m_subcpu, m8502_device::NMI_LINE); // video hardware - MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, XTAL(16'000'000), vdc_videoram_map) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) + MOS8563(config, m_vdc, XTAL(16'000'000)); + m_vdc->set_screen(SCREEN_VDC_TAG); + m_vdc->set_addrmap(0, &c128_state::vdc_videoram_map); + m_vdc->set_show_border_area(true); + m_vdc->set_char_width(8); MCFG_SCREEN_ADD(SCREEN_VDC_TAG, RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(640, 200) diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp index b3fdb1416eb..94a985b47ea 100644 --- a/src/mame/drivers/calomega.cpp +++ b/src/mame/drivers/calomega.cpp @@ -2600,9 +2600,10 @@ MACHINE_CONFIG_START(calomega_state::sys903) MCFG_PALETTE_ADD("palette", 256) /* or 128? is the upper half of the PROMs really valid colors? */ MCFG_PALETTE_INIT_OWNER(calomega_state, calomega) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK) /* 6845 @ CPU clock */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", CPU_CLOCK)); /* 6845 @ CPU clock */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/cardline.cpp b/src/mame/drivers/cardline.cpp index 94061d2c28e..62ce1754afa 100644 --- a/src/mame/drivers/cardline.cpp +++ b/src/mame/drivers/cardline.cpp @@ -347,13 +347,14 @@ MACHINE_CONFIG_START(cardline_state::cardline) MCFG_PALETTE_ADD("palette", 512) MCFG_PALETTE_INIT_OWNER(cardline_state, cardline) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8) /* divisor guessed - result is 56 Hz */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_BEGIN_UPDATE_CB(cardline_state, crtc_begin_update) - MCFG_MC6845_UPDATE_ROW_CB(cardline_state, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, cardline_state, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, cardline_state, vsync_changed)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/8)); /* divisor guessed - result is 56 Hz */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_begin_update_callback(FUNC(cardline_state::crtc_begin_update), this); + crtc.set_update_row_callback(FUNC(cardline_state::crtc_update_row), this); + crtc.out_hsync_callback().set(FUNC(cardline_state::hsync_changed)); + crtc.out_vsync_callback().set(FUNC(cardline_state::vsync_changed)); config.set_default_layout(layout_cardline); diff --git a/src/mame/drivers/carrera.cpp b/src/mame/drivers/carrera.cpp index 96f117bf11f..83706460abe 100644 --- a/src/mame/drivers/carrera.cpp +++ b/src/mame/drivers/carrera.cpp @@ -329,10 +329,11 @@ MACHINE_CONFIG_START(carrera_state::carrera) MCFG_SCREEN_UPDATE_DRIVER(carrera_state, screen_update_carrera) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK / 16)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_carrera) MCFG_PALETTE_ADD("palette", 32) diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp index 3afa0298410..1bf71b3a4b0 100644 --- a/src/mame/drivers/cbm2.cpp +++ b/src/mame/drivers/cbm2.cpp @@ -2527,10 +2527,11 @@ MACHINE_CONFIG_START(cbm2_state::cbm2lp_ntsc) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC68B45_TAG, MC6845, SCREEN_TAG, XTAL(18'000'000)/9) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(9) - MCFG_MC6845_UPDATE_ROW_CB(cbm2_state, crtc_update_row) + MC6845(config, m_crtc, XTAL(18'000'000)/9); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(9); + m_crtc->set_update_row_callback(FUNC(cbm2_state::crtc_update_row), this); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp index 9d0fd3b9224..65dcfeb85ca 100644 --- a/src/mame/drivers/cgenie.cpp +++ b/src/mame/drivers/cgenie.cpp @@ -449,11 +449,12 @@ MACHINE_CONFIG_START(cgenie_state::cgenie) MCFG_SCREEN_RAW_PARAMS(XTAL(17'734'470) / 2, 568, 32, 416, 312, 28, 284) MCFG_SCREEN_UPDATE_DEVICE("crtc", hd6845_device, screen_update) - MCFG_MC6845_ADD("crtc", HD6845, "screen", XTAL(17'734'470) / 16) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_BEGIN_UPDATE_CB(cgenie_state, crtc_begin_update) - MCFG_MC6845_UPDATE_ROW_CB(cgenie_state, crtc_update_row) + HD6845(config, m_crtc, XTAL(17'734'470) / 16); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_begin_update_callback(FUNC(cgenie_state::crtc_begin_update), this); + m_crtc->set_update_row_callback(FUNC(cgenie_state::crtc_update_row), this); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/chance32.cpp b/src/mame/drivers/chance32.cpp index 1a8a8141860..31d7c2abc0b 100644 --- a/src/mame/drivers/chance32.cpp +++ b/src/mame/drivers/chance32.cpp @@ -475,9 +475,10 @@ MACHINE_CONFIG_START(chance32_state::chance32) MCFG_SCREEN_UPDATE_DRIVER(chance32_state, screen_update_chance32) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", H46505, "screen", 12000000/16) /* 52.786 Hz (similar to Major Poker) */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) + h46505_device &crtc(H46505(config, "crtc", 12000000/16)); /* 52.786 Hz (similar to Major Poker) */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(16); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_chance32) MCFG_PALETTE_ADD("palette", 0x800) diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp index 555a42a4ed0..69ad7079b9f 100644 --- a/src/mame/drivers/coinmstr.cpp +++ b/src/mame/drivers/coinmstr.cpp @@ -1284,9 +1284,10 @@ MACHINE_CONFIG_START(coinmstr_state::coinmstr) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_coinmstr) MCFG_PALETTE_ADD("palette", 46*32*4) - MCFG_MC6845_ADD("crtc", H46505, "screen", 14000000 / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + h46505_device &crtc(H46505(config, "crtc", 14000000 / 16)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/dgn_beta.cpp b/src/mame/drivers/dgn_beta.cpp index ab378c6b577..2490e949356 100644 --- a/src/mame/drivers/dgn_beta.cpp +++ b/src/mame/drivers/dgn_beta.cpp @@ -385,11 +385,12 @@ MACHINE_CONFIG_START(dgn_beta_state::dgnbeta) MCFG_FLOPPY_DRIVE_ADD(FDC_TAG ":3", dgnbeta_floppies, nullptr, dgn_beta_state::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) - MCFG_MC6845_ADD("crtc", HD6845, "screen", 12.288_MHz_XTAL / 16) //XTAL is guessed - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) /*?*/ - MCFG_MC6845_UPDATE_ROW_CB(dgn_beta_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, dgn_beta_state, dgnbeta_vsync_changed)) + HD6845(config, m_mc6845, 12.288_MHz_XTAL / 16); //XTAL is guessed + m_mc6845->set_screen("screen"); + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(16); /*?*/ + m_mc6845->set_update_row_callback(FUNC(dgn_beta_state::crtc_update_row), this); + m_mc6845->out_vsync_callback().set(FUNC(dgn_beta_state::dgnbeta_vsync_changed)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("128K,384K,512K,640K,768K"); diff --git a/src/mame/drivers/docastle.cpp b/src/mame/drivers/docastle.cpp index 47d3c705703..8f2c0c051eb 100644 --- a/src/mame/drivers/docastle.cpp +++ b/src/mame/drivers/docastle.cpp @@ -626,19 +626,20 @@ MACHINE_CONFIG_START(docastle_state::docastle) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(9'828'000) / 16) + H46505(config, m_crtc, XTAL(9'828'000) / 16); /* The games program the CRTC for a width of 32 characters (256 pixels). However, the DE output from the CRTC is first ANDed with the NAND of MA1 through MA4, and then delayed by 8 pixel clocks; this effectively blanks the first 8 pixels and last 8 pixels of each line. */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_VISAREA_ADJUST(8,-8,0,0) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, docastle_state, docastle_tint)) - MCFG_MC6845_OUT_CUR_CB(WRITELINE(*this, docastle_state, stx_on_w)) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, docastle_state, stx_off_w)) + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_visarea_adjust(8,-8,0,0); + m_crtc->set_char_width(8); + m_crtc->out_hsync_callback().set(FUNC(docastle_state::docastle_tint)); + m_crtc->out_cur_callback().set(FUNC(docastle_state::stx_on_w)); + m_crtc->out_de_callback().set(FUNC(docastle_state::stx_off_w)); MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL(9'828'000)/2, 0x138, 8, 0x100-8, 0x108, 0, 0xc0) // from crtc diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp index 5905b8ceb98..d786db47473 100644 --- a/src/mame/drivers/duet16.cpp +++ b/src/mame/drivers/duet16.cpp @@ -414,9 +414,9 @@ MACHINE_CONFIG_START(duet16_state::duet16) MCFG_FLOPPY_DRIVE_ADD("fdc:1", duet16_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_SLOT_FIXED(true) - MCFG_DEVICE_ADD("crtc", H46505, 2000000) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(duet16_state, crtc_update_row) + h46505_device &crtc(H46505(config, "crtc", 2000000)); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(duet16_state::crtc_update_row), this); MCFG_PALETTE_ADD("palette", 8) MCFG_PALETTE_ADD_3BIT_BRG("chrpal") diff --git a/src/mame/drivers/ec65.cpp b/src/mame/drivers/ec65.cpp index 9f1988407fd..5ee46374159 100644 --- a/src/mame/drivers/ec65.cpp +++ b/src/mame/drivers/ec65.cpp @@ -188,10 +188,11 @@ MACHINE_CONFIG_START(ec65_state::ec65) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ec65) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC6845_TAG, MC6845, "screen", XTAL(16'000'000) / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) /*?*/ - MCFG_MC6845_UPDATE_ROW_CB(ec65_state, crtc_update_row) + mc6845_device &crtc(MC6845(config, MC6845_TAG, XTAL(16'000'000) / 8)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /*?*/ + crtc.set_update_row_callback(FUNC(ec65_state::crtc_update_row), this); /* devices */ MCFG_DEVICE_ADD(PIA6821_TAG, PIA6821, 0) @@ -226,9 +227,10 @@ MACHINE_CONFIG_START(ec65k_state::ec65k) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ec65) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(MC6845_TAG, MC6845, "screen", XTAL(16'000'000) / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) /*?*/ + mc6845_device &crtc(MC6845(config, MC6845_TAG, XTAL(16'000'000) / 8)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /*?*/ MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/fastinvaders.cpp b/src/mame/drivers/fastinvaders.cpp index be7a1c7abc1..166719cf697 100644 --- a/src/mame/drivers/fastinvaders.cpp +++ b/src/mame/drivers/fastinvaders.cpp @@ -696,11 +696,12 @@ MACHINE_CONFIG_START(fastinvaders_state::fastinvaders_6845) MCFG_DEVICE_MODIFY("maincpu" ) // guess MCFG_DEVICE_IO_MAP(fastinvaders_6845_io) - MCFG_MC6845_ADD("6845", MC6845, "screen", 11500000/16) /* confirmed */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, fastinvaders_state,vsync)) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, fastinvaders_state,hsync)) + MC6845(config, m_crtc6845, 11500000/16); /* confirmed */ + m_crtc6845->set_screen("screen"); + m_crtc6845->set_show_border_area(false); + m_crtc6845->set_char_width(16); + m_crtc6845->out_vsync_callback().set(FUNC(fastinvaders_state::vsync)); + m_crtc6845->out_hsync_callback().set(FUNC(fastinvaders_state::hsync)); MACHINE_CONFIG_END diff --git a/src/mame/drivers/fortecar.cpp b/src/mame/drivers/fortecar.cpp index 10341bb3b68..f30288b871e 100644 --- a/src/mame/drivers/fortecar.cpp +++ b/src/mame/drivers/fortecar.cpp @@ -716,10 +716,11 @@ MACHINE_CONFIG_START(fortecar_state::fortecar) MCFG_PALETTE_ADD("palette", 0x200) MCFG_PALETTE_INIT_OWNER(fortecar_state, fortecar) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) /* 1.5 MHz, measured */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); /* 1.5 MHz, measured */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp index eeaf16035a8..cfa68976a50 100644 --- a/src/mame/drivers/fp1100.cpp +++ b/src/mame/drivers/fp1100.cpp @@ -670,10 +670,11 @@ MACHINE_CONFIG_START(fp1100_state::fp1100) .add_route(ALL_OUTPUTS, "mono", 0.50); // inside the keyboard /* CRTC */ - MCFG_MC6845_ADD("crtc", H46505, "screen", MAIN_CLOCK/8) /* hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(fp1100_state, crtc_update_row) + H46505(config, m_crtc, MAIN_CLOCK/8); /* hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(fp1100_state::crtc_update_row), this); /* Printer */ MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") diff --git a/src/mame/drivers/fp6000.cpp b/src/mame/drivers/fp6000.cpp index d5a9af2d406..a819645df5f 100644 --- a/src/mame/drivers/fp6000.cpp +++ b/src/mame/drivers/fp6000.cpp @@ -32,8 +32,8 @@ public: : driver_device(mconfig, type, tag), m_gvram(*this, "gvram"), m_vram(*this, "vram"), - m_maincpu(*this, "maincpu") - , m_crtc(*this, "crtc"), + m_maincpu(*this, "maincpu"), + m_crtc(*this, "crtc"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") { } @@ -312,9 +312,10 @@ MACHINE_CONFIG_START(fp6000_state::fp6000) MCFG_SCREEN_UPDATE_DRIVER(fp6000_state, screen_update_fp6000) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", H46505, "screen", 16000000/5) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, 16000000/5); /* unknown clock, hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); MCFG_PALETTE_ADD("palette", 8) // MCFG_PALETTE_INIT(black_and_white) diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp index 5fcd7f86887..28270e1f60a 100644 --- a/src/mame/drivers/funworld.cpp +++ b/src/mame/drivers/funworld.cpp @@ -3098,10 +3098,11 @@ MACHINE_CONFIG_START(funworld_state::fw1stpal) MCFG_PALETTE_INIT_OWNER(funworld_state, funworld) MCFG_VIDEO_START_OVERRIDE(funworld_state, funworld) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) /* 2MHz, veryfied on jollycrd & royalcrd */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); /* 2MHz, verified on jollycrd & royalcrd */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(4); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -3140,13 +3141,7 @@ MACHINE_CONFIG_START(funworld_state::magicrd2) MCFG_DEVICE_PROGRAM_MAP(magicrd2_map) MCFG_VIDEO_START_OVERRIDE(funworld_state, magicrd2) - MCFG_DEVICE_REMOVE("crtc") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_VISAREA_ADJUST(0, -56, 0, 0) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) - + subdevice("crtc")->set_visarea_adjust(0, -56, 0, 0); ay8910_device &ay8910(AY8910(config.replace(), "ay8910", SND_CLOCK)); /* 2MHz */ ay8910.port_a_write_callback().set(FUNC(funworld_state::funworld_lamp_a_w)); diff --git a/src/mame/drivers/gluck2.cpp b/src/mame/drivers/gluck2.cpp index 0bc57fa355b..cd370910195 100644 --- a/src/mame/drivers/gluck2.cpp +++ b/src/mame/drivers/gluck2.cpp @@ -507,10 +507,11 @@ MACHINE_CONFIG_START(gluck2_state::gluck2) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gluck2) MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/16)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 023f68e12f4..9bb79335cb7 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -4341,10 +4341,11 @@ MACHINE_CONFIG_START(goldnpkr_state::goldnpkr_base) MCFG_SCREEN_UPDATE_DRIVER(goldnpkr_state, screen_update_goldnpkr) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK) /* 68B45 or 6845s @ CPU clock */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", CPU_CLOCK)); /* 68B45 or 6845s @ CPU clock */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_goldnpkr) MCFG_PALETTE_ADD("palette", 256) @@ -4729,10 +4730,11 @@ MACHINE_CONFIG_START(blitz_state::megadpkr) MCFG_SCREEN_UPDATE_DRIVER(goldnpkr_state, screen_update_goldnpkr) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", 0)) + mc6845_device &crtc(MC6845(config, "crtc", CPU_CLOCK)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, 0); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_goldnpkr) MCFG_PALETTE_ADD("palette", 256) diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp index 5632f53ca72..64804b8c463 100644 --- a/src/mame/drivers/h19.cpp +++ b/src/mame/drivers/h19.cpp @@ -538,11 +538,12 @@ MACHINE_CONFIG_START(h19_state::h19) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_h19) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", MC6845_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(h19_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) // frame pulse + MC6845(config, m_crtc, MC6845_CLOCK); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(h19_state::crtc_update_row), this); + m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); // frame pulse ins8250_device &uart(INS8250(config, "ins8250", INS8250_CLOCK)); uart.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); diff --git a/src/mame/drivers/hitpoker.cpp b/src/mame/drivers/hitpoker.cpp index 1328d2429e5..63938f2fe45 100644 --- a/src/mame/drivers/hitpoker.cpp +++ b/src/mame/drivers/hitpoker.cpp @@ -479,10 +479,11 @@ MACHINE_CONFIG_START(hitpoker_state::hitpoker) MCFG_SCREEN_UPDATE_DRIVER(hitpoker_state, screen_update_hitpoker) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", H46505, "screen", CRTC_CLOCK/2) /* hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, hitpoker_state, hitpoker_irq)) + h46505_device &crtc(H46505(config, "crtc", CRTC_CLOCK/2)); /* hand tuned to get ~60 fps */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set(FUNC(hitpoker_state::hitpoker_irq)); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hitpoker) MCFG_PALETTE_ADD("palette", 0x800) diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp index d7d1e7b63c5..da106bd0796 100644 --- a/src/mame/drivers/hnayayoi.cpp +++ b/src/mame/drivers/hnayayoi.cpp @@ -567,12 +567,12 @@ MACHINE_CONFIG_START(hnayayoi_state::hnayayoi) MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) - MCFG_DEVICE_ADD("crtc", HD6845, 20_MHz_XTAL / 8) - MCFG_VIDEO_SET_SCREEN("screen") - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", 0)) - MCFG_MC6845_UPDATE_ROW_CB(hnayayoi_state, hnayayoi_update_row) + hd6845_device &crtc(HD6845(config, "crtc", 20_MHz_XTAL / 8)); + crtc.set_screen("screen"); + crtc.set_char_width(4); + crtc.set_show_border_area(false); + crtc.out_vsync_callback().set_inputline(m_maincpu, 0); + crtc.set_update_row_callback(FUNC(hnayayoi_state::hnayayoi_update_row), this); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -612,8 +612,7 @@ MACHINE_CONFIG_START(hnayayoi_state::untoucha) m_mainlatch->q_out_cb<3>().set(m_msm, FUNC(msm5205_device::reset_w)).invert(); m_mainlatch->q_out_cb<4>().set_nop(); // ? - MCFG_DEVICE_MODIFY("crtc") - MCFG_MC6845_UPDATE_ROW_CB(hnayayoi_state, untoucha_update_row) + subdevice("crtc")->set_update_row_callback(FUNC(hnayayoi_state::untoucha_update_row), this); MCFG_VIDEO_START_OVERRIDE(hnayayoi_state,untoucha) MACHINE_CONFIG_END diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp index 7db8c658a0f..b4f15cc1029 100644 --- a/src/mame/drivers/hp16500.cpp +++ b/src/mame/drivers/hp16500.cpp @@ -422,11 +422,12 @@ MACHINE_CONFIG_START(hp16500_state::hp1650) MCFG_SCREEN_RAW_PARAMS(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180 ) MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update ) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 25000000/9) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row_1650) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, hp16500_state, vsync_changed)) + mc6845_device &crtc(MC6845(config, "crtc", 25000000/9)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650), this); + crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); MCFG_DEVICE_ADD("epci", MC2661, 5000000) @@ -443,11 +444,12 @@ MACHINE_CONFIG_START(hp16500_state::hp1651) MCFG_SCREEN_RAW_PARAMS(25000000, 0x330, 0, 0x250, 0x198, 0, 0x180 ) MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update ) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 25000000/9) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row_1650) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, hp16500_state, vsync_changed)) + mc6845_device &crtc(MC6845(config, "crtc", 25000000/9)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650), this); + crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); MCFG_DEVICE_ADD("epci", MC2661, 5000000) @@ -464,11 +466,12 @@ MACHINE_CONFIG_START(hp16500_state::hp16500a) MCFG_SCREEN_RAW_PARAMS(25000000, 0x320, 0, 0x240, 0x19c, 0, 0x170 ) MCFG_SCREEN_UPDATE_DEVICE( "crtc", mc6845_device, screen_update ) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 25000000/9) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(hp16500_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, hp16500_state, vsync_changed)) + mc6845_device &crtc(MC6845(config, "crtc", 25000000/9)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row), this); + crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); diff --git a/src/mame/drivers/hp9k.cpp b/src/mame/drivers/hp9k.cpp index 8e1380b0f70..64c5068e35e 100644 --- a/src/mame/drivers/hp9k.cpp +++ b/src/mame/drivers/hp9k.cpp @@ -412,9 +412,10 @@ MACHINE_CONFIG_START(hp9k_state::hp9k) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_hp9k) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD("mc6845", MC6845, "screen", XTAL(16'000'000) / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + MC6845(config, m_6845, XTAL(16'000'000) / 16); + m_6845->set_screen("screen"); + m_6845->set_show_border_area(false); + m_6845->set_char_width(8); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/i7000.cpp b/src/mame/drivers/i7000.cpp index f80420d8a4f..561f738f3c7 100644 --- a/src/mame/drivers/i7000.cpp +++ b/src/mame/drivers/i7000.cpp @@ -360,10 +360,11 @@ MACHINE_CONFIG_START(i7000_state::i7000) MCFG_PALETTE_ADD("palette", 2) MCFG_PALETTE_INIT_OWNER(i7000_state, i7000) - MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL(20'000'000)) /* (?) */ - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_ADDR_CHANGED_CB(i7000_state, crtc_addr) + r6545_1_device &crtc(R6545_1(config, "crtc", XTAL(20'000'000))); /* (?) */ + crtc.set_screen("screen"); + crtc.set_show_border_area(true); + crtc.set_char_width(8); + crtc.set_on_update_addr_change_callback(FUNC(i7000_state::crtc_addr), this); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/jokrwild.cpp b/src/mame/drivers/jokrwild.cpp index c2ae2c7f257..63610e2cc4f 100644 --- a/src/mame/drivers/jokrwild.cpp +++ b/src/mame/drivers/jokrwild.cpp @@ -440,10 +440,12 @@ MACHINE_CONFIG_START(jokrwild_state::jokrwild) MCFG_PALETTE_ADD("palette", 512) MCFG_PALETTE_INIT_OWNER(jokrwild_state, jokrwild) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/16)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); + MACHINE_CONFIG_END diff --git a/src/mame/drivers/jubilee.cpp b/src/mame/drivers/jubilee.cpp index bb53eeaa07e..e15c173f5ea 100644 --- a/src/mame/drivers/jubilee.cpp +++ b/src/mame/drivers/jubilee.cpp @@ -692,9 +692,10 @@ MACHINE_CONFIG_START(jubilee_state::jubileep) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jubileep) MCFG_PALETTE_ADD("palette",8) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); MACHINE_CONFIG_END diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp index 67511e84e36..ee6b73a63f3 100644 --- a/src/mame/drivers/kaypro.cpp +++ b/src/mame/drivers/kaypro.cpp @@ -312,10 +312,11 @@ MACHINE_CONFIG_START(kaypro_state::kaypro484) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", 2000000) /* comes out of ULA - needs to be measured */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(7) - MCFG_MC6845_UPDATE_ROW_CB(kaypro_state, kaypro484_update_row) + MC6845(config, m_crtc, 2000000); /* comes out of ULA - needs to be measured */ + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(7); + m_crtc->set_update_row_callback(FUNC(kaypro_state::kaypro484_update_row), this); MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro, "com,cpm", 3) diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp index 0d60a88380c..2d4c9309c32 100644 --- a/src/mame/drivers/kdt6.cpp +++ b/src/mame/drivers/kdt6.cpp @@ -630,11 +630,12 @@ MACHINE_CONFIG_START(kdt6_state::psi98) MCFG_PALETTE_ADD_MONOCHROME("palette") config.set_default_layout(layout_kdt6); - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(13'516'800) / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(kdt6_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE("ctc2", z80ctc_device, trg2)) + MC6845(config, m_crtc, XTAL(13'516'800) / 8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(kdt6_state::crtc_update_row), this); + m_crtc->out_vsync_callback().set("ctc2", FUNC(z80ctc_device::trg2)); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp index aac4c58cd08..4ac76456db2 100644 --- a/src/mame/drivers/kingdrby.cpp +++ b/src/mame/drivers/kingdrby.cpp @@ -1005,9 +1005,10 @@ MACHINE_CONFIG_START(kingdrby_state::kingdrby) MCFG_SCREEN_UPDATE_DRIVER(kingdrby_state, screen_update_kingdrby) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CLK_1/32) /* 53.333 Hz. guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", CLK_1/32)); /* 53.333 Hz. guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp index 5ff58f9cbef..ca5b814099d 100644 --- a/src/mame/drivers/laserbas.cpp +++ b/src/mame/drivers/laserbas.cpp @@ -393,10 +393,11 @@ MACHINE_CONFIG_START(laserbas_state::laserbas) MCFG_SCREEN_RAW_PARAMS(4000000, 256, 0, 256, 256, 0, 256) /* temporary, CRTC will configure screen */ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) - MCFG_MC6845_ADD("crtc", H46505, "screen", 3000000/4) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(laserbas_state, crtc_update_row) + h46505_device &crtc(H46505(config, "crtc", 3000000/4)); /* unknown clock, hand tuned to get ~60 fps */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(laserbas_state::crtc_update_row), this); MCFG_PALETTE_ADD("palette", 32) MCFG_PALETTE_FORMAT(RRRGGGBB) diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp index 66f1a101fbf..63507f60509 100644 --- a/src/mame/drivers/luckgrln.cpp +++ b/src/mame/drivers/luckgrln.cpp @@ -867,9 +867,10 @@ MACHINE_CONFIG_START(luckgrln_state::luckgrln) MCFG_DEVICE_IO_MAP(luckgrln_io) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", luckgrln_state, irq) - MCFG_MC6845_ADD("crtc", H46505, "screen", 6000000/4) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + h46505_device &crtc(H46505(config, "crtc", 6000000/4)); /* unknown clock, hand tuned to get ~60 fps */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); MCFG_DEVICE_ADD("rtc", MSM6242, 0) diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp index df3c6befd40..b89732137e0 100644 --- a/src/mame/drivers/m20.cpp +++ b/src/mame/drivers/m20.cpp @@ -814,10 +814,11 @@ MACHINE_CONFIG_START(m20_state::m20) MCFG_FLOPPY_DRIVE_ADD("fd1797:0", m20_floppies, "5dd", m20_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fd1797:1", m20_floppies, "5dd", m20_state::floppy_formats) - MCFG_MC6845_ADD("crtc", MC6845, "screen", PIXEL_CLOCK/8) /* hand tuned to get ~50 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) - MCFG_MC6845_UPDATE_ROW_CB(m20_state, update_row) + mc6845_device &crtc(MC6845(config, "crtc", PIXEL_CLOCK/8)); /* hand tuned to get ~50 fps */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(16); + crtc.set_update_row_callback(FUNC(m20_state::update_row), this); I8255A(config, m_i8255, 0); diff --git a/src/mame/drivers/magicfly.cpp b/src/mame/drivers/magicfly.cpp index f6fc93964f2..15b71f2d339 100644 --- a/src/mame/drivers/magicfly.cpp +++ b/src/mame/drivers/magicfly.cpp @@ -961,10 +961,11 @@ MACHINE_CONFIG_START(magicfly_state::magicfly) MCFG_PALETTE_ADD("palette", 32) MCFG_PALETTE_INIT_OWNER(magicfly_state, magicfly) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 16) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/16)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp index ca2d6971a0a..9a38bfcc7de 100644 --- a/src/mame/drivers/majorpkr.cpp +++ b/src/mame/drivers/majorpkr.cpp @@ -1026,10 +1026,11 @@ MACHINE_CONFIG_START(majorpkr_state::majorpkr) MCFG_PALETTE_ADD("palette", 0x100 * 16) MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) // verified. - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_VISAREA_ADJUST(0, -16, 0, 0) - MCFG_MC6845_CHAR_WIDTH(16) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); // verified. + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_visarea_adjust(0, -16, 0, 0); + crtc.set_char_width(16); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp index 6b5b571fd7d..95bdd25b898 100644 --- a/src/mame/drivers/mbee.cpp +++ b/src/mame/drivers/mbee.cpp @@ -679,12 +679,13 @@ MACHINE_CONFIG_START(mbee_state::mbee) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* devices */ - MCFG_MC6845_ADD("crtc", SY6545_1, "screen", 12_MHz_XTAL / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(mbee_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, crtc_update_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, mbee_state, crtc_vs)) + SY6545_1(config, m_crtc, 12_MHz_XTAL / 8); + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(mbee_state::crtc_update_row), this); + m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr), this); + m_crtc->out_vsync_callback().set(FUNC(mbee_state::crtc_vs)); MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 3) MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 3) @@ -736,12 +737,13 @@ MACHINE_CONFIG_START(mbee_state::mbeeic) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* devices */ - MCFG_MC6845_ADD("crtc", SY6545_1, "screen", 13.5_MHz_XTAL / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(mbee_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(mbee_state, crtc_update_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, mbee_state, crtc_vs)) + SY6545_1(config, m_crtc, 13.5_MHz_XTAL / 8); + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(mbee_state::crtc_update_row), this); + m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr), this); + m_crtc->out_vsync_callback().set(FUNC(mbee_state::crtc_vs)); MCFG_QUICKLOAD_ADD("quickload", mbee_state, mbee, "mwb,com,bee", 2) MCFG_QUICKLOAD_ADD("quickload2", mbee_state, mbee_z80bin, "bin", 2) diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp index 0ccb27e933b..0cf37ab2960 100644 --- a/src/mame/drivers/merit.cpp +++ b/src/mame/drivers/merit.cpp @@ -1429,13 +1429,14 @@ MACHINE_CONFIG_START(merit_state::pitboss) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256) /* temporary, CRTC will configure screen */ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_BEGIN_UPDATE_CB(merit_state, crtc_begin_update) - MCFG_MC6845_UPDATE_ROW_CB(merit_state, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, merit_state, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", 0)) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); + crtc.set_screen(m_screen); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_begin_update_callback(FUNC(merit_state::crtc_begin_update), this); + crtc.set_update_row_callback(FUNC(merit_state::crtc_update_row), this); + crtc.out_hsync_callback().set(FUNC(merit_state::hsync_changed)); + crtc.out_vsync_callback().set_inputline(m_maincpu, 0); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp index cbed8e82180..d3a1cd522b6 100644 --- a/src/mame/drivers/miniboy7.cpp +++ b/src/mame/drivers/miniboy7.cpp @@ -539,11 +539,12 @@ MACHINE_CONFIG_START(miniboy7_state::miniboy7) MCFG_PALETTE_ADD("palette", 256) MCFG_PALETTE_INIT_OWNER(miniboy7_state, miniboy7) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 12) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(miniboy7_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE("pia0", pia6821_device, ca1_w)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK / 12)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(miniboy7_state::crtc_update_row), this); + crtc.out_vsync_callback().set("pia0", FUNC(pia6821_device::ca1_w)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mpu12wbk.cpp b/src/mame/drivers/mpu12wbk.cpp index 4ddf0d3da0c..9e33d4a0779 100644 --- a/src/mame/drivers/mpu12wbk.cpp +++ b/src/mame/drivers/mpu12wbk.cpp @@ -511,10 +511,11 @@ MACHINE_CONFIG_START(mpu12wbk_state::mpu12wbk) MCFG_PALETTE_ADD("palette", 512) MCFG_PALETTE_INIT_OWNER(mpu12wbk_state, mpu12wbk) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/4) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/4)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(4); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mpu4dealem.cpp b/src/mame/drivers/mpu4dealem.cpp index 3aa12a4916c..fe416263410 100644 --- a/src/mame/drivers/mpu4dealem.cpp +++ b/src/mame/drivers/mpu4dealem.cpp @@ -230,10 +230,11 @@ MACHINE_CONFIG_START(mpu4dealem_state::dealem) MCFG_PALETTE_ADD("palette", 32) MCFG_PALETTE_INIT_OWNER(mpu4dealem_state,dealem) - MCFG_MC6845_ADD("crtc", HD6845, "screen", MPU4_MASTER_CLOCK / 4 / 8) /* HD68B45 */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, mpu4dealem_state, dealem_vsync_changed)) + hd6845_device &crtc(HD6845(config, "crtc", MPU4_MASTER_CLOCK / 4 / 8)); /* HD68B45 */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set(FUNC(mpu4dealem_state::dealem_vsync_changed)); MACHINE_CONFIG_END diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp index 0bfa6f56bc1..f272920cd10 100644 --- a/src/mame/drivers/multi16.cpp +++ b/src/mame/drivers/multi16.cpp @@ -157,9 +157,10 @@ MACHINE_CONFIG_START(multi16_state::multi16) MCFG_PALETTE_ADD("palette", 8) /* devices */ - MCFG_MC6845_ADD("crtc", H46505, "screen", 16000000/5) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, 16000000/5); /* unknown clock, hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); PIC8259(config, m_pic, 0); m_pic->out_int_callback().set_inputline(m_maincpu, 0); diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp index 56a7767ef06..1bf84aaf00b 100644 --- a/src/mame/drivers/multi8.cpp +++ b/src/mame/drivers/multi8.cpp @@ -594,10 +594,11 @@ MACHINE_CONFIG_START(multi8_state::multi8) /* devices */ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", multi8_state, keyboard_callback, attotime::from_hz(240/32)) - MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(3'579'545)/2) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(multi8_state, crtc_update_row) + H46505(config, m_crtc, XTAL(3'579'545)/2); /* unknown clock, hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(multi8_state::crtc_update_row), this); I8255(config, m_ppi); m_ppi->in_pa_callback().set(FUNC(multi8_state::porta_r)); diff --git a/src/mame/drivers/murogem.cpp b/src/mame/drivers/murogem.cpp index 0091da2953b..6fd53520315 100644 --- a/src/mame/drivers/murogem.cpp +++ b/src/mame/drivers/murogem.cpp @@ -270,9 +270,10 @@ MACHINE_CONFIG_START(murogem_state::murogem) MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_INIT_OWNER(murogem_state, murogem) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 750000) /* ? MHz */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", 750000)); /* ? MHz */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/myb3k.cpp b/src/mame/drivers/myb3k.cpp index 6e2bbea2245..8581c56f6d5 100644 --- a/src/mame/drivers/myb3k.cpp +++ b/src/mame/drivers/myb3k.cpp @@ -979,10 +979,11 @@ MACHINE_CONFIG_START(myb3k_state::myb3k) // m_pit8253->out_handler<2>().set(FUNC(myb3k_state::pit_out2_changed)); /* Video controller */ - MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(14'318'181) / 16) /* Main crystal divided by 16 through a 74163 4 bit counter */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(myb3k_state, crtc_update_row) + H46505(config, m_crtc, XTAL(14'318'181) / 16); /* Main crystal divided by 16 through a 74163 4 bit counter */ + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(myb3k_state::crtc_update_row), this); /* ISA8+ Expansion bus */ ISA8(config, m_isabus, 0); diff --git a/src/mame/drivers/nibble.cpp b/src/mame/drivers/nibble.cpp index 4b6c764c9e3..7080295d298 100644 --- a/src/mame/drivers/nibble.cpp +++ b/src/mame/drivers/nibble.cpp @@ -355,9 +355,10 @@ MACHINE_CONFIG_START(nibble_state::nibble) MCFG_PALETTE_ADD("palette", 0x200) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/8)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); SPEAKER(config, "mono").front_center(); AY8910(config, "aysnd", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 0.50); diff --git a/src/mame/drivers/nyny.cpp b/src/mame/drivers/nyny.cpp index 5827541c1de..2aae25f7b74 100644 --- a/src/mame/drivers/nyny.cpp +++ b/src/mame/drivers/nyny.cpp @@ -617,12 +617,13 @@ MACHINE_CONFIG_START(nyny_state::nyny) MCFG_PALETTE_ADD_3BIT_RGB("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(nyny_state, crtc_update_row) - MCFG_MC6845_END_UPDATE_CB(nyny_state, crtc_end_update) - MCFG_MC6845_OUT_DE_CB(WRITELINE("ic48_1", ttl74123_device, a_w)) + H46505(config, m_mc6845, CRTC_CLOCK); + m_mc6845->set_screen("screen"); + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(8); + m_mc6845->set_update_row_callback(FUNC(nyny_state::crtc_update_row), this); + m_mc6845->set_end_update_callback(FUNC(nyny_state::crtc_end_update), this); + m_mc6845->out_de_callback().set(m_ic48_1, FUNC(ttl74123_device::a_w)); /* 74LS123 */ TTL74123(config, m_ic48_1, 0); diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp index 17f13aa3b33..a16de6ec54f 100644 --- a/src/mame/drivers/osborne1.cpp +++ b/src/mame/drivers/osborne1.cpp @@ -350,11 +350,12 @@ MACHINE_CONFIG_START(osborne1nv_state::osborne1nv) MCFG_SCREEN_NO_PALETTE MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) - MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL(12'288'000)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(osborne1nv_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(osborne1nv_state, crtc_update_addr_changed) + sy6545_1_device &crtc(SY6545_1(config, "crtc", XTAL(12'288'000)/8)); + crtc.set_screen(m_screen); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(osborne1nv_state::crtc_update_row), this); + crtc.set_on_update_addr_change_callback(FUNC(osborne1nv_state::crtc_update_addr_changed), this); MACHINE_CONFIG_END diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp index 08b064f6d60..440bc912f3f 100644 --- a/src/mame/drivers/othello.cpp +++ b/src/mame/drivers/othello.cpp @@ -424,10 +424,11 @@ MACHINE_CONFIG_START(othello_state::othello) MCFG_PALETTE_ADD(m_palette, 0x10) MCFG_PALETTE_INIT_OWNER(othello_state, othello) - MCFG_MC6845_ADD("crtc", H46505, "screen", 1000000 /* ? MHz */) /* H46505 @ CPU clock */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(TILE_WIDTH) - MCFG_MC6845_UPDATE_ROW_CB(othello_state, crtc_update_row) + h46505_device &crtc(H46505(config, "crtc", 1000000 /* ? MHz */)); /* H46505 @ CPU clock */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(TILE_WIDTH); + crtc.set_update_row_callback(FUNC(othello_state::crtc_update_row), this); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp index d869d2add7d..c8f85258605 100644 --- a/src/mame/drivers/peoplepc.cpp +++ b/src/mame/drivers/peoplepc.cpp @@ -275,10 +275,11 @@ MACHINE_CONFIG_START(peoplepc_state::olypeopl) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD("h46505", H46505, "screen", XTAL(22'000'000)/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(peoplepc_state, update_row) + h46505_device &crtc(H46505(config, "h46505", XTAL(22'000'000)/8)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(peoplepc_state::update_row), this); I8257(config, m_dmac, XTAL(14'745'600)/3); m_dmac->out_hrq_cb().set(FUNC(peoplepc_state::hrq_w)); diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp index 741a7b2f290..e1e61b32e67 100644 --- a/src/mame/drivers/peplus.cpp +++ b/src/mame/drivers/peplus.cpp @@ -1390,11 +1390,12 @@ MACHINE_CONFIG_START(peplus_state::peplus) MCFG_PALETTE_ADD(m_palette, 16*16*2) MCFG_PALETTE_INIT_OWNER(peplus_state, peplus) - MCFG_MC6845_ADD(m_crtc, R6545_1, "screen", XTAL(20'000'000)/8/3) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_ADDR_CHANGED_CB(peplus_state, crtc_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, peplus_state, crtc_vsync)) + R6545_1(config, m_crtc, XTAL(20'000'000)/8/3); + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_on_update_addr_change_callback(FUNC(peplus_state::crtc_addr), this); + m_crtc->out_vsync_callback().set(FUNC(peplus_state::crtc_vsync)); MCFG_X2404P_ADD(m_i2cmem) diff --git a/src/mame/drivers/progolf.cpp b/src/mame/drivers/progolf.cpp index 7cc3ca967ad..0025193a436 100644 --- a/src/mame/drivers/progolf.cpp +++ b/src/mame/drivers/progolf.cpp @@ -445,9 +445,10 @@ MACHINE_CONFIG_START(progolf_state::progolf) MCFG_PALETTE_ADD("palette", 32*3) MCFG_PALETTE_INIT_OWNER(progolf_state, progolf) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 3000000/4) /* hand tuned to get ~57 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", 3000000/4)); /* hand tuned to get ~57 fps */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp index 25d2b355d06..1b10cb79fcd 100644 --- a/src/mame/drivers/pwrview.cpp +++ b/src/mame/drivers/pwrview.cpp @@ -429,9 +429,9 @@ MACHINE_CONFIG_START(pwrview_state::pwrview) Z80SIO2(config, "sio", 4000000); - MCFG_DEVICE_ADD("crtc", HD6845, XTAL(64'000'000)/64) // clock unknown - MCFG_MC6845_CHAR_WIDTH(32) // ?? - MCFG_MC6845_UPDATE_ROW_CB(pwrview_state, update_row) + hd6845_device &crtc(HD6845(config, "crtc", XTAL(64'000'000)/64)); // clock unknown + crtc.set_char_width(32); /* ? */ + crtc.set_update_row_callback(FUNC(pwrview_state::update_row), this); ADDRESS_MAP_BANK(config, "bios_bank").set_map(&pwrview_state::bios_bank).set_options(ENDIANNESS_LITTLE, 16, 17, 0x8000); MACHINE_CONFIG_END diff --git a/src/mame/drivers/pyl601.cpp b/src/mame/drivers/pyl601.cpp index 87c70ad0b2b..22e435868c7 100644 --- a/src/mame/drivers/pyl601.cpp +++ b/src/mame/drivers/pyl601.cpp @@ -564,10 +564,11 @@ MACHINE_CONFIG_START(pyl601_state::pyl601) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* Devices */ - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(2'000'000)) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) /* ? */ - MCFG_MC6845_UPDATE_ROW_CB(pyl601_state, pyl601_update_row) + mc6845_device &crtc(MC6845(config, "crtc", XTAL(2'000'000))); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /* ? */ + crtc.set_update_row_callback(FUNC(pyl601_state::pyl601_update_row), this); UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", pyl601_floppies, "525hd", pyl601_state::floppy_formats) @@ -585,11 +586,7 @@ MACHINE_CONFIG_START(pyl601_state::pyl601a) MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_pyl601a) - MCFG_DEVICE_REMOVE("crtc") - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(2'000'000)) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) /* ? */ - MCFG_MC6845_UPDATE_ROW_CB(pyl601_state, pyl601a_update_row) + subdevice("crtc")->set_update_row_callback(FUNC(pyl601_state::pyl601a_update_row), this); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp index 1b41d95fce2..148dc1fcdcd 100644 --- a/src/mame/drivers/r2dtank.cpp +++ b/src/mame/drivers/r2dtank.cpp @@ -457,11 +457,12 @@ MACHINE_CONFIG_START(r2dtank_state::r2dtank) MCFG_PALETTE_ADD_3BIT_BGR("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(r2dtank_state, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE("74123", ttl74123_device, a_w)) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(r2dtank_state::crtc_update_row), this); + crtc.out_de_callback().set("74123", FUNC(ttl74123_device::a_w)); /* 74LS123 */ diff --git a/src/mame/drivers/rgum.cpp b/src/mame/drivers/rgum.cpp index c5434456587..70a10ed5f30 100644 --- a/src/mame/drivers/rgum.cpp +++ b/src/mame/drivers/rgum.cpp @@ -259,10 +259,11 @@ MACHINE_CONFIG_START(rgum_state::rgum) MCFG_SCREEN_UPDATE_DRIVER(rgum_state, screen_update_royalgum) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", 24000000/16) /* unknown clock & type, hand tuned to get ~50 fps (?) */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", 24000000/16)); /* unknown clock & type, hand tuned to get ~50 fps (?) */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); i8255_device &ppi(I8255A(config, "ppi8255")); ppi.in_pa_callback().set_ioport("IN0"); diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp index 44d3688df4f..09139626784 100644 --- a/src/mame/drivers/royalmah.cpp +++ b/src/mame/drivers/royalmah.cpp @@ -3590,9 +3590,10 @@ MACHINE_CONFIG_START(royalmah_state::janyoup2) MCFG_DEVICE_CLOCK(XTAL(18'432'000)/4) // unknown divider MCFG_DEVICE_IO_MAP(janyoup2_iomap) - MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(18'432'000)/12) // unknown divider - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) + h46505_device &crtc(H46505(config, "crtc", XTAL(18'432'000)/12)); // unknown divider + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(4); MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::seljan) diff --git a/src/mame/drivers/sanremo.cpp b/src/mame/drivers/sanremo.cpp index 9d70666ebbc..8f6b2602911 100644 --- a/src/mame/drivers/sanremo.cpp +++ b/src/mame/drivers/sanremo.cpp @@ -373,13 +373,14 @@ MACHINE_CONFIG_START(sanremo_state::sanremo) MCFG_SCREEN_UPDATE_DRIVER(sanremo_state, screen_update) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); // *** MC6845 init *** // // Register: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 // Value: 0x45 0x30 0x36 0x0A 0x28 0x00 0x26 0x27 0x00 0x07 0x20 0x0B 0x00 0x00 0x00 0x00 0x00 0x00. - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sanremo) MCFG_PALETTE_ADD("palette", 0x10) diff --git a/src/mame/drivers/slotcarn.cpp b/src/mame/drivers/slotcarn.cpp index 08be595c3bb..1ee6fe24b8d 100644 --- a/src/mame/drivers/slotcarn.cpp +++ b/src/mame/drivers/slotcarn.cpp @@ -10,7 +10,7 @@ Notes: - Very similar to merit.c - - We're using the MC6845 drawing code from merit.c, but it will need + - We're using the MC6845 drawing code from merit.cpp, but it will need modifications to support the reels and proper colors. @@ -567,13 +567,14 @@ MACHINE_CONFIG_START(slotcarn_state::slotcarn) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 512, 0, 512, 256, 0, 256) /* temporary, CRTC will configure screen */ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_BEGIN_UPDATE_CB(slotcarn_state, crtc_begin_update) - MCFG_MC6845_UPDATE_ROW_CB(slotcarn_state, crtc_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, slotcarn_state, hsync_changed)) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", 0)) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); + crtc.set_screen(m_screen); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_begin_update_callback(FUNC(slotcarn_state::crtc_begin_update), this); + crtc.set_update_row_callback(FUNC(slotcarn_state::crtc_update_row), this); + crtc.out_hsync_callback().set(FUNC(slotcarn_state::hsync_changed)); + crtc.out_vsync_callback().set_inputline(m_maincpu, 0); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_slotcarn) MCFG_PALETTE_ADD("palette", 0x400) diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp index 774b687db2c..c95724ff39f 100644 --- a/src/mame/drivers/snk6502.cpp +++ b/src/mame/drivers/snk6502.cpp @@ -827,9 +827,10 @@ MACHINE_CONFIG_START(snk6502_state::sasuke) MCFG_PALETTE_INIT_OWNER(snk6502_state,satansat) MCFG_VIDEO_START_OVERRIDE(snk6502_state,satansat) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK / 16)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); MCFG_TIMER_DRIVER_ADD_PERIODIC("sasuke_timer", snk6502_state, sasuke_update_counter, attotime::from_hz(MASTER_CLOCK / 8)) @@ -873,9 +874,10 @@ MACHINE_CONFIG_START(snk6502_state::vanguard) MCFG_PALETTE_INIT_OWNER(snk6502_state,snk6502) MCFG_VIDEO_START_OVERRIDE(snk6502_state,snk6502) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK / 16)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); // sound hardware MCFG_DEVICE_ADD("snk6502", VANGUARD_SOUND, 0) diff --git a/src/mame/drivers/speedatk.cpp b/src/mame/drivers/speedatk.cpp index c069458ade6..59d8bb2d202 100644 --- a/src/mame/drivers/speedatk.cpp +++ b/src/mame/drivers/speedatk.cpp @@ -324,9 +324,10 @@ MACHINE_CONFIG_START(speedatk_state::speedatk) MCFG_SCREEN_UPDATE_DRIVER(speedatk_state, screen_update) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD("crtc", H46505, "screen", MASTER_CLOCK/16) /* hand tuned to get ~60 fps */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + H46505(config, m_crtc, MASTER_CLOCK/16); /* hand tuned to get ~60 fps */ + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_speedatk) MCFG_PALETTE_ADD("palette", 0x100) diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp index b3f2ee5a0eb..cc36fd8b7aa 100644 --- a/src/mame/drivers/spiders.cpp +++ b/src/mame/drivers/spiders.cpp @@ -207,18 +207,6 @@ #define CRTC_CLOCK (MAIN_CPU_MASTER_CLOCK / 16) -/************************************* - * - * Prototypes - * - *************************************/ - - - - - - - /************************************* * * PIA1 - Main CPU @@ -535,13 +523,12 @@ MACHINE_CONFIG_START(spiders_state::spiders) MCFG_PALETTE_ADD_3BIT_RGB("palette") - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(spiders_state, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE("ic60", ttl74123_device, a_w)) - - /* 74LS123 */ + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(spiders_state::crtc_update_row), this); + crtc.out_de_callback().set("ic60", FUNC(ttl74123_device::a_w)); PIA6821(config, m_pia[0], 0); m_pia[0]->readpa_handler().set_ioport("IN0"); diff --git a/src/mame/drivers/ssingles.cpp b/src/mame/drivers/ssingles.cpp index 80b589956cf..ec22d683741 100644 --- a/src/mame/drivers/ssingles.cpp +++ b/src/mame/drivers/ssingles.cpp @@ -566,11 +566,12 @@ MACHINE_CONFIG_START(ssingles_state::ssingles) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ssingles) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 1000000 /* ? MHz */) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(ssingles_state, ssingles_update_row) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", 1000000 /* ? MHz */)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(ssingles_state::ssingles_update_row), this); + crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -592,13 +593,9 @@ MACHINE_CONFIG_START(ssingles_state::atamanot) MCFG_DEVICE_PROGRAM_MAP(atamanot_map) MCFG_DEVICE_IO_MAP(atamanot_io_map) - MCFG_DEVICE_REMOVE("crtc") - - MCFG_MC6845_ADD("crtc", MC6845, "screen", 1000000 /* ? MHz */) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(ssingles_state, atamanot_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, ssingles_state, atamanot_irq)) + mc6845_device &crtc(*subdevice("crtc")); + crtc.set_update_row_callback(FUNC(ssingles_state::atamanot_update_row), this); + crtc.out_vsync_callback().set(FUNC(ssingles_state::atamanot_irq)); MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_atamanot) MACHINE_CONFIG_END diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp index ac510900be3..53436a64941 100644 --- a/src/mame/drivers/super80.cpp +++ b/src/mame/drivers/super80.cpp @@ -817,10 +817,11 @@ MACHINE_CONFIG_START(super80_state::super80v) MCFG_PALETTE_ADD("palette", 32) MCFG_PALETTE_INIT_OWNER(super80_state,super80m) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK / SUPER80V_DOTS) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(SUPER80V_DOTS) - MCFG_MC6845_UPDATE_ROW_CB(super80_state, crtc_update_row) + MC6845(config, m_crtc, MASTER_CLOCK / SUPER80V_DOTS); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(SUPER80V_DOTS); + m_crtc->set_update_row_callback(FUNC(super80_state::crtc_update_row), this); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_super80v) config.set_default_layout(layout_super80); diff --git a/src/mame/drivers/supercrd.cpp b/src/mame/drivers/supercrd.cpp index ab8dfc3288c..98d14f2d0c5 100644 --- a/src/mame/drivers/supercrd.cpp +++ b/src/mame/drivers/supercrd.cpp @@ -444,9 +444,10 @@ MACHINE_CONFIG_START(supercrd_state::supercrd) MCFG_PALETTE_INIT_OWNER(supercrd_state, supercrd) MCFG_VIDEO_START_OVERRIDE(supercrd_state, supercrd) -// MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8) -// MCFG_MC6845_SHOW_BORDER_AREA(false) -// MCFG_MC6845_CHAR_WIDTH(4) +// mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/8)); +// crtc.set_screen("screen"); +// crtc.set_show_border_area(false); +// crtc.set_char_width(4); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/tapatune.cpp b/src/mame/drivers/tapatune.cpp index 7636c042fe9..fdf098e40a9 100644 --- a/src/mame/drivers/tapatune.cpp +++ b/src/mame/drivers/tapatune.cpp @@ -549,12 +549,13 @@ MACHINE_CONFIG_START(tapatune_state::tapatune) MCFG_QUANTUM_PERFECT_CPU("videocpu") - MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(24'000'000) / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(5) - MCFG_MC6845_BEGIN_UPDATE_CB(tapatune_state, crtc_begin_update) - MCFG_MC6845_UPDATE_ROW_CB(tapatune_state, crtc_update_row) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, tapatune_state, crtc_vsync)) + h46505_device &crtc(H46505(config, "crtc", XTAL(24'000'000) / 16)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(5); + crtc.set_begin_update_callback(FUNC(tapatune_state::crtc_begin_update), this); + crtc.set_update_row_callback(FUNC(tapatune_state::crtc_update_row), this); + crtc.out_vsync_callback().set(FUNC(tapatune_state::crtc_vsync)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/tmspoker.cpp b/src/mame/drivers/tmspoker.cpp index 86f777908d1..a3c13cfd93f 100644 --- a/src/mame/drivers/tmspoker.cpp +++ b/src/mame/drivers/tmspoker.cpp @@ -582,9 +582,10 @@ MACHINE_CONFIG_START(tmspoker_state::tmspoker) MCFG_PALETTE_ADD("palette", 256) MCFG_PALETTE_INIT_OWNER(tmspoker_state, tmspoker) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/4) /* guess */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/4)); /* guess */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); MACHINE_CONFIG_END diff --git a/src/mame/drivers/truco.cpp b/src/mame/drivers/truco.cpp index e975a1f50b8..9f468c1c9d8 100644 --- a/src/mame/drivers/truco.cpp +++ b/src/mame/drivers/truco.cpp @@ -447,9 +447,10 @@ MACHINE_CONFIG_START(truco_state::truco) MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_INIT_OWNER(truco_state, truco) - MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) /* Identified as UM6845 */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(4) + mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); /* Identified as UM6845 */ + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(4); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp index 18d06b3f9f5..4d73a014587 100644 --- a/src/mame/drivers/ts803.cpp +++ b/src/mame/drivers/ts803.cpp @@ -436,11 +436,12 @@ MACHINE_CONFIG_START(ts803_state::ts803) MCFG_PALETTE_ADD_MONOCHROME("palette") /* crtc */ - MCFG_MC6845_ADD("crtc", SY6545_1, "screen", 13608000 / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(ts803_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(ts803_state, crtc_update_addr) + sy6545_1_device &crtc(SY6545_1(config, "crtc", 13608000 / 8)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.set_update_row_callback(FUNC(ts803_state::crtc_update_row), this); + crtc.set_on_update_addr_change_callback(FUNC(ts803_state::crtc_update_addr), this); clock_device &sti_clock(CLOCK(config, "sti_clock", 16_MHz_XTAL / 13)); sti_clock.signal_handler().set("sti", FUNC(z80sti_device::tc_w)); diff --git a/src/mame/drivers/tv910.cpp b/src/mame/drivers/tv910.cpp index f54b96d5a98..0cc5422dca5 100644 --- a/src/mame/drivers/tv910.cpp +++ b/src/mame/drivers/tv910.cpp @@ -521,12 +521,13 @@ MACHINE_CONFIG_START(tv910_state::tv910) MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK, 840, 0, 640, 270, 0, 240) MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, r6545_1_device, screen_update ) - MCFG_MC6845_ADD(CRTC_TAG, R6545_1, "screen", MASTER_CLOCK/8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(tv910_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(tv910_state, crtc_update_addr) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, tv910_state, vbl_w)) + R6545_1(config, m_crtc, MASTER_CLOCK/8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(tv910_state::crtc_update_row), this); + m_crtc->set_on_update_addr_change_callback(FUNC(tv910_state::crtc_update_addr), this); + m_crtc->out_vsync_callback().set(FUNC(tv910_state::vbl_w)); AY3600(config, m_ay3600, 0); m_ay3600->x0().set_ioport("X0"); diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp index 4d5a8a987ae..590f13c9a45 100644 --- a/src/mame/drivers/twincobr.cpp +++ b/src/mame/drivers/twincobr.cpp @@ -685,9 +685,10 @@ MACHINE_CONFIG_START(twincobr_state::twincobr) m_coinlatch->q_out_cb<7>().set(FUNC(twincobr_state::coin_lockout_2_w)); /* video hardware */ - MCFG_MC6845_ADD("crtc", HD6845, "screen", XTAL(28'000'000)/8) /* 3.5MHz measured on CLKin */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(2) + hd6845_device &crtc(HD6845(config, "crtc", XTAL(28'000'000)/8)); /* 3.5MHz measured on CLKin */ + crtc.set_screen(m_screen); + crtc.set_show_border_area(false); + crtc.set_char_width(2); MCFG_TOAPLAN_SCU_ADD("scu", "palette", 31, 15) diff --git a/src/mame/drivers/usgames.cpp b/src/mame/drivers/usgames.cpp index cb3f3e8e1e1..21d6ce91b62 100644 --- a/src/mame/drivers/usgames.cpp +++ b/src/mame/drivers/usgames.cpp @@ -240,9 +240,10 @@ MACHINE_CONFIG_START(usgames_state::usg32) MCFG_PALETTE_ADD("palette", 2*256) MCFG_PALETTE_INIT_OWNER(usgames_state, usgames) - MCFG_MC6845_ADD("crtc", MC6845, "screen", 18_MHz_XTAL / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", 18_MHz_XTAL / 16)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/v6809.cpp b/src/mame/drivers/v6809.cpp index eaf22f42bc0..c07e56e1229 100644 --- a/src/mame/drivers/v6809.cpp +++ b/src/mame/drivers/v6809.cpp @@ -303,11 +303,12 @@ MACHINE_CONFIG_START(v6809_state::v6809) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* devices */ - MCFG_MC6845_ADD("crtc", SY6545_1, "screen", 16_MHz_XTAL / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(v6809_state, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(v6809_state, crtc_update_addr) + SY6545_1(config, m_crtc, 16_MHz_XTAL / 8); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(v6809_state::crtc_update_row), this); + m_crtc->set_on_update_addr_change_callback(FUNC(v6809_state::crtc_update_addr), this); MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) MCFG_GENERIC_KEYBOARD_CB(PUT(v6809_state, kbd_put)) diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp index 9fffc8541ee..8bea4d4a40e 100644 --- a/src/mame/drivers/vcombat.cpp +++ b/src/mame/drivers/vcombat.cpp @@ -590,7 +590,8 @@ MACHINE_CONFIG_START(vcombat_state::vcombat) MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) /* Disabled for now as it can't handle multiple screens */ -// MCFG_MC6845_ADD("crtc", MC6845, "screen", 6000000 / 16) +// MC6845(config, m_crtc, 6000000 / 16); +// m_crtc->set_screen("screen"); config.set_default_layout(layout_dualhsxs); MCFG_SCREEN_ADD("screen", RASTER) @@ -626,10 +627,11 @@ MACHINE_CONFIG_START(vcombat_state::shadfgtr) MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) - MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL(20'000'000) / 4 / 16) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, vcombat_state, sound_update)) + MC6845(config, m_crtc, XTAL(20'000'000) / 4 / 16); + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(16); + m_crtc->out_hsync_callback().set(FUNC(vcombat_state::sound_update)); MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL(20'000'000) / 4, 320, 0, 256, 277, 0, 224) diff --git a/src/mame/drivers/vlc.cpp b/src/mame/drivers/vlc.cpp index f104a95dec9..4e61a13f1cd 100644 --- a/src/mame/drivers/vlc.cpp +++ b/src/mame/drivers/vlc.cpp @@ -593,9 +593,10 @@ MACHINE_CONFIG_START(nevada_state::nevada) MCFG_PALETTE_ADD("palette", 256) MCFG_PALETTE_INIT_OWNER(nevada_state, nevada) - MCFG_MC6845_ADD("crtc", MC6845, "screen", MC6845_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) + mc6845_device &crtc(MC6845(config, "crtc", MC6845_CLOCK)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/wardner.cpp b/src/mame/drivers/wardner.cpp index 61161389ea1..79e4d2c5dc5 100644 --- a/src/mame/drivers/wardner.cpp +++ b/src/mame/drivers/wardner.cpp @@ -415,9 +415,10 @@ MACHINE_CONFIG_START(wardner_state::wardner) coinlatch.q_out_cb<7>().set(FUNC(wardner_state::coin_lockout_2_w)); /* video hardware */ - MCFG_MC6845_ADD("crtc", HD6845, "screen", XTAL(14'000'000)/4) /* 3.5MHz measured on CLKin */ - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(2) + hd6845_device &crtc(HD6845(config, "crtc", XTAL(14'000'000)/4)); /* 3.5MHz measured on CLKin */ + crtc.set_screen(m_screen); + crtc.set_show_border_area(false); + crtc.set_char_width(2); MCFG_TOAPLAN_SCU_ADD("scu", "palette", 32, 14) diff --git a/src/mame/includes/osborne1.h b/src/mame/includes/osborne1.h index 8d5fae13d62..088d968a7c7 100644 --- a/src/mame/includes/osborne1.h +++ b/src/mame/includes/osborne1.h @@ -34,9 +34,9 @@ public: osborne1_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_ram(*this, RAM_TAG), + m_screen(*this, "screen"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), m_speaker(*this, "speaker"), m_pia0(*this, "pia_0"), m_pia1(*this, "pia_1"), @@ -72,6 +72,7 @@ protected: void osborne1nv_io(address_map &map); required_device m_ram; + required_device m_screen; private: DECLARE_WRITE8_MEMBER(bank_0xxx_w); @@ -98,7 +99,6 @@ private: required_device m_maincpu; required_device m_gfxdecode; - required_device m_screen; required_device m_speaker; required_device m_pia0; required_device m_pia1; diff --git a/src/mame/video/abc1600.cpp b/src/mame/video/abc1600.cpp index b2e38593762..0bb12472ca0 100644 --- a/src/mame/video/abc1600.cpp +++ b/src/mame/video/abc1600.cpp @@ -54,8 +54,8 @@ void abc1600_mover_device::vram_map(address_map &map) void abc1600_mover_device::crtc_map(address_map &map) { - map(0x00, 0x00).mirror(0xfe).rw(SY6845E_TAG, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); - map(0x01, 0x01).mirror(0xfe).rw(SY6845E_TAG, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x00, 0x00).mirror(0xfe).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x01, 0x01).mirror(0xfe).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); } void abc1600_mover_device::iowr0_map(address_map &map) @@ -208,11 +208,12 @@ MACHINE_CONFIG_START(abc1600_mover_device::device_add_mconfig) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_MC6845_ADD(SY6845E_TAG, SY6845E, SCREEN_TAG, XTAL(64'000'000)/32) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(32) - MCFG_MC6845_UPDATE_ROW_CB(abc1600_mover_device, crtc_update_row) - MCFG_MC6845_ADDR_CHANGED_CB(abc1600_mover_device, crtc_update) + SY6845E(config, m_crtc, XTAL(64'000'000)/32); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(32); + m_crtc->set_update_row_callback(FUNC(abc1600_mover_device::crtc_update_row), this); + m_crtc->set_on_update_addr_change_callback(FUNC(abc1600_mover_device::crtc_update), this); MACHINE_CONFIG_END diff --git a/src/mame/video/abc806.cpp b/src/mame/video/abc806.cpp index 81b70884929..e773717292a 100644 --- a/src/mame/video/abc806.cpp +++ b/src/mame/video/abc806.cpp @@ -478,12 +478,13 @@ PALETTE_INIT_MEMBER( abc806_state, abc806 ) //------------------------------------------------- MACHINE_CONFIG_START(abc806_state::abc806_video) - MCFG_MC6845_ADD(MC6845_TAG, MC6845, SCREEN_TAG, ABC800_CCLK) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(ABC800_CHAR_WIDTH) - MCFG_MC6845_UPDATE_ROW_CB(abc806_state, abc806_update_row) - MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(*this, abc806_state, hs_w)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, abc806_state, vs_w)) + MC6845(config, m_crtc, ABC800_CCLK); + m_crtc->set_screen(SCREEN_TAG); + m_crtc->set_show_border_area(true); + m_crtc->set_char_width(ABC800_CHAR_WIDTH); + m_crtc->set_update_row_callback(FUNC(abc806_state::abc806_update_row), this); + m_crtc->out_hsync_callback().set(FUNC(abc806_state::hs_w)); + m_crtc->out_vsync_callback().set(FUNC(abc806_state::vs_w)); MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) MCFG_SCREEN_UPDATE_DRIVER(abc806_state, screen_update) diff --git a/src/mame/video/decodmd2.cpp b/src/mame/video/decodmd2.cpp index 57e4eacbe02..972c6b95c1a 100644 --- a/src/mame/video/decodmd2.cpp +++ b/src/mame/video/decodmd2.cpp @@ -128,19 +128,20 @@ void decodmd_type2_device::decodmd2_map(address_map &map) map(0x8000, 0xffff).bankr("dmdbank2"); // last 32k of ROM } -MACHINE_CONFIG_START(decodmd_type2_device::device_add_mconfig) +void decodmd_type2_device::device_add_mconfig(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("dmdcpu", MC6809E, XTAL(8'000'000) / 4) - MCFG_DEVICE_PROGRAM_MAP(decodmd2_map) + MC6809E(config, m_cpu, XTAL(8'000'000) / 4); + m_cpu->set_addrmap(AS_PROGRAM, &decodmd_type2_device::decodmd2_map); - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + config.m_minimum_quantum = attotime::from_hz(60); - MCFG_TIMER_DRIVER_ADD_PERIODIC("firq_timer", decodmd_type2_device, dmd_firq, attotime::from_hz(80)) + TIMER(config, "firq_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(decodmd_type2_device::dmd_firq), this), attotime::from_hz(80)); - MCFG_MC6845_ADD("dmd6845", MC6845, nullptr, XTAL(8'000'000) / 8) // TODO: confirm clock speed - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(decodmd_type2_device, crtc_update_row) + MC6845(config, m_mc6845, XTAL(8'000'000) / 8); // TODO: confirm clock speed + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(8); + m_mc6845->set_update_row_callback(FUNC(decodmd_type2_device::crtc_update_row), this); screen_device &screen(SCREEN(config, "dmd", SCREEN_TYPE_RASTER)); screen.set_native_aspect(); @@ -150,7 +151,7 @@ MACHINE_CONFIG_START(decodmd_type2_device::device_add_mconfig) screen.set_refresh_hz(60); RAM(config, RAM_TAG).set_default_size("12K"); -MACHINE_CONFIG_END +} decodmd_type2_device::decodmd_type2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) diff --git a/src/mame/video/decodmd3.cpp b/src/mame/video/decodmd3.cpp index ab798e6ec23..5b8d02369c6 100644 --- a/src/mame/video/decodmd3.cpp +++ b/src/mame/video/decodmd3.cpp @@ -130,19 +130,20 @@ void decodmd_type3_device::decodmd3_map(address_map &map) map(0x00c00020, 0x00c00021).rw(FUNC(decodmd_type3_device::latch_r), FUNC(decodmd_type3_device::status_w)); } -MACHINE_CONFIG_START(decodmd_type3_device::device_add_mconfig) +void decodmd_type3_device::device_add_mconfig(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("dmdcpu", M68000, XTAL(12'000'000)) - MCFG_DEVICE_PROGRAM_MAP(decodmd3_map) + M68000(config, m_cpu, XTAL(12'000'000)); + m_cpu->set_addrmap(AS_PROGRAM, &decodmd_type3_device::decodmd3_map); - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + config.m_minimum_quantum = attotime::from_hz(60); - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", decodmd_type3_device, dmd_irq, attotime::from_hz(150)) + TIMER(config, "irq_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(decodmd_type3_device::dmd_irq), this), attotime::from_hz(150)); - MCFG_MC6845_ADD("dmd6845", MC6845, nullptr, XTAL(12'000'000) / 4) // TODO: confirm clock speed - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(16) - MCFG_MC6845_UPDATE_ROW_CB(decodmd_type3_device, crtc_update_row) + MC6845(config, m_mc6845, XTAL(12'000'000) / 4); // TODO: confirm clock speed + m_mc6845->set_show_border_area(false); + m_mc6845->set_char_width(16); + m_mc6845->set_update_row_callback(FUNC(decodmd_type3_device::crtc_update_row), this); screen_device &screen(SCREEN(config, "dmd", SCREEN_TYPE_RASTER)); screen.set_native_aspect(); @@ -152,7 +153,7 @@ MACHINE_CONFIG_START(decodmd_type3_device::device_add_mconfig) screen.set_refresh_hz(60); RAM(config, RAM_TAG).set_default_size("64K"); -MACHINE_CONFIG_END +} decodmd_type3_device::decodmd_type3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) diff --git a/src/mame/video/madalien.cpp b/src/mame/video/madalien.cpp index 41e49f8aa1c..152efa864e6 100644 --- a/src/mame/video/madalien.cpp +++ b/src/mame/video/madalien.cpp @@ -377,8 +377,9 @@ MACHINE_CONFIG_START(madalien_state::madalien_video) MCFG_PALETTE_INIT_OWNER(madalien_state,madalien) MCFG_VIDEO_START_OVERRIDE(madalien_state,madalien) - MCFG_MC6845_ADD("crtc", MC6845, "screen", PIXEL_CLOCK / 8) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI)) + mc6845_device &crtc(MC6845(config, "crtc", PIXEL_CLOCK / 8)); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + crtc.out_vsync_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); MACHINE_CONFIG_END diff --git a/src/mame/video/pc1512.cpp b/src/mame/video/pc1512.cpp index 66e24fcdc13..82c5e563991 100644 --- a/src/mame/video/pc1512.cpp +++ b/src/mame/video/pc1512.cpp @@ -593,16 +593,18 @@ uint32_t pc1512_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap // MACHINE_CONFIG( pc1512 ) //------------------------------------------------- -MACHINE_CONFIG_START(pc1512_state::pc1512_video) - MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DRIVER(pc1512_state, screen_update) - MCFG_SCREEN_SIZE(80*8, 24*8) - MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 24*8-1) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_REFRESH_RATE(50) +void pc1512_state::pc1512_video(machine_config &config) +{ + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_screen_update(FUNC(pc1512_state::screen_update)); + m_screen->set_size(80*8, 24*8); + m_screen->set_visarea(0, 80*8-1, 0, 24*8-1); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + m_screen->set_refresh_hz(50); - MCFG_MC6845_ADD(AMS40041_TAG, AMS40041, SCREEN_TAG, XTAL(28'636'363)/32) - MCFG_MC6845_SHOW_BORDER_AREA(true) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_UPDATE_ROW_CB(pc1512_state, crtc_update_row) -MACHINE_CONFIG_END + AMS40041(config, m_vdu, XTAL(28'636'363)/32); + m_vdu->set_screen(m_screen); + m_vdu->set_show_border_area(true); + m_vdu->set_char_width(8); + m_vdu->set_update_row_callback(FUNC(pc1512_state::crtc_update_row), this); +} diff --git a/src/mame/video/pc8401a.cpp b/src/mame/video/pc8401a.cpp index ec0c57d3f41..3fe9cb23624 100644 --- a/src/mame/video/pc8401a.cpp +++ b/src/mame/video/pc8401a.cpp @@ -104,7 +104,8 @@ MACHINE_CONFIG_START(pc8500_state::pc8500_video) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_PALETTE("palette") - MCFG_MC6845_ADD(MC6845_TAG, MC6845, CRT_SCREEN_TAG, 400000) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(6) + MC6845(config, m_crtc, 400000); + m_crtc->set_screen(CRT_SCREEN_TAG); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(6); MACHINE_CONFIG_END diff --git a/src/mame/video/qix.cpp b/src/mame/video/qix.cpp index 8b480057c7a..16bc0572d2b 100644 --- a/src/mame/video/qix.cpp +++ b/src/mame/video/qix.cpp @@ -386,13 +386,14 @@ MACHINE_CONFIG_START(qix_state::qix_video) MCFG_VIDEO_START_OVERRIDE(qix_state,qix) - MCFG_MC6845_ADD("vid_u18", MC6845, "screen", QIX_CHARACTER_CLOCK) - MCFG_MC6845_SHOW_BORDER_AREA(false) - MCFG_MC6845_CHAR_WIDTH(8) - MCFG_MC6845_BEGIN_UPDATE_CB(qix_state, crtc_begin_update) - MCFG_MC6845_UPDATE_ROW_CB(qix_state, crtc_update_row) - MCFG_MC6845_OUT_DE_CB(WRITELINE(*this, qix_state, display_enable_changed)) - MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(*this, qix_state, qix_vsync_changed)) + MC6845(config, m_crtc, QIX_CHARACTER_CLOCK); + m_crtc->set_screen(m_screen); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_begin_update_callback(FUNC(qix_state::crtc_begin_update), this); + m_crtc->set_update_row_callback(FUNC(qix_state::crtc_update_row), this); + m_crtc->out_de_callback().set(FUNC(qix_state::display_enable_changed)); + m_crtc->out_vsync_callback().set(FUNC(qix_state::qix_vsync_changed)); MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(QIX_CHARACTER_CLOCK*8, 0x148, 0, 0x100, 0x111, 0, 0x100) /* from CRTC */