diff options
author | 2019-07-12 15:11:17 +1000 | |
---|---|---|
committer | 2019-07-12 15:11:36 +1000 | |
commit | 778e3dbc80217f796907f7be1e3186af0a9dc3c9 (patch) | |
tree | deb59a20160b1810cc81a0fe98ae5b737e752d1a /src/emu | |
parent | cf43ed580875bc44a6d56938ce0ec781941a4eee (diff) |
(nw) handle layouts that wanted screens to be opaque. if you have a layout with only screens and need to add, mark them explicitly. haven't tracked down the lightgun pointer issue yet.
Diffstat (limited to 'src/emu')
-rw-r--r-- | src/emu/rendlay.cpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp index b104089529c..4a2411573c1 100644 --- a/src/emu/rendlay.cpp +++ b/src/emu/rendlay.cpp @@ -2971,24 +2971,35 @@ layout_view::layout_view( add_items(layers, local, viewnode, elemmap, groupmap, ROT0, identity_transform, render_color{ 1.0F, 1.0F, 1.0F, 1.0F }, true, false, true); // deal with legacy element groupings - if ((layers.backdrops.size() > 1) && layers.overlays.empty()) + bool legacy(true); + for (auto it = layers.screens.begin(); (layers.screens.end() != it) && legacy; ++it) { - // multiple backdrop pieces and no overlays (Golly! Ghost! mode): - // backdrop (alpha) + screens (add) + bezels (alpha) + cpanels (alpha) + marquees (alpha) - m_items.splice(m_items.end(), layers.backdrops); + if (!it->screen()) + legacy = false; + } + if (!layers.overlays.empty() || (layers.backdrops.size() <= 1)) + { + // screens (none) + overlays (RGB multiply) + backdrop (add) + bezels (alpha) + cpanels (alpha) + marquees (alpha) + for (item &backdrop : layers.backdrops) + backdrop.set_blend_mode(BLENDMODE_ADD); + if (legacy) + { + for (item &screen : layers.screens) + screen.set_blend_mode(BLENDMODE_NONE); + } m_items.splice(m_items.end(), layers.screens); + m_items.splice(m_items.end(), layers.overlays); + m_items.splice(m_items.end(), layers.backdrops); m_items.splice(m_items.end(), layers.bezels); m_items.splice(m_items.end(), layers.cpanels); m_items.splice(m_items.end(), layers.marquees); } else { - // screens (add) + overlays (RGB multiply) + backdrop (add) + bezels (alpha) + cpanels (alpha) + marquees (alpha) - for (item &backdrop : layers.backdrops) - backdrop.set_blend_mode(BLENDMODE_ADD); - m_items.splice(m_items.end(), layers.screens); - m_items.splice(m_items.end(), layers.overlays); + // multiple backdrop pieces and no overlays (Golly! Ghost! mode): + // backdrop (alpha) + screens (add) + bezels (alpha) + cpanels (alpha) + marquees (alpha) m_items.splice(m_items.end(), layers.backdrops); + m_items.splice(m_items.end(), layers.screens); m_items.splice(m_items.end(), layers.bezels); m_items.splice(m_items.end(), layers.cpanels); m_items.splice(m_items.end(), layers.marquees); |