diff options
Diffstat (limited to 'src/mame/machine/lynx.cpp')
-rw-r--r-- | src/mame/machine/lynx.cpp | 52 |
1 files changed, 19 insertions, 33 deletions
diff --git a/src/mame/machine/lynx.cpp b/src/mame/machine/lynx.cpp index 715986ba7e0..f038e7d3925 100644 --- a/src/mame/machine/lynx.cpp +++ b/src/mame/machine/lynx.cpp @@ -1299,6 +1299,7 @@ DISPCTL EQU $FD92 ; set to $D by INITMIKEY void lynx_state::lynx_draw_line() { + const pen_t *pen = m_palette->pens(); int x, y; uint16_t j; // clipping needed! uint8_t byte; @@ -1313,22 +1314,22 @@ void lynx_state::lynx_draw_line() if (m_mikey.data[0x92] & 0x02) { j -= 160 * 102 / 2 - 1; - line = &m_bitmap_temp.pix16(102 - 1 - y); + line = &m_bitmap_temp.pix32(102 - 1 - y); for (x = 160 - 2; x >= 0; j++, x -= 2) { byte = lynx_read_ram(j); - line[x + 1] = m_lynx_palette[(byte >> 4) & 0x0f]; - line[x + 0] = m_lynx_palette[(byte >> 0) & 0x0f]; + line[x + 1] = pen[(byte >> 4) & 0x0f]; + line[x + 0] = pen[(byte >> 0) & 0x0f]; } } else { - line = &m_bitmap_temp.pix16(y); + line = &m_bitmap_temp.pix32(y); for (x = 0; x < 160; j++, x += 2) { byte = lynx_read_ram(j); - line[x + 0] = m_lynx_palette[(byte >> 4) & 0x0f]; - line[x + 1] = m_lynx_palette[(byte >> 0) & 0x0f]; + line[x + 0] = pen[(byte >> 4) & 0x0f]; + line[x + 1] = pen[(byte >> 0) & 0x0f]; } } } @@ -1832,10 +1833,10 @@ WRITE8_MEMBER(lynx_state::mikey_write) m_mikey.data[offset] = data; /* RED = 0xb- & 0x0f, GREEN = 0xa- & 0x0f, BLUE = (0xb- & 0xf0) >> 4 */ - m_lynx_palette[offset & 0x0f] = m_palette->pen( - ((m_mikey.data[0xb0 + (offset & 0x0f)] & 0x0f)) | - ((m_mikey.data[0xa0 + (offset & 0x0f)] & 0x0f) << 4) | - ((m_mikey.data[0xb0 + (offset & 0x0f)] & 0xf0) << 4)); + m_palette->set_pen_color(offset & 0x0f, rgb_t( + pal4bit(m_mikey.data[0xb0 | (offset & 0x0f)] & 0x0f), + pal4bit(m_mikey.data[0xa0 | (offset & 0x0f)] & 0x0f), + pal4bit((m_mikey.data[0xb0 | (offset & 0x0f)] & 0xf0) >> 4))); break; /* TODO: properly implement these writes */ @@ -1886,24 +1887,10 @@ WRITE8_MEMBER(lynx_state::lynx_memory_config_w) * when these are safe in the cpu */ m_memory_config = data; - if (data & 1) - { - space.install_readwrite_bank(0xfc00, 0xfcff, "bank1"); - membank("bank1")->set_base(m_mem_fc00); - } - else - space.install_readwrite_handler(0xfc00, 0xfcff, read8_delegate(FUNC(lynx_state::suzy_read),this), write8_delegate(FUNC(lynx_state::suzy_write),this)); - - if (data & 2) - { - space.install_readwrite_bank(0xfd00, 0xfdff, "bank2"); - membank("bank2")->set_base(m_mem_fd00); - } - else - space.install_readwrite_handler(0xfd00, 0xfdff, read8_delegate(FUNC(lynx_state::mikey_read),this), write8_delegate(FUNC(lynx_state::mikey_write),this)); - - membank("bank3")->set_entry((data & 4) ? 1 : 0); - membank("bank4")->set_entry((data & 8) ? 1 : 0); + m_bank_fc00->set_bank(BIT(data, 0)); + m_bank_fd00->set_bank(BIT(data, 1)); + m_bank_fe00->set_entry(BIT(data, 2)); + m_bank_fffa->set_entry(BIT(data, 3)); } void lynx_state::machine_reset() @@ -1954,7 +1941,6 @@ void lynx_state::machine_start() save_item(NAME(m_memory_config)); save_item(NAME(m_sign_AB)); save_item(NAME(m_sign_CD)); - save_item(NAME(m_lynx_palette)); save_item(NAME(m_rotate)); // save blitter variables save_item(NAME(m_blitter.screen)); @@ -2014,10 +2000,10 @@ void lynx_state::machine_start() machine().save().register_postload(save_prepost_delegate(FUNC(lynx_state::lynx_postload), this)); - membank("bank3")->configure_entry(0, memregion("maincpu")->base() + 0x0000); - membank("bank3")->configure_entry(1, m_mem_fe00); - membank("bank4")->configure_entry(0, memregion("maincpu")->base() + 0x01fa); - membank("bank4")->configure_entry(1, m_mem_fffa); + m_bank_fe00->configure_entry(0, memregion("maincpu")->base() + 0x0000); + m_bank_fe00->configure_entry(1, m_mem_fe00); + m_bank_fffa->configure_entry(0, memregion("maincpu")->base() + 0x01fa); + m_bank_fffa->configure_entry(1, m_mem_fffa); for (int i = 0; i < NR_LYNX_TIMERS; i++) lynx_timer_init(i); |