From 71da8e2ae2521d4c895520c85e45e3ccfdb56e30 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 21 Aug 2018 11:12:59 -0400 Subject: [PATCH] tms9928a: Configuration modernization (nw) - Replace callback configuration macros with devcb3 (slightly shortening function names in the process) - Change configured clock to be twice the dot clock (as on hardware), rather than equal to it - Allow the VDP to configure the screen in device_config_complete (taking into account 60 Hz/50 Hz variations), making MCFG_TMS9928A_SCREEN_ADD_NTSC/_PAL macros obsolete - Add notes on clock outputs msx.cpp: Use a template to simplify configuration of all the MSX1 VDP variants (nw) bbcbc: Increase clock speed to a more plausible rate WARNING: Withheld for now due to Vas's quibbles with the similar approach used in 577f198564faff49f2636600598a15644db354bb. --- src/devices/bus/a2bus/a2arcadebd.cpp | 17 +- src/devices/bus/a2bus/ezcgi.cpp | 14 +- src/devices/bus/a2bus/ssprite.cpp | 20 +- src/devices/bus/spc1000/vdp.cpp | 16 +- src/devices/video/tms9928a.cpp | 30 ++- src/devices/video/tms9928a.h | 43 +--- src/mame/drivers/adam.cpp | 9 +- src/mame/drivers/arachnid.cpp | 10 +- src/mame/drivers/bbcbc.cpp | 14 +- src/mame/drivers/byvid.cpp | 22 +- src/mame/drivers/cliffhgr.cpp | 6 +- src/mame/drivers/coleco.cpp | 44 ++-- src/mame/drivers/cortex.cpp | 11 +- src/mame/drivers/crvision.cpp | 42 ++-- src/mame/drivers/einstein.cpp | 9 +- src/mame/drivers/forte2.cpp | 10 +- src/mame/drivers/kingpin.cpp | 11 +- src/mame/drivers/m5.cpp | 41 +-- src/mame/drivers/msx.cpp | 360 ++++++++++----------------- src/mame/drivers/mtx.cpp | 10 +- src/mame/drivers/myvision.cpp | 10 +- src/mame/drivers/pachifev.cpp | 11 +- src/mame/drivers/pencil2.cpp | 8 +- src/mame/drivers/pengadvb.cpp | 10 +- src/mame/drivers/pv2000.cpp | 10 +- src/mame/drivers/re900.cpp | 10 +- src/mame/drivers/sg1000.cpp | 30 +-- src/mame/drivers/sg1000a.cpp | 11 +- src/mame/drivers/svi318.cpp | 49 ++-- src/mame/drivers/ti99_4x.cpp | 90 ++----- src/mame/drivers/ti99_8.cpp | 36 +-- src/mame/drivers/tm990189.cpp | 9 +- src/mame/drivers/tutor.cpp | 8 +- src/mame/includes/msx.h | 10 +- 34 files changed, 442 insertions(+), 599 deletions(-) diff --git a/src/devices/bus/a2bus/a2arcadebd.cpp b/src/devices/bus/a2bus/a2arcadebd.cpp index 782fcfe6b7e..4bdd0a6911b 100644 --- a/src/devices/bus/a2bus/a2arcadebd.cpp +++ b/src/devices/bus/a2bus/a2arcadebd.cpp @@ -36,17 +36,16 @@ DEFINE_DEVICE_TYPE(A2BUS_ARCADEBOARD, a2bus_arcboard_device, "a2arcbd", "Third M // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(a2bus_arcboard_device::device_add_mconfig) - MCFG_DEVICE_ADD( TMS_TAG, TMS9918A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) // 16k of VRAM - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, a2bus_arcboard_device, tms_irq_w)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS_TAG, tms9918a_device, screen_update ) +void a2bus_arcboard_device::device_add_mconfig(machine_config &config) +{ + TMS9918A(config, m_tms, XTAL(10'738'635)).set_screen(SCREEN_TAG); + m_tms->set_vram_size(0x4000); // 16k of VRAM + m_tms->int_callback().set(FUNC(a2bus_arcboard_device::tms_irq_w)); + SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD(AY_TAG, AY8910, 1022727) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + AY8910(config, m_ay, 1022727).add_route(ALL_OUTPUTS, "mono", 1.0); +} //************************************************************************** // LIVE DEVICE diff --git a/src/devices/bus/a2bus/ezcgi.cpp b/src/devices/bus/a2bus/ezcgi.cpp index 6f67650b488..44550a7a83a 100644 --- a/src/devices/bus/a2bus/ezcgi.cpp +++ b/src/devices/bus/a2bus/ezcgi.cpp @@ -40,13 +40,13 @@ DEFINE_DEVICE_TYPE(A2BUS_EZCGI_9958, a2bus_ezcgi_9958_device, "a2ezcgi5", "E-Z C // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(a2bus_ezcgi_device::device_add_mconfig) - MCFG_DEVICE_ADD( TMS_TAG, TMS9918A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) // 16k of VRAM - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, a2bus_ezcgi_device, tms_irq_w)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS_TAG, tms9918a_device, screen_update ) -MACHINE_CONFIG_END +void a2bus_ezcgi_device::device_add_mconfig(machine_config &config) +{ + TMS9918A(config, m_tms, XTAL(10'738'635)).set_screen(SCREEN_TAG); + m_tms->set_vram_size(0x4000); // 16k of VRAM + m_tms->int_callback().set(FUNC(a2bus_ezcgi_device::tms_irq_w)); + SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER); +} MACHINE_CONFIG_START(a2bus_ezcgi_9938_device::device_add_mconfig) MCFG_V9938_ADD(TMS_TAG, SCREEN_TAG, 0x30000, XTAL(21'477'272)) // 192K of VRAM / typical 9938 clock, not verified diff --git a/src/devices/bus/a2bus/ssprite.cpp b/src/devices/bus/a2bus/ssprite.cpp index b269e71e5c6..de49a875ce4 100644 --- a/src/devices/bus/a2bus/ssprite.cpp +++ b/src/devices/bus/a2bus/ssprite.cpp @@ -33,19 +33,17 @@ DEFINE_DEVICE_TYPE(A2BUS_SSPRITE, a2bus_ssprite_device, "a2ssprite", "Synetix Su // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(a2bus_ssprite_device::device_add_mconfig) - MCFG_DEVICE_ADD( TMS_TAG, TMS9918A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) // 16k of VRAM - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, a2bus_ssprite_device, tms_irq_w)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS_TAG, tms9918a_device, screen_update ) +void a2bus_ssprite_device::device_add_mconfig(machine_config &config) +{ + TMS9918A(config, m_tms, XTAL(10'738'635)).set_screen(SCREEN_TAG); + m_tms->set_vram_size(0x4000); // 16k of VRAM + m_tms->int_callback().set(FUNC(a2bus_ssprite_device::tms_irq_w)); + SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD(AY_TAG, AY8912, 1022727) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADD(TMS5220_TAG, TMS5220, 640000) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + AY8912(config, m_ay, 1022727).add_route(ALL_OUTPUTS, "mono", 1.0); + TMS5220(config, m_tms5220, 640000).add_route(ALL_OUTPUTS, "mono", 1.0); +} //************************************************************************** // LIVE DEVICE diff --git a/src/devices/bus/spc1000/vdp.cpp b/src/devices/bus/spc1000/vdp.cpp index 7dc6e401d6e..61f496183b7 100644 --- a/src/devices/bus/spc1000/vdp.cpp +++ b/src/devices/bus/spc1000/vdp.cpp @@ -23,14 +23,14 @@ WRITE_LINE_MEMBER(spc1000_vdp_exp_device::vdp_interrupt) // device_add_mconfig //------------------------------------------------- -MACHINE_CONFIG_START(spc1000_vdp_exp_device::device_add_mconfig) - - MCFG_DEVICE_ADD("tms", TMS9928A, XTAL(10'738'635) / 2) // TODO: which clock? - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, spc1000_vdp_exp_device, vdp_interrupt)) - MCFG_TMS9928A_SCREEN_ADD_NTSC("tms_screen") - MCFG_SCREEN_UPDATE_DEVICE("tms", tms9928a_device, screen_update) -MACHINE_CONFIG_END +void spc1000_vdp_exp_device::device_add_mconfig(machine_config &config) +{ + TMS9928A(config, m_vdp, XTAL(10'738'635)); // TODO: which clock? + m_vdp->set_vram_size(0x4000); + m_vdp->int_callback().set(FUNC(spc1000_vdp_exp_device::vdp_interrupt)); + m_vdp->set_screen("tms_screen"); + SCREEN(config, "tms_screen", SCREEN_TYPE_RASTER); +} //************************************************************************** diff --git a/src/devices/video/tms9928a.cpp b/src/devices/video/tms9928a.cpp index dbfcdabe2b4..74c58e0c3fc 100644 --- a/src/devices/video/tms9928a.cpp +++ b/src/devices/video/tms9928a.cpp @@ -70,8 +70,27 @@ tms9928a_device::tms9928a_device(const machine_config &mconfig, device_type type { } +void tms9928a_device::device_config_complete() +{ + if (!has_screen()) + return; -tms9928a_device::tms9928a_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ) + if (!screen().have_screen_update()) + screen().set_screen_update(screen_update_rgb32_delegate(FUNC(tms9928a_device::screen_update), this)); + + if (!screen().refresh_attoseconds()) + { + if (m_50hz) + screen().set_raw(clock() / 2, TOTAL_HORZ, HORZ_DISPLAY_START - 12, HORZ_DISPLAY_START + 256 + 12, + TOTAL_VERT_PAL, VERT_DISPLAY_START_PAL - 12, VERT_DISPLAY_START_PAL + 192 + 12); + else + screen().set_raw(clock() / 2, TOTAL_HORZ, HORZ_DISPLAY_START - 12, HORZ_DISPLAY_START + 256 + 12, + TOTAL_VERT_PAL, VERT_DISPLAY_START_NTSC - 12, VERT_DISPLAY_START_NTSC + 192 + 12); + } +} + + +tms9928a_device::tms9928a_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : tms9928a_device(mconfig, TMS9928A, tag, owner, clock, false, true, true) { } @@ -111,6 +130,12 @@ tms9929a_device::tms9929a_device(const machine_config &mconfig, const char *tag, { } +void tms9928a_device::device_validity_check(validity_checker &valid) const +{ + if (clock() < 6'000'000) + osd_printf_error("%d Hz clock is too slow!\n", clock()); +} + device_memory_interface::space_config_vector tms9928a_device::memory_space_config() const { return space_config_vector { @@ -765,5 +790,6 @@ void tms9928a_device::device_reset() m_line_timer->adjust( screen().time_until_pos( 0, HORZ_DISPLAY_START ) ); // TODO: Check clock freq settings in all drivers - if (!m_out_gromclk_cb.isnull() && m_99) m_gromclk_timer->adjust(attotime::zero, 0, attotime::from_hz(clock()/12)); + if (!m_out_gromclk_cb.isnull() && m_99) + m_gromclk_timer->adjust(attotime::zero, 0, clocks_to_attotime(24)); } diff --git a/src/devices/video/tms9928a.h b/src/devices/video/tms9928a.h index 455fce7fc90..fe87b2672bf 100644 --- a/src/devices/video/tms9928a.h +++ b/src/devices/video/tms9928a.h @@ -21,6 +21,13 @@ TMS9128 YPbPr 60 TMS9129 YPbPr 50 + EFO90501 ? 50? (uses 10.816 MHz XTAL; TI logo sometimes present) + + XTAL inputs 10.738098 to 10.739172 MHz (10.738635 MHz typical) + Pixel clock (internal) XTAL ÷ 2 + CPUCLK (N/A with TMS992x) XTAL ÷ 3 (3.58 MHz typical) + GROMCLK XTAL ÷ 24 (447.5 kHz typical) + */ #ifndef MAME_VIDEO_TMS9928A_H @@ -31,34 +38,6 @@ #include "screen.h" -// MCFG_DEVICE_ADD(_tag, _variant, XTAL(10'738'635) / 2 ) - -#define MCFG_TMS9928A_VRAM_SIZE(_size) \ - downcast(*device).set_vram_size(_size); - -#define MCFG_TMS9928A_OUT_INT_LINE_CB(_devcb) \ - downcast(*device).set_out_int_line_callback(DEVCB_##_devcb); - -#define MCFG_TMS9928A_SET_SCREEN MCFG_VIDEO_SET_SCREEN - -#define MCFG_TMS9928A_OUT_GROMCLK_CB(_devcb) \ - downcast(*device).set_out_gromclk_callback(DEVCB_##_devcb); - - -#define MCFG_TMS9928A_SCREEN_ADD_NTSC(_screen_tag) \ - MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_SCREEN_ADD( _screen_tag, RASTER ) \ - MCFG_SCREEN_RAW_PARAMS( XTAL(10'738'635) / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_NTSC, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ) - - -#define MCFG_TMS9928A_SCREEN_ADD_PAL(_screen_tag) \ - MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_SCREEN_ADD(_screen_tag, RASTER ) \ - MCFG_SCREEN_RAW_PARAMS( XTAL(10'738'635) / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_PAL, tms9928a_device::VERT_DISPLAY_START_PAL - 12, tms9928a_device::VERT_DISPLAY_START_PAL + 192 + 12 ) - - DECLARE_DEVICE_TYPE(TMS9918, tms9918_device) DECLARE_DEVICE_TYPE(TMS9918A, tms9918a_device) DECLARE_DEVICE_TYPE(TMS9118, tms9118_device) @@ -90,10 +69,8 @@ public: tms9928a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void set_vram_size(int vram_size) { m_vram_size = vram_size; } - template devcb_base &set_out_int_line_callback(Object &&cb) { return m_out_int_line_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_gromclk_callback(Object &&cb) { return m_out_gromclk_cb.set_callback(std::forward(cb)); } - auto out_int_line_callback() { return m_out_int_line_cb.bind(); } - auto out_gromclk_callback() { return m_out_gromclk_cb.bind(); } + auto int_callback() { return m_out_int_line_cb.bind(); } + auto gromclk_callback() { return m_out_gromclk_cb.bind(); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -119,6 +96,8 @@ protected: tms9928a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, bool is_50hz, bool is_reva, bool is_99); // device-level overrides + virtual void device_config_complete() override; + virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/mame/drivers/adam.cpp b/src/mame/drivers/adam.cpp index 335de3c822e..9e9478750f5 100644 --- a/src/mame/drivers/adam.cpp +++ b/src/mame/drivers/adam.cpp @@ -1052,11 +1052,10 @@ MACHINE_CONFIG_START(adam_state::adam) MCFG_QUANTUM_PERFECT_CPU(M6801_TAG) // video hardware - MCFG_DEVICE_ADD(TMS9928A_TAG, TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, adam_state, vdc_int_w)) - MCFG_TMS9928A_SCREEN_ADD_NTSC(SCREEN_TAG) - MCFG_SCREEN_UPDATE_DEVICE(TMS9928A_TAG, tms9928a_device, screen_update) + TMS9928A(config, m_vdc, XTAL(10'738'635)).set_screen("screen"); + m_vdc->set_vram_size(0x4000); + m_vdc->int_callback().set(FUNC(adam_state::vdc_int_w)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/arachnid.cpp b/src/mame/drivers/arachnid.cpp index 17a69e746dd..3c0f14591dc 100644 --- a/src/mame/drivers/arachnid.cpp +++ b/src/mame/drivers/arachnid.cpp @@ -448,11 +448,11 @@ MACHINE_CONFIG_START(arachnid_state::arachnid) m_pia_u17->cb2_handler().set(FUNC(arachnid_state::pia_u17_pcb_w)); // video hardware - MCFG_DEVICE_ADD(TMS9118_TAG, TMS9118, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE(M6809_TAG, INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS9118_TAG, tms9118_device, screen_update ) + tms9118_device &vdp(TMS9118(config, TMS9118_TAG, 10.738635_MHz_XTAL)); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp index d9ce2eb8de9..cdbe8b388f9 100644 --- a/src/mame/drivers/bbcbc.cpp +++ b/src/mame/drivers/bbcbc.cpp @@ -119,22 +119,22 @@ static const z80_daisy_config bbcbc_daisy_chain[] = MACHINE_CONFIG_START(bbcbc_state::bbcbc) - MCFG_DEVICE_ADD( "maincpu", Z80, MAIN_CLOCK / 8 ) + MCFG_DEVICE_ADD("maincpu", Z80, 10.6875_MHz_XTAL / 3) MCFG_DEVICE_PROGRAM_MAP(mem_map) MCFG_DEVICE_IO_MAP(io_map) MCFG_Z80_DAISY_CHAIN(bbcbc_daisy_chain) - MCFG_DEVICE_ADD("z80pio", Z80PIO, MAIN_CLOCK/8) + MCFG_DEVICE_ADD("z80pio", Z80PIO, 10.6875_MHz_XTAL / 3) //MCFG_Z80PIO_OUT_PA_CB(???) //MCFG_Z80PIO_IN_STROBE_CB(???) MCFG_Z80PIO_IN_PB_CB(READ8(*this, bbcbc_state, input_r)) MCFG_Z80PIO_OUT_PB_CB(WRITE8(*this, bbcbc_state, input_select_w)) - MCFG_DEVICE_ADD( "tms9129", TMS9129, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", 0)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9129", tms9928a_device, screen_update ) + tms9129_device &vdp(TMS9129(config, "tms9129", 10.6875_MHz_XTAL)); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline("maincpu", 0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); // Software on ROM cartridges MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "bbcbc_cart") diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp index ed59a208312..99b11d18936 100644 --- a/src/mame/drivers/byvid.cpp +++ b/src/mame/drivers/byvid.cpp @@ -800,11 +800,10 @@ MACHINE_CONFIG_START(by133_state::babypac) MCFG_TIMER_DRIVER_ADD_PERIODIC("babypac2", by133_state, u11_timer, attotime::from_hz(634)) // 555 timer*2 /* video hardware */ - MCFG_DEVICE_ADD( "crtc", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("videocpu", M6809_IRQ_LINE)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "crtc", tms9928a_device, screen_update ) + TMS9928A(config, m_crtc, XTAL(10'738'635)).set_screen("screen"); + m_crtc->set_vram_size(0x4000); + m_crtc->int_callback().set_inputline(m_videocpu, M6809_IRQ_LINE); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "speaker").front_center(); @@ -823,16 +822,11 @@ MACHINE_CONFIG_START(by133_state::granny) MCFG_DEVICE_ADD("videocpu", MC6809, XTAL(8'000'000)) // MC68B09P (XTAL value hard to read) MCFG_DEVICE_PROGRAM_MAP(granny_map) - MCFG_DEVICE_REMOVE("screen") + TMS9928A(config, m_crtc2, XTAL(10'738'635)).set_screen("screen"); + m_crtc2->set_vram_size(0x4000); + m_crtc2->int_callback().set_inputline(m_videocpu, M6809_IRQ_LINE); - MCFG_DEVICE_ADD( "crtc2", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("videocpu", M6809_IRQ_LINE)) - MCFG_VIDEO_SET_SCREEN("screen") - - MCFG_SCREEN_ADD( "screen", RASTER ) - MCFG_SCREEN_RAW_PARAMS( XTAL(10'738'635) / 2, tms9928a_device::TOTAL_HORZ, tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_NTSC, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ) + MCFG_DEVICE_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(by133_state, screen_update_granny) MACHINE_CONFIG_END diff --git a/src/mame/drivers/cliffhgr.cpp b/src/mame/drivers/cliffhgr.cpp index e5e37abdf2e..fe386fe2ac3 100644 --- a/src/mame/drivers/cliffhgr.cpp +++ b/src/mame/drivers/cliffhgr.cpp @@ -702,9 +702,9 @@ MACHINE_CONFIG_START(cliffhgr_state::cliffhgr) MCFG_LASERDISC_OVERLAY_CLIP(tms9928a_device::HORZ_DISPLAY_START-12, tms9928a_device::HORZ_DISPLAY_START+32*8+12-1, tms9928a_device::VERT_DISPLAY_START_NTSC - 12, tms9928a_device::VERT_DISPLAY_START_NTSC+24*8+12-1) /* start with the TMS9928a video configuration */ - MCFG_DEVICE_ADD( "tms9928a", TMS9128, XTAL(10'738'635) / 2 ) /* TMS9128NL on the board */ - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + tms9128_device &vdp(TMS9128(config, "tms9928a", XTAL(10'738'635))); /* TMS9128NL on the board */ + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* override video rendering and raw screen info */ MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp index b6f2a60c259..d4ac205ec16 100644 --- a/src/mame/drivers/coleco.cpp +++ b/src/mame/drivers/coleco.cpp @@ -382,11 +382,11 @@ MACHINE_CONFIG_START(coleco_state::coleco) MCFG_DEVICE_IO_MAP(coleco_io_map) /* video hardware */ - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, coleco_state, coleco_vdp_interrupt)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) + tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(coleco_state::coleco_vdp_interrupt)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -404,19 +404,16 @@ MACHINE_CONFIG_START(coleco_state::coleco) MCFG_TIMER_DRIVER_ADD_PERIODIC("paddle_timer", coleco_state, paddle_update_callback, attotime::from_msec(20)) MACHINE_CONFIG_END -MACHINE_CONFIG_START(coleco_state::colecop) +void coleco_state::colecop(machine_config &config) +{ coleco(config); /* video hardware */ - MCFG_DEVICE_REMOVE("tms9928a") - MCFG_DEVICE_REMOVE("screen") - - MCFG_DEVICE_ADD( "tms9928a", TMS9929A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, coleco_state, coleco_vdp_interrupt)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) -MACHINE_CONFIG_END + tms9929a_device &vdp(TMS9929A(config.replace(), "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(coleco_state::coleco_vdp_interrupt)); +} MACHINE_CONFIG_START(coleco_state::czz50) coleco(config); @@ -426,19 +423,16 @@ MACHINE_CONFIG_START(coleco_state::czz50) MCFG_DEVICE_PROGRAM_MAP(czz50_map) MACHINE_CONFIG_END -MACHINE_CONFIG_START(coleco_state::dina) +void coleco_state::dina(machine_config &config) +{ czz50(config); /* video hardware */ - MCFG_DEVICE_REMOVE("tms9928a") - MCFG_DEVICE_REMOVE("screen") - - MCFG_DEVICE_ADD( "tms9928a", TMS9929A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, coleco_state, coleco_vdp_interrupt)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) -MACHINE_CONFIG_END + tms9929a_device &vdp(TMS9929A(config.replace(), "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(coleco_state::coleco_vdp_interrupt)); +} /* ROMs */ diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp index 101bb5adf95..c2d1f89f762 100644 --- a/src/mame/drivers/cortex.cpp +++ b/src/mame/drivers/cortex.cpp @@ -198,13 +198,12 @@ MACHINE_CONFIG_START(cortex_state::cortex) control.q_out_cb<6>().set("beeper", FUNC(beep_device::set_state)); /* video hardware */ - tms9929a_device &crtc(TMS9929A(config, "crtc", XTAL(10'738'635) / 2)); - crtc.out_int_line_callback().set_inputline(m_maincpu, INT_9995_INT1); - crtc.out_int_line_callback().append(FUNC(cortex_state::vdp_int_w)); + tms9929a_device &crtc(TMS9929A(config, "crtc", XTAL(10'738'635))); + crtc.set_screen("screen"); + crtc.int_callback().set_inputline(m_maincpu, INT_9995_INT1); + crtc.int_callback().append(FUNC(cortex_state::vdp_int_w)); crtc.set_vram_size(0x4000); - device = &crtc; // FIXME: this line is needed because the following macro is nasty - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "crtc", tms9928a_device, screen_update ) + SCREEN(config, "screen", SCREEN_TYPE_RASTER); MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0) MCFG_GENERIC_KEYBOARD_CB(PUT(cortex_state, kbd_put)) diff --git a/src/mame/drivers/crvision.cpp b/src/mame/drivers/crvision.cpp index 5b28d03a9cc..13264a27afb 100644 --- a/src/mame/drivers/crvision.cpp +++ b/src/mame/drivers/crvision.cpp @@ -187,7 +187,7 @@ void laser2001_state::lasr2001_map(address_map &map) INPUT_CHANGED_MEMBER( crvision_state::trigger_nmi ) { - m_maincpu->set_input_line(INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE); + m_maincpu->set_input_line(m6502_device::NMI_LINE, newval ? CLEAR_LINE : ASSERT_LINE); } /*------------------------------------------------- @@ -786,29 +786,31 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START( ntsc ) -------------------------------------------------*/ -MACHINE_CONFIG_START(crvision_state::ntsc) +void crvision_state::ntsc(machine_config &config) +{ creativision(config); // video hardware - MCFG_DEVICE_ADD( TMS9929_TAG, TMS9918, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS9929_TAG, tms9918_device, screen_update ) -MACHINE_CONFIG_END + tms9918_device &vdp(TMS9918(config, TMS9929_TAG, XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(M6502_TAG, m6502_device::IRQ_LINE); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); +} /*------------------------------------------------- MACHINE_CONFIG_START( pal ) -------------------------------------------------*/ -MACHINE_CONFIG_START(crvision_pal_state::pal) +void crvision_pal_state::pal(machine_config &config) +{ creativision(config); // video hardware - MCFG_DEVICE_ADD( TMS9929_TAG, TMS9929, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_PAL( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS9929_TAG, tms9929_device, screen_update ) -MACHINE_CONFIG_END + tms9929_device &vdp(TMS9929(config, TMS9929_TAG, XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(M6502_TAG, m6502_device::IRQ_LINE); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); +} /*------------------------------------------------- MACHINE_CONFIG_START( lasr2001 ) @@ -838,11 +840,11 @@ MACHINE_CONFIG_START(laser2001_state::lasr2001) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) // video hardware - MCFG_DEVICE_ADD( TMS9929_TAG, TMS9929A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_PAL( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS9929_TAG, tms9929a_device, screen_update ) + tms9929a_device &vdp(TMS9929A(config, TMS9929_TAG, XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(M6502_TAG, m6502_device::IRQ_LINE); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp index d24da0fd26d..0d90fd42ee4 100644 --- a/src/mame/drivers/einstein.cpp +++ b/src/mame/drivers/einstein.cpp @@ -616,11 +616,10 @@ MACHINE_CONFIG_START(einstein_state::einstein) MCFG_Z80DAISY_GENERIC_INT_CB(WRITELINE(*this, einstein_state, int_w<4>)) /* video hardware */ - MCFG_DEVICE_ADD("vdp", TMS9129, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) // 16k RAM, provided by IC i040 and i041 - MCFG_TMS9928A_SET_SCREEN("screen") - MCFG_TMS9928A_SCREEN_ADD_PAL("screen") - MCFG_SCREEN_UPDATE_DEVICE("vdp", tms9129_device, screen_update) + tms9129_device &vdp(TMS9129(config, "vdp", 10.738635_MHz_XTAL)); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); // 16k RAM, provided by IC i040 and i041 + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/forte2.cpp b/src/mame/drivers/forte2.cpp index fc2db887852..078a0d8c0cc 100644 --- a/src/mame/drivers/forte2.cpp +++ b/src/mame/drivers/forte2.cpp @@ -133,11 +133,11 @@ MACHINE_CONFIG_START(forte2_state::pesadelo) MCFG_DEVICE_IO_MAP(io_mem) /* video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9928A, XTAL(10'738'635)/2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC("screen") - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) + tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/kingpin.cpp b/src/mame/drivers/kingpin.cpp index fac0f3e346a..d178f11bc92 100644 --- a/src/mame/drivers/kingpin.cpp +++ b/src/mame/drivers/kingpin.cpp @@ -169,12 +169,11 @@ MACHINE_CONFIG_START(kingpin_state::kingpin) MCFG_DEVICE_PERIODIC_INT_DRIVER(kingpin_state, irq0_line_hold, 1000) // unknown freq /* video hardware */ - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", 0)) - - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) + tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline("maincpu", 0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp index a6d4a1d8f5e..883ff137ac6 100644 --- a/src/mame/drivers/m5.cpp +++ b/src/mame/drivers/m5.cpp @@ -1467,30 +1467,32 @@ MACHINE_CONFIG_END // MACHINE_CONFIG_START( ntsc ) //------------------------------------------------- -MACHINE_CONFIG_START(m5_state::ntsc) +void m5_state::ntsc(machine_config &config) +{ m5(config); // video hardware - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, 10.738635_MHz_XTAL / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, m5_state, sordm5_video_interrupt_callback)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) -MACHINE_CONFIG_END + tms9928a_device &vdp(TMS9928A(config, "tms9928a", 10.738635_MHz_XTAL)); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(m5_state::sordm5_video_interrupt_callback)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); +} //------------------------------------------------- // MACHINE_CONFIG_START( pal ) //------------------------------------------------- -MACHINE_CONFIG_START(m5_state::pal) +void m5_state::pal(machine_config &config) +{ m5(config); // video hardware - MCFG_DEVICE_ADD( "tms9928a", TMS9929A, 10.738635_MHz_XTAL / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, m5_state, sordm5_video_interrupt_callback)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) -MACHINE_CONFIG_END + tms9929a_device &vdp(TMS9929A(config, "tms9928a", 10.738635_MHz_XTAL)); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(m5_state::sordm5_video_interrupt_callback)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); +} //------------------------------------------------- // MACHINE_CONFIG( m5p_brno ) @@ -1513,12 +1515,11 @@ MACHINE_CONFIG_START(brno_state::brno) MCFG_DEVICE_REMOVE(UPD765_TAG) // video hardware - MCFG_DEVICE_ADD("tms9928a", TMS9929A, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, m5_state, sordm5_video_interrupt_callback)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) - + tms9929a_device &vdp(TMS9929A(config, "tms9928a", 10.738635_MHz_XTAL)); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(m5_state::sordm5_video_interrupt_callback)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); // floppy MCFG_DEVICE_ADD(WD2797_TAG, WD2797, 1_MHz_XTAL) diff --git a/src/mame/drivers/msx.cpp b/src/mame/drivers/msx.cpp index 7231adf1e9e..afe2e699990 100644 --- a/src/mame/drivers/msx.cpp +++ b/src/mame/drivers/msx.cpp @@ -1394,103 +1394,17 @@ MACHINE_CONFIG_START(msx_state::msx) MACHINE_CONFIG_END -MACHINE_CONFIG_START(msx_state::msx_ntsc) +template +void msx_state::msx1(VDPType &vdp_type, machine_config &config) +{ msx(config); /* Video hardware */ - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_tms9118) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9118, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_tms9128) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9128, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_tms9918) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9918, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_tms9918a) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9918A, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_tms9928) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9928A, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_pal) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9929A, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_tms9129) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9129, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(msx_state::msx_tms9929) - msx(config); - /* Video hardware */ - MCFG_DEVICE_ADD("tms9928a", TMS9929A, 10.738635_MHz_XTAL / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, msx_state,msx_irq_source0)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9928a", tms9928a_device, screen_update) -MACHINE_CONFIG_END + SCREEN(config, "screen", SCREEN_TYPE_RASTER); + tms9928a_device &vdp(vdp_type(config, "tms9928a", 10.738635_MHz_XTAL)); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(msx_state::msx_irq_source0)); +} MACHINE_CONFIG_START(msx_state::msx2) @@ -1631,7 +1545,7 @@ ROM_START(ax150) ROM_END MACHINE_CONFIG_START(msx_state::ax150) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -1655,7 +1569,7 @@ ROM_END MACHINE_CONFIG_START(msx_state::ax170) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -1678,7 +1592,7 @@ ROM_START (canonv8) ROM_END MACHINE_CONFIG_START(msx_state::canonv8) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149?? // FDC: None, 0 drives // 2 Cartridge slots @@ -1700,7 +1614,7 @@ ROM_START (canonv10) ROM_END MACHINE_CONFIG_START(msx_state::canonv10) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -1721,7 +1635,7 @@ ROM_START (canonv20) ROM_END MACHINE_CONFIG_START(msx_state::canonv20) - msx_tms9929(config); + msx1(TMS9929A, config); // YM2149 // FDC: None, 0 drives // 2 Cartridge slots @@ -1770,7 +1684,7 @@ ROM_START (mx10) ROM_END MACHINE_CONFIG_START(msx_state::mx10) - msx_tms9118(config); + msx1(TMS9918, config); // FDC: None, 0 drives // 2? Cartridge slots // Z80: uPD780C-1 @@ -1791,7 +1705,7 @@ ROM_START (mx15) ROM_END MACHINE_CONFIG_START(msx_state::mx15) - msx_ntsc(config); + msx1(TMS9928A, config); // FDC: None, 0 drives // 3 Cartridge slots // T6950 @@ -1813,7 +1727,7 @@ ROM_START (mx101) ROM_END MACHINE_CONFIG_START(msx_state::mx101) - msx_ntsc(config); + msx1(TMS9928A, config); // FDC: None, 0 drives // 2? Cartridge slots @@ -1833,7 +1747,7 @@ ROM_START (pv7) ROM_END MACHINE_CONFIG_START(msx_state::pv7) - msx_tms9118(config); + msx1(TMS9918, config); // AY8910? // FDC: None, 0 drives // 1 Cartridge slot + expansion slot, or 2 cartridge slots? @@ -1859,7 +1773,7 @@ ROM_START (pv16) ROM_END MACHINE_CONFIG_START(msx_state::pv16) - msx_tms9118(config); + msx1(TMS9918, config); // AY8910 // FDC: None, 0 drives // 1 Cartridge slot @@ -1882,7 +1796,7 @@ ROM_START (cpc88) ROM_END MACHINE_CONFIG_START(msx_state::cpc88) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2? Cartridge slots @@ -1905,7 +1819,7 @@ ROM_START (dpc100) ROM_END MACHINE_CONFIG_START(msx_state::dpc100) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -1928,7 +1842,7 @@ ROM_START (dpc180) ROM_END MACHINE_CONFIG_START(msx_state::dpc180) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -1951,7 +1865,7 @@ ROM_START (dpc200) ROM_END MACHINE_CONFIG_START(msx_state::dpc200) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -1973,7 +1887,7 @@ ROM_START (dpc200e) ROM_END MACHINE_CONFIG_START(msx_state::dpc200e) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -1994,7 +1908,7 @@ ROM_START (cpc50a) ROM_END MACHINE_CONFIG_START(msx_state::cpc50a) - msx_tms9918(config); + msx1(TMS9918, config); // AY8910/YM2149? // FDC: None, 0 drives // 1? Cartridge slot @@ -2018,7 +1932,7 @@ ROM_START (cpc50b) ROM_END MACHINE_CONFIG_START(msx_state::cpc50b) - msx_tms9118(config); + msx1(TMS9918, config); // AY8910/YM2149? // FDC: None, 0 drives // 1? Cartridge slot @@ -2041,7 +1955,7 @@ ROM_START (cpc51) ROM_END MACHINE_CONFIG_START(msx_state::cpc51) - msx_tms9118(config); + msx1(TMS9918, config); // AY8910/YM2149? // FDC: None, 0 drives // 1 Cartridge slot @@ -2065,7 +1979,7 @@ ROM_START(dgnmsx) ROM_END MACHINE_CONFIG_START(msx_state::dgnmsx) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -2086,7 +2000,7 @@ ROM_START (fdpc200) ROM_END MACHINE_CONFIG_START(msx_state::fdpc200) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -2107,7 +2021,7 @@ ROM_START (fpc500) ROM_END MACHINE_CONFIG_START(msx_state::fpc500) - msx_pal(config); + msx1(TMS9929A, config); // AY8910? // FDC: None, 0 drives // 2 Cartridge slots @@ -2128,7 +2042,7 @@ ROM_START (fspc800) ROM_END MACHINE_CONFIG_START(msx_state::fspc800) - msx_tms9929(config); + msx1(TMS9929A, config); // AY8910? // FDC: None, 0 drives // 2 Cartridge slots @@ -2150,7 +2064,7 @@ ROM_START (bruc100) ROM_END MACHINE_CONFIG_START(msx_state::bruc100) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -2171,7 +2085,7 @@ ROM_START (fmx) ROM_END MACHINE_CONFIG_START(msx_state::fmx) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 1 Cartridge slot, 2 "Fujistu expansion slots @@ -2195,7 +2109,7 @@ ROM_START (gsfc80u) ROM_END MACHINE_CONFIG_START(msx_state::gsfc80u) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2218,7 +2132,7 @@ ROM_START (gsfc200) ROM_END MACHINE_CONFIG_START(msx_state::gsfc200) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2241,7 +2155,7 @@ ROM_START (gfc1080) ROM_END MACHINE_CONFIG_START(msx_state::gfc1080) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -2264,7 +2178,7 @@ ROM_START (gfc1080a) ROM_END MACHINE_CONFIG_START(msx_state::gfc1080a) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -2285,7 +2199,7 @@ ROM_START (expert10) ROM_END MACHINE_CONFIG_START(msx_state::expert10) - msx_tms9128(config); + msx1(TMS9128, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2305,7 +2219,7 @@ ROM_START (expert11) ROM_END MACHINE_CONFIG_START(msx_state::expert11) - msx_tms9128(config); + msx1(TMS9128, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2325,7 +2239,7 @@ ROM_START (expert13) ROM_END MACHINE_CONFIG_START(msx_state::expert13) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -2346,7 +2260,7 @@ ROM_START (expertdp) ROM_END MACHINE_CONFIG_START(msx_state::expertdp) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: mb8877a, 1 3.5" DSDD drive // 2 Cartridge slots @@ -2374,7 +2288,7 @@ ROM_START (expertpl) ROM_END MACHINE_CONFIG_START(msx_state::expertpl) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2398,7 +2312,7 @@ ROM_START (mbh2) ROM_END MACHINE_CONFIG_START(msx_state::mbh2) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2421,7 +2335,7 @@ ROM_START (mbh25) ROM_END MACHINE_CONFIG_START(msx_state::mbh25) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2442,7 +2356,7 @@ ROM_START (mbh50) ROM_END MACHINE_CONFIG_START(msx_state::mbh50) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2464,7 +2378,7 @@ ROM_START (jvchc7gb) ROM_END MACHINE_CONFIG_START(msx_state::jvchc7gb) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2485,7 +2399,7 @@ ROM_START (mlf48) ROM_END MACHINE_CONFIG_START(msx_state::mlf48) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2506,7 +2420,7 @@ ROM_START (mlf80) ROM_END MACHINE_CONFIG_START(msx_state::mlf80) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2527,7 +2441,7 @@ ROM_START (mlf110) ROM_END MACHINE_CONFIG_START(msx_state::mlf110) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2549,7 +2463,7 @@ ROM_START (mlf120) ROM_END MACHINE_CONFIG_START(msx_state::mlf120) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2? Cartridge slots @@ -2571,7 +2485,7 @@ ROM_START (mlfx1) ROM_END MACHINE_CONFIG_START(msx_state::mlfx1) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2592,7 +2506,7 @@ ROM_START (cf1200) ROM_END MACHINE_CONFIG_START(msx_state::cf1200) - msx_tms9918a(config); + msx1(TMS9918A, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -2613,7 +2527,7 @@ ROM_START (cf2000) ROM_END MACHINE_CONFIG_START(msx_state::cf2000) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2633,7 +2547,7 @@ ROM_START (cf2700) ROM_END MACHINE_CONFIG_START(msx_state::cf2700) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2654,7 +2568,7 @@ ROM_START (cf3000) ROM_END MACHINE_CONFIG_START(msx_state::cf3000) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2675,7 +2589,7 @@ ROM_START (cf3300) ROM_END MACHINE_CONFIG_START(msx_state::cf3300) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: mb8877a, 1 3.5" SSDD drive // 2 Cartridge slots @@ -2701,7 +2615,7 @@ ROM_START (fs1300) ROM_END MACHINE_CONFIG_START(msx_state::fs1300) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2727,7 +2641,7 @@ ROM_START (fs4000) ROM_END MACHINE_CONFIG_START(msx_state::fs4000) - msx_tms9128(config); + msx1(TMS9128, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2755,7 +2669,7 @@ ROM_START (fs4000a) ROM_END MACHINE_CONFIG_START(msx_state::fs4000a) - msx_tms9128(config); + msx1(TMS9128, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2778,7 +2692,7 @@ ROM_START (phc2) ROM_END MACHINE_CONFIG_START(msx_state::phc2) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -2799,7 +2713,7 @@ ROM_START (phc28) ROM_END MACHINE_CONFIG_START(msx_state::phc28) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -2820,7 +2734,7 @@ ROM_START (cf2700g) ROM_END MACHINE_CONFIG_START(msx_state::cf2700g) - msx_tms9929(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -2843,7 +2757,7 @@ ROM_START (perfect1) ROM_END MACHINE_CONFIG_START(msx_state::perfect1) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 dribes // 1 Cartridge slot @@ -2864,7 +2778,7 @@ ROM_START (nms801) ROM_END MACHINE_CONFIG_START(msx_state::nms801) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 0 Cartridge slots @@ -2882,7 +2796,7 @@ ROM_START (vg8000) ROM_END MACHINE_CONFIG_START(msx_state::vg8000) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -2904,7 +2818,7 @@ ROM_START (vg8010) ROM_END MACHINE_CONFIG_START(msx_state::vg8010) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -2926,7 +2840,7 @@ ROM_START (vg8010f) ROM_END MACHINE_CONFIG_START(msx_state::vg8010f) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -2948,7 +2862,7 @@ ROM_START (vg802000) ROM_END MACHINE_CONFIG_START(msx_state::vg802000) - msx_tms9929(config); + msx1(TMS9929A, config); // YM2149 // FDC: None, 0 drives // 2 Cartridge slots @@ -2969,7 +2883,7 @@ ROM_START (vg802020) ROM_END MACHINE_CONFIG_START(msx_state::vg802020) - msx_tms9129(config); + msx1(TMS9129, config); // YM2149 (in S-3527 MSX Engine) // FDC: None, 0 drives // 2 Cartridge slots @@ -2991,7 +2905,7 @@ ROM_START (vg8020f) ROM_END MACHINE_CONFIG_START(msx_state::vg8020f) - msx_pal(config); + msx1(TMS9929A, config); // YM2149 (in S-3527 MSX Engine) // FDC: None, 0 drives // 2 Cartridge slots @@ -3015,7 +2929,7 @@ ROM_START (piopx7) ROM_END MACHINE_CONFIG_START(msx_state::piopx7) - msx_pal(config); + msx1(TMS9929A, config); // TMS9129NL VDP with sync/overlay interface // AY-3-8910 PSG // Pioneer System Remote (SR) system control interface @@ -3060,7 +2974,7 @@ ROM_START (piopx7uk) ROM_END MACHINE_CONFIG_START(msx_state::piopx7uk) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3084,7 +2998,7 @@ ROM_START (piopxv60) ROM_END MACHINE_CONFIG_START(msx_state::piopxv60) - msx_tms9128(config); + msx1(TMS9128, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3107,7 +3021,7 @@ ROM_START (spc800) ROM_END MACHINE_CONFIG_START(msx_state::spc800) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3129,7 +3043,7 @@ ROM_START (mpc64) ROM_END MACHINE_CONFIG_START(msx_state::mpc64) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3150,7 +3064,7 @@ ROM_START (mpc100) ROM_END MACHINE_CONFIG_START(msx_state::mpc100) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3171,7 +3085,7 @@ ROM_START (mpc200) ROM_END MACHINE_CONFIG_START(msx_state::mpc200) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2? Cartridge slots @@ -3194,7 +3108,7 @@ ROM_START (mpc200sp) ROM_END MACHINE_CONFIG_START(msx_state::mpc200sp) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2? Cartridge slots @@ -3215,7 +3129,7 @@ ROM_START (phc28l) ROM_END MACHINE_CONFIG_START(msx_state::phc28l) - msx_tms9929(config); + msx1(TMS9929A, config); // YM2149 // FDC: None, 0 drives // 2 Cartridge slots @@ -3236,7 +3150,7 @@ ROM_START (phc28s) ROM_END MACHINE_CONFIG_START(msx_state::phc28s) - msx_tms9929(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3257,7 +3171,7 @@ ROM_START (mpc10) ROM_END MACHINE_CONFIG_START(msx_state::mpc10) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3278,7 +3192,7 @@ ROM_START (hotbit11) ROM_END MACHINE_CONFIG_START(msx_state::hotbit11) - msx_tms9128(config); + msx1(TMS9128, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3299,7 +3213,7 @@ ROM_START (hotbit12) ROM_END MACHINE_CONFIG_START(msx_state::hotbit12) - msx_tms9128(config); + msx1(TMS9128, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3320,7 +3234,7 @@ ROM_START (hotbi13b) ROM_END MACHINE_CONFIG_START(msx_state::hotbi13b) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3341,7 +3255,7 @@ ROM_START (hotbi13p) ROM_END MACHINE_CONFIG_START(msx_state::hotbi13p) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3362,7 +3276,7 @@ ROM_START (hb10) ROM_END MACHINE_CONFIG_START(msx_state::hb10) - msx_ntsc(config); + msx1(TMS9928A, config); // YM2149 (in S-1985 MSX-Engine) // FDC: None, 0 drives // 2 Cartridge slots @@ -3386,7 +3300,7 @@ ROM_START (hb10p) ROM_END MACHINE_CONFIG_START(msx_state::hb10p) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3408,7 +3322,7 @@ ROM_START (hb20p) ROM_END MACHINE_CONFIG_START(msx_state::hb20p) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3432,7 +3346,7 @@ ROM_START (hb201) ROM_END MACHINE_CONFIG_START(msx_state::hb201) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3455,7 +3369,7 @@ ROM_START (hb201p) ROM_END MACHINE_CONFIG_START(msx_state::hb201p) - msx_pal(config); + msx1(TMS9929A, config); // YM2149 // FDC: None, 0 drives // 2 Cartridge slots @@ -3477,7 +3391,7 @@ ROM_START (hb501p) ROM_END MACHINE_CONFIG_START(msx_state::hb501p) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3499,7 +3413,7 @@ ROM_START (hb55) ROM_END MACHINE_CONFIG_START(msx_state::hb55) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3522,7 +3436,7 @@ ROM_START (hb55d) ROM_END MACHINE_CONFIG_START(msx_state::hb55d) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3546,7 +3460,7 @@ ROM_START (hb55p) ROM_END MACHINE_CONFIG_START(msx_state::hb55p) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -3569,7 +3483,7 @@ ROM_START (hb75d) ROM_END MACHINE_CONFIG_START(msx_state::hb75d) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3593,7 +3507,7 @@ ROM_START (hb75p) ROM_END MACHINE_CONFIG_START(msx_state::hb75p) - msx_tms9929(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots? @@ -3616,7 +3530,7 @@ ROM_START (hb101p) ROM_END MACHINE_CONFIG_START(msx_state::hb101p) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -3639,7 +3553,7 @@ ROM_START (hb701fd) ROM_END MACHINE_CONFIG_START(msx_state::hb701fd) - msx_tms9928(config); + msx1(TMS9928A, config); // YM2149 (in S-1985) // FDC: WD2793?, 1 3.5" SSDD drive // 2 Cartridge slots @@ -3667,7 +3581,7 @@ ROM_START (svi728) ROM_END MACHINE_CONFIG_START(msx_state::svi728) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910 // FDC: None, 0 drives // 1 Cartridge slots, 1 Expansion slot (eg for SVI-707) @@ -3692,7 +3606,7 @@ ROM_START (svi738) ROM_END MACHINE_CONFIG_START(msx_state::svi738) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: wd1793, 1 3.5" SSDD drive // 2 Cartridge slots @@ -3725,7 +3639,7 @@ ROM_START (svi738ar) ROM_END MACHINE_CONFIG_START(msx_state::svi738ar) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: wd2793, 1 3.5" SSDD drive // 2 Cartridge slots @@ -3758,7 +3672,7 @@ ROM_START (svi738dk) ROM_END MACHINE_CONFIG_START(msx_state::svi738dk) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: wd2793, 1 3.5" SSDD drive // 2 Cartridge slots @@ -3790,7 +3704,7 @@ ROM_START (svi738sp) ROM_END MACHINE_CONFIG_START(msx_state::svi738sp) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: wd2793, 1 3.5" SSDD drive // 2 Cartridge slots @@ -3822,7 +3736,7 @@ ROM_START (svi738sw) ROM_END MACHINE_CONFIG_START(msx_state::svi738sw) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: wd2793, 1 3.5" SSDD drive // 2 Cartridge slots @@ -3854,7 +3768,7 @@ ROM_START (svi738pl) ROM_END MACHINE_CONFIG_START(msx_state::svi738pl) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: wd2793, 1 3.5" SSDD drive // 2 Cartridge slots @@ -3883,7 +3797,7 @@ ROM_START (tadpc200) ROM_END MACHINE_CONFIG_START(msx_state::tadpc200) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910 // FDC: None, 0 drives // 2 Cartridge slots @@ -3904,7 +3818,7 @@ ROM_START (tadpc20a) ROM_END MACHINE_CONFIG_START(msx_state::tadpc20a) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3926,7 +3840,7 @@ ROM_START (hx10) ROM_END MACHINE_CONFIG_START(msx_state::hx10) - msx_pal(config); + msx1(TMS9929A, config); // AY8910 // FDC: None, 0 drives // 1 Cartridge slot, 1 Toshiba Expension slot @@ -3947,7 +3861,7 @@ ROM_START (hx10d) ROM_END MACHINE_CONFIG_START(msx_state::hx10d) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3968,7 +3882,7 @@ ROM_START (hx10dp) ROM_END MACHINE_CONFIG_START(msx_state::hx10dp) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -3989,7 +3903,7 @@ ROM_START (hx10e) ROM_END MACHINE_CONFIG_START(msx_state::hx10e) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4010,7 +3924,7 @@ ROM_START (hx10f) ROM_END MACHINE_CONFIG_START(msx_state::hx10f) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4031,7 +3945,7 @@ ROM_START (hx10s) ROM_END MACHINE_CONFIG_START(msx_state::hx10s) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4052,7 +3966,7 @@ ROM_START (hx10sa) ROM_END MACHINE_CONFIG_START(msx_state::hx10sa) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4074,7 +3988,7 @@ ROM_START (hx20) ROM_END MACHINE_CONFIG_START(msx_state::hx20) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -4099,7 +4013,7 @@ ROM_START (hx20i) ROM_END MACHINE_CONFIG_START(msx_state::hx20i) - msx_tms9129(config); + msx1(TMS9129, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -4127,7 +4041,7 @@ ROM_START (hx21) ROM_END MACHINE_CONFIG_START(msx_state::hx21) - msx_tms9928(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -4150,7 +4064,7 @@ ROM_START (hx21i) ROM_END MACHINE_CONFIG_START(msx_state::hx21i) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -4177,7 +4091,7 @@ ROM_START (hx22) ROM_END MACHINE_CONFIG_START(msx_state::hx22) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -4201,7 +4115,7 @@ ROM_START (hx22i) ROM_END MACHINE_CONFIG_START(msx_state::hx22i) - msx_tms9929(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots @@ -4226,7 +4140,7 @@ ROM_START (hc5) ROM_END MACHINE_CONFIG_START(msx_state::hc5) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives, // 2 Cartridge slots? @@ -4247,7 +4161,7 @@ ROM_START (hc6) ROM_END MACHINE_CONFIG_START(msx_state::hc6) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives, // 2 Cartridge slots? @@ -4268,7 +4182,7 @@ ROM_START (hc7) ROM_END MACHINE_CONFIG_START(msx_state::hc7) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives, // 2 Cartridge slots? @@ -4289,7 +4203,7 @@ ROM_START (cx5f1) ROM_END MACHINE_CONFIG_START(msx_state::cx5f1) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 1 Cartridge slot? @@ -4312,7 +4226,7 @@ ROM_START (cx5f) ROM_END MACHINE_CONFIG_START(msx_state::cx5f) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 1 Cartridge slot? @@ -4335,7 +4249,7 @@ ROM_START (cx5m) ROM_END MACHINE_CONFIG_START(msx_state::cx5m) - msx_tms9929(config); + msx1(TMS9929A, config); // YM2149 // FDC: None, 0 drives // 2 Cartridge slots @@ -4360,7 +4274,7 @@ ROM_START (cx5m128) ROM_END MACHINE_CONFIG_START(msx_state::cx5m128) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4385,7 +4299,7 @@ ROM_START (cx5m2) ROM_END MACHINE_CONFIG_START(msx_state::cx5m2) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4409,7 +4323,7 @@ ROM_START (yis303) ROM_END MACHINE_CONFIG_START(msx_state::yis303) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4432,7 +4346,7 @@ ROM_START (yis503) ROM_END MACHINE_CONFIG_START(msx_state::yis503) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4454,7 +4368,7 @@ ROM_START (yis503f) ROM_END MACHINE_CONFIG_START(msx_state::yis503f) - msx_pal(config); + msx1(TMS9929A, config); // YM2149 // FDC: None, 0 drives // 2 Cartridge slots @@ -4475,7 +4389,7 @@ ROM_START (yis503ii) ROM_END MACHINE_CONFIG_START(msx_state::yis503ii) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4498,7 +4412,7 @@ ROM_START (y503iir) ROM_END MACHINE_CONFIG_START(msx_state::y503iir) - msx_pal(config); + msx1(TMS9929A, config); // YM2149 (in S-3527 MSX Engine) // FDC: wd2793/mb8877?, 1 3.5" DSDD drive // 2 Cartridge slots @@ -4530,7 +4444,7 @@ ROM_START (y503iir2) ROM_END MACHINE_CONFIG_START(msx_state::y503iir2) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: wd2793/mb8877?, 1 3.5" DSDD drive? // 2 Cartridge slots? @@ -4557,7 +4471,7 @@ ROM_START (yis503m) ROM_END MACHINE_CONFIG_START(msx_state::yis503m) - msx_pal(config); + msx1(TMS9929A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? @@ -4579,7 +4493,7 @@ ROM_START (yc64) ROM_END MACHINE_CONFIG_START(msx_state::yc64) - msx_pal(config); + msx1(TMS9929A, config); // YM2149 // FDC: None, 0 drives // 1 Cartridge slot (slot 1) @@ -4599,7 +4513,7 @@ ROM_START (mx64) ROM_END MACHINE_CONFIG_START(msx_state::mx64) - msx_ntsc(config); + msx1(TMS9928A, config); // AY8910/YM2149? // FDC: None, 0 drives // 2 Cartridge slots? diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp index cd65aad9c73..232bf5be54e 100644 --- a/src/mame/drivers/mtx.cpp +++ b/src/mame/drivers/mtx.cpp @@ -295,11 +295,11 @@ MACHINE_CONFIG_START(mtx_state::mtx512) MCFG_MACHINE_RESET_OVERRIDE(mtx_state,mtx512) /* video hardware */ - MCFG_DEVICE_ADD( "tms9929a", TMS9929A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, mtx_state, mtx_tms9929a_interrupt)) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9929a", tms9929a_device, screen_update ) + tms9929a_device &vdp(TMS9929A(config, "tms9929a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(mtx_state::mtx_tms9929a_interrupt)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/myvision.cpp b/src/mame/drivers/myvision.cpp index d2fa4634631..e5e1c874ff3 100644 --- a/src/mame/drivers/myvision.cpp +++ b/src/mame/drivers/myvision.cpp @@ -221,11 +221,11 @@ MACHINE_CONFIG_START(myvision_state::myvision) MCFG_DEVICE_IO_MAP(myvision_io) /* video hardware */ - MCFG_DEVICE_ADD( "tms9918", TMS9918A, XTAL(10'738'635) / 2 ) /* Exact model not verified */ - MCFG_TMS9928A_VRAM_SIZE(0x4000) /* Not verified */ - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9918", tms9918a_device, screen_update ) + tms9918a_device &vdp(TMS9918A(config, "tms9918", XTAL(10'738'635))); /* Exact model not verified */ + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); /* Not verified */ + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pachifev.cpp b/src/mame/drivers/pachifev.cpp index 47f93847d10..dda8e0b9c67 100644 --- a/src/mame/drivers/pachifev.cpp +++ b/src/mame/drivers/pachifev.cpp @@ -358,11 +358,12 @@ MACHINE_CONFIG_START(pachifev_state::pachifev) m_maincpu->set_addrmap(AS_IO, &pachifev_state::pachifev_cru); /* video hardware */ - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pachifev_state, vblank_w)) + tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.screen_vblank().set(FUNC(pachifev_state::vblank_w)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pencil2.cpp b/src/mame/drivers/pencil2.cpp index 0132c195063..624e697cc44 100644 --- a/src/mame/drivers/pencil2.cpp +++ b/src/mame/drivers/pencil2.cpp @@ -318,10 +318,10 @@ MACHINE_CONFIG_START(pencil2_state::pencil2) MCFG_DEVICE_IO_MAP(io_map) /* video hardware */ - MCFG_DEVICE_ADD( "tms9928a", TMS9929A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) + tms9929a_device &vdp(TMS9929A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pengadvb.cpp b/src/mame/drivers/pengadvb.cpp index 2e1d50dde51..409417ee831 100644 --- a/src/mame/drivers/pengadvb.cpp +++ b/src/mame/drivers/pengadvb.cpp @@ -234,11 +234,11 @@ MACHINE_CONFIG_START(pengadvb_state::pengadvb) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pengadvb_state, pengadvb_ppi_port_c_w)) /* video hardware */ - MCFG_DEVICE_ADD("tms9128", TMS9128, XTAL(10'738'635)/2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE("tms9128", tms9128_device, screen_update) + tms9128_device &vdp(TMS9128(config, "tms9128", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pv2000.cpp b/src/mame/drivers/pv2000.cpp index 33798a40617..faaa9c7159d 100644 --- a/src/mame/drivers/pv2000.cpp +++ b/src/mame/drivers/pv2000.cpp @@ -394,11 +394,11 @@ MACHINE_CONFIG_START(pv2000_state::pv2000) MCFG_DEVICE_IO_MAP(pv2000_io_map) // video hardware - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, pv2000_state, pv2000_vdp_interrupt)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) + tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set(FUNC(pv2000_state::pv2000_vdp_interrupt)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/re900.cpp b/src/mame/drivers/re900.cpp index ece86371928..6c5d7b34554 100644 --- a/src/mame/drivers/re900.cpp +++ b/src/mame/drivers/re900.cpp @@ -397,11 +397,11 @@ MACHINE_CONFIG_START(re900_state::re900) MCFG_MCS51_PORT_P0_OUT_CB(WRITE8(*this, re900_state, cpu_port_0_w)) /* video hardware */ - MCFG_DEVICE_ADD( "tms9128", TMS9128, XTAL(10'738'635) / 2 ) /* TMS9128NL on the board */ - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9128", tms9128_device, screen_update ) + tms9128_device &vdp(TMS9128(config, "tms9128", VDP_CLOCK)); /* TMS9128NL on the board */ + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + //vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); MCFG_NVRAM_ADD_0FILL("nvram") diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp index 24be41b719c..ee03d34b849 100644 --- a/src/mame/drivers/sg1000.cpp +++ b/src/mame/drivers/sg1000.cpp @@ -534,11 +534,11 @@ MACHINE_CONFIG_START(sg1000_state::sg1000) MCFG_DEVICE_IO_MAP(sg1000_io_map) /* video hardware */ - MCFG_DEVICE_ADD( TMS9918A_TAG, TMS9918A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS9918A_TAG, tms9918a_device, screen_update ) + tms9918a_device &vdp(TMS9918A(config, TMS9918A_TAG, XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -586,11 +586,11 @@ MACHINE_CONFIG_START(sc3000_state::sc3000) MCFG_DEVICE_IO_MAP(sc3000_io_map) /* video hardware */ - MCFG_DEVICE_ADD( TMS9918A_TAG, TMS9918A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS9918A_TAG, tms9918a_device, screen_update ) + tms9918a_device &vdp(TMS9918A(config, TMS9918A_TAG, XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -623,11 +623,11 @@ MACHINE_CONFIG_START(sf7000_state::sf7000) MCFG_DEVICE_IO_MAP(sf7000_io_map) /* video hardware */ - MCFG_DEVICE_ADD( TMS9918A_TAG, TMS9918A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) - MCFG_TMS9928A_SCREEN_ADD_NTSC( SCREEN_TAG ) - MCFG_SCREEN_UPDATE_DEVICE( TMS9918A_TAG, tms9918a_device, screen_update ) + tms9918a_device &vdp(TMS9918A(config, TMS9918A_TAG, XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp index dda6d2a306e..79b489ac71f 100644 --- a/src/mame/drivers/sg1000a.cpp +++ b/src/mame/drivers/sg1000a.cpp @@ -481,12 +481,11 @@ MACHINE_CONFIG_START(sg1000a_state::sg1000a) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, sg1000a_state, sg1000a_coin_counter_w)) /* video hardware */ - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) + tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp index e66ec98b796..846ea103c7b 100644 --- a/src/mame/drivers/svi318.cpp +++ b/src/mame/drivers/svi318.cpp @@ -71,10 +71,11 @@ public: m_keyboard_row(0) {} - void svi328n(machine_config &config); void svi318(machine_config &config); + void svi328n(machine_config &config); + void svi318p(machine_config &config); void svi318n(machine_config &config); - void svi328(machine_config &config); + void svi328p(machine_config &config); private: DECLARE_READ8_MEMBER( ppi_port_a_r ); @@ -544,13 +545,6 @@ MACHINE_CONFIG_START(svi3x8_state::svi318) MCFG_I8255_IN_PORTB_CB(READ8(*this, svi3x8_state, ppi_port_b_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, svi3x8_state, ppi_port_c_w)) - // video hardware - MCFG_DEVICE_ADD("vdp", TMS9929A, XTAL(10'738'635) / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, svi3x8_state, intvdp_w)) - MCFG_TMS9928A_SCREEN_ADD_PAL("screen") - MCFG_SCREEN_UPDATE_DEVICE("vdp", tms9929a_device, screen_update) - // sound hardware SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.25); @@ -583,20 +577,29 @@ MACHINE_CONFIG_START(svi3x8_state::svi318) MCFG_SVI_EXPANDER_EXCSW_HANDLER(WRITE8(*this, svi3x8_state, excs_w)) MACHINE_CONFIG_END -MACHINE_CONFIG_START(svi3x8_state::svi318n) - svi318(config); - MCFG_DEVICE_REMOVE("vdp") - MCFG_DEVICE_REMOVE("screen") - MCFG_DEVICE_ADD("vdp", TMS9928A, XTAL(10'738'635) / 2) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_OUT_INT_LINE_CB(WRITELINE(*this, svi3x8_state, intvdp_w)) - MCFG_TMS9928A_SCREEN_ADD_NTSC("screen") - MCFG_SCREEN_UPDATE_DEVICE("vdp", tms9928a_device, screen_update) -MACHINE_CONFIG_END - -void svi3x8_state::svi328(machine_config &config) +void svi3x8_state::svi318p(machine_config &config) { svi318(config); + + // video hardware + TMS9929A(config, m_vdp, XTAL(10'738'635)).set_screen("screen"); + m_vdp->set_vram_size(0x4000); + m_vdp->int_callback().set(FUNC(svi3x8_state::intvdp_w)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); +} + +void svi3x8_state::svi318n(machine_config &config) +{ + svi318(config); + TMS9928A(config, m_vdp, XTAL(10'738'635)).set_screen("screen"); + m_vdp->set_vram_size(0x4000); + m_vdp->int_callback().set(FUNC(svi3x8_state::intvdp_w)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); +} + +void svi3x8_state::svi328p(machine_config &config) +{ + svi318p(config); m_ram->set_default_size("64K"); } @@ -632,7 +635,7 @@ ROM_END //************************************************************************** // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1983, svi318, 0, 0, svi318, svi318, svi3x8_state, empty_init, "Spectravideo", "SVI-318 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, svi318, 0, 0, svi318p, svi318, svi3x8_state, empty_init, "Spectravideo", "SVI-318 (PAL)", MACHINE_SUPPORTS_SAVE ) COMP( 1983, svi318n, svi318, 0, svi318n, svi318, svi3x8_state, empty_init, "Spectravideo", "SVI-318 (NTSC)", MACHINE_SUPPORTS_SAVE ) -COMP( 1983, svi328, 0, 0, svi328, svi328, svi3x8_state, empty_init, "Spectravideo", "SVI-328 (PAL)", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, svi328, 0, 0, svi328p, svi328, svi3x8_state, empty_init, "Spectravideo", "SVI-328 (PAL)", MACHINE_SUPPORTS_SAVE ) COMP( 1983, svi328n, svi328, 0, svi328n, svi328, svi3x8_state, empty_init, "Spectravideo", "SVI-328 (NTSC)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp index 6d951a9fa7a..3de24ce20b4 100644 --- a/src/mame/drivers/ti99_4x.cpp +++ b/src/mame/drivers/ti99_4x.cpp @@ -940,47 +940,31 @@ void ti99_4x_state::ti99_4(machine_config& config) /* US version: 60 Hz, NTSC */ -void ti99_4x_state::ti99_4_60hz(machine_config& config) +void ti99_4x_state::ti99_4_60hz(machine_config &config) { ti99_4(config); - TMS9918(config, m_video, XTAL(10'738'635) / 2); - m_video->out_int_line_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); - m_video->out_gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); + TMS9918(config, m_video, XTAL(10'738'635)); m_video->set_vram_size(0x4000); + m_video->int_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); + m_video->gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); m_video->set_screen(TI_SCREEN_TAG); - screen_device& screen(SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(10'738'635) / 2, \ - tms9928a_device::TOTAL_HORZ, \ - tms9928a_device::HORZ_DISPLAY_START-12, \ - tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_NTSC, \ - tms9928a_device::VERT_DISPLAY_START_NTSC - 12, \ - tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ); - screen.set_screen_update(TI_VDP_TAG, FUNC(tms9928a_device::screen_update)); + SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER); } /* European version: 50 Hz, PAL */ -void ti99_4x_state::ti99_4_50hz(machine_config& config) +void ti99_4x_state::ti99_4_50hz(machine_config &config) { ti99_4(config); - TMS9929(config, m_video, XTAL(10'738'635) / 2); - m_video->out_int_line_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); - m_video->out_gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); + TMS9929(config, m_video, XTAL(10'738'635)); m_video->set_vram_size(0x4000); + m_video->int_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); + m_video->gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); m_video->set_screen(TI_SCREEN_TAG); - screen_device& screen(SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(10'738'635) / 2, \ - tms9928a_device::TOTAL_HORZ, \ - tms9928a_device::HORZ_DISPLAY_START-12, \ - tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_PAL, \ - tms9928a_device::VERT_DISPLAY_START_PAL - 12, \ - tms9928a_device::VERT_DISPLAY_START_PAL + 192 + 12 ); - screen.set_screen_update(TI_VDP_TAG, FUNC(tms9928a_device::screen_update)); + SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER); } /********************************************************************** @@ -1015,47 +999,31 @@ void ti99_4x_state::ti99_4a(machine_config& config) /* US version: 60 Hz, NTSC */ -void ti99_4x_state::ti99_4a_60hz(machine_config& config) +void ti99_4x_state::ti99_4a_60hz(machine_config &config) { ti99_4a(config); - TMS9918A(config, m_video, XTAL(10'738'635) / 2); - m_video->out_int_line_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); - m_video->out_gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); + TMS9918A(config, m_video, XTAL(10'738'635)); m_video->set_vram_size(0x4000); + m_video->int_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); + m_video->gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); m_video->set_screen(TI_SCREEN_TAG); - screen_device& screen(SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(10'738'635) / 2, \ - tms9928a_device::TOTAL_HORZ, \ - tms9928a_device::HORZ_DISPLAY_START-12, \ - tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_NTSC, \ - tms9928a_device::VERT_DISPLAY_START_NTSC - 12, \ - tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ); - screen.set_screen_update(TI_VDP_TAG, FUNC(tms9928a_device::screen_update)); + SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER); } /* European version: 50 Hz, PAL */ -void ti99_4x_state::ti99_4a_50hz(machine_config& config) +void ti99_4x_state::ti99_4a_50hz(machine_config &config) { ti99_4a(config); - TMS9929A(config, m_video, XTAL(10'738'635) / 2); - m_video->out_int_line_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); - m_video->out_gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); + TMS9929A(config, m_video, XTAL(10'738'635)); m_video->set_vram_size(0x4000); + m_video->int_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); + m_video->gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); m_video->set_screen(TI_SCREEN_TAG); - screen_device& screen(SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(10'738'635) / 2, \ - tms9928a_device::TOTAL_HORZ, \ - tms9928a_device::HORZ_DISPLAY_START-12, \ - tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_PAL, \ - tms9928a_device::VERT_DISPLAY_START_PAL - 12, \ - tms9928a_device::VERT_DISPLAY_START_PAL + 192 + 12 ); - screen.set_screen_update(TI_VDP_TAG, FUNC(tms9928a_device::screen_update)); + SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER); } /************************************************************************ @@ -1071,26 +1039,18 @@ void ti99_4x_state::ti99_4a_50hz(machine_config& config) US version: 60 Hz, NTSC There were no European versions. */ -void ti99_4x_state::ti99_4qi_60hz(machine_config& config) +void ti99_4x_state::ti99_4qi_60hz(machine_config &config) { ti99_4a(config); m_model = MODEL_4QI; - TMS9918A(config, m_video, XTAL(10'738'635) / 2); - m_video->out_int_line_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); - m_video->out_gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); + TMS9918A(config, m_video, XTAL(10'738'635)); m_video->set_vram_size(0x4000); + m_video->int_callback().set(FUNC(ti99_4x_state::video_interrupt_in)); + m_video->gromclk_callback().set(FUNC(ti99_4x_state::gromclk_in)); m_video->set_screen(TI_SCREEN_TAG); - screen_device& screen(SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(10'738'635) / 2, \ - tms9928a_device::TOTAL_HORZ, \ - tms9928a_device::HORZ_DISPLAY_START-12, \ - tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_NTSC, \ - tms9928a_device::VERT_DISPLAY_START_NTSC - 12, \ - tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ); - screen.set_screen_update(TI_VDP_TAG, FUNC(tms9928a_device::screen_update)); + SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER); } /************************************************************************ diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp index 2ef36476e1a..3e13fab920d 100644 --- a/src/mame/drivers/ti99_8.cpp +++ b/src/mame/drivers/ti99_8.cpp @@ -842,47 +842,31 @@ void ti99_8_state::ti99_8(machine_config& config) /* TI-99/8 US version (NTSC, 60 Hz) */ -void ti99_8_state::ti99_8_60hz(machine_config& config) +void ti99_8_state::ti99_8_60hz(machine_config &config) { ti99_8(config); // Video hardware - tms9928a_device& video(TMS9118(config, TI_VDP_TAG, XTAL(10'738'635) / 2)); - video.out_int_line_callback().set(FUNC(ti99_8_state::video_interrupt)); + tms9118_device &video(TMS9118(config, TI_VDP_TAG, XTAL(10'738'635))); video.set_vram_size(0x4000); - video.set_screen(TI_SCREEN_TAG); + video.int_callback().set(FUNC(ti99_8_state::video_interrupt)); + video.set_screen("screen"); - screen_device& screen(SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(10'738'635) / 2, \ - tms9928a_device::TOTAL_HORZ, \ - tms9928a_device::HORZ_DISPLAY_START-12, \ - tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_NTSC, \ - tms9928a_device::VERT_DISPLAY_START_NTSC - 12, \ - tms9928a_device::VERT_DISPLAY_START_NTSC + 192 + 12 ); - screen.set_screen_update(TI_VDP_TAG, FUNC(tms9928a_device::screen_update)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); } /* TI-99/8 European version (PAL, 50 Hz) */ -void ti99_8_state::ti99_8_50hz(machine_config& config) +void ti99_8_state::ti99_8_50hz(machine_config &config) { ti99_8(config); // Video hardware - tms9928a_device& video(TMS9129(config, TI_VDP_TAG, XTAL(10'738'635) / 2)); - video.out_int_line_callback().set(FUNC(ti99_8_state::video_interrupt)); + tms9129_device &video(TMS9129(config, TI_VDP_TAG, XTAL(10'738'635))); video.set_vram_size(0x4000); - video.set_screen(TI_SCREEN_TAG); + video.int_callback().set(FUNC(ti99_8_state::video_interrupt)); + video.set_screen("screen"); - screen_device& screen(SCREEN(config, TI_SCREEN_TAG, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(10'738'635) / 2, \ - tms9928a_device::TOTAL_HORZ, \ - tms9928a_device::HORZ_DISPLAY_START-12, \ - tms9928a_device::HORZ_DISPLAY_START + 256 + 12, \ - tms9928a_device::TOTAL_VERT_PAL, \ - tms9928a_device::VERT_DISPLAY_START_PAL - 12, \ - tms9928a_device::VERT_DISPLAY_START_PAL + 192 + 12 ); - screen.set_screen_update(TI_VDP_TAG, FUNC(tms9928a_device::screen_update)); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); } /* diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp index 1c92e836734..ab41a5286d8 100644 --- a/src/mame/drivers/tm990189.cpp +++ b/src/mame/drivers/tm990189.cpp @@ -891,10 +891,11 @@ MACHINE_CONFIG_START(tm990189_state::tm990_189_v) MCFG_MACHINE_RESET_OVERRIDE(tm990189_state, tm990_189_v ) /* video hardware */ - MCFG_DEVICE_ADD( "tms9918", TMS9918, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9918", tms9918_device, screen_update ) + tms9918_device &vdp(TMS9918(config, "tms9918", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); + config.set_default_layout(layout_tm990189v); /* sound hardware */ diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp index dfb2aea74fe..1878f588a1e 100644 --- a/src/mame/drivers/tutor.cpp +++ b/src/mame/drivers/tutor.cpp @@ -753,10 +753,10 @@ MACHINE_CONFIG_START(tutor_state::tutor) m_maincpu->set_addrmap(AS_IO, &tutor_state::tutor_io); /* video hardware */ - MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL(10'738'635) / 2 ) - MCFG_TMS9928A_VRAM_SIZE(0x4000) - MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" ) - MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update ) + tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); + vdp.set_screen("screen"); + vdp.set_vram_size(0x4000); + SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/includes/msx.h b/src/mame/includes/msx.h index 45fd314c5ab..79f1d8ec175 100644 --- a/src/mame/includes/msx.h +++ b/src/mame/includes/msx.h @@ -404,15 +404,7 @@ public: void hbf700p(machine_config &config); void msx(machine_config &config); - void msx_ntsc(machine_config &config); - void msx_tms9118(machine_config &config); - void msx_tms9128(machine_config &config); - void msx_tms9918(machine_config &config); - void msx_tms9918a(machine_config &config); - void msx_tms9928(machine_config &config); - void msx_pal(machine_config &config); - void msx_tms9129(machine_config &config); - void msx_tms9929(machine_config &config); + template void msx1(VDPType &vdp_type, machine_config &config); void msx2(machine_config &config); void msx2p(machine_config &config); void msx2_pal(machine_config &config);