diff options
Diffstat (limited to 'src/mame/drivers/sigmab98.cpp')
-rw-r--r-- | src/mame/drivers/sigmab98.cpp | 220 |
1 files changed, 116 insertions, 104 deletions
diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp index f752e4e9c1b..d42c03ae818 100644 --- a/src/mame/drivers/sigmab98.cpp +++ b/src/mame/drivers/sigmab98.cpp @@ -2841,27 +2841,28 @@ INTERRUPT_GEN_MEMBER(sigmab98_state::sigmab98_vblank_interrupt) device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x5a); } -MACHINE_CONFIG_START(sigmab98_state::sigmab98) - MCFG_DEVICE_ADD("maincpu", Z80, 10000000) // !! TAXAN KY-80, clock @X1? !! - MCFG_DEVICE_PROGRAM_MAP(gegege_mem_map) - MCFG_DEVICE_IO_MAP(gegege_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sigmab98_state, sigmab98_vblank_interrupt) +void sigmab98_state::sigmab98(machine_config &config) +{ + Z80(config, m_maincpu, 10000000); // !! TAXAN KY-80, clock @X1? !! + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gegege_mem_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::gegege_io_map); + m_maincpu->set_vblank_int("screen", FUNC(sigmab98_state::sigmab98_vblank_interrupt)); MCFG_MACHINE_RESET_OVERRIDE(sigmab98_state, sigmab98) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); EEPROM_93C46_16BIT(config, "eeprom"); - MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) + TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) // ? - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state - MCFG_SCREEN_SIZE(0x140, 0x100) - MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0,0xf0-1) - MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); // ? + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state + m_screen->set_size(0x140, 0x100); + m_screen->set_visarea(0,0x140-1, 0,0xf0-1); + m_screen->set_screen_update(FUNC(sigmab98_state::screen_update_sigmab98)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sigmab98); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000 + 1); @@ -2873,33 +2874,36 @@ MACHINE_CONFIG_START(sigmab98_state::sigmab98) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("ymz", YMZ280B, 16934400) // clock @X2? - MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) -MACHINE_CONFIG_END + ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400)); // clock @X2? + ymz.add_route(0, "lspeaker", 1.0); + ymz.add_route(1, "rspeaker", 1.0); +} -MACHINE_CONFIG_START(sigmab98_state::dodghero) +void sigmab98_state::dodghero(machine_config &config) +{ sigmab98(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( dodghero_mem_map ) - MCFG_DEVICE_IO_MAP( dodghero_io_map ) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(sigmab98_state::gegege) + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::dodghero_mem_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::dodghero_io_map); +} + +void sigmab98_state::gegege(machine_config &config) +{ sigmab98(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( gegege_mem_map ) - MCFG_DEVICE_IO_MAP( gegege_io_map ) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(sigmab98_state::dashhero) + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gegege_mem_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::gegege_io_map); +} + +void sigmab98_state::dashhero(machine_config &config) +{ sigmab98(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( gegege_mem_map ) - MCFG_DEVICE_IO_MAP( dashhero_io_map ) - MCFG_DEVICE_REMOVE("nvram") // FIXME: does not survive between sessions otherwise -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gegege_mem_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::dashhero_io_map); + + config.device_remove("nvram"); // FIXME: does not survive between sessions otherwise +} /*************************************************************************** @@ -2924,19 +2928,20 @@ TIMER_DEVICE_CALLBACK_MEMBER(lufykzku_state::lufykzku_irq) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_timer1_vector); // this needs to be called often or the state of the door is not read at boot (at least 5 times before bb9 is called) } -MACHINE_CONFIG_START(lufykzku_state::lufykzku) - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000) / 2) // !! TAXAN KY-80, clock @X1? !! - MCFG_DEVICE_PROGRAM_MAP(lufykzku_mem_map) - MCFG_DEVICE_IO_MAP(lufykzku_io_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", lufykzku_state, lufykzku_irq, "screen", 0, 1) +void lufykzku_state::lufykzku(machine_config &config) +{ + Z80(config, m_maincpu, XTAL(20'000'000) / 2); // !! TAXAN KY-80, clock @X1? !! + m_maincpu->set_addrmap(AS_PROGRAM, &lufykzku_state::lufykzku_mem_map); + m_maincpu->set_addrmap(AS_IO, &lufykzku_state::lufykzku_io_map); + TIMER(config, "scantimer").configure_scanline(FUNC(lufykzku_state::lufykzku_irq), "screen", 0, 1); MCFG_MACHINE_RESET_OVERRIDE(lufykzku_state, lufykzku) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery backed RAM // No EEPROM - MCFG_DEVICE_ADD("watchdog_mb3773", MB3773, 0) - MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) + MB3773(config, m_watchdog, 0); + TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ); // 2 x 8-bit parallel/serial converters TTL165(config, m_dsw_shifter[0]); @@ -2948,13 +2953,13 @@ MACHINE_CONFIG_START(lufykzku_state::lufykzku) m_dsw_shifter[1]->qh_callback().set(FUNC(lufykzku_state::dsw_w)); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) // ? - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state - MCFG_SCREEN_SIZE(0x140, 0x100) - MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0,0xf0-1) - MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); // ? + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state + m_screen->set_size(0x140, 0x100); + m_screen->set_visarea(0,0x140-1, 0,0xf0-1); + m_screen->set_screen_update(FUNC(sigmab98_state::screen_update_sigmab98)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_lufykzku); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000 + 1); @@ -2965,10 +2970,10 @@ MACHINE_CONFIG_START(lufykzku_state::lufykzku) // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) -MACHINE_CONFIG_END + okim9810_device &oki(OKIM9810(config, "oki", XTAL(4'096'000))); + oki.add_route(0, "lspeaker", 0.80); + oki.add_route(1, "rspeaker", 0.80); +} /*************************************************************************** @@ -2994,30 +2999,32 @@ TIMER_DEVICE_CALLBACK_MEMBER(sigmab98_state::sammymdl_irq) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_timer1_vector); } -MACHINE_CONFIG_START(sigmab98_state::sammymdl) - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(20'000'000) / 2) // !! KL5C80A120FP @ 10MHz? (actually 4 times faster than Z80) !! - MCFG_DEVICE_PROGRAM_MAP( animalc_map ) - MCFG_DEVICE_IO_MAP( animalc_io ) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", sigmab98_state, sammymdl_irq, "screen", 0, 1) +void sigmab98_state::sammymdl(machine_config &config) +{ + Z80(config, m_maincpu, XTAL(20'000'000) / 2); // !! KL5C80A120FP @ 10MHz? (actually 4 times faster than Z80) !! + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::animalc_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::animalc_io); + + TIMER(config, "scantimer").configure_scanline(FUNC(sigmab98_state::sammymdl_irq), "screen", 0, 1); MCFG_MACHINE_RESET_OVERRIDE(sigmab98_state, sammymdl ) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // battery backed RAM EEPROM_93C46_8BIT(config, "eeprom"); - MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) + TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ); WATCHDOG_TIMER(config, "watchdog"); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) // ? - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state - MCFG_SCREEN_SIZE(0x140, 0x100) - MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1) - MCFG_SCREEN_UPDATE_DRIVER(sigmab98_state, screen_update_sigmab98) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, sigmab98_state, screen_vblank_sammymdl)) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); // ? + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); // game reads vblank state + m_screen->set_size(0x140, 0x100); + m_screen->set_visarea(0, 0x140-1, 0, 0xf0-1); + m_screen->set_screen_update(FUNC(sigmab98_state::screen_update_sigmab98)); + m_screen->screen_vblank().set(FUNC(sigmab98_state::screen_vblank_sammymdl)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sigmab98); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1000 + 1); @@ -3029,59 +3036,64 @@ MACHINE_CONFIG_START(sigmab98_state::sammymdl) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) -MACHINE_CONFIG_END + okim9810_device &oki(OKIM9810(config, "oki", XTAL(4'096'000))); + oki.add_route(0, "lspeaker", 0.80); + oki.add_route(1, "rspeaker", 0.80); +} -MACHINE_CONFIG_START(sigmab98_state::animalc) +void sigmab98_state::animalc(machine_config &config) +{ sammymdl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( animalc_map ) - MCFG_DEVICE_IO_MAP( animalc_io ) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(sigmab98_state::gocowboy) + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::animalc_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::animalc_io); +} + +void sigmab98_state::gocowboy(machine_config &config) +{ sammymdl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( gocowboy_map ) - MCFG_DEVICE_IO_MAP( gocowboy_io ) - MCFG_DEVICE_REMOVE("hopper") - MCFG_TICKET_DISPENSER_ADD("hopper_small", attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) - MCFG_TICKET_DISPENSER_ADD("hopper_large", attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::gocowboy_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::gocowboy_io); + + config.device_remove("hopper"); + TICKET_DISPENSER(config, m_hopper_small, attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ); + TICKET_DISPENSER(config, m_hopper_large, attotime::from_msec(1000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ); +} -MACHINE_CONFIG_START(sigmab98_state::haekaka) +void sigmab98_state::haekaka(machine_config &config) +{ sammymdl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( haekaka_map ) - MCFG_DEVICE_IO_MAP( haekaka_io ) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(sigmab98_state::itazuram) + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::haekaka_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::haekaka_io); +} + +void sigmab98_state::itazuram(machine_config &config) +{ sammymdl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( itazuram_map ) - MCFG_DEVICE_IO_MAP( itazuram_io ) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(sigmab98_state::pyenaget) + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::itazuram_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::itazuram_io); +} + +void sigmab98_state::pyenaget(machine_config &config) +{ sammymdl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( haekaka_map ) - MCFG_DEVICE_IO_MAP( pyenaget_io ) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(sigmab98_state::tdoboon) + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::haekaka_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::pyenaget_io); +} + +void sigmab98_state::tdoboon(machine_config &config) +{ sammymdl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( tdoboon_map ) - MCFG_DEVICE_IO_MAP( tdoboon_io ) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0+4,0xf0+4-1) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &sigmab98_state::tdoboon_map); + m_maincpu->set_addrmap(AS_IO, &sigmab98_state::tdoboon_io); + + m_screen->set_visarea(0,0x140-1, 0+4,0xf0+4-1); +} /*************************************************************************** |