diff options
Diffstat (limited to 'src/mame/drivers/channelf.cpp')
-rw-r--r-- | src/mame/drivers/channelf.cpp | 132 |
1 files changed, 65 insertions, 67 deletions
diff --git a/src/mame/drivers/channelf.cpp b/src/mame/drivers/channelf.cpp index 848dae8d73c..529a911e10d 100644 --- a/src/mame/drivers/channelf.cpp +++ b/src/mame/drivers/channelf.cpp @@ -12,6 +12,10 @@ * 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" @@ -21,9 +25,6 @@ #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 @@ -197,119 +198,116 @@ static void cf_cart(device_slot_interface &device) } -MACHINE_CONFIG_START(channelf_state::channelf_cart) +void channelf_state::channelf_cart(machine_config &config) +{ /* cartridge */ - MCFG_CHANNELF_CARTRIDGE_ADD("cartslot", cf_cart, nullptr) + CHANF_CART_SLOT(config, m_cart, cf_cart, nullptr); /* Software lists */ - MCFG_SOFTWARE_LIST_ADD("cart_list","channelf") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "cart_list").set_original("channelf"); +} -MACHINE_CONFIG_START(channelf_state::channelf) +void channelf_state::channelf(machine_config &config) +{ /* basic machine hardware */ - 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)) + 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); /* video hardware */ - 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") + 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"); PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00); channelf_cart(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(channelf_state::sabavdpl) +void channelf_state::sabavdpl(machine_config &config) +{ /* basic machine hardware */ - 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)) + 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); /* video hardware */ - 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") + 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"); PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00); channelf_cart(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(channelf_state::channlf2) +void channelf_state::channlf2(machine_config &config) +{ /* basic machine hardware */ - 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)) + 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); /* video hardware */ - 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") + 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"); PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 1.00); channelf_cart(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(channelf_state::sabavpl2) +void channelf_state::sabavpl2(machine_config &config) +{ /* basic machine hardware */ - 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)) + 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); /* video hardware */ - 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") + 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"); PALETTE(config, "palette", FUNC(channelf_state::channelf_palette), 8); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", CHANNELF_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + CHANNELF_SOUND(config, m_custom).add_route(ALL_OUTPUTS, "mono", 0.50); channelf_cart(config); -MACHINE_CONFIG_END +} ROM_START( channelf ) ROM_REGION(0x10000,"maincpu",0) |