summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-12-31 01:05:07 +0100
committer mooglyguy <therealmogminer@gmail.com>2018-12-31 01:05:29 +0100
commitf8efff0afe11c3e9157823618613d89a5398f86f (patch)
treec011f70294d3abf70f1fa9bb1d98579d207cc600 /src
parent5fbf0cbfac36949349b5eff189c04093ae32f360 (diff)
-devices/sound/cdp1869: Removed MCFG macros, nw
-video/cidelsa, comx35, pecom, tmc600: Removed MACHINE_CONFIG macros, nw
Diffstat (limited to 'src')
-rw-r--r--src/devices/sound/cdp1869.h119
-rw-r--r--src/mame/video/cidelsa.cpp71
-rw-r--r--src/mame/video/comx35.cpp52
-rw-r--r--src/mame/video/pecom.cpp24
-rw-r--r--src/mame/video/tmc600.cpp26
5 files changed, 155 insertions, 137 deletions
diff --git a/src/devices/sound/cdp1869.h b/src/devices/sound/cdp1869.h
index 1f67c9af3f0..96f8b4dbbf3 100644
--- a/src/devices/sound/cdp1869.h
+++ b/src/devices/sound/cdp1869.h
@@ -81,55 +81,14 @@
#include "emupal.h"
#include "screen.h"
-
-
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
+// TYPE DEFINITIONS
//**************************************************************************
-#define MCFG_CDP1869_ADD(_tag, _pixclock, _map) \
- MCFG_DEVICE_ADD(_tag, CDP1869, _pixclock) \
- MCFG_DEVICE_ADDRESS_MAP(0, _map)
-
-#define MCFG_CDP1869_SCREEN_PAL_ADD(_cdptag, _tag, _clock) \
- MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
- MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_PAL, cdp1869_device::SCANLINE_VBLANK_END_PAL, cdp1869_device::SCANLINE_VBLANK_START_PAL)
-
-#define MCFG_CDP1869_SCREEN_NTSC_ADD(_cdptag, _tag, _clock) \
- MCFG_SCREEN_ADD(_tag, RASTER) \
- MCFG_SCREEN_UPDATE_DEVICE(_cdptag, cdp1869_device, screen_update) \
- MCFG_SCREEN_RAW_PARAMS(_clock, cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START, cdp1869_device::TOTAL_SCANLINES_NTSC, cdp1869_device::SCANLINE_VBLANK_END_NTSC, cdp1869_device::SCANLINE_VBLANK_START_NTSC)
-
-#define MCFG_CDP1869_SET_SCREEN MCFG_VIDEO_SET_SCREEN
-
#define CDP1869_CHAR_RAM_READ_MEMBER(name) uint8_t name(uint16_t pma, uint8_t cma, uint8_t pmd)
#define CDP1869_CHAR_RAM_WRITE_MEMBER(name) void name(uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)
#define CDP1869_PCB_READ_MEMBER(name) int name(uint16_t pma, uint8_t cma, uint8_t pmd)
-#define MCFG_CDP1869_PAL_NTSC_CALLBACK(_read) \
- downcast<cdp1869_device &>(*device).set_pal_ntsc_rd_callback(DEVCB_##_read);
-
-#define MCFG_CDP1869_PRD_CALLBACK(_write) \
- downcast<cdp1869_device &>(*device).set_prd_wr_callback(DEVCB_##_write);
-
-#define MCFG_CDP1869_COLOR_CLOCK(_clk) \
- downcast<cdp1869_device &>(*device).set_color_clock(_clk);
-
-#define MCFG_CDP1869_CHAR_RAM_READ_OWNER(_class, _method) \
- downcast<cdp1869_device &>(*device).set_char_ram_read(cdp1869_device::char_ram_read_delegate(&_class::_method, #_class "::" #_method, this));
-
-#define MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(_class, _method) \
- downcast<cdp1869_device &>(*device).set_char_ram_write(cdp1869_device::char_ram_write_delegate(&_class::_method, #_class "::" #_method, this));
-
-#define MCFG_CDP1869_CHAR_PCB_READ_OWNER(_class, _method) \
- downcast<cdp1869_device &>(*device).set_pcb_read(cdp1869_device::pcb_read_delegate(&_class::_method, #_class "::" #_method, this));
-
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
// ======================> cdp1869_device
class cdp1869_device : public device_t,
@@ -182,21 +141,79 @@ public:
static constexpr unsigned PALETTE_LENGTH = 8+64;
- typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> char_ram_read_delegate;
- typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> char_ram_write_delegate;
- typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> pcb_read_delegate;
-
// construction/destruction
+ template <typename T>
+ cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&addrmap)
+ : cdp1869_device(mconfig, tag, owner, clock)
+ {
+ set_addrmap(0, std::forward<T>(addrmap));
+ }
cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_pal_ntsc_rd_callback(Object &&cb) { return m_read_pal_ntsc.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_prd_wr_callback(Object &&cb) { return m_write_prd.set_callback(std::forward<Object>(cb)); }
- template <typename Object> void set_char_ram_read(Object &&cb) { m_in_char_ram_func = std::forward<Object>(cb); }
- template <typename Object> void set_char_ram_write(Object &&cb) { m_out_char_ram_func = std::forward<Object>(cb); }
- template <typename Object> void set_pcb_read(Object &&cb) { m_in_pcb_func = std::forward<Object>(cb); }
+ auto pal_ntsc_callback() { return m_read_pal_ntsc.bind(); }
+ auto prd_callback() { return m_write_prd.bind(); }
void set_color_clock(int color_clock) { m_color_clock = color_clock; }
void set_color_clock(const XTAL &xtal) { xtal.validate("selecting cdp1869 clock"); set_color_clock(xtal.value()); }
+ // delegate setters
+ typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> char_ram_read_delegate;
+ void set_char_ram_read_callback(char_ram_read_delegate callback) { m_in_char_ram_func = callback; }
+ template <class FunctionClass> void set_char_ram_read_callback(const char *devname,
+ uint8_t (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
+ {
+ set_char_ram_read_callback(char_ram_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_char_ram_read_callback(
+ uint8_t (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
+ {
+ set_char_ram_read_callback(char_ram_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+
+ typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> char_ram_write_delegate;
+ void set_char_ram_write_callback(char_ram_write_delegate callback) { m_out_char_ram_func = callback; }
+ template <class FunctionClass> void set_char_ram_write_callback(const char *devname,
+ void (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t, uint8_t), const char *name)
+ {
+ set_char_ram_write_callback(char_ram_write_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_char_ram_write_callback(
+ void (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t, uint8_t), const char *name)
+ {
+ set_char_ram_write_callback(char_ram_write_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+
+ typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> pcb_read_delegate;
+ void set_pcb_read_callback(pcb_read_delegate callback) { m_in_pcb_func = callback; }
+ template <class FunctionClass> void set_pcb_read_callback(const char *devname,
+ int (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
+ {
+ set_pcb_read_callback(pcb_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_pcb_read_callback(
+ int (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name)
+ {
+ set_pcb_read_callback(pcb_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+
+ // helper functions
+ template <typename T, typename U> screen_device& add_pal_screen(machine_config &config, T &&screen_tag, U &&clock)
+ {
+ screen_device &screen(SCREEN(config, std::forward<T>(screen_tag), SCREEN_TYPE_RASTER));
+ screen.set_screen_update(tag(), FUNC(cdp1869_device::screen_update));
+ screen.set_raw(std::forward<U>(clock), cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START,
+ cdp1869_device::TOTAL_SCANLINES_PAL, cdp1869_device::SCANLINE_VBLANK_END_PAL, cdp1869_device::SCANLINE_VBLANK_START_PAL);
+ return screen;
+ }
+
+ template <typename T, typename U> screen_device& add_ntsc_screen(machine_config &config, T &&screen_tag, U &&clock)
+ {
+ screen_device &screen(SCREEN(config, std::forward<T>(screen_tag), SCREEN_TYPE_RASTER));
+ screen.set_screen_update(tag(), FUNC(cdp1869_device::screen_update));
+ screen.set_raw(std::forward<U>(clock), cdp1869_device::SCREEN_WIDTH, cdp1869_device::HBLANK_END, cdp1869_device::HBLANK_START,
+ cdp1869_device::TOTAL_SCANLINES_NTSC, cdp1869_device::SCANLINE_VBLANK_END_NTSC, cdp1869_device::SCANLINE_VBLANK_START_NTSC);
+ return screen;
+ }
+
virtual void io_map(address_map &map);
virtual void char_map(address_map &map);
virtual void page_map(address_map &map);
diff --git a/src/mame/video/cidelsa.cpp b/src/mame/video/cidelsa.cpp
index bc56502f0e4..a5d1832d4b8 100644
--- a/src/mame/video/cidelsa.cpp
+++ b/src/mame/video/cidelsa.cpp
@@ -150,47 +150,48 @@ WRITE8_MEMBER( draco_state::psg_pb_w )
/* Machine Drivers */
-MACHINE_CONFIG_START(cidelsa_state::destryer_video)
- MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, DESTRYER_CHR2)
- MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.4, 0.044)
-
+void cidelsa_state::destryer_video(machine_config &config)
+{
SPEAKER(config, "mono").front_center();
- MCFG_CDP1869_ADD(CDP1869_TAG, DESTRYER_CHR2, cidelsa_page_ram)
- MCFG_CDP1869_CHAR_PCB_READ_OWNER(cidelsa_state, cidelsa_pcb_r)
- MCFG_CDP1869_CHAR_RAM_READ_OWNER(cidelsa_state, cidelsa_charram_r)
- MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(cidelsa_state, cidelsa_charram_w)
- MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
- MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, cidelsa_state, prd_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(cidelsa_state::altair_video)
- MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, ALTAIR_CHR2)
- MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.4, 0.044)
+ CDP1869(config, m_vis, DESTRYER_CHR2, &cidelsa_state::cidelsa_page_ram);
+ screen_device &screen(m_vis->add_pal_screen(config, SCREEN_TAG, DESTRYER_CHR2));
+ screen.set_default_position(1.226, 0.012, 1.4, 0.044);
+ m_vis->set_pcb_read_callback(FUNC(cidelsa_state::cidelsa_pcb_r));
+ m_vis->set_char_ram_read_callback(FUNC(cidelsa_state::cidelsa_charram_r));
+ m_vis->set_char_ram_write_callback(FUNC(cidelsa_state::cidelsa_charram_w));
+ m_vis->pal_ntsc_callback().set_constant(1);
+ m_vis->prd_callback().set(FUNC(cidelsa_state::prd_w));
+ m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+void cidelsa_state::altair_video(machine_config &config)
+{
SPEAKER(config, "mono").front_center();
- MCFG_CDP1869_ADD(CDP1869_TAG, ALTAIR_CHR2, cidelsa_page_ram)
- MCFG_CDP1869_CHAR_PCB_READ_OWNER(cidelsa_state, cidelsa_pcb_r)
- MCFG_CDP1869_CHAR_RAM_READ_OWNER(cidelsa_state, cidelsa_charram_r)
- MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(cidelsa_state, cidelsa_charram_w)
- MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
- MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, cidelsa_state, prd_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(draco_state::draco_video)
- MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, DRACO_CHR2)
- MCFG_SCREEN_DEFAULT_POSITION(1.226, 0.012, 1.360, 0.024)
+ CDP1869(config, m_vis, ALTAIR_CHR2, &cidelsa_state::cidelsa_page_ram);
+ screen_device &screen(m_vis->add_pal_screen(config, SCREEN_TAG, ALTAIR_CHR2));
+ screen.set_default_position(1.226, 0.012, 1.4, 0.044);
+ m_vis->set_pcb_read_callback(FUNC(cidelsa_state::cidelsa_pcb_r));
+ m_vis->set_char_ram_read_callback(FUNC(cidelsa_state::cidelsa_charram_r));
+ m_vis->set_char_ram_write_callback(FUNC(cidelsa_state::cidelsa_charram_w));
+ m_vis->pal_ntsc_callback().set_constant(1);
+ m_vis->prd_callback().set(FUNC(cidelsa_state::prd_w));
+ m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+void draco_state::draco_video(machine_config &config)
+{
SPEAKER(config, "mono").front_center();
- MCFG_CDP1869_ADD(CDP1869_TAG, DRACO_CHR2, draco_page_ram)
- MCFG_CDP1869_CHAR_PCB_READ_OWNER(draco_state, draco_pcb_r)
- MCFG_CDP1869_CHAR_RAM_READ_OWNER(draco_state, draco_charram_r)
- MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(draco_state, draco_charram_w)
- MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
- MCFG_CDP1869_PRD_CALLBACK(INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1))
+ CDP1869(config, m_vis, DRACO_CHR2, &draco_state::draco_page_ram);
+ screen_device &screen(m_vis->add_pal_screen(config, SCREEN_TAG, DRACO_CHR2));
+ screen.set_default_position(1.226, 0.012, 1.360, 0.024);
+ m_vis->set_pcb_read_callback(FUNC(draco_state::draco_pcb_r));
+ m_vis->set_char_ram_read_callback(FUNC(draco_state::draco_charram_r));
+ m_vis->set_char_ram_write_callback(FUNC(draco_state::draco_charram_w));
+ m_vis->pal_ntsc_callback().set_constant(1);
+ m_vis->prd_callback().set_inputline(CDP1802_TAG, COSMAC_INPUT_LINE_EF1);
+
AY8910(config, m_psg, DRACO_SND_CHR1);
m_psg->set_flags(AY8910_SINGLE_OUTPUT);
m_psg->port_b_write_callback().set(FUNC(draco_state::psg_pb_w));
m_psg->add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
+}
diff --git a/src/mame/video/comx35.cpp b/src/mame/video/comx35.cpp
index 7c31d10be56..3fcf318ee8b 100644
--- a/src/mame/video/comx35.cpp
+++ b/src/mame/video/comx35.cpp
@@ -89,40 +89,40 @@ void comx35_state::video_start()
/* Machine Drivers */
-MACHINE_CONFIG_START(comx35_state::comx35_pal_video)
- MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL)
-
+void comx35_state::comx35_pal_video(machine_config &config)
+{
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram)
- MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL)
- MCFG_CDP1869_CHAR_PCB_READ_OWNER(comx35_state, comx35_pcb_r)
- MCFG_CDP1869_CHAR_RAM_READ_OWNER(comx35_state, comx35_charram_r)
- MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(comx35_state, comx35_charram_w)
- MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
- MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, comx35_state, prd_w))
- MCFG_CDP1869_SET_SCREEN(SCREEN_TAG)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ CDP1869(config, m_vis, cdp1869_device::DOT_CLK_PAL, &comx35_state::cdp1869_page_ram);
+ m_vis->add_pal_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL);
+ m_vis->set_color_clock(cdp1869_device::COLOR_CLK_PAL);
+ m_vis->set_pcb_read_callback(FUNC(comx35_state::comx35_pcb_r));
+ m_vis->set_char_ram_read_callback(FUNC(comx35_state::comx35_charram_r));
+ m_vis->set_char_ram_write_callback(FUNC(comx35_state::comx35_charram_w));
+ m_vis->pal_ntsc_callback().set_constant(1);
+ m_vis->prd_callback().set(FUNC(comx35_state::prd_w));
+ m_vis->set_screen(SCREEN_TAG);
+ m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(comx35_state::comx35_ntsc_video)
- MCFG_CDP1869_SCREEN_NTSC_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_NTSC)
+}
+void comx35_state::comx35_ntsc_video(machine_config &config)
+{
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_NTSC, cdp1869_page_ram)
- MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_NTSC)
- MCFG_CDP1869_CHAR_PCB_READ_OWNER(comx35_state, comx35_pcb_r)
- MCFG_CDP1869_CHAR_RAM_READ_OWNER(comx35_state, comx35_charram_r)
- MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(comx35_state, comx35_charram_w)
- MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(0))
- MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, comx35_state, prd_w))
- MCFG_CDP1869_SET_SCREEN(SCREEN_TAG)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ CDP1869(config, m_vis, cdp1869_device::DOT_CLK_NTSC, &comx35_state::cdp1869_page_ram);
+ m_vis->add_ntsc_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_NTSC);
+ m_vis->set_color_clock(cdp1869_device::COLOR_CLK_NTSC);
+ m_vis->set_pcb_read_callback(FUNC(comx35_state::comx35_pcb_r));
+ m_vis->set_char_ram_read_callback(FUNC(comx35_state::comx35_charram_r));
+ m_vis->set_char_ram_write_callback(FUNC(comx35_state::comx35_charram_w));
+ m_vis->pal_ntsc_callback().set_constant(0);
+ m_vis->prd_callback().set(FUNC(comx35_state::prd_w));
+ m_vis->set_screen(SCREEN_TAG);
+ m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
+}
diff --git a/src/mame/video/pecom.cpp b/src/mame/video/pecom.cpp
index 1cd4c67287f..1c583f3c0b8 100644
--- a/src/mame/video/pecom.cpp
+++ b/src/mame/video/pecom.cpp
@@ -91,18 +91,18 @@ void pecom_state::video_start()
save_pointer(NAME(m_charram), PECOM_CHAR_RAM_SIZE);
}
-MACHINE_CONFIG_START(pecom_state::pecom_video)
- MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL)
-
+void pecom_state::pecom_video(machine_config &config)
+{
SPEAKER(config, "mono").front_center();
- MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram)
- MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL)
- MCFG_CDP1869_CHAR_PCB_READ_OWNER(pecom_state, pecom_pcb_r)
- MCFG_CDP1869_CHAR_RAM_READ_OWNER(pecom_state, pecom_char_ram_r)
- MCFG_CDP1869_CHAR_RAM_WRITE_OWNER(pecom_state, pecom_char_ram_w)
- MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
- MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, pecom_state, pecom_prd_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ CDP1869(config, m_cdp1869, cdp1869_device::DOT_CLK_PAL, &pecom_state::cdp1869_page_ram);
+ m_cdp1869->add_pal_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL);
+ m_cdp1869->set_color_clock(cdp1869_device::COLOR_CLK_PAL);
+ m_cdp1869->set_pcb_read_callback(FUNC(pecom_state::pecom_pcb_r));
+ m_cdp1869->set_char_ram_read_callback(FUNC(pecom_state::pecom_char_ram_r));
+ m_cdp1869->set_char_ram_write_callback(FUNC(pecom_state::pecom_char_ram_w));
+ m_cdp1869->pal_ntsc_callback().set_constant(1);
+ m_cdp1869->prd_callback().set(FUNC(pecom_state::pecom_prd_w));
+ m_cdp1869->add_route(ALL_OUTPUTS, "mono", 0.25);
WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
+}
diff --git a/src/mame/video/tmc600.cpp b/src/mame/video/tmc600.cpp
index bfa59a47995..7839a4c0229 100644
--- a/src/mame/video/tmc600.cpp
+++ b/src/mame/video/tmc600.cpp
@@ -116,20 +116,20 @@ static GFXDECODE_START( gfx_tmc600 )
GFXDECODE_ENTRY( "chargen", 0x0000, tmc600_charlayout, 0, 36 )
GFXDECODE_END
-MACHINE_CONFIG_START(tmc600_state::tmc600_video)
+void tmc600_state::tmc600_video(machine_config &config)
+{
// video hardware
- MCFG_CDP1869_SCREEN_PAL_ADD(CDP1869_TAG, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL)
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, CDP1869_TAG":palette", gfx_tmc600)
+ GFXDECODE(config, "gfxdecode", CDP1869_TAG":palette", gfx_tmc600);
// sound hardware
SPEAKER(config, "mono").front_center();
- MCFG_CDP1869_ADD(CDP1869_TAG, cdp1869_device::DOT_CLK_PAL, cdp1869_page_ram)
- MCFG_CDP1869_COLOR_CLOCK(cdp1869_device::COLOR_CLK_PAL)
- MCFG_CDP1869_CHAR_PCB_READ_OWNER(tmc600_state, tmc600_pcb_r)
- MCFG_CDP1869_CHAR_RAM_READ_OWNER(tmc600_state, tmc600_char_ram_r)
- MCFG_CDP1869_PAL_NTSC_CALLBACK(CONSTANT(1))
- MCFG_CDP1869_PRD_CALLBACK(WRITELINE(*this, tmc600_state, prd_w))
- MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-MACHINE_CONFIG_END
+ CDP1869(config, m_vis, cdp1869_device::DOT_CLK_PAL, &tmc600_state::cdp1869_page_ram);
+ m_vis->add_pal_screen(config, SCREEN_TAG, cdp1869_device::DOT_CLK_PAL);
+ m_vis->set_color_clock(cdp1869_device::COLOR_CLK_PAL);
+ m_vis->set_pcb_read_callback(FUNC(tmc600_state::tmc600_pcb_r));
+ m_vis->set_char_ram_read_callback(FUNC(tmc600_state::tmc600_char_ram_r));
+ m_vis->pal_ntsc_callback().set_constant(1);
+ m_vis->prd_callback().set(FUNC(tmc600_state::prd_w));
+ m_vis->set_screen(SCREEN_TAG);
+ m_vis->add_route(ALL_OUTPUTS, "mono", 0.25);
+}