summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/darkmist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/darkmist.cpp')
-rw-r--r--src/mame/video/darkmist.cpp44
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);
}
}