diff options
Diffstat (limited to 'src/mame/drivers/svmu.cpp')
-rw-r--r-- | src/mame/drivers/svmu.cpp | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp index 529ba3743e5..dd204070b74 100644 --- a/src/mame/drivers/svmu.cpp +++ b/src/mame/drivers/svmu.cpp @@ -47,6 +47,7 @@ private: required_device<speaker_sound_device> m_speaker; required_region_ptr<uint8_t> m_bios; + LC8670_LCD_UPDATE(svmu_lcd_update); DECLARE_PALETTE_INIT(svmu); virtual void machine_reset() override; @@ -168,7 +169,7 @@ PALETTE_INIT_MEMBER(svmu_state, svmu) palette.set_pen_color(1, rgb_t(92, 83, 88)); } -static LC8670_LCD_UPDATE( svmu_lcd_update ) +LC8670_LCD_UPDATE(svmu_state::svmu_lcd_update) { if (lcd_enabled) { @@ -177,7 +178,7 @@ static LC8670_LCD_UPDATE( svmu_lcd_update ) { int gfx = vram[y*6 + x]; - for (int b=0; b<8; b++) + for (int b = 0; b < 8; b++) bitmap.plot_box((x*8 + b) * (PIXEL_SIZE + PIXEL_DISTANCE), y * (PIXEL_SIZE + PIXEL_DISTANCE), PIXEL_SIZE, PIXEL_SIZE, BIT(gfx,7-b)); } } @@ -186,10 +187,10 @@ static LC8670_LCD_UPDATE( svmu_lcd_update ) bitmap.fill(0, cliprect); } - device.machine().output().set_value("file_icon" , lcd_enabled ? BIT(vram[0xc1],6) : 0); - device.machine().output().set_value("game_icon" , lcd_enabled ? BIT(vram[0xc2],4) : 0); - device.machine().output().set_value("clock_icon", lcd_enabled ? BIT(vram[0xc3],2) : 0); - device.machine().output().set_value("flash_icon", lcd_enabled ? BIT(vram[0xc4],0) : 0); + machine().output().set_value("file_icon" , lcd_enabled ? BIT(vram[0xc1],6) : 0); + machine().output().set_value("game_icon" , lcd_enabled ? BIT(vram[0xc2],4) : 0); + machine().output().set_value("clock_icon", lcd_enabled ? BIT(vram[0xc3],2) : 0); + machine().output().set_value("flash_icon", lcd_enabled ? BIT(vram[0xc4],0) : 0); return 0; } @@ -308,43 +309,44 @@ QUICKLOAD_LOAD_MEMBER( svmu_state, svmu ) } -MACHINE_CONFIG_START(svmu_state::svmu) +void svmu_state::svmu(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", LC8670, XTAL(32'768)) - MCFG_DEVICE_PROGRAM_MAP(svmu_mem) - MCFG_DEVICE_IO_MAP(svmu_io_mem) + LC8670(config, m_maincpu, XTAL(32'768)); + m_maincpu->set_addrmap(AS_PROGRAM, &svmu_state::svmu_mem); + m_maincpu->set_addrmap(AS_IO, &svmu_state::svmu_io_mem); /* specific LC8670 configurations */ - MCFG_LC8670_SET_CLOCK_SOURCES(XTAL(32'768), 600000, XTAL(6'000'000)) // tolerance range of the RC oscillator is 600kHz to 1200kHz - MCFG_LC8670_BANKSWITCH_CB(WRITE8(*this, svmu_state, page_w)) - MCFG_LC8670_LCD_UPDATE_CB(svmu_lcd_update) + m_maincpu->set_clock_sources(XTAL(32'768), 600000, XTAL(6'000'000)); // tolerance range of the RC oscillator is 600kHz to 1200kHz + m_maincpu->bank_cb().set(FUNC(svmu_state::page_w)); + m_maincpu->set_lcd_update_cb(FUNC(svmu_state::svmu_lcd_update)); /* video hardware */ - MCFG_SCREEN_ADD("screen", LCD) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate - MCFG_SCREEN_SIZE(48 * (PIXEL_SIZE + PIXEL_DISTANCE), 32 * (PIXEL_SIZE + PIXEL_DISTANCE)) - MCFG_SCREEN_VISIBLE_AREA(0, 48*(PIXEL_SIZE + PIXEL_DISTANCE) - 1, 0, 32*(PIXEL_SIZE + PIXEL_DISTANCE) - 1) - MCFG_SCREEN_UPDATE_DEVICE("maincpu", lc8670_cpu_device, screen_update) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate + screen.set_size(48 * (PIXEL_SIZE + PIXEL_DISTANCE), 32 * (PIXEL_SIZE + PIXEL_DISTANCE)); + screen.set_visarea(0, 48*(PIXEL_SIZE + PIXEL_DISTANCE) - 1, 0, 32*(PIXEL_SIZE + PIXEL_DISTANCE) - 1); + screen.set_screen_update("maincpu", FUNC(lc8670_cpu_device::screen_update)); + screen.set_palette("palette"); config.set_default_layout(layout_svmu); - MCFG_PALETTE_ADD("palette", 2) - MCFG_PALETTE_INIT_OWNER(svmu_state, svmu) + PALETTE(config, "palette", 2).set_init(FUNC(svmu_state::palette_init_svmu)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); /* devices */ - ATMEL_29C010(config, "flash"); - MCFG_QUICKLOAD_ADD("quickload", svmu_state, svmu, "vms,bin", 0) - MCFG_QUICKLOAD_INTERFACE("svmu_quik") + ATMEL_29C010(config, m_flash); + + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(svmu_state, svmu), this), "vms,bin", 0); + quickload.set_interface("svmu_quik"); /* Software lists */ - MCFG_SOFTWARE_LIST_ADD("quik_list", "svmu") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "quik_list").set_original("svmu"); +} /* ROM definition */ |