diff options
Diffstat (limited to 'src/mame/drivers/special.cpp')
-rw-r--r-- | src/mame/drivers/special.cpp | 118 |
1 files changed, 57 insertions, 61 deletions
diff --git a/src/mame/drivers/special.cpp b/src/mame/drivers/special.cpp index ac625fa7cb5..60378882403 100644 --- a/src/mame/drivers/special.cpp +++ b/src/mame/drivers/special.cpp @@ -364,32 +364,30 @@ static void specimx_floppies(device_slot_interface &device) } /* Machine driver */ -void special_state::special(machine_config &config) -{ +MACHINE_CONFIG_START(special_state::special) /* basic machine hardware */ - I8080(config, m_maincpu, 2000000); - m_maincpu->set_addrmap(AS_PROGRAM, &special_state::specialist_mem); - + MCFG_DEVICE_ADD("maincpu", I8080, 2000000) + MCFG_DEVICE_PROGRAM_MAP(specialist_mem) MCFG_MACHINE_RESET_OVERRIDE(special_state, special ) /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_size(384, 256); - screen.set_visarea(0, 384-1, 0, 256-1); - screen.set_screen_update(FUNC(special_state::screen_update_special)); - screen.set_palette(m_palette); + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(384, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1) + MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_special) + MCFG_SCREEN_PALETTE(m_palette) PALETTE(config, m_palette, palette_device::MONOCHROME); /* audio hardware */ SPEAKER(config, "speaker").front_center(); DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.0625); - voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); - vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) - WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25); + WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25); /* Devices */ I8255(config, m_ppi); @@ -400,25 +398,25 @@ void special_state::special(machine_config &config) m_ppi->in_pc_callback().set(FUNC(special_state::specialist_8255_portc_r)); m_ppi->out_pc_callback().set(FUNC(special_state::specialist_8255_portc_w)); - CASSETTE(config, m_cassette); - m_cassette->set_formats(rks_cassette_formats); - m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED); - m_cassette->set_interface("special_cass"); + MCFG_CASSETTE_ADD( "cassette" ) + MCFG_CASSETTE_FORMATS(rks_cassette_formats) + MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED) + MCFG_CASSETTE_INTERFACE("special_cass") - SOFTWARE_LIST(config, "cass_list").set_original("special_cass"); -} + MCFG_SOFTWARE_LIST_ADD("cass_list","special_cass") +MACHINE_CONFIG_END -void special_state::specialp(machine_config &config) -{ +MACHINE_CONFIG_START(special_state::specialp) special(config); /* basic machine hardware */ - m_maincpu->set_addrmap(AS_PROGRAM, &special_state::specialp_mem); + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(specialp_mem) - screen_device &screen(*subdevice<screen_device>("screen")); - screen.set_screen_update(FUNC(special_state::screen_update_specialp)); - screen.set_size(512, 256); - screen.set_visarea(0, 512-1, 0, 256-1); -} + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_specialp) + MCFG_SCREEN_SIZE(512, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) +MACHINE_CONFIG_END void special_state::specialm(machine_config &config) { @@ -431,17 +429,17 @@ void special_state::specialm(machine_config &config) m_ppi->out_pc_callback().set(FUNC(special_state::specialist_8255_portc_w)); } -void special_state::specimx(machine_config &config) -{ +MACHINE_CONFIG_START(special_state::specimx) special(config); - m_maincpu->set_addrmap(AS_PROGRAM, &special_state::specimx_mem); + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(specimx_mem) MCFG_MACHINE_START_OVERRIDE (special_state, specimx ) MCFG_MACHINE_RESET_OVERRIDE (special_state, specimx ) /* video hardware */ - subdevice<screen_device>("screen")->set_screen_update(FUNC(special_state::screen_update_specimx)); - + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_specimx) MCFG_VIDEO_START_OVERRIDE(special_state,specimx) m_palette->set_init(FUNC(special_state::specimx_palette)); @@ -468,47 +466,45 @@ void special_state::specimx(machine_config &config) FD1793(config, m_fdc, 8_MHz_XTAL / 8); m_fdc->drq_wr_callback().set(FUNC(special_state::fdc_drq)); - FLOPPY_CONNECTOR(config, "fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats); - FLOPPY_CONNECTOR(config, "fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats); - SOFTWARE_LIST(config, "flop_list").set_original("special_flop"); + MCFG_FLOPPY_DRIVE_ADD("fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats) + MCFG_SOFTWARE_LIST_ADD("flop_list","special_flop") /* internal ram */ RAM(config, m_ram).set_default_size("128K").set_default_value(0x00); -} +MACHINE_CONFIG_END -void special_state::erik(machine_config &config) -{ +MACHINE_CONFIG_START(special_state::erik) /* basic machine hardware */ - Z80(config, m_maincpu, 4000000); - m_maincpu->set_addrmap(AS_PROGRAM, &special_state::erik_mem); - m_maincpu->set_addrmap(AS_IO, &special_state::erik_io_map); - + MCFG_DEVICE_ADD("maincpu", Z80, 4000000) + MCFG_DEVICE_PROGRAM_MAP(erik_mem) + MCFG_DEVICE_IO_MAP(erik_io_map) MCFG_MACHINE_RESET_OVERRIDE(special_state, erik ) /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_size(384, 256); - screen.set_visarea(0, 384-1, 0, 256-1); - screen.set_screen_update(FUNC(special_state::screen_update_erik)); - screen.set_palette(m_palette); + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(384, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 256-1) + MCFG_SCREEN_UPDATE_DRIVER(special_state, screen_update_erik) + MCFG_SCREEN_PALETTE(m_palette) PALETTE(config, m_palette, FUNC(special_state::erik_palette), 8); /* audio hardware */ SPEAKER(config, "speaker").front_center(); DAC_1BIT(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.0625); - voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); - vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) - WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "speaker", 0.25); + WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "speaker", 0.25); /* Devices */ - CASSETTE(config, m_cassette); - m_cassette->set_formats(rks_cassette_formats); - m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED); - m_cassette->set_interface("special_cass"); + MCFG_CASSETTE_ADD( "cassette" ) + MCFG_CASSETTE_FORMATS(rks_cassette_formats) + MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED) + MCFG_CASSETTE_INTERFACE("special_cass") I8255(config, m_ppi); m_ppi->in_pa_callback().set(FUNC(special_state::specialist_8255_porta_r)); @@ -520,12 +516,12 @@ void special_state::erik(machine_config &config) FD1793(config, m_fdc, 8_MHz_XTAL / 8); m_fdc->drq_wr_callback().set(FUNC(special_state::fdc_drq)); - FLOPPY_CONNECTOR(config, "fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats); - FLOPPY_CONNECTOR(config, "fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats); + MCFG_FLOPPY_DRIVE_ADD("fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("fd1", specimx_floppies, "525qd", special_state::specimx_floppy_formats) /* internal ram */ RAM(config, m_ram).set_default_size("192K").set_default_value(0x00); -} +MACHINE_CONFIG_END /* ROM definition */ ROM_START( special ) |