summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/svmu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/svmu.cpp')
-rw-r--r--src/mame/drivers/svmu.cpp60
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 */