diff options
Diffstat (limited to 'src/mame/drivers/lynx.cpp')
-rw-r--r-- | src/mame/drivers/lynx.cpp | 53 |
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(); |