diff options
Diffstat (limited to 'src/mame/drivers/channelf.cpp')
-rw-r--r-- | src/mame/drivers/channelf.cpp | 132 |
1 files changed, 67 insertions, 65 deletions
diff --git a/src/mame/drivers/channelf.cpp b/src/mame/drivers/channelf.cpp index 529a911e10d..848dae8d73c 100644 --- a/src/mame/drivers/channelf.cpp +++ b/src/mame/drivers/channelf.cpp @@ -12,10 +12,6 @@ * also spanning from $3000 to $FFFF. Added clones * Fabio "etabeta" Priuli, moved carts to be slot devices * - * TODO: - * - hook up F3851 and F3853 devices (note: from a black box pov there's - * currently no problem, nothing uses the timer or irq) - * ******************************************************************/ #include "emu.h" @@ -25,6 +21,9 @@ #include "softlist.h" #include "speaker.h" +#define MASTER_CLOCK_PAL 2000000 /* PAL unit has a separate crystal at 4.000 MHz */ +#define PAL_VBLANK_TIME 4623 + /* The F8 has latches on its port pins * These mimic's their behavior @@ -198,116 +197,119 @@ static void cf_cart(device_slot_interface &device) } -void channelf_state::channelf_cart(machine_config &config) -{ +MACHINE_CONFIG_START(channelf_state::channelf_cart) /* cartridge */ - CHANF_CART_SLOT(config, m_cart, cf_cart, nullptr); + MCFG_CHANNELF_CARTRIDGE_ADD("cartslot", cf_cart, nullptr) /* Software lists */ - SOFTWARE_LIST(config, "cart_list").set_original("channelf"); -} + MCFG_SOFTWARE_LIST_ADD("cart_list","channelf") +MACHINE_CONFIG_END -void channelf_state::channelf(machine_config &config) -{ +MACHINE_CONFIG_START(channelf_state::channelf) /* basic machine hardware */ - F8(config, m_maincpu, 3.579545_MHz_XTAL/2); /* Colorburst/2 */ - m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map); - m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io); + MCFG_DEVICE_ADD("maincpu", F8, 3579545/2) /* Colorburst/2 */ + MCFG_DEVICE_PROGRAM_MAP(channelf_map) + MCFG_DEVICE_IO_MAP(channelf_io) + MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_size(128, 64); - screen.set_visarea(4, 112 - 7, 4, 64 - 3); - screen.set_screen_update(FUNC(channelf_state::screen_update_channelf)); - screen.set_palette("palette"); + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(128, 64) + MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3) + MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf) + MCFG_SCREEN_PALETTE("palette") PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00); + MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) channelf_cart(config); -} +MACHINE_CONFIG_END -void channelf_state::sabavdpl(machine_config &config) -{ +MACHINE_CONFIG_START(channelf_state::sabavdpl) /* basic machine hardware */ - F8(config, m_maincpu, 4_MHz_XTAL/2); /* PAL speed */ - m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map); - m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io); + MCFG_DEVICE_ADD("maincpu", F8, MASTER_CLOCK_PAL) /* PAL speed */ + MCFG_DEVICE_PROGRAM_MAP(channelf_map) + MCFG_DEVICE_IO_MAP(channelf_io) + MCFG_QUANTUM_TIME(attotime::from_hz(50)) /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(4623)); /* approximate */ - screen.set_size(128, 64); - screen.set_visarea(4, 112 - 7, 4, 64 - 3); - screen.set_screen_update(FUNC(channelf_state::screen_update_channelf)); - screen.set_palette("palette"); + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(PAL_VBLANK_TIME)) /* approximate */ + MCFG_SCREEN_SIZE(128, 64) + MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3) + MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf) + MCFG_SCREEN_PALETTE("palette") PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00); + MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) channelf_cart(config); -} +MACHINE_CONFIG_END -void channelf_state::channlf2(machine_config &config) -{ +MACHINE_CONFIG_START(channelf_state::channlf2) /* basic machine hardware */ - F8(config, m_maincpu, 3.579545_MHz_XTAL/2); /* Colorburst / 2 */ - m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map); - m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io); + MCFG_DEVICE_ADD("maincpu", F8, 3579545/2) /* Colorburst / 2 */ + MCFG_DEVICE_PROGRAM_MAP(channelf_map) + MCFG_DEVICE_IO_MAP(channelf_io) + MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ - screen.set_size(128, 64); - screen.set_visarea(4, 112 - 7, 4, 64 - 3); - screen.set_screen_update(FUNC(channelf_state::screen_update_channelf)); - screen.set_palette("palette"); + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(128, 64) + MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3) + MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf) + MCFG_SCREEN_PALETTE("palette") PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00); + MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) channelf_cart(config); -} +MACHINE_CONFIG_END -void channelf_state::sabavpl2(machine_config &config) -{ +MACHINE_CONFIG_START(channelf_state::sabavpl2) /* basic machine hardware */ - F8(config, m_maincpu, 4_MHz_XTAL/2); /* PAL speed */ - m_maincpu->set_addrmap(AS_PROGRAM, &channelf_state::channelf_map); - m_maincpu->set_addrmap(AS_IO, &channelf_state::channelf_io); + MCFG_DEVICE_ADD("maincpu", F8, MASTER_CLOCK_PAL) /* PAL speed */ + MCFG_DEVICE_PROGRAM_MAP(channelf_map) + MCFG_DEVICE_IO_MAP(channelf_io) + MCFG_QUANTUM_TIME(attotime::from_hz(50)) /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(50); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(4623)); /* approximate */ - screen.set_size(128, 64); - screen.set_visarea(4, 112 - 7, 4, 64 - 3); - screen.set_screen_update(FUNC(channelf_state::screen_update_channelf)); - screen.set_palette("palette"); + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(PAL_VBLANK_TIME)) /* not accurate */ + MCFG_SCREEN_SIZE(128, 64) + MCFG_SCREEN_VISIBLE_AREA(4, 112 - 7, 4, 64 - 3) + MCFG_SCREEN_UPDATE_DRIVER(channelf_state, screen_update_channelf) + MCFG_SCREEN_PALETTE("palette") PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 0.50); + MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) channelf_cart(config); -} +MACHINE_CONFIG_END ROM_START( channelf ) ROM_REGION(0x10000,"maincpu",0) |