diff options
-rw-r--r-- | src/emu/rendlay.cpp | 29 | ||||
-rw-r--r-- | src/mame/layout/model1io2.lay | 6 |
2 files changed, 23 insertions, 12 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); diff --git a/src/mame/layout/model1io2.lay b/src/mame/layout/model1io2.lay index f029cd09bf1..1a552d3352c 100644 --- a/src/mame/layout/model1io2.lay +++ b/src/mame/layout/model1io2.lay @@ -18,12 +18,12 @@ </element> <view name="Default"> + <screen tag="ioboard:screen"> + <bounds left="0" top="0" right="1" bottom="1" /> + </screen> <screen tag="screen"> <bounds left="0" top="0" right="4" bottom="3" /> </screen> - - <!-- workaround for MAME selecting a 2-screen view by default --> - <screen tag="ioboard:screen"><bounds left="0" top="0" right="4" bottom="3" /><color alpha="0" /></screen> </view> <view name="Diagnostic"> |