diff options
Diffstat (limited to 'src/mame/drivers/sms_bootleg.cpp')
-rw-r--r-- | src/mame/drivers/sms_bootleg.cpp | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/mame/drivers/sms_bootleg.cpp b/src/mame/drivers/sms_bootleg.cpp index bd9dba5a882..6a6b1e51019 100644 --- a/src/mame/drivers/sms_bootleg.cpp +++ b/src/mame/drivers/sms_bootleg.cpp @@ -264,7 +264,7 @@ void smsbootleg_state::sms_supergame_io(address_map &map) map(0x14, 0x14).nopr(); //AM_READ_PORT("IN1") // seem to be from a coinage / timer MCU, changing them directly changes the credits / time value map(0x18, 0x18).w(FUNC(smsbootleg_state::port18_w)); - map(0x40, 0x7f).rw(FUNC(smsbootleg_state::sms_count_r), FUNC(smsbootleg_state::sms_psg_w)); + map(0x40, 0x7f).r(FUNC(smsbootleg_state::sms_count_r)).w(m_vdp, FUNC(sega315_5124_device::psg_w)); map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::data_read), FUNC(sega315_5124_device::data_write)); map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::control_read), FUNC(sega315_5124_device::control_write)); @@ -273,34 +273,32 @@ void smsbootleg_state::sms_supergame_io(address_map &map) -MACHINE_CONFIG_START(smsbootleg_state::sms_supergame) +void smsbootleg_state::sms_supergame(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(10'738'635)/3) - MCFG_DEVICE_PROGRAM_MAP(sms_supergame_map) - MCFG_DEVICE_IO_MAP(sms_supergame_io) + Z80(config, m_maincpu, XTAL(10'738'635)/3); + m_maincpu->set_addrmap(AS_PROGRAM, &smsbootleg_state::sms_supergame_map); + m_maincpu->set_addrmap(AS_IO, &smsbootleg_state::sms_supergame_io); - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + config.m_minimum_quantum = attotime::from_hz(60); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("segapsg", SEGAPSG, XTAL(10'738'635)/3) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(10'738'635)/2, \ + SCREEN(config, m_main_scr, SCREEN_TYPE_RASTER); + m_main_scr->set_raw(XTAL(10'738'635)/2, \ sega315_5124_device::WIDTH , sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH - 2, sega315_5124_device::LBORDER_START + sega315_5124_device::LBORDER_WIDTH + 256 + 10, \ - sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224) - MCFG_SCREEN_REFRESH_RATE(XTAL(10'738'635)/2 / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_NTSC)) - MCFG_SCREEN_UPDATE_DRIVER(sms_state, screen_update_sms) - - MCFG_DEVICE_ADD("sms_vdp", SEGA315_5246, 0) - MCFG_SEGA315_5246_SET_SCREEN("screen") - MCFG_SEGA315_5246_IS_PAL(false) - MCFG_SEGA315_5246_INT_CB(INPUTLINE("maincpu", 0)) - MCFG_SEGA315_5246_PAUSE_CB(WRITELINE(*this, sms_state, sms_pause_callback)) - -MACHINE_CONFIG_END + sega315_5124_device::HEIGHT_NTSC, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT, sega315_5124_device::TBORDER_START + sega315_5124_device::NTSC_224_TBORDER_HEIGHT + 224); + m_main_scr->set_refresh_hz(XTAL(10'738'635)/2 / (sega315_5124_device::WIDTH * sega315_5124_device::HEIGHT_NTSC)); + m_main_scr->set_screen_update(FUNC(sms_state::screen_update_sms)); + + SEGA315_5246(config, m_vdp, XTAL(10'738'635)); + m_vdp->set_screen(m_main_scr); + m_vdp->set_is_pal(false); + m_vdp->irq().set_inputline(m_maincpu, 0); + m_vdp->pause().set(FUNC(sms_state::sms_pause_callback)); + m_vdp->add_route(ALL_OUTPUTS, "mono", 1.00); +} |