diff options
Diffstat (limited to 'src/mame/video/darkmist.cpp')
-rw-r--r-- | src/mame/video/darkmist.cpp | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/src/mame/video/darkmist.cpp b/src/mame/video/darkmist.cpp index d6abdc78034..ba2f90efc7b 100644 --- a/src/mame/video/darkmist.cpp +++ b/src/mame/video/darkmist.cpp @@ -61,39 +61,27 @@ TILE_GET_INFO_MEMBER(darkmist_state::get_txttile_info) 0); } -PALETTE_INIT_MEMBER(darkmist_state, darkmist) +void darkmist_state::darkmist_palette(palette_device &palette) const { -// palette.set_indirect_color(0x100, rgb_t::black()); + //palette.set_indirect_color(0x100, rgb_t::black()); - for (int i = 0; i < 0x400; i++) - { - int ctabentry; - uint8_t clut = 0; - - switch (i & 0x300) - { - case 0x000: clut = m_bg_clut[i&0xff]; break; - case 0x100: clut = m_fg_clut[i&0xff]; break; - case 0x200: clut = m_spr_clut[i&0xff]; break; - case 0x300: clut = m_tx_clut[i&0xff]; break; - } + std::pair<uint8_t const *, uint8_t> const planes[4]{ + { &m_bg_clut[0], 0x80 }, + { &m_fg_clut[0], 0x00 }, + { &m_spr_clut[0], 0x40 }, + { &m_tx_clut[0], 0xc0 } }; -// if (clut & 0x40) // 0x40 indicates transparent pen -// ctabentry = 0x100; -// else + for (unsigned plane = 0; ARRAY_LENGTH(planes) > plane; ++plane) + { + for (unsigned i = 0; 0x100 > i; ++i) { - ctabentry = (clut & 0x3f); - - switch (i & 0x300) - { - case 0x000: ctabentry = ctabentry | 0x80; break; - case 0x100: ctabentry = ctabentry | 0x00; break; - case 0x200: ctabentry = ctabentry | 0x40; break; - case 0x300: ctabentry = ctabentry | 0xc0; break; - } + uint8_t const clut = planes[plane].first[i]; +// if (clut & 0x40) // 0x40 indicates transparent pen +// ctabentry = 0x100; +// else + int const ctabentry = (clut & 0x3f) | planes[plane].second; + palette.set_pen_indirect((plane << 8) | i, ctabentry); } - - palette.set_pen_indirect(i, ctabentry); } } |