summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/lynx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lynx.cpp')
-rw-r--r--src/mame/drivers/lynx.cpp53
1 files changed, 32 insertions, 21 deletions
diff --git a/src/mame/drivers/lynx.cpp b/src/mame/drivers/lynx.cpp
index 592b3b50e3f..d4f2299cb94 100644
--- a/src/mame/drivers/lynx.cpp
+++ b/src/mame/drivers/lynx.cpp
@@ -21,12 +21,24 @@
void lynx_state::lynx_mem(address_map &map)
{
map(0x0000, 0xfbff).ram().share("mem_0000");
- map(0xfc00, 0xfcff).ram().share("mem_fc00");
- map(0xfd00, 0xfdff).ram().share("mem_fd00");
- map(0xfe00, 0xfff7).bankr("bank3").writeonly().share("mem_fe00");
+ map(0xfc00, 0xfcff).m(m_bank_fc00, FUNC(address_map_bank_device::amap8));
+ map(0xfd00, 0xfdff).m(m_bank_fd00, FUNC(address_map_bank_device::amap8));
+ map(0xfe00, 0xfff7).bankr("bank_fe00").writeonly().share("mem_fe00");
map(0xfff8, 0xfff8).ram();
map(0xfff9, 0xfff9).rw(FUNC(lynx_state::lynx_memory_config_r), FUNC(lynx_state::lynx_memory_config_w));
- map(0xfffa, 0xffff).bankr("bank4").writeonly().share("mem_fffa");
+ map(0xfffa, 0xffff).bankr("bank_fffa").writeonly().share("mem_fffa");
+}
+
+void lynx_state::lynx_fc00_mem(address_map &map)
+{
+ map(0x000, 0x0ff).rw(FUNC(lynx_state::suzy_read), FUNC(lynx_state::suzy_write));
+ map(0x100, 0x1ff).ram().share("mem_fc00");
+}
+
+void lynx_state::lynx_fd00_mem(address_map &map)
+{
+ map(0x000, 0x0ff).rw(FUNC(lynx_state::mikey_read), FUNC(lynx_state::mikey_write));
+ map(0x100, 0x1ff).ram().share("mem_fd00");
}
static INPUT_PORTS_START( lynx )
@@ -45,25 +57,12 @@ static INPUT_PORTS_START( lynx )
// power on and power off buttons
INPUT_PORTS_END
-PALETTE_INIT_MEMBER(lynx_state, lynx)
-{
- int i;
-
- for (i=0; i< 0x1000; i++)
- {
- palette.set_pen_color(i,
- ((i >> 0) & 0x0f) * 0x11,
- ((i >> 4) & 0x0f) * 0x11,
- ((i >> 8) & 0x0f) * 0x11);
- }
-}
-
void lynx_state::video_start()
{
m_screen->register_screen_bitmap(m_bitmap);
}
-uint32_t lynx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t lynx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
copybitmap(bitmap, m_bitmap, 0, 0, 0, 0, cliprect);
return 0;
@@ -81,6 +80,20 @@ MACHINE_CONFIG_START(lynx_state::lynx)
MCFG_DEVICE_PROGRAM_MAP(lynx_mem)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ MCFG_DEVICE_ADD("bank_fc00", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(lynx_fc00_mem)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(9)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x100)
+
+ MCFG_DEVICE_ADD("bank_fd00", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(lynx_fd00_mem)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(9)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x100)
+
/* video hardware */
MCFG_SCREEN_ADD("screen", LCD)
MCFG_SCREEN_REFRESH_RATE(LCD_FRAMES_PER_SECOND)
@@ -88,11 +101,9 @@ MACHINE_CONFIG_START(lynx_state::lynx)
MCFG_SCREEN_UPDATE_DRIVER(lynx_state, screen_update)
MCFG_SCREEN_SIZE(160, 102)
MCFG_SCREEN_VISIBLE_AREA(0, 160-1, 0, 102-1)
- MCFG_SCREEN_PALETTE("palette")
MCFG_DEFAULT_LAYOUT(layout_lynx)
- MCFG_PALETTE_ADD("palette", 0x1000)
- MCFG_PALETTE_INIT_OWNER(lynx_state, lynx)
+ MCFG_PALETTE_ADD("palette", 0x10)
/* sound hardware */
SPEAKER(config, "mono").front_center();