summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2019-07-06 00:23:20 +1000
committer Vas Crabb <vas@vastheman.com>2019-07-06 00:23:20 +1000
commitc38a3395e94e38a37cf6b8efdf9f49a5c9d415df (patch)
tree8ad5f6ee37953b4d19241ce31d11da23a712cc3e /src
parent7ee50ffec7afabd20a027f89e47f11b116301071 (diff)
Make layout format more flexible:
* There is no longer a concept of "layers" - there are only screens and elements. * Elements are now instantiated with <element ref="..."> * Screens and elements can have explicit blending mode specified with blend="..." * Default blending mode for screens is "add" and default for other elements is "alpha" * Other supported modes are "none" and "multiply" * This removes the options to enable/disable layers individually - use views instead * Legacy layouts can still be loaded, and support won't be removed for at least a year The current artwork model is over-stretched. It's based on a Space Invaders cabinet model, and isn't applicable to a lot of the systems MAME emulates now. The fact that MAME has to switch to an "alternate" mode to deal with games like Golly! Ghost! without requiring pre-matted bitmaps shows that the Space Invaders model wasn't even adequate for general arcade use. It shows in that for a lot of the systems that heavily depend on artwork, people just seem to randomly choose layers for elements until they get something that works. Also, the fact that MAME will switch to an alternate (Golly! Ghost!) mode depending on the combination of elements is a trap for people learning to make artwork. There are cases that the current approach of implying the blending mode from the layer doesn't work with. Examples include LEDs behind diffusers (requires additive blending for layout elements), and mutliple stacked LCD panels (requires RGB multiplication for screens). For configurability, it's now a lot easier to make multiple views using groups. For example, if you want to make it possible to hide the control panel section of your layout, you can put the control panel elements in a group and create views with and without it. I will gradually migrate the internal artwork to use the new approach. I have an XSLT stylesheet that helps with this, but I'm not comfortable adding it because it isn't a complete solution and it still requires manul steps. I wanted to get the re-worked pointer handling done sooner so I could push them both at the same time, but unfortunately various things have prevented me from progressing as quickly as I wanted to. Sorry guys, that stuff's going to have to wait.
Diffstat (limited to 'src')
-rw-r--r--src/emu/emuopts.cpp5
-rw-r--r--src/emu/emuopts.h10
-rw-r--r--src/emu/render.cpp230
-rw-r--r--src/emu/render.h106
-rw-r--r--src/emu/rendlay.cpp296
-rw-r--r--src/emu/uiinput.cpp20
-rw-r--r--src/emu/video.cpp5
-rw-r--r--src/frontend/mame/luaengine.cpp7
-rw-r--r--src/frontend/mame/ui/submenu.cpp5
-rw-r--r--src/frontend/mame/ui/videoopt.cpp143
-rw-r--r--src/frontend/mame/ui/videoopt.h5
-rw-r--r--src/mame/layout/intlc44.lay300
-rw-r--r--src/mame/layout/intlc440.lay298
-rw-r--r--src/mame/layout/whousetc.lay12
14 files changed, 647 insertions, 795 deletions
diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp
index 68e3bf7c2d2..c99748e67de 100644
--- a/src/emu/emuopts.cpp
+++ b/src/emu/emuopts.cpp
@@ -113,11 +113,6 @@ const options_entry emu_options::s_option_entries[] =
// artwork options
{ nullptr, nullptr, OPTION_HEADER, "CORE ARTWORK OPTIONS" },
{ OPTION_ARTWORK_CROP ";artcrop", "0", OPTION_BOOLEAN, "crop artwork so emulated screen image fills output screen/window in one axis" },
- { OPTION_USE_BACKDROPS ";backdrop", "1", OPTION_BOOLEAN, "enable backdrops if artwork is enabled and available" },
- { OPTION_USE_OVERLAYS ";overlay", "1", OPTION_BOOLEAN, "enable overlays if artwork is enabled and available" },
- { OPTION_USE_BEZELS ";bezel", "1", OPTION_BOOLEAN, "enable bezels if artwork is enabled and available" },
- { OPTION_USE_CPANELS ";cpanel", "1", OPTION_BOOLEAN, "enable cpanels if artwork is enabled and available" },
- { OPTION_USE_MARQUEES ";marquee", "1", OPTION_BOOLEAN, "enable marquees if artwork is enabled and available" },
{ OPTION_FALLBACK_ARTWORK, nullptr, OPTION_STRING, "fallback artwork if no external artwork or internal driver layout defined" },
{ OPTION_OVERRIDE_ARTWORK, nullptr, OPTION_STRING, "override artwork for external artwork and internal driver layout" },
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h
index b1869c82c16..c16e9c24567 100644
--- a/src/emu/emuopts.h
+++ b/src/emu/emuopts.h
@@ -97,11 +97,6 @@
// core artwork options
#define OPTION_ARTWORK_CROP "artwork_crop"
-#define OPTION_USE_BACKDROPS "use_backdrops"
-#define OPTION_USE_OVERLAYS "use_overlays"
-#define OPTION_USE_BEZELS "use_bezels"
-#define OPTION_USE_CPANELS "use_cpanels"
-#define OPTION_USE_MARQUEES "use_marquees"
#define OPTION_FALLBACK_ARTWORK "fallback_artwork"
#define OPTION_OVERRIDE_ARTWORK "override_artwork"
@@ -379,11 +374,6 @@ public:
// core artwork options
bool artwork_crop() const { return bool_value(OPTION_ARTWORK_CROP); }
- bool use_backdrops() const { return bool_value(OPTION_USE_BACKDROPS); }
- bool use_overlays() const { return bool_value(OPTION_USE_OVERLAYS); }
- bool use_bezels() const { return bool_value(OPTION_USE_BEZELS); }
- bool use_cpanels() const { return bool_value(OPTION_USE_CPANELS); }
- bool use_marquees() const { return bool_value(OPTION_USE_MARQUEES); }
const char *fallback_artwork() const { return value(OPTION_FALLBACK_ARTWORK); }
const char *override_artwork() const { return value(OPTION_OVERRIDE_ARTWORK); }
diff --git a/src/emu/render.cpp b/src/emu/render.cpp
index 9b1c09a6f3a..34d29285162 100644
--- a/src/emu/render.cpp
+++ b/src/emu/render.cpp
@@ -111,22 +111,6 @@ static const render_quad_texuv oriented_texcoords[8] =
{ { 1,1 }, { 1,0 }, { 0,1 }, { 0,0 } } // ORIENTATION_SWAP_XY | ORIENTATION_FLIP_X | ORIENTATION_FLIP_Y
};
-// layer orders
-static constexpr std::pair<item_layer, int> layer_order_standard[]{
- { ITEM_LAYER_SCREEN, -1 }, // FIXME: invalid blend mode - we're relying on the goodness of the OSD
- { ITEM_LAYER_OVERLAY, BLENDMODE_RGB_MULTIPLY },
- { ITEM_LAYER_BACKDROP, BLENDMODE_ADD },
- { ITEM_LAYER_BEZEL, BLENDMODE_ALPHA },
- { ITEM_LAYER_CPANEL, BLENDMODE_ALPHA },
- { ITEM_LAYER_MARQUEE, BLENDMODE_ALPHA } };
-static constexpr std::pair<item_layer, int> layer_order_alternate[]{
- { ITEM_LAYER_BACKDROP, BLENDMODE_ALPHA },
- { ITEM_LAYER_SCREEN, BLENDMODE_ADD },
- { ITEM_LAYER_OVERLAY, BLENDMODE_RGB_MULTIPLY },
- { ITEM_LAYER_BEZEL, BLENDMODE_ALPHA },
- { ITEM_LAYER_CPANEL, BLENDMODE_ALPHA },
- { ITEM_LAYER_MARQUEE, BLENDMODE_ALPHA } };
-
//**************************************************************************
@@ -177,25 +161,6 @@ inline void normalize_bounds(render_bounds &bounds)
}
-//-------------------------------------------------
-// get_layer_and_blendmode - return the
-// appropriate layer index and blendmode
-//-------------------------------------------------
-
-inline item_layer get_layer_and_blendmode(layout_view &view, int index, int &blendmode)
-{
- // if we have multiple backdrop pieces and no overlays, render:
- // backdrop (add) + screens (add) + bezels (alpha) + cpanels (alpha) + marquees (alpha)
- // else render:
- // screens (add) + overlays (RGB multiply) + backdrop (add) + bezels (alpha) + cpanels (alpha) + marquees (alpha)
-
- std::pair<item_layer, int> const *const layer_order(((view.items(ITEM_LAYER_BACKDROP).size() > 1) && view.items(ITEM_LAYER_OVERLAY).empty()) ? layer_order_alternate : layer_order_standard);
-
- // select the layer and blend mode
- blendmode = layer_order[index].second;
- return layer_order[index].first;
-}
-
//**************************************************************************
// RENDER PRIMITIVE
//**************************************************************************
@@ -941,11 +906,6 @@ template <typename T> render_target::render_target(render_manager &manager, T &&
, m_transform_container(true)
{
// determine the base layer configuration based on options
- m_base_layerconfig.set_backdrops_enabled(manager.machine().options().use_backdrops());
- m_base_layerconfig.set_overlays_enabled(manager.machine().options().use_overlays());
- m_base_layerconfig.set_bezels_enabled(manager.machine().options().use_bezels());
- m_base_layerconfig.set_cpanels_enabled(manager.machine().options().use_cpanels());
- m_base_layerconfig.set_marquees_enabled(manager.machine().options().use_marquees());
m_base_layerconfig.set_zoom_to_screen(manager.machine().options().artwork_crop());
// aspect and scale options
@@ -1296,40 +1256,38 @@ void render_target::compute_minimum_size(s32 &minwidth, s32 &minheight)
throw emu_fatalerror("Mandatory artwork is missing");
// scan the current view for all screens
- for (item_layer layer = ITEM_LAYER_FIRST; layer < ITEM_LAYER_MAX; ++layer)
+ for (layout_view::item &curitem : m_curview->items())
{
- // iterate over items in the layer
- for (layout_view::item &curitem : m_curview->items(layer))
- if (curitem.screen())
+ if (curitem.screen())
+ {
+ // use a hard-coded default visible area for vector screens
+ screen_device *const screen = curitem.screen();
+ const rectangle vectorvis(0, 639, 0, 479);
+ const rectangle &visarea = (screen->screen_type() == SCREEN_TYPE_VECTOR) ? vectorvis : screen->visible_area();
+
+ // apply target orientation to the bounds
+ render_bounds bounds = curitem.bounds();
+ apply_orientation(bounds, m_orientation);
+ normalize_bounds(bounds);
+
+ // based on the orientation of the screen container, check the bitmap
+ float xscale, yscale;
+ if (!(orientation_add(m_orientation, screen->container().orientation()) & ORIENTATION_SWAP_XY))
{
- // use a hard-coded default visible area for vector screens
- screen_device *const screen = curitem.screen();
- const rectangle vectorvis(0, 639, 0, 479);
- const rectangle &visarea = (screen->screen_type() == SCREEN_TYPE_VECTOR) ? vectorvis : screen->visible_area();
-
- // apply target orientation to the bounds
- render_bounds bounds = curitem.bounds();
- apply_orientation(bounds, m_orientation);
- normalize_bounds(bounds);
-
- // based on the orientation of the screen container, check the bitmap
- float xscale, yscale;
- if (!(orientation_add(m_orientation, screen->container().orientation()) & ORIENTATION_SWAP_XY))
- {
- xscale = float(visarea.width()) / bounds.width();
- yscale = float(visarea.height()) / bounds.height();
- }
- else
- {
- xscale = float(visarea.height()) / bounds.width();
- yscale = float(visarea.width()) / bounds.height();
- }
-
- // pick the greater
- maxxscale = std::max(xscale, maxxscale);
- maxyscale = std::max(yscale, maxyscale);
- screens_considered++;
+ xscale = float(visarea.width()) / bounds.width();
+ yscale = float(visarea.height()) / bounds.height();
+ }
+ else
+ {
+ xscale = float(visarea.height()) / bounds.width();
+ yscale = float(visarea.width()) / bounds.height();
}
+
+ // pick the greater
+ maxxscale = std::max(xscale, maxxscale);
+ maxyscale = std::max(yscale, maxyscale);
+ screens_considered++;
+ }
}
// if there were no screens considered, pick a nominal default
@@ -1378,42 +1336,33 @@ render_primitive_list &render_target::get_primitives()
root_xform.orientation = m_orientation;
root_xform.no_center = false;
- // iterate over layers back-to-front, but only if we're running
+ // iterate over items in the view, but only if we're running
if (m_manager.machine().phase() >= machine_phase::RESET)
- for (item_layer layernum = ITEM_LAYER_FIRST; layernum < ITEM_LAYER_MAX; ++layernum)
+ for (layout_view::item &curitem : m_curview->items())
{
- int blendmode;
- item_layer layer = get_layer_and_blendmode(*m_curview, layernum, blendmode);
- if (m_curview->layer_enabled(layer))
- {
- // iterate over items in the layer
- for (layout_view::item &curitem : m_curview->items(layer))
- {
- // first apply orientation to the bounds
- render_bounds bounds = curitem.bounds();
- apply_orientation(bounds, root_xform.orientation);
- normalize_bounds(bounds);
-
- // apply the transform to the item
- object_transform item_xform;
- item_xform.xoffs = root_xform.xoffs + bounds.x0 * root_xform.xscale;
- item_xform.yoffs = root_xform.yoffs + bounds.y0 * root_xform.yscale;
- item_xform.xscale = (bounds.x1 - bounds.x0) * root_xform.xscale;
- item_xform.yscale = (bounds.y1 - bounds.y0) * root_xform.yscale;
- item_xform.color.r = curitem.color().r * root_xform.color.r;
- item_xform.color.g = curitem.color().g * root_xform.color.g;
- item_xform.color.b = curitem.color().b * root_xform.color.b;
- item_xform.color.a = curitem.color().a * root_xform.color.a;
- item_xform.orientation = orientation_add(curitem.orientation(), root_xform.orientation);
- item_xform.no_center = false;
-
- // if there is no associated element, it must be a screen element
- if (curitem.screen() != nullptr)
- add_container_primitives(list, root_xform, item_xform, curitem.screen()->container(), blendmode);
- else
- add_element_primitives(list, item_xform, *curitem.element(), curitem.state(), blendmode);
- }
- }
+ // first apply orientation to the bounds
+ render_bounds bounds = curitem.bounds();
+ apply_orientation(bounds, root_xform.orientation);
+ normalize_bounds(bounds);
+
+ // apply the transform to the item
+ object_transform item_xform;
+ item_xform.xoffs = root_xform.xoffs + bounds.x0 * root_xform.xscale;
+ item_xform.yoffs = root_xform.yoffs + bounds.y0 * root_xform.yscale;
+ item_xform.xscale = (bounds.x1 - bounds.x0) * root_xform.xscale;
+ item_xform.yscale = (bounds.y1 - bounds.y0) * root_xform.yscale;
+ item_xform.color.r = curitem.color().r * root_xform.color.r;
+ item_xform.color.g = curitem.color().g * root_xform.color.g;
+ item_xform.color.b = curitem.color().b * root_xform.color.b;
+ item_xform.color.a = curitem.color().a * root_xform.color.a;
+ item_xform.orientation = orientation_add(curitem.orientation(), root_xform.orientation);
+ item_xform.no_center = false;
+
+ // if there is no associated element, it must be a screen element
+ if (curitem.screen() != nullptr)
+ add_container_primitives(list, root_xform, item_xform, curitem.screen()->container(), curitem.blend_mode());
+ else
+ add_element_primitives(list, item_xform, *curitem.element(), curitem.state(), curitem.blend_mode());
}
// if we are not in the running stage, draw an outer box
@@ -2521,38 +2470,30 @@ bool render_target::map_point_internal(s32 target_x, s32 target_y, render_contai
return false;
}
- // loop through each layer
- for (item_layer layernum = ITEM_LAYER_FIRST; layernum < ITEM_LAYER_MAX; ++layernum)
+ // iterate over items in the view
+ for (layout_view::item &item : m_curview->items())
{
- int blendmode;
- item_layer layer = get_layer_and_blendmode(*m_curview, layernum, blendmode);
- if (m_curview->layer_enabled(layer))
- {
- // iterate over items in the layer
- for (layout_view::item &item : m_curview->items(layer))
- {
- bool checkit;
+ bool checkit;
- // if we're looking for a particular container, verify that we have the right one
- if (container != nullptr)
- checkit = (item.screen() != nullptr && &item.screen()->container() == container);
+ // if we're looking for a particular container, verify that we have the right one
+ if (container != nullptr)
+ checkit = (item.screen() != nullptr && &item.screen()->container() == container);
- // otherwise, assume we're looking for an input
- else
- checkit = item.has_input();
+ // otherwise, assume we're looking for an input
+ else
+ checkit = item.has_input();
- // this target is worth looking at; now check the point
- if (checkit && target_fx >= item.bounds().x0 && target_fx < item.bounds().x1 && target_fy >= item.bounds().y0 && target_fy < item.bounds().y1)
- {
- // point successfully mapped
- mapped_x = (target_fx - item.bounds().x0) / (item.bounds().x1 - item.bounds().x0);
- mapped_y = (target_fy - item.bounds().y0) / (item.bounds().y1 - item.bounds().y0);
- mapped_input_port = item.input_tag_and_mask(mapped_input_mask);
- return true;
- }
- }
+ // this target is worth looking at; now check the point
+ if (checkit && target_fx >= item.bounds().x0 && target_fx < item.bounds().x1 && target_fy >= item.bounds().y0 && target_fy < item.bounds().y1)
+ {
+ // point successfully mapped
+ mapped_x = (target_fx - item.bounds().x0) / (item.bounds().x1 - item.bounds().x0);
+ mapped_y = (target_fy - item.bounds().y0) / (item.bounds().y1 - item.bounds().y0);
+ mapped_input_port = item.input_tag_and_mask(mapped_input_mask);
+ return true;
}
}
+
return false;
}
@@ -2603,6 +2544,8 @@ int render_target::view_index(layout_view &targetview) const
void render_target::config_load(util::xml::data_node const &targetnode)
{
+ int tmpint;
+
// find the view
const char *viewname = targetnode.get_attribute_string("view", nullptr);
if (viewname != nullptr)
@@ -2619,26 +2562,6 @@ void render_target::config_load(util::xml::data_node const &targetnode)
}
// modify the artwork config
- int tmpint = targetnode.get_attribute_int("backdrops", -1);
- if (tmpint == 0 || tmpint == 1)
- set_backdrops_enabled(tmpint);
-
- tmpint = targetnode.get_attribute_int("overlays", -1);
- if (tmpint == 0 || tmpint == 1)
- set_overlays_enabled(tmpint);
-
- tmpint = targetnode.get_attribute_int("bezels", -1);
- if (tmpint == 0 || tmpint == 1)
- set_bezels_enabled(tmpint);
-
- tmpint = targetnode.get_attribute_int("cpanels", -1);
- if (tmpint == 0 || tmpint == 1)
- set_cpanels_enabled(tmpint);
-
- tmpint = targetnode.get_attribute_int("marquees", -1);
- if (tmpint == 0 || tmpint == 1)
- set_marquees_enabled(tmpint);
-
tmpint = targetnode.get_attribute_int("zoom", -1);
if (tmpint == 0 || tmpint == 1)
set_zoom_to_screen(tmpint);
@@ -2693,11 +2616,6 @@ bool render_target::config_save(util::xml::data_node &targetnode)
// output the layer config
if (m_layerconfig != m_base_layerconfig)
{
- targetnode.set_attribute_int("backdrops", m_layerconfig.backdrops_enabled());
- targetnode.set_attribute_int("overlays", m_layerconfig.overlays_enabled());
- targetnode.set_attribute_int("bezels", m_layerconfig.bezels_enabled());
- targetnode.set_attribute_int("cpanels", m_layerconfig.cpanels_enabled());
- targetnode.set_attribute_int("marquees", m_layerconfig.marquees_enabled());
targetnode.set_attribute_int("zoom", m_layerconfig.zoom_to_screen());
changed = true;
}
diff --git a/src/emu/render.h b/src/emu/render.h
index 93621ea92c1..27e54c90885 100644
--- a/src/emu/render.h
+++ b/src/emu/render.h
@@ -270,14 +270,9 @@ private:
class render_layer_config
{
private:
- static constexpr u8 ENABLE_BACKDROP = 0x01; // enable backdrop layers
- static constexpr u8 ENABLE_OVERLAY = 0x02; // enable overlay layers
- static constexpr u8 ENABLE_BEZEL = 0x04; // enable bezel layers
- static constexpr u8 ENABLE_CPANEL = 0x08; // enable cpanel layers
- static constexpr u8 ENABLE_MARQUEE = 0x10; // enable marquee layers
- static constexpr u8 ZOOM_TO_SCREEN = 0x20; // zoom to screen area by default
- static constexpr u8 ENABLE_SCREEN_OVERLAY = 0x40; // enable screen overlays
- static constexpr u8 DEFAULT = ENABLE_BACKDROP | ENABLE_OVERLAY | ENABLE_BEZEL | ENABLE_CPANEL | ENABLE_MARQUEE | ENABLE_SCREEN_OVERLAY;
+ static constexpr u8 ZOOM_TO_SCREEN = 0x01; // zoom to screen area by default
+ static constexpr u8 ENABLE_SCREEN_OVERLAY = 0x02; // enable screen overlays
+ static constexpr u8 DEFAULT = ENABLE_SCREEN_OVERLAY;
u8 m_state = DEFAULT;
@@ -294,19 +289,9 @@ public:
bool operator==(const render_layer_config &rhs) const { return m_state == rhs.m_state; }
bool operator!=(const render_layer_config &rhs) const { return m_state != rhs.m_state; }
- constexpr bool backdrops_enabled() const { return (m_state & ENABLE_BACKDROP) != 0; }
- constexpr bool overlays_enabled() const { return (m_state & ENABLE_OVERLAY) != 0; }
- constexpr bool bezels_enabled() const { return (m_state & ENABLE_BEZEL) != 0; }
- constexpr bool cpanels_enabled() const { return (m_state & ENABLE_CPANEL) != 0; }
- constexpr bool marquees_enabled() const { return (m_state & ENABLE_MARQUEE) != 0; }
constexpr bool screen_overlay_enabled() const { return (m_state & ENABLE_SCREEN_OVERLAY) != 0; }
constexpr bool zoom_to_screen() const { return (m_state & ZOOM_TO_SCREEN) != 0; }
- render_layer_config &set_backdrops_enabled(bool enable) { return set_flag(ENABLE_BACKDROP, enable); }
- render_layer_config &set_overlays_enabled(bool enable) { return set_flag(ENABLE_OVERLAY, enable); }
- render_layer_config &set_bezels_enabled(bool enable) { return set_flag(ENABLE_BEZEL, enable); }
- render_layer_config &set_cpanels_enabled(bool enable) { return set_flag(ENABLE_CPANEL, enable); }
- render_layer_config &set_marquees_enabled(bool enable) { return set_flag(ENABLE_MARQUEE, enable); }
render_layer_config &set_screen_overlay_enabled(bool enable) { return set_flag(ENABLE_SCREEN_OVERLAY, enable); }
render_layer_config &set_zoom_to_screen(bool zoom) { return set_flag(ZOOM_TO_SCREEN, zoom); }
};
@@ -602,25 +587,6 @@ private:
//**************************************************************************
-// CONSTANTS
-//**************************************************************************
-
-enum item_layer
-{
- ITEM_LAYER_FIRST = 0,
- ITEM_LAYER_BACKDROP = ITEM_LAYER_FIRST,
- ITEM_LAYER_SCREEN,
- ITEM_LAYER_OVERLAY,
- ITEM_LAYER_BEZEL,
- ITEM_LAYER_CPANEL,
- ITEM_LAYER_MARQUEE,
- ITEM_LAYER_MAX
-};
-DECLARE_ENUM_INCDEC_OPERATORS(item_layer)
-
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -833,9 +799,10 @@ public:
screen_device *screen() { return m_screen; }
const render_bounds &bounds() const { return m_bounds; }
const render_color &color() const { return m_color; }
+ int blend_mode() const { return m_blend_mode; }
int orientation() const { return m_orientation; }
render_container *screen_container(running_machine &machine) const;
- bool has_input() const { return !m_input_tag.empty(); }
+ bool has_input() const { return bool(m_input_field); }
ioport_port *input_tag_and_mask(ioport_value &mask) const { mask = m_input_mask; return m_input_port; };
// fetch state based on configured source
@@ -844,21 +811,31 @@ public:
// resolve tags, if any
void resolve_tags();
+ // setters
+ void set_blend_mode(int mode) { m_blend_mode = mode; }
+
private:
+ static layout_element *find_element(environment &env, util::xml::data_node const &itemnode, element_map &elemmap);
+ static render_bounds make_bounds(environment &env, util::xml::data_node const &itemnode, layout_group::transform const &trans);
+ static std::string make_input_tag(environment &env, util::xml::data_node const &itemnode);
+ static int get_blend_mode(environment &env, util::xml::data_node const &itemnode);
+
// internal state
- layout_element * m_element; // pointer to the associated element (non-screens only)
- output_finder<> m_output; // associated output
- bool const m_have_output; // whether we actually have an output
- std::string m_input_tag; // input tag of this item
- ioport_port * m_input_port; // input port of this item
- ioport_value m_input_mask; // input mask of this item
- u8 m_input_shift; // input mask rightshift for raw (trailing 0s)
- bool m_input_raw; // get raw data from input port
- screen_device * m_screen; // pointer to screen
- int m_orientation; // orientation of this item
- render_bounds m_bounds; // bounds of the item
- render_bounds m_rawbounds; // raw (original) bounds of the item
- render_color m_color; // color of the item
+ layout_element *const m_element; // pointer to the associated element (non-screens only)
+ output_finder<> m_output; // associated output
+ bool const m_have_output; // whether we actually have an output
+ std::string const m_input_tag; // input tag of this item
+ ioport_port * m_input_port; // input port of this item
+ ioport_field const * m_input_field; // input port field of this item
+ ioport_value const m_input_mask; // input mask of this item
+ u8 m_input_shift; // input mask rightshift for raw (trailing 0s)
+ bool const m_input_raw; // get raw data from input port
+ screen_device * m_screen; // pointer to screen
+ int m_orientation; // orientation of this item
+ render_bounds m_bounds; // bounds of the item
+ render_bounds const m_rawbounds; // raw (original) bounds of the item
+ render_color m_color; // color of the item
+ int m_blend_mode; // blending mode to use when drawing
};
using item_list = std::list<item>;
@@ -871,15 +848,14 @@ public:
~layout_view();
// getters
- item_list &items(item_layer layer);
+ item_list &items() { return m_items; }
const std::string &name() const { return m_name; }
const render_bounds &bounds() const { return m_bounds; }
const render_bounds &screen_bounds() const { return m_scrbounds; }
const render_screen_list &screens() const { return m_screens; }
- bool layer_enabled(item_layer layer) const { return m_layenabled[layer]; }
//
- bool has_art() const { return !m_backdrop_list.empty() || !m_overlay_list.empty() || !m_bezel_list.empty() || !m_cpanel_list.empty() || !m_marquee_list.empty(); }
+ bool has_art() const { return m_has_art; }
float effective_aspect(render_layer_config config) const { return (config.zoom_to_screen() && m_screens.count() != 0) ? m_scraspect : m_aspect; }
// operations
@@ -889,8 +865,11 @@ public:
void resolve_tags();
private:
+ struct layer_lists;
+
// add items, recursing for groups
void add_items(
+ layer_lists &layers,
environment &env,
util::xml::data_node const &parentnode,
element_map &elemmap,
@@ -912,13 +891,8 @@ private:
render_bounds m_bounds; // computed bounds of the view
render_bounds m_scrbounds; // computed bounds of the screens within the view
render_bounds m_expbounds; // explicit bounds of the view
- bool m_layenabled[ITEM_LAYER_MAX]; // is this layer enabled?
- item_list m_backdrop_list; // list of backdrop items
- item_list m_screen_list; // list of screen items
- item_list m_overlay_list; // list of overlay items
- item_list m_bezel_list; // list of bezel items
- item_list m_cpanel_list; // list of marquee items
- item_list m_marquee_list; // list of marquee items
+ item_list m_items; // list of layout items
+ bool m_has_art; // true if the layout contains non-screen elements
};
@@ -1001,20 +975,10 @@ public:
void set_scale_mode(int scale_mode) { m_scale_mode = scale_mode; }
// layer config getters
- bool backdrops_enabled() const { return m_layerconfig.backdrops_enabled(); }
- bool overlays_enabled() const { return m_layerconfig.overlays_enabled(); }
- bool bezels_enabled() const { return m_layerconfig.bezels_enabled(); }
- bool cpanels_enabled() const { return m_layerconfig.cpanels_enabled(); }
- bool marquees_enabled() const { return m_layerconfig.marquees_enabled(); }
bool screen_overlay_enabled() const { return m_layerconfig.screen_overlay_enabled(); }
bool zoom_to_screen() const { return m_layerconfig.zoom_to_screen(); }
// layer config setters
- void set_backdrops_enabled(bool enable) { m_layerconfig.set_backdrops_enabled(enable); update_layer_config(); }
- void set_overlays_enabled(bool enable) { m_layerconfig.set_overlays_enabled(enable); update_layer_config(); }
- void set_bezels_enabled(bool enable) { m_layerconfig.set_bezels_enabled(enable); update_layer_config(); }
- void set_cpanels_enabled(bool enable) { m_layerconfig.set_cpanels_enabled(enable); update_layer_config(); }
- void set_marquees_enabled(bool enable) { m_layerconfig.set_marquees_enabled(enable); update_layer_config(); }
void set_screen_overlay_enabled(bool enable) { m_layerconfig.set_screen_overlay_enabled(enable); update_layer_config(); }
void set_zoom_to_screen(bool zoom) { m_layerconfig.set_zoom_to_screen(zoom); update_layer_config(); }
diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp
index d083ba5510a..8fc785b74a7 100644
--- a/src/emu/rendlay.cpp
+++ b/src/emu/rendlay.cpp
@@ -2944,6 +2944,9 @@ void layout_element::component::apply_skew(bitmap_argb32 &dest, int skewwidth)
// LAYOUT VIEW
//**************************************************************************
+struct layout_view::layer_lists { item_list backdrops, screens, overlays, bezels, cpanels, marquees; };
+
+
//-------------------------------------------------
// layout_view - constructor
//-------------------------------------------------
@@ -2956,11 +2959,41 @@ layout_view::layout_view(
: m_name(make_name(env, viewnode))
, m_aspect(1.0f)
, m_scraspect(1.0f)
+ , m_items()
+ , m_has_art(false)
{
+ // parse the layout
m_expbounds.x0 = m_expbounds.y0 = m_expbounds.x1 = m_expbounds.y1 = 0;
environment local(env);
+ layer_lists layers;
local.set_parameter("viewname", std::string(m_name));
- add_items(local, viewnode, elemmap, groupmap, ROT0, identity_transform, render_color{ 1.0F, 1.0F, 1.0F, 1.0F }, true, false, true);
+ 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())
+ {
+ // 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);
+ }
+ 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);
+ 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);
+ }
+
+ // calculate metrics
recompute(render_layer_config());
for (group_map::value_type &group : groupmap)
group.second.set_bounds_unresolved();
@@ -2977,25 +3010,6 @@ layout_view::~layout_view()
//-------------------------------------------------
-// items - return the appropriate list
-//-------------------------------------------------
-
-layout_view::item_list &layout_view::items(item_layer layer)
-{
- switch (layer)
- {
- case ITEM_LAYER_BACKDROP: return m_backdrop_list;
- case ITEM_LAYER_SCREEN: return m_screen_list;
- case ITEM_LAYER_OVERLAY: return m_overlay_list;
- case ITEM_LAYER_BEZEL: return m_bezel_list;
- case ITEM_LAYER_CPANEL: return m_cpanel_list;
- case ITEM_LAYER_MARQUEE: return m_marquee_list;
- default: throw false; // calling this with an invalid layer is bad, m'kay?
- }
-}
-
-
-//-------------------------------------------------
// recompute - recompute the bounds and aspect
// ratio of a view and all of its contained items
//-------------------------------------------------
@@ -3010,43 +3024,27 @@ void layout_view::recompute(render_layer_config layerconfig)
// loop over all layers
bool first = true;
bool scrfirst = true;
- for (item_layer layer = ITEM_LAYER_FIRST; layer < ITEM_LAYER_MAX; ++layer)
+ for (item &curitem : m_items)
{
- // determine if this layer should be visible
- switch (layer)
- {
- case ITEM_LAYER_BACKDROP: m_layenabled[layer] = layerconfig.backdrops_enabled(); break;
- case ITEM_LAYER_OVERLAY: m_layenabled[layer] = layerconfig.overlays_enabled(); break;
- case ITEM_LAYER_BEZEL: m_layenabled[layer] = layerconfig.bezels_enabled(); break;
- case ITEM_LAYER_CPANEL: m_layenabled[layer] = layerconfig.cpanels_enabled(); break;
- case ITEM_LAYER_MARQUEE: m_layenabled[layer] = layerconfig.marquees_enabled(); break;
- default: m_layenabled[layer] = true; break;
- }
-
- // only do it if requested
- if (m_layenabled[layer])
- for (item &curitem : items(layer))
- {
- // accumulate bounds
- if (first)
- m_bounds = curitem.m_rawbounds;
- else
- union_render_bounds(m_bounds, curitem.m_rawbounds);
- first = false;
+ // accumulate bounds
+ if (first)
+ m_bounds = curitem.m_rawbounds;
+ else
+ union_render_bounds(m_bounds, curitem.m_rawbounds);
+ first = false;
- // accumulate screen bounds
- if (curitem.m_screen)
- {
- if (scrfirst)
- m_scrbounds = curitem.m_rawbounds;
- else
- union_render_bounds(m_scrbounds, curitem.m_rawbounds);
- scrfirst = false;
+ // accumulate screen bounds
+ if (curitem.m_screen)
+ {
+ if (scrfirst)
+ m_scrbounds = curitem.m_rawbounds;
+ else
+ union_render_bounds(m_scrbounds, curitem.m_rawbounds);
+ scrfirst = false;
- // accumulate the screens in use while we're scanning
- m_screens.add(*curitem.m_screen);
- }
- }
+ // accumulate the screens in use while we're scanning
+ m_screens.add(*curitem.m_screen);
+ }
}
// if we have an explicit bounds, override it
@@ -3085,14 +3083,13 @@ void layout_view::recompute(render_layer_config layerconfig)
float yscale = (target_bounds.y1 - target_bounds.y0) / (m_bounds.y1 - m_bounds.y0);
// normalize all the item bounds
- for (item_layer layer = ITEM_LAYER_FIRST; layer < ITEM_LAYER_MAX; ++layer)
- for (item &curitem : items(layer))
- {
- curitem.m_bounds.x0 = target_bounds.x0 + (curitem.m_rawbounds.x0 - xoffs) * xscale;
- curitem.m_bounds.x1 = target_bounds.x0 + (curitem.m_rawbounds.x1 - xoffs) * xscale;
- curitem.m_bounds.y0 = target_bounds.y0 + (curitem.m_rawbounds.y0 - yoffs) * yscale;
- curitem.m_bounds.y1 = target_bounds.y0 + (curitem.m_rawbounds.y1 - yoffs) * yscale;
- }
+ for (item &curitem : items())
+ {
+ curitem.m_bounds.x0 = target_bounds.x0 + (curitem.m_rawbounds.x0 - xoffs) * xscale;
+ curitem.m_bounds.x1 = target_bounds.x0 + (curitem.m_rawbounds.x1 - xoffs) * xscale;
+ curitem.m_bounds.y0 = target_bounds.y0 + (curitem.m_rawbounds.y0 - yoffs) * yscale;
+ curitem.m_bounds.y1 = target_bounds.y0 + (curitem.m_rawbounds.y1 - yoffs) * yscale;
+ }
}
@@ -3102,13 +3099,8 @@ void layout_view::recompute(render_layer_config layerconfig)
void layout_view::resolve_tags()
{
- for (item_layer layer = ITEM_LAYER_FIRST; layer < ITEM_LAYER_MAX; ++layer)
- {
- for (item &curitem : items(layer))
- {
- curitem.resolve_tags();
- }
- }
+ for (item &curitem : items())
+ curitem.resolve_tags();
}
@@ -3117,6 +3109,7 @@ void layout_view::resolve_tags()
//-------------------------------------------------
void layout_view::add_items(
+ layer_lists &layers,
environment &env,
util::xml::data_node const &parentnode,
element_map &elemmap,
@@ -3154,27 +3147,37 @@ void layout_view::add_items(
}
else if (!strcmp(itemnode->get_name(), "backdrop"))
{
- m_backdrop_list.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ layers.backdrops.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ m_has_art = true;
}
else if (!strcmp(itemnode->get_name(), "screen"))
{
- m_screen_list.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ layers.screens.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ }
+ else if (!strcmp(itemnode->get_name(), "element"))
+ {
+ layers.screens.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ m_has_art = true;
}
else if (!strcmp(itemnode->get_name(), "overlay"))
{
- m_overlay_list.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ layers.overlays.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ m_has_art = true;
}
else if (!strcmp(itemnode->get_name(), "bezel"))
{
- m_bezel_list.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ layers.bezels.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ m_has_art = true;
}
else if (!strcmp(itemnode->get_name(), "cpanel"))
{
- m_cpanel_list.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ layers.cpanels.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ m_has_art = true;
}
else if (!strcmp(itemnode->get_name(), "marquee"))
{
- m_marquee_list.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ layers.marquees.emplace_back(env, *itemnode, elemmap, orientation, trans, color);
+ m_has_art = true;
}
else if (!strcmp(itemnode->get_name(), "group"))
{
@@ -3205,6 +3208,7 @@ void layout_view::add_items(
environment local(env);
add_items(
+ layers,
local,
found->second.get_groupnode(),
elemmap,
@@ -3224,7 +3228,7 @@ void layout_view::add_items(
environment local(env);
for (int i = 0; count > i; ++i)
{
- add_items(local, *itemnode, elemmap, groupmap, orientation, trans, color, false, true, !i);
+ add_items(layers, local, *itemnode, elemmap, groupmap, orientation, trans, color, false, true, !i);
local.increment_parameters();
}
}
@@ -3277,30 +3281,21 @@ layout_view::item::item(
int orientation,
layout_group::transform const &trans,
render_color const &color)
- : m_element(nullptr)
+ : m_element(find_element(env, itemnode, elemmap))
, m_output(env.device(), env.get_attribute_string(itemnode, "name", ""))
, m_have_output(env.get_attribute_string(itemnode, "name", "")[0])
- , m_input_tag(env.get_attribute_string(itemnode, "inputtag", ""))
+ , m_input_tag(make_input_tag(env, itemnode))
, m_input_port(nullptr)
- , m_input_mask(0)
+ , m_input_field(nullptr)
+ , m_input_mask(env.get_attribute_int(itemnode, "inputmask", 0))
, m_input_shift(0)
- , m_input_raw(false)
+ , m_input_raw(0 != env.get_attribute_int(itemnode, "inputraw", 0))
, m_screen(nullptr)
, m_orientation(orientation_add(env.parse_orientation(itemnode.get_child("orientation")), orientation))
+ , m_rawbounds(make_bounds(env, itemnode, trans))
, m_color(render_color_multiply(env.parse_color(itemnode.get_child("color")), color))
+ , m_blend_mode(get_blend_mode(env, itemnode))
{
- // find the associated element
- char const *const name(env.get_attribute_string(itemnode, "element", nullptr));
- if (name)
- {
- // search the list of elements for a match, error if not found
- element_map::iterator const found(elemmap.find(name));
- if (elemmap.end() != found)
- m_element = &found->second;
- else
- throw layout_syntax_error(util::string_format("unable to find element %s", name));
- }
-
// outputs need resolving
if (m_have_output)
m_output.resolve();
@@ -3309,17 +3304,10 @@ layout_view::item::item(
int index = env.get_attribute_int(itemnode, "index", -1);
if (index != -1)
m_screen = screen_device_iterator(env.machine().root_device()).byindex(index);
- m_input_mask = env.get_attribute_int(itemnode, "inputmask", 0);
- for (u32 mask = m_input_mask; (mask != 0) && (~mask & 1); mask >>= 1) m_input_shift++;
- m_input_raw = env.get_attribute_int(itemnode, "inputraw", 0) == 1;
+ for (u32 mask = m_input_mask; (mask != 0) && (~mask & 1); mask >>= 1)
+ m_input_shift++;
if (m_have_output && m_element)
m_output = m_element->default_state();
- env.parse_bounds(itemnode.get_child("bounds"), m_rawbounds);
- render_bounds_transform(m_rawbounds, trans);
- if (m_rawbounds.x0 > m_rawbounds.x1)
- std::swap(m_rawbounds.x0, m_rawbounds.x1);
- if (m_rawbounds.y0 > m_rawbounds.y1)
- std::swap(m_rawbounds.y0, m_rawbounds.y1);
// sanity checks
if (strcmp(itemnode.get_name(), "screen") == 0)
@@ -3340,9 +3328,6 @@ layout_view::item::item(
{
throw layout_syntax_error(util::string_format("item of type %s require an element tag", itemnode.get_name()));
}
-
- if (has_input())
- m_input_port = env.device().ioport(m_input_tag.c_str());
}
@@ -3382,17 +3367,17 @@ int layout_view::item::state() const
else if (!m_input_tag.empty())
{
// if configured to an input, fetch the input value
- if (m_input_port)
+ if (m_input_raw)
{
- if (m_input_raw)
- {
+ if (m_input_port)
return (m_input_port->read() & m_input_mask) >> m_input_shift;
- }
- else
+ }
+ else
+ {
+ if (m_input_field)
{
- ioport_field const *const field = m_input_port->field(m_input_mask);
- if (field)
- return ((m_input_port->read() ^ field->defvalue()) & m_input_mask) ? 1 : 0;
+ assert(m_input_port);
+ return ((m_input_port->read() ^ m_input_field->defvalue()) & m_input_mask) ? 1 : 0;
}
}
}
@@ -3405,13 +3390,96 @@ int layout_view::item::state() const
// resolve_tags - resolve tags, if any are set
//---------------------------------------------
-
void layout_view::item::resolve_tags()
{
- if (has_input())
+ if (!m_input_tag.empty())
{
m_input_port = m_element->machine().root_device().ioport(m_input_tag.c_str());
+ if (m_input_port)
+ m_input_field = m_input_port->field(m_input_mask);
+ }
+}
+
+
+//---------------------------------------------
+// find_element - find element definition
+//---------------------------------------------
+
+layout_element *layout_view::item::find_element(environment &env, util::xml::data_node const &itemnode, element_map &elemmap)
+{
+ char const *const name(env.get_attribute_string(itemnode, !strcmp(itemnode.get_name(), "element") ? "ref" : "element", nullptr));
+ if (!name)
+ return nullptr;
+
+ // search the list of elements for a match, error if not found
+ element_map::iterator const found(elemmap.find(name));
+ if (elemmap.end() != found)
+ return &found->second;
+ else
+ throw layout_syntax_error(util::string_format("unable to find element %s", name));
+}
+
+
+//---------------------------------------------
+// make_bounds - get transformed bounds
+//---------------------------------------------
+
+render_bounds layout_view::item::make_bounds(
+ environment &env,
+ util::xml::data_node const &itemnode,
+ layout_group::transform const &trans)
+{
+ render_bounds bounds;
+ env.parse_bounds(itemnode.get_child("bounds"), bounds);
+ render_bounds_transform(bounds, trans);
+ if (bounds.x0 > bounds.x1)
+ std::swap(bounds.x0, bounds.x1);
+ if (bounds.y0 > bounds.y1)
+ std::swap(bounds.y0, bounds.y1);
+ return bounds;
+}
+
+
+//---------------------------------------------
+// make_input_tag - get absolute input tag
+//---------------------------------------------
+
+std::string layout_view::item::make_input_tag(environment &env, util::xml::data_node const &itemnode)
+{
+ char const *tag(env.get_attribute_string(itemnode, "inputtag", nullptr));
+ return tag ? env.device().subtag(tag) : std::string();
+}
+
+
+//---------------------------------------------
+// get_blend_mode - explicit or implicit blend
+//---------------------------------------------
+
+int layout_view::item::get_blend_mode(environment &env, util::xml::data_node const &itemnode)
+{
+ // see if there's a blend mode attribute
+ char const *const mode(env.get_attribute_string(itemnode, "blend", nullptr));
+ if (mode)
+ {
+ if (!strcmp(mode, "none"))
+ return BLENDMODE_NONE;
+ else if (!strcmp(mode, "alpha"))
+ return BLENDMODE_ALPHA;
+ else if (!strcmp(mode, "multiply"))
+ return BLENDMODE_RGB_MULTIPLY;
+ else if (!strcmp(mode, "add"))
+ return BLENDMODE_ADD;
+ else
+ throw layout_syntax_error(util::string_format("unknown blend mode %s", mode));
}
+
+ // fall back to implicit blend mode based on element type
+ if (!strcmp(itemnode.get_name(), "screen"))
+ return BLENDMODE_ADD;
+ else if (!strcmp(itemnode.get_name(), "overlay"))
+ return BLENDMODE_RGB_MULTIPLY;
+ else
+ return BLENDMODE_ALPHA;
}
diff --git a/src/emu/uiinput.cpp b/src/emu/uiinput.cpp
index 18fee890eec..78cc662022a 100644
--- a/src/emu/uiinput.cpp
+++ b/src/emu/uiinput.cpp
@@ -33,18 +33,18 @@ enum
//-------------------------------------------------
ui_input_manager::ui_input_manager(running_machine &machine)
- : m_machine(machine),
- m_current_mouse_target(nullptr),
- m_current_mouse_down(false),
- m_current_mouse_field(nullptr),
- m_events_start(0),
- m_events_end(0)
+ : m_machine(machine)
+ , m_current_mouse_target(nullptr)
+ , m_current_mouse_down(false)
+ , m_current_mouse_field(nullptr)
+ , m_events_start(0)
+ , m_events_end(0)
{
- /* create the private data */
+ // create the private data
m_current_mouse_x = -1;
m_current_mouse_y = -1;
- /* add a frame callback to poll inputs */
+ // add a frame callback to poll inputs
machine.add_notifier(MACHINE_NOTIFY_FRAME, machine_notify_delegate(&ui_input_manager::frame_update, this));
}
@@ -95,7 +95,7 @@ void ui_input_manager::frame_update()
bool ui_input_manager::push_event(ui_event evt)
{
- /* some pre-processing (this is an icky place to do this stuff!) */
+ // some pre-processing (this is an icky place to do this stuff!)
switch (evt.event_type)
{
case ui_event::MOUSE_MOVE:
@@ -126,7 +126,7 @@ bool ui_input_manager::push_event(ui_event evt)
break;
}
- /* is the queue filled up? */
+ // is the queue filled up?
if ((m_events_end + 1) % ARRAY_LENGTH(m_events) == m_events_start)
return false;
diff --git a/src/emu/video.cpp b/src/emu/video.cpp
index f967ef78935..8732fa9307e 100644
--- a/src/emu/video.cpp
+++ b/src/emu/video.cpp
@@ -152,11 +152,6 @@ video_manager::video_manager(running_machine &machine)
}
m_snap_target = machine.render().target_alloc(*root, RENDER_CREATE_SINGLE_FILE | RENDER_CREATE_HIDDEN);
- m_snap_target->set_backdrops_enabled(false);
- m_snap_target->set_overlays_enabled(false);
- m_snap_target->set_bezels_enabled(false);
- m_snap_target->set_cpanels_enabled(false);
- m_snap_target->set_marquees_enabled(false);
m_snap_target->set_screen_overlay_enabled(false);
m_snap_target->set_zoom_to_screen(false);
}
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index 3024e9cc20b..b786eaeb5c8 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -1925,9 +1925,6 @@ void lua_engine::initialize()
* target.max_update_rate -
* target.view - current target layout view
* target.orientation - current target orientation
- * target.backdrops - enable backdrops
- * target.bezels - enable bezels
- * target.marquees - enable marquees
* target.screen_overlay - enable overlays
* target.zoom - enable zoom
*/
@@ -1947,10 +1944,6 @@ void lua_engine::initialize()
"max_update_rate", sol::property(&render_target::max_update_rate, &render_target::set_max_update_rate),
"view", sol::property(&render_target::view, &render_target::set_view),
"orientation", sol::property(&render_target::orientation, &render_target::set_orientation),
- "backdrops", sol::property(&render_target::backdrops_enabled, &render_target::set_backdrops_enabled),
- "overlays", sol::property(&render_target::overlays_enabled, &render_target::set_overlays_enabled),
- "bezels", sol::property(&render_target::bezels_enabled, &render_target::set_bezels_enabled),
- "marquees", sol::property(&render_target::marquees_enabled, &render_target::set_marquees_enabled),
"screen_overlay", sol::property(&render_target::screen_overlay_enabled, &render_target::set_screen_overlay_enabled),
"zoom", sol::property(&render_target::zoom_to_screen, &render_target::set_zoom_to_screen));
diff --git a/src/frontend/mame/ui/submenu.cpp b/src/frontend/mame/ui/submenu.cpp
index a9134935f7a..f9cff799c1f 100644
--- a/src/frontend/mame/ui/submenu.cpp
+++ b/src/frontend/mame/ui/submenu.cpp
@@ -55,11 +55,6 @@ std::vector<submenu::option> const submenu::advanced_options = {
{ submenu::option_type::HEAD, __("Artwork Options") },
{ submenu::option_type::EMU, __("Artwork Crop"), OPTION_ARTWORK_CROP },
- { submenu::option_type::EMU, __("Use Backdrops"), OPTION_USE_BACKDROPS },
- { submenu::option_type::EMU, __("Use Overlays"), OPTION_USE_OVERLAYS },
- { submenu::option_type::EMU, __("Use Bezels"), OPTION_USE_BEZELS },
- { submenu::option_type::EMU, __("Use Control Panels"), OPTION_USE_CPANELS },
- { submenu::option_type::EMU, __("Use Marquees"), OPTION_USE_MARQUEES },
{ submenu::option_type::HEAD, __("State/Playback Options") },
{ submenu::option_type::EMU, __("Automatic save/restore"), OPTION_AUTOSAVE },
diff --git a/src/frontend/mame/ui/videoopt.cpp b/src/frontend/mame/ui/videoopt.cpp
index 7ee243ec4e2..baa0a265cb6 100644
--- a/src/frontend/mame/ui/videoopt.cpp
+++ b/src/frontend/mame/ui/videoopt.cpp
@@ -71,86 +71,46 @@ void menu_video_options::handle()
{
bool changed = false;
- /* process the menu */
+ // process the menu
const event *menu_event = process(0);
if (menu_event != nullptr && menu_event->itemref != nullptr)
{
switch ((uintptr_t)menu_event->itemref)
{
- /* rotate adds rotation depending on the direction */
- case VIDEO_ITEM_ROTATE:
- if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
- {
- int delta = (menu_event->iptkey == IPT_UI_LEFT) ? ROT270 : ROT90;
- target->set_orientation(orientation_add(delta, target->orientation()));
- if (target->is_ui_target())
- {
- render_container::user_settings settings;
- container().get_user_settings(settings);
- settings.m_orientation = orientation_add(delta ^ ROT180, settings.m_orientation);
- container().set_user_settings(settings);
- }
- changed = true;
- }
- break;
-
- /* layer config bitmasks handle left/right keys the same (toggle) */
- case VIDEO_ITEM_BACKDROPS:
- if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
- {
- target->set_backdrops_enabled(!target->backdrops_enabled());
- changed = true;
- }
- break;
-
- case VIDEO_ITEM_OVERLAYS:
- if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
- {
- target->set_overlays_enabled(!target->overlays_enabled());
- changed = true;
- }
- break;
-
- case VIDEO_ITEM_BEZELS:
- if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
- {
- target->set_bezels_enabled(!target->bezels_enabled());
- changed = true;
- }
- break;
-
- case VIDEO_ITEM_CPANELS:
- if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
- {
- target->set_cpanels_enabled(!target->cpanels_enabled());
- changed = true;
- }
- break;
-
- case VIDEO_ITEM_MARQUEES:
- if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
+ // rotate adds rotation depending on the direction
+ case VIDEO_ITEM_ROTATE:
+ if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
+ {
+ int delta = (menu_event->iptkey == IPT_UI_LEFT) ? ROT270 : ROT90;
+ target->set_orientation(orientation_add(delta, target->orientation()));
+ if (target->is_ui_target())
{
- target->set_marquees_enabled(!target->marquees_enabled());
- changed = true;
+ render_container::user_settings settings;
+ container().get_user_settings(settings);
+ settings.m_orientation = orientation_add(delta ^ ROT180, settings.m_orientation);
+ container().set_user_settings(settings);
}
- break;
+ changed = true;
+ }
+ break;
- case VIDEO_ITEM_ZOOM:
- if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
- {
- target->set_zoom_to_screen(!target->zoom_to_screen());
- changed = true;
- }
- break;
+ // layer config bitmasks handle left/right keys the same (toggle)
+ case VIDEO_ITEM_ZOOM:
+ if (menu_event->iptkey == IPT_UI_LEFT || menu_event->iptkey == IPT_UI_RIGHT)
+ {
+ target->set_zoom_to_screen(!target->zoom_to_screen());
+ changed = true;
+ }
+ break;
- /* anything else is a view item */
- default:
- if (menu_event->iptkey == IPT_UI_SELECT && (int)(uintptr_t)menu_event->itemref >= VIDEO_ITEM_VIEW)
- {
- target->set_view((uintptr_t)menu_event->itemref - VIDEO_ITEM_VIEW);
- changed = true;
- }
- break;
+ // anything else is a view item
+ default:
+ if (menu_event->iptkey == IPT_UI_SELECT && (int)(uintptr_t)menu_event->itemref >= VIDEO_ITEM_VIEW)
+ {
+ target->set_view((uintptr_t)menu_event->itemref - VIDEO_ITEM_VIEW);
+ changed = true;
+ }
+ break;
}
}
@@ -174,56 +134,35 @@ void menu_video_options::populate(float &customtop, float &custombottom)
{
const char *subtext = "";
std::string tempstring;
- int viewnum;
int enabled;
- /* add items for each view */
- for (viewnum = 0; ; viewnum++)
+ // add items for each view
+ for (int viewnum = 0; ; viewnum++)
{
const char *name = target->view_name(viewnum);
if (name == nullptr)
break;
- /* create a string for the item, replacing underscores with spaces */
+ // create a string for the item, replacing underscores with spaces
tempstring.assign(name);
strreplace(tempstring, "_", " ");
item_append(tempstring, "", 0, (void *)(uintptr_t)(VIDEO_ITEM_VIEW + viewnum));
}
- /* add a separator */
+ // add a separator
item_append(menu_item_type::SEPARATOR);
- /* add a rotate item */
+ // add a rotate item
switch (target->orientation())
{
- case ROT0: subtext = "None"; break;
- case ROT90: subtext = "CW 90" UTF8_DEGREES; break;
- case ROT180: subtext = "180" UTF8_DEGREES; break;
- case ROT270: subtext = "CCW 90" UTF8_DEGREES; break;
+ case ROT0: subtext = "None"; break;
+ case ROT90: subtext = "CW 90" UTF8_DEGREES; break;
+ case ROT180: subtext = "180" UTF8_DEGREES; break;
+ case ROT270: subtext = "CCW 90" UTF8_DEGREES; break;
}
item_append(_("Rotate"), subtext, FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW, (void *)VIDEO_ITEM_ROTATE);
- /* backdrop item */
- enabled = target->backdrops_enabled();
- item_append(_("Backdrops"), enabled ? _("Enabled") : _("Disabled"), enabled ? FLAG_LEFT_ARROW : FLAG_RIGHT_ARROW, (void *)VIDEO_ITEM_BACKDROPS);
-
- /* overlay item */
- enabled = target->overlays_enabled();
- item_append(_("Overlays"), enabled ? _("Enabled") : _("Disabled"), enabled ? FLAG_LEFT_ARROW : FLAG_RIGHT_ARROW, (void *)VIDEO_ITEM_OVERLAYS);
-
- /* bezel item */
- enabled = target->bezels_enabled();
- item_append(_("Bezels"), enabled ? _("Enabled") : _("Disabled"), enabled ? FLAG_LEFT_ARROW : FLAG_RIGHT_ARROW, (void *)VIDEO_ITEM_BEZELS);
-
- /* cpanel item */
- enabled = target->cpanels_enabled();
- item_append(_("CPanels"), enabled ? _("Enabled") : _("Disabled"), enabled ? FLAG_LEFT_ARROW : FLAG_RIGHT_ARROW, (void *)VIDEO_ITEM_CPANELS);
-
- /* marquee item */
- enabled = target->marquees_enabled();
- item_append(_("Marquees"), enabled ? _("Enabled") : _("Disabled"), enabled ? FLAG_LEFT_ARROW : FLAG_RIGHT_ARROW, (void *)VIDEO_ITEM_MARQUEES);
-
- /* cropping */
+ // cropping
enabled = target->zoom_to_screen();
item_append(_("View"), enabled ? _("Cropped") : _("Full"), enabled ? FLAG_RIGHT_ARROW : FLAG_LEFT_ARROW, (void *)VIDEO_ITEM_ZOOM);
}
diff --git a/src/frontend/mame/ui/videoopt.h b/src/frontend/mame/ui/videoopt.h
index d920fe55837..c26281ffd1b 100644
--- a/src/frontend/mame/ui/videoopt.h
+++ b/src/frontend/mame/ui/videoopt.h
@@ -36,11 +36,6 @@ public:
private:
enum {
VIDEO_ITEM_ROTATE = 0x80000000,
- VIDEO_ITEM_BACKDROPS,
- VIDEO_ITEM_OVERLAYS,
- VIDEO_ITEM_BEZELS,
- VIDEO_ITEM_CPANELS,
- VIDEO_ITEM_MARQUEES,
VIDEO_ITEM_ZOOM,
VIDEO_ITEM_VIEW
};
diff --git a/src/mame/layout/intlc44.lay b/src/mame/layout/intlc44.lay
index 1484429952e..7c39187edc4 100644
--- a/src/mame/layout/intlc44.lay
+++ b/src/mame/layout/intlc44.lay
@@ -155,74 +155,74 @@ Intel INTELLEC® 4/MOD 4 layout
</element>
<group name="panel">
- <cpanel element="background"><bounds left="0" top="0" right="1000" bottom="400" /></cpanel>
-
- <cpanel element="label_address"><bounds left="72" top="55" right="506" bottom="63" /></cpanel>
-
- <cpanel element="label_status"><bounds left="540" top="55" right="662" bottom="63" /></cpanel>
- <cpanel element="label_search"><bounds left="561" top="63" right="610" bottom="70" /></cpanel>
- <cpanel element="label_complete"><bounds left="561" top="71" right="610" bottom="78" /></cpanel>
- <cpanel element="label_pointer"><bounds left="623" top="63" right="672" bottom="70" /></cpanel>
- <cpanel element="label_valid"><bounds left="623" top="71" right="672" bottom="78" /></cpanel>
- <cpanel element="label_cpu"><bounds left="611" top="71" right="626" bottom="78" /></cpanel>
-
- <cpanel element="label_instruction"><bounds left="72" top="104" right="350" bottom="112" /></cpanel>
-
- <cpanel element="label_active_bank"><bounds left="384" top="104" right="506" bottom="112" /></cpanel>
- <cpanel element="label_cm_ram"><bounds left="393" top="112" right="497" bottom="119" /></cpanel>
- <cpanel element="label_3"><bounds left="393" top="120" right="404" bottom="127" /></cpanel>
- <cpanel element="label_2"><bounds left="424" top="120" right="435" bottom="127" /></cpanel>
- <cpanel element="label_1"><bounds left="455" top="120" right="466" bottom="127" /></cpanel>
- <cpanel element="label_0"><bounds left="486" top="120" right="497" bottom="127" /></cpanel>
-
- <cpanel element="label_mode"><bounds left="540" top="104" right="662" bottom="112" /></cpanel>
- <cpanel element="label_mon"><bounds left="577" top="120" right="594" bottom="127" /></cpanel>
- <cpanel element="label_ram"><bounds left="608" top="120" right="625" bottom="127" /></cpanel>
- <cpanel element="label_prom"><bounds left="639" top="120" right="656" bottom="127" /></cpanel>
-
- <cpanel element="label_execution"><bounds left="72" top="153" right="350" bottom="161" /></cpanel>
-
- <cpanel element="label_last_ptr"><bounds left="384" top="153" right="662" bottom="161" /></cpanel>
-
- <cpanel element="label_addr_data"><bounds left="72" top="214" right="506" bottom="222" /></cpanel>
-
- <cpanel element="label_mode_ctrl"><bounds left="571" top="214" right="662" bottom="222" /></cpanel>
- <cpanel element="label_mon"><bounds left="573" top="230" right="598" bottom="237" /></cpanel>
- <cpanel element="label_ram"><bounds left="604" top="230" right="629" bottom="237" /></cpanel>
- <cpanel element="label_prom"><bounds left="635" top="230" right="660" bottom="237" /></cpanel>
-
- <cpanel element="label_prgm"><bounds left="728" top="214" right="753" bottom="221" /></cpanel>
- <cpanel element="label_prom"><bounds left="728" top="222" right="753" bottom="229" /></cpanel>
- <cpanel element="label_pwr"><bounds left="728" top="230" right="753" bottom="237" /></cpanel>
- <cpanel element="label_on"><bounds left="758" top="239" right="814" bottom="246" /></cpanel>
- <cpanel element="label_off"><bounds left="758" top="279" right="814" bottom="287" /></cpanel>
-
- <cpanel element="label_pass_counter"><bounds left="72" top="296" right="194" bottom="304" /></cpanel>
- <cpanel element="label_passes"><bounds left="74" top="304" right="192" bottom="311" /></cpanel>
-
- <cpanel element="label_search_ctrl"><bounds left="228" top="296" right="381" bottom="304" /></cpanel>
- <cpanel element="label_run"><bounds left="230" top="312" right="255" bottom="319" /></cpanel>
- <cpanel element="label_next"><bounds left="261" top="304" right="286" bottom="311" /></cpanel>
- <cpanel element="label_inst"><bounds left="261" top="312" right="286" bottom="319" /></cpanel>
- <cpanel element="label_decr"><bounds left="292" top="312" right="317" bottom="319" /></cpanel>
- <cpanel element="label_incr"><bounds left="323" top="312" right="348" bottom="319" /></cpanel>
- <cpanel element="label_load"><bounds left="354" top="312" right="379" bottom="319" /></cpanel>
-
- <cpanel element="label_test"><bounds left="446" top="296" right="506" bottom="304" /></cpanel>
- <cpanel element="label_hold"><bounds left="448" top="312" right="473" bottom="319" /></cpanel>
- <cpanel element="label_one"><bounds left="479" top="304" right="504" bottom="311" /></cpanel>
- <cpanel element="label_shot"><bounds left="479" top="312" right="504" bottom="319" /></cpanel>
-
- <cpanel element="label_cma"><bounds left="571" top="296" right="631" bottom="304" /></cpanel>
- <cpanel element="label_write"><bounds left="604" top="312" right="629" bottom="319" /></cpanel>
- <cpanel element="label_enable"><bounds left="514" top="321" right="570" bottom="328" /></cpanel>
- <cpanel element="label_disable"><bounds left="514" top="361" right="570" bottom="368" /></cpanel>
-
- <cpanel element="label_reset_ctrl"><bounds left="664" top="296" right="724" bottom="304" /></cpanel>
- <cpanel element="label_reset"><bounds left="666" top="312" right="691" bottom="319" /></cpanel>
- <cpanel element="label_reset_mode"><bounds left="697" top="312" right="722" bottom="319" /></cpanel>
- <cpanel element="label_system"><bounds left="727" top="321" right="783" bottom="328" /></cpanel>
- <cpanel element="label_reset_cpu"><bounds left="727" top="361" right="783" bottom="368" /></cpanel>
+ <element ref="background"><bounds left="0" top="0" right="1000" bottom="400" /></element>
+
+ <element ref="label_address"><bounds left="72" top="55" right="506" bottom="63" /></element>
+
+ <element ref="label_status"><bounds left="540" top="55" right="662" bottom="63" /></element>
+ <element ref="label_search"><bounds left="561" top="63" right="610" bottom="70" /></element>
+ <element ref="label_complete"><bounds left="561" top="71" right="610" bottom="78" /></element>
+ <element ref="label_pointer"><bounds left="623" top="63" right="672" bottom="70" /></element>
+ <element ref="label_valid"><bounds left="623" top="71" right="672" bottom="78" /></element>
+ <element ref="label_cpu"><bounds left="611" top="71" right="626" bottom="78" /></element>
+
+ <element ref="label_instruction"><bounds left="72" top="104" right="350" bottom="112" /></element>
+
+ <element ref="label_active_bank"><bounds left="384" top="104" right="506" bottom="112" /></element>
+ <element ref="label_cm_ram"><bounds left="393" top="112" right="497" bottom="119" /></element>
+ <element ref="label_3"><bounds left="393" top="120" right="404" bottom="127" /></element>
+ <element ref="label_2"><bounds left="424" top="120" right="435" bottom="127" /></element>
+ <element ref="label_1"><bounds left="455" top="120" right="466" bottom="127" /></element>
+ <element ref="label_0"><bounds left="486" top="120" right="497" bottom="127" /></element>
+
+ <element ref="label_mode"><bounds left="540" top="104" right="662" bottom="112" /></element>
+ <element ref="label_mon"><bounds left="577" top="120" right="594" bottom="127" /></element>
+ <element ref="label_ram"><bounds left="608" top="120" right="625" bottom="127" /></element>
+ <element ref="label_prom"><bounds left="639" top="120" right="656" bottom="127" /></element>
+
+ <element ref="label_execution"><bounds left="72" top="153" right="350" bottom="161" /></element>
+
+ <element ref="label_last_ptr"><bounds left="384" top="153" right="662" bottom="161" /></element>
+
+ <element ref="label_addr_data"><bounds left="72" top="214" right="506" bottom="222" /></element>
+
+ <element ref="label_mode_ctrl"><bounds left="571" top="214" right="662" bottom="222" /></element>
+ <element ref="label_mon"><bounds left="573" top="230" right="598" bottom="237" /></element>
+ <element ref="label_ram"><bounds left="604" top="230" right="629" bottom="237" /></element>
+ <element ref="label_prom"><bounds left="635" top="230" right="660" bottom="237" /></element>
+
+ <element ref="label_prgm"><bounds left="728" top="214" right="753" bottom="221" /></element>
+ <element ref="label_prom"><bounds left="728" top="222" right="753" bottom="229" /></element>
+ <element ref="label_pwr"><bounds left="728" top="230" right="753" bottom="237" /></element>
+ <element ref="label_on"><bounds left="758" top="239" right="814" bottom="246" /></element>
+ <element ref="label_off"><bounds left="758" top="279" right="814" bottom="287" /></element>
+
+ <element ref="label_pass_counter"><bounds left="72" top="296" right="194" bottom="304" /></element>
+ <element ref="label_passes"><bounds left="74" top="304" right="192" bottom="311" /></element>
+
+ <element ref="label_search_ctrl"><bounds left="228" top="296" right="381" bottom="304" /></element>
+ <element ref="label_run"><bounds left="230" top="312" right="255" bottom="319" /></element>
+ <element ref="label_next"><bounds left="261" top="304" right="286" bottom="311" /></element>
+ <element ref="label_inst"><bounds left="261" top="312" right="286" bottom="319" /></element>
+ <element ref="label_decr"><bounds left="292" top="312" right="317" bottom="319" /></element>
+ <element ref="label_incr"><bounds left="323" top="312" right="348" bottom="319" /></element>
+ <element ref="label_load"><bounds left="354" top="312" right="379" bottom="319" /></element>
+
+ <element ref="label_test"><bounds left="446" top="296" right="506" bottom="304" /></element>
+ <element ref="label_hold"><bounds left="448" top="312" right="473" bottom="319" /></element>
+ <element ref="label_one"><bounds left="479" top="304" right="504" bottom="311" /></element>
+ <element ref="label_shot"><bounds left="479" top="312" right="504" bottom="319" /></element>
+
+ <element ref="label_cma"><bounds left="571" top="296" right="631" bottom="304" /></element>
+ <element ref="label_write"><bounds left="604" top="312" right="629" bottom="319" /></element>
+ <element ref="label_enable"><bounds left="514" top="321" right="570" bottom="328" /></element>
+ <element ref="label_disable"><bounds left="514" top="361" right="570" bottom="368" /></element>
+
+ <element ref="label_reset_ctrl"><bounds left="664" top="296" right="724" bottom="304" /></element>
+ <element ref="label_reset"><bounds left="666" top="312" right="691" bottom="319" /></element>
+ <element ref="label_reset_mode"><bounds left="697" top="312" right="722" bottom="319" /></element>
+ <element ref="label_system"><bounds left="727" top="321" right="783" bottom="328" /></element>
+ <element ref="label_reset_cpu"><bounds left="727" top="361" right="783" bottom="368" /></element>
<repeat count="3">
<param name="groupnum" start="11" increment="-4" />
@@ -230,173 +230,173 @@ Intel INTELLEC® 4/MOD 4 layout
<param name="nybble" start="3" increment="-1" />
<param name="switchpos" start="74" increment="156" />
<param name="groupmask" start="0x0800" rshift="4" />
- <cpanel element="label_a~nybble~">
+ <element ref="label_a~nybble~">
<bounds x="~ledpos~" y="63" width="104" height="7" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="labelnum" start="~groupnum~" increment="-1" />
<param name="ledpos" start="~ledpos~" increment="31" />
<param name="switchpos" start="~switchpos~" increment="31" />
<param name="bit" start="3" increment="-1" />
<param name="bitmask" start="~groupmask~" rshift="1" />
- <cpanel element="label_~labelnum~">
+ <element ref="label_~labelnum~">
<bounds x="~ledpos~" y="71" width="11" height="7" />
- </cpanel>
- <cpanel element="label_~labelnum~">
+ </element>
+ <element ref="label_~labelnum~">
<bounds x="~switchpos~" y="230" width="25" height="7" />
- </cpanel>
- <cpanel name="led_address_a~nybble~_~bit~" element="led">
+ </element>
+ <element name="led_address_a~nybble~_~bit~" ref="led">
<bounds x="~ledpos~" y="79" width="11" height="7" />
- </cpanel>
- <cpanel element="switch" inputtag="ADDRDAT" inputmask="~bitmask~">
+ </element>
+ <element ref="switch" inputtag="ADDRDAT" inputmask="~bitmask~">
<bounds x="~switchpos~" y="240" width="25" height="46" />
- </cpanel>
+ </element>
</repeat>
</repeat>
- <cpanel name="led_status_search" element="led">
+ <element name="led_status_search" ref="led">
<bounds left="580" top="79" right="591" bottom="86" />
- </cpanel>
- <cpanel name="led_status_cpu" element="led">
+ </element>
+ <element name="led_status_cpu" ref="led">
<bounds left="611" top="79" right="622" bottom="86" />
- </cpanel>
- <cpanel name="led_status_ptr_valid" element="led">
+ </element>
+ <element name="led_status_ptr_valid" ref="led">
<bounds left="642" top="79" right="653" bottom="86" />
- </cpanel>
+ </element>
- <cpanel name="led_active_bank_3" element="led">
+ <element name="led_active_bank_3" ref="led">
<bounds left="393" top="128" right="404" bottom="135" />
- </cpanel>
- <cpanel name="led_active_bank_2" element="led">
+ </element>
+ <element name="led_active_bank_2" ref="led">
<bounds left="424" top="128" right="435" bottom="135" />
- </cpanel>
- <cpanel name="led_active_bank_1" element="led">
+ </element>
+ <element name="led_active_bank_1" ref="led">
<bounds left="455" top="128" right="466" bottom="135" />
- </cpanel>
- <cpanel name="led_active_bank_0" element="led">
+ </element>
+ <element name="led_active_bank_0" ref="led">
<bounds left="486" top="128" right="497" bottom="135" />
- </cpanel>
+ </element>
- <cpanel name="led_mode_mon" element="led">
+ <element name="led_mode_mon" ref="led">
<bounds left="580" top="128" right="591" bottom="135" />
- </cpanel>
- <cpanel name="led_mode_ram" element="led">
+ </element>
+ <element name="led_mode_ram" ref="led">
<bounds left="611" top="128" right="622" bottom="135" />
- </cpanel>
- <cpanel name="led_mode_prom" element="led">
+ </element>
+ <element name="led_mode_prom" ref="led">
<bounds left="642" top="128" right="653" bottom="135" />
- </cpanel>
+ </element>
<repeat count="2">
<param name="groupx" start="81" increment="156" />
<param name="mnybble" start="1" increment="1" />
<param name="xnybble" start="2" increment="1" />
<param name="groupbit" start="7" increment="-4" />
- <cpanel element="label_m~mnybble~">
+ <element ref="label_m~mnybble~">
<bounds x="~groupx~" y="112" width="104" height="7" />
- </cpanel>
- <cpanel element="label_x~xnybble~">
+ </element>
+ <element ref="label_x~xnybble~">
<bounds x="~groupx~" y="161" width="104" height="7" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="xpos" start="~groupx~" increment="31" />
<param name="mbit" start="~groupbit~" increment="-1" />
<param name="bit" start="3" increment="-1" />
- <cpanel element="label_~mbit~">
+ <element ref="label_~mbit~">
<bounds x="~xpos~" y="120" width="11" height="7" />
- </cpanel>
- <cpanel element="label_~bit~">
+ </element>
+ <element ref="label_~bit~">
<bounds x="~xpos~" y="169" width="11" height="7" />
- </cpanel>
- <cpanel name="led_instruction_m~mnybble~_~bit~" element="led">
+ </element>
+ <element name="led_instruction_m~mnybble~_~bit~" ref="led">
<bounds x="~xpos~" y="128" width="11" height="7" />
- </cpanel>
- <cpanel name="led_execution_x~xnybble~_~bit~" element="led">
+ </element>
+ <element name="led_execution_x~xnybble~_~bit~" ref="led">
<bounds x="~xpos~" y="177" width="11" height="7" />
- </cpanel>
+ </element>
</repeat>
</repeat>
<repeat count="2">
<param name="groupx" start="393" increment="156" />
<param name="nybble" start="2" increment="1" />
- <cpanel element="label_x~nybble~">
+ <element ref="label_x~nybble~">
<bounds x="~groupx~" y="161" width="104" height="7" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="xpos" start="~groupx~" increment="31" />
<param name="bit" start="3" increment="-1" />
- <cpanel element="label_~bit~">
+ <element ref="label_~bit~">
<bounds x="~xpos~" y="169" width="11" height="7" />
- </cpanel>
- <cpanel name="led_last_ptr_x~nybble~_~bit~" element="led">
+ </element>
+ <element name="led_last_ptr_x~nybble~_~bit~" ref="led">
<bounds x="~xpos~" y="177" width="11" height="7" />
- </cpanel>
+ </element>
</repeat>
</repeat>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0010">
+ <element ref="switch" inputtag="MODE" inputmask="0x0010">
<bounds left="573" top="240" right="598" bottom="286" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0020">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0020">
<bounds left="604" top="240" right="629" bottom="286" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0040">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0040">
<bounds left="635" top="240" right="660" bottom="286" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="PROM" inputmask="0x0001">
+ <element ref="switch" inputtag="PROM" inputmask="0x0001">
<bounds left="728" top="240" right="753" bottom="286" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="xpos" start="74" increment="31" />
<param name="mask" start="0x08" rshift="1" />
<param name="bit" start="3" increment="-1" />
- <cpanel element="label_~bit~">
+ <element ref="label_~bit~">
<bounds x="~xpos~" y="312" width="25" height="7" />
- </cpanel>
- <cpanel element="switch" inputtag="PASSES" inputmask="~mask~">
+ </element>
+ <element ref="switch" inputtag="PASSES" inputmask="~mask~">
<bounds x="~xpos~" y="322" width="25" height="46" />
- </cpanel>
+ </element>
</repeat>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0001">
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0001">
<bounds left="230" top="322" right="255" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0002">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0002">
<bounds left="261" top="322" right="286" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0004">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0004">
<bounds left="292" top="322" right="317" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0008">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0008">
<bounds left="323" top="322" right="348" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0010">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0010">
<bounds left="354" top="322" right="379" bottom="368" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0001">
+ <element ref="switch" inputtag="MODE" inputmask="0x0001">
<bounds left="448" top="322" right="473" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0002">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0002">
<bounds left="479" top="322" right="504" bottom="368" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0020">
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0020">
<bounds left="573" top="322" right="598" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0040">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0040">
<bounds left="604" top="322" right="629" bottom="368" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0004">
+ <element ref="switch" inputtag="MODE" inputmask="0x0004">
<bounds left="666" top="322" right="691" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0008">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0008">
<bounds left="697" top="322" right="722" bottom="368" />
- </cpanel>
+ </element>
</group>
<view name="Terminal Below">
diff --git a/src/mame/layout/intlc440.lay b/src/mame/layout/intlc440.lay
index 8a826178238..c77cfdfae07 100644
--- a/src/mame/layout/intlc440.lay
+++ b/src/mame/layout/intlc440.lay
@@ -151,73 +151,73 @@ Intel INTELLEC® 4/MOD 40 layout
</element>
<group name="panel">
- <cpanel element="background"><bounds left="0" top="0" right="1000" bottom="400" /></cpanel>
-
- <cpanel element="label_address"><bounds left="72" top="55" right="506" bottom="63" /></cpanel>
-
- <cpanel element="label_status"><bounds left="540" top="55" right="662" bottom="63" /></cpanel>
- <cpanel element="label_search"><bounds left="561" top="63" right="610" bottom="70" /></cpanel>
- <cpanel element="label_complete"><bounds left="561" top="71" right="610" bottom="78" /></cpanel>
- <cpanel element="label_pointer"><bounds left="623" top="63" right="672" bottom="70" /></cpanel>
- <cpanel element="label_valid"><bounds left="623" top="71" right="672" bottom="78" /></cpanel>
- <cpanel element="label_run"><bounds left="611" top="71" right="626" bottom="78" /></cpanel>
-
- <cpanel element="label_instruction"><bounds left="72" top="104" right="350" bottom="112" /></cpanel>
-
- <cpanel element="label_active_bank"><bounds left="384" top="104" right="506" bottom="112" /></cpanel>
- <cpanel element="label_cm_ram"><bounds left="393" top="112" right="497" bottom="119" /></cpanel>
- <cpanel element="label_3"><bounds left="393" top="120" right="404" bottom="127" /></cpanel>
- <cpanel element="label_2"><bounds left="424" top="120" right="435" bottom="127" /></cpanel>
- <cpanel element="label_1"><bounds left="455" top="120" right="466" bottom="127" /></cpanel>
- <cpanel element="label_0"><bounds left="486" top="120" right="497" bottom="127" /></cpanel>
-
- <cpanel element="label_mode"><bounds left="540" top="104" right="662" bottom="112" /></cpanel>
- <cpanel element="label_mon"><bounds left="577" top="120" right="594" bottom="127" /></cpanel>
- <cpanel element="label_ram"><bounds left="608" top="120" right="625" bottom="127" /></cpanel>
- <cpanel element="label_prom"><bounds left="639" top="120" right="656" bottom="127" /></cpanel>
-
- <cpanel element="label_execution"><bounds left="72" top="153" right="350" bottom="161" /></cpanel>
-
- <cpanel element="label_last_ptr"><bounds left="384" top="153" right="662" bottom="161" /></cpanel>
-
- <cpanel element="label_addr_data"><bounds left="72" top="214" right="506" bottom="222" /></cpanel>
-
- <cpanel element="label_mode_ctrl"><bounds left="571" top="214" right="662" bottom="222" /></cpanel>
- <cpanel element="label_mon"><bounds left="573" top="230" right="598" bottom="237" /></cpanel>
- <cpanel element="label_ram"><bounds left="604" top="230" right="629" bottom="237" /></cpanel>
- <cpanel element="label_prom"><bounds left="635" top="230" right="660" bottom="237" /></cpanel>
-
- <cpanel element="label_prgm"><bounds left="728" top="214" right="753" bottom="221" /></cpanel>
- <cpanel element="label_prom"><bounds left="728" top="222" right="753" bottom="229" /></cpanel>
- <cpanel element="label_pwr"><bounds left="728" top="230" right="753" bottom="237" /></cpanel>
- <cpanel element="label_on"><bounds left="758" top="239" right="814" bottom="246" /></cpanel>
- <cpanel element="label_off"><bounds left="758" top="279" right="814" bottom="287" /></cpanel>
-
- <cpanel element="label_pass_counter"><bounds left="72" top="296" right="194" bottom="304" /></cpanel>
- <cpanel element="label_passes"><bounds left="74" top="304" right="192" bottom="311" /></cpanel>
-
- <cpanel element="label_search_ctrl"><bounds left="228" top="296" right="381" bottom="304" /></cpanel>
- <cpanel element="label_run"><bounds left="230" top="312" right="255" bottom="319" /></cpanel>
- <cpanel element="label_next"><bounds left="261" top="304" right="286" bottom="311" /></cpanel>
- <cpanel element="label_inst"><bounds left="261" top="312" right="286" bottom="319" /></cpanel>
- <cpanel element="label_decr"><bounds left="292" top="312" right="317" bottom="319" /></cpanel>
- <cpanel element="label_incr"><bounds left="323" top="312" right="348" bottom="319" /></cpanel>
- <cpanel element="label_load"><bounds left="354" top="312" right="379" bottom="319" /></cpanel>
-
- <cpanel element="label_stop"><bounds left="448" top="312" right="473" bottom="319" /></cpanel>
- <cpanel element="label_single"><bounds left="479" top="304" right="504" bottom="311" /></cpanel>
- <cpanel element="label_step"><bounds left="479" top="312" right="504" bottom="319" /></cpanel>
-
- <cpanel element="label_cma"><bounds left="571" top="296" right="631" bottom="304" /></cpanel>
- <cpanel element="label_write"><bounds left="604" top="312" right="629" bottom="319" /></cpanel>
- <cpanel element="label_enable"><bounds left="514" top="321" right="570" bottom="328" /></cpanel>
- <cpanel element="label_disable"><bounds left="514" top="361" right="570" bottom="368" /></cpanel>
-
- <cpanel element="label_reset_ctrl"><bounds left="664" top="296" right="724" bottom="304" /></cpanel>
- <cpanel element="label_reset"><bounds left="666" top="312" right="691" bottom="319" /></cpanel>
- <cpanel element="label_reset_mode"><bounds left="697" top="312" right="722" bottom="319" /></cpanel>
- <cpanel element="label_system"><bounds left="727" top="321" right="783" bottom="328" /></cpanel>
- <cpanel element="label_reset_cpu"><bounds left="727" top="361" right="783" bottom="368" /></cpanel>
+ <element ref="background"><bounds left="0" top="0" right="1000" bottom="400" /></element>
+
+ <element ref="label_address"><bounds left="72" top="55" right="506" bottom="63" /></element>
+
+ <element ref="label_status"><bounds left="540" top="55" right="662" bottom="63" /></element>
+ <element ref="label_search"><bounds left="561" top="63" right="610" bottom="70" /></element>
+ <element ref="label_complete"><bounds left="561" top="71" right="610" bottom="78" /></element>
+ <element ref="label_pointer"><bounds left="623" top="63" right="672" bottom="70" /></element>
+ <element ref="label_valid"><bounds left="623" top="71" right="672" bottom="78" /></element>
+ <element ref="label_run"><bounds left="611" top="71" right="626" bottom="78" /></element>
+
+ <element ref="label_instruction"><bounds left="72" top="104" right="350" bottom="112" /></element>
+
+ <element ref="label_active_bank"><bounds left="384" top="104" right="506" bottom="112" /></element>
+ <element ref="label_cm_ram"><bounds left="393" top="112" right="497" bottom="119" /></element>
+ <element ref="label_3"><bounds left="393" top="120" right="404" bottom="127" /></element>
+ <element ref="label_2"><bounds left="424" top="120" right="435" bottom="127" /></element>
+ <element ref="label_1"><bounds left="455" top="120" right="466" bottom="127" /></element>
+ <element ref="label_0"><bounds left="486" top="120" right="497" bottom="127" /></element>
+
+ <element ref="label_mode"><bounds left="540" top="104" right="662" bottom="112" /></element>
+ <element ref="label_mon"><bounds left="577" top="120" right="594" bottom="127" /></element>
+ <element ref="label_ram"><bounds left="608" top="120" right="625" bottom="127" /></element>
+ <element ref="label_prom"><bounds left="639" top="120" right="656" bottom="127" /></element>
+
+ <element ref="label_execution"><bounds left="72" top="153" right="350" bottom="161" /></element>
+
+ <element ref="label_last_ptr"><bounds left="384" top="153" right="662" bottom="161" /></element>
+
+ <element ref="label_addr_data"><bounds left="72" top="214" right="506" bottom="222" /></element>
+
+ <element ref="label_mode_ctrl"><bounds left="571" top="214" right="662" bottom="222" /></element>
+ <element ref="label_mon"><bounds left="573" top="230" right="598" bottom="237" /></element>
+ <element ref="label_ram"><bounds left="604" top="230" right="629" bottom="237" /></element>
+ <element ref="label_prom"><bounds left="635" top="230" right="660" bottom="237" /></element>
+
+ <element ref="label_prgm"><bounds left="728" top="214" right="753" bottom="221" /></element>
+ <element ref="label_prom"><bounds left="728" top="222" right="753" bottom="229" /></element>
+ <element ref="label_pwr"><bounds left="728" top="230" right="753" bottom="237" /></element>
+ <element ref="label_on"><bounds left="758" top="239" right="814" bottom="246" /></element>
+ <element ref="label_off"><bounds left="758" top="279" right="814" bottom="287" /></element>
+
+ <element ref="label_pass_counter"><bounds left="72" top="296" right="194" bottom="304" /></element>
+ <element ref="label_passes"><bounds left="74" top="304" right="192" bottom="311" /></element>
+
+ <element ref="label_search_ctrl"><bounds left="228" top="296" right="381" bottom="304" /></element>
+ <element ref="label_run"><bounds left="230" top="312" right="255" bottom="319" /></element>
+ <element ref="label_next"><bounds left="261" top="304" right="286" bottom="311" /></element>
+ <element ref="label_inst"><bounds left="261" top="312" right="286" bottom="319" /></element>
+ <element ref="label_decr"><bounds left="292" top="312" right="317" bottom="319" /></element>
+ <element ref="label_incr"><bounds left="323" top="312" right="348" bottom="319" /></element>
+ <element ref="label_load"><bounds left="354" top="312" right="379" bottom="319" /></element>
+
+ <element ref="label_stop"><bounds left="448" top="312" right="473" bottom="319" /></element>
+ <element ref="label_single"><bounds left="479" top="304" right="504" bottom="311" /></element>
+ <element ref="label_step"><bounds left="479" top="312" right="504" bottom="319" /></element>
+
+ <element ref="label_cma"><bounds left="571" top="296" right="631" bottom="304" /></element>
+ <element ref="label_write"><bounds left="604" top="312" right="629" bottom="319" /></element>
+ <element ref="label_enable"><bounds left="514" top="321" right="570" bottom="328" /></element>
+ <element ref="label_disable"><bounds left="514" top="361" right="570" bottom="368" /></element>
+
+ <element ref="label_reset_ctrl"><bounds left="664" top="296" right="724" bottom="304" /></element>
+ <element ref="label_reset"><bounds left="666" top="312" right="691" bottom="319" /></element>
+ <element ref="label_reset_mode"><bounds left="697" top="312" right="722" bottom="319" /></element>
+ <element ref="label_system"><bounds left="727" top="321" right="783" bottom="328" /></element>
+ <element ref="label_reset_cpu"><bounds left="727" top="361" right="783" bottom="368" /></element>
<repeat count="3">
<param name="groupnum" start="11" increment="-4" />
@@ -225,173 +225,173 @@ Intel INTELLEC® 4/MOD 40 layout
<param name="nybble" start="3" increment="-1" />
<param name="switchpos" start="74" increment="156" />
<param name="groupmask" start="0x0800" rshift="4" />
- <cpanel element="label_a~nybble~">
+ <element ref="label_a~nybble~">
<bounds x="~ledpos~" y="63" width="104" height="7" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="labelnum" start="~groupnum~" increment="-1" />
<param name="ledpos" start="~ledpos~" increment="31" />
<param name="switchpos" start="~switchpos~" increment="31" />
<param name="bit" start="3" increment="-1" />
<param name="bitmask" start="~groupmask~" rshift="1" />
- <cpanel element="label_~labelnum~">
+ <element ref="label_~labelnum~">
<bounds x="~ledpos~" y="71" width="11" height="7" />
- </cpanel>
- <cpanel element="label_~labelnum~">
+ </element>
+ <element ref="label_~labelnum~">
<bounds x="~switchpos~" y="230" width="25" height="7" />
- </cpanel>
- <cpanel name="led_address_a~nybble~_~bit~" element="led">
+ </element>
+ <element name="led_address_a~nybble~_~bit~" ref="led">
<bounds x="~ledpos~" y="79" width="11" height="7" />
- </cpanel>
- <cpanel element="switch" inputtag="ADDRDAT" inputmask="~bitmask~">
+ </element>
+ <element ref="switch" inputtag="ADDRDAT" inputmask="~bitmask~">
<bounds x="~switchpos~" y="240" width="25" height="46" />
- </cpanel>
+ </element>
</repeat>
</repeat>
- <cpanel name="led_status_search" element="led">
+ <element name="led_status_search" ref="led">
<bounds left="580" top="79" right="591" bottom="86" />
- </cpanel>
- <cpanel name="led_status_run" element="led">
+ </element>
+ <element name="led_status_run" ref="led">
<bounds left="611" top="79" right="622" bottom="86" />
- </cpanel>
- <cpanel name="led_status_ptr_valid" element="led">
+ </element>
+ <element name="led_status_ptr_valid" ref="led">
<bounds left="642" top="79" right="653" bottom="86" />
- </cpanel>
+ </element>
- <cpanel name="led_active_bank_3" element="led">
+ <element name="led_active_bank_3" ref="led">
<bounds left="393" top="128" right="404" bottom="135" />
- </cpanel>
- <cpanel name="led_active_bank_2" element="led">
+ </element>
+ <element name="led_active_bank_2" ref="led">
<bounds left="424" top="128" right="435" bottom="135" />
- </cpanel>
- <cpanel name="led_active_bank_1" element="led">
+ </element>
+ <element name="led_active_bank_1" ref="led">
<bounds left="455" top="128" right="466" bottom="135" />
- </cpanel>
- <cpanel name="led_active_bank_0" element="led">
+ </element>
+ <element name="led_active_bank_0" ref="led">
<bounds left="486" top="128" right="497" bottom="135" />
- </cpanel>
+ </element>
- <cpanel name="led_mode_mon" element="led">
+ <element name="led_mode_mon" ref="led">
<bounds left="580" top="128" right="591" bottom="135" />
- </cpanel>
- <cpanel name="led_mode_ram" element="led">
+ </element>
+ <element name="led_mode_ram" ref="led">
<bounds left="611" top="128" right="622" bottom="135" />
- </cpanel>
- <cpanel name="led_mode_prom" element="led">
+ </element>
+ <element name="led_mode_prom" ref="led">
<bounds left="642" top="128" right="653" bottom="135" />
- </cpanel>
+ </element>
<repeat count="2">
<param name="groupx" start="81" increment="156" />
<param name="mnybble" start="1" increment="1" />
<param name="xnybble" start="2" increment="1" />
<param name="groupbit" start="7" increment="-4" />
- <cpanel element="label_m~mnybble~">
+ <element ref="label_m~mnybble~">
<bounds x="~groupx~" y="112" width="104" height="7" />
- </cpanel>
- <cpanel element="label_x~xnybble~">
+ </element>
+ <element ref="label_x~xnybble~">
<bounds x="~groupx~" y="161" width="104" height="7" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="xpos" start="~groupx~" increment="31" />
<param name="mbit" start="~groupbit~" increment="-1" />
<param name="bit" start="3" increment="-1" />
- <cpanel element="label_~mbit~">
+ <element ref="label_~mbit~">
<bounds x="~xpos~" y="120" width="11" height="7" />
- </cpanel>
- <cpanel element="label_~bit~">
+ </element>
+ <element ref="label_~bit~">
<bounds x="~xpos~" y="169" width="11" height="7" />
- </cpanel>
- <cpanel name="led_instruction_m~mnybble~_~bit~" element="led">
+ </element>
+ <element name="led_instruction_m~mnybble~_~bit~" ref="led">
<bounds x="~xpos~" y="128" width="11" height="7" />
- </cpanel>
- <cpanel name="led_execution_x~xnybble~_~bit~" element="led">
+ </element>
+ <element name="led_execution_x~xnybble~_~bit~" ref="led">
<bounds x="~xpos~" y="177" width="11" height="7" />
- </cpanel>
+ </element>
</repeat>
</repeat>
<repeat count="2">
<param name="groupx" start="393" increment="156" />
<param name="nybble" start="2" increment="1" />
- <cpanel element="label_x~nybble~">
+ <element ref="label_x~nybble~">
<bounds x="~groupx~" y="161" width="104" height="7" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="xpos" start="~groupx~" increment="31" />
<param name="bit" start="3" increment="-1" />
- <cpanel element="label_~bit~">
+ <element ref="label_~bit~">
<bounds x="~xpos~" y="169" width="11" height="7" />
- </cpanel>
- <cpanel name="led_last_ptr_x~nybble~_~bit~" element="led">
+ </element>
+ <element name="led_last_ptr_x~nybble~_~bit~" ref="led">
<bounds x="~xpos~" y="177" width="11" height="7" />
- </cpanel>
+ </element>
</repeat>
</repeat>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0010">
+ <element ref="switch" inputtag="MODE" inputmask="0x0010">
<bounds left="573" top="240" right="598" bottom="286" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0020">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0020">
<bounds left="604" top="240" right="629" bottom="286" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0040">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0040">
<bounds left="635" top="240" right="660" bottom="286" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="PROM" inputmask="0x0001">
+ <element ref="switch" inputtag="PROM" inputmask="0x0001">
<bounds left="728" top="240" right="753" bottom="286" />
- </cpanel>
+ </element>
<repeat count="4">
<param name="xpos" start="74" increment="31" />
<param name="mask" start="0x08" rshift="1" />
<param name="bit" start="3" increment="-1" />
- <cpanel element="label_~bit~">
+ <element ref="label_~bit~">
<bounds x="~xpos~" y="312" width="25" height="7" />
- </cpanel>
- <cpanel element="switch" inputtag="PASSES" inputmask="~mask~">
+ </element>
+ <element ref="switch" inputtag="PASSES" inputmask="~mask~">
<bounds x="~xpos~" y="322" width="25" height="46" />
- </cpanel>
+ </element>
</repeat>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0001">
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0001">
<bounds left="230" top="322" right="255" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0002">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0002">
<bounds left="261" top="322" right="286" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0004">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0004">
<bounds left="292" top="322" right="317" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0008">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0008">
<bounds left="323" top="322" right="348" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0010">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0010">
<bounds left="354" top="322" right="379" bottom="368" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0001">
+ <element ref="switch" inputtag="MODE" inputmask="0x0001">
<bounds left="448" top="322" right="473" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0002">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0002">
<bounds left="479" top="322" right="504" bottom="368" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0020">
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0020">
<bounds left="573" top="322" right="598" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="CONTROL" inputmask="0x0040">
+ </element>
+ <element ref="switch" inputtag="CONTROL" inputmask="0x0040">
<bounds left="604" top="322" right="629" bottom="368" />
- </cpanel>
+ </element>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0004">
+ <element ref="switch" inputtag="MODE" inputmask="0x0004">
<bounds left="666" top="322" right="691" bottom="368" />
- </cpanel>
- <cpanel element="switch" inputtag="MODE" inputmask="0x0008">
+ </element>
+ <element ref="switch" inputtag="MODE" inputmask="0x0008">
<bounds left="697" top="322" right="722" bottom="368" />
- </cpanel>
+ </element>
</group>
<view name="Terminal Below">
diff --git a/src/mame/layout/whousetc.lay b/src/mame/layout/whousetc.lay
index b76e6901214..d45669bf73c 100644
--- a/src/mame/layout/whousetc.lay
+++ b/src/mame/layout/whousetc.lay
@@ -813,16 +813,16 @@ Westinghouse Test Console Serial #5 layout
<view name="Default Layout">
- <bezel element="backdrop">
+ <element ref="backdrop">
<bounds left="0" top="0" right="960" bottom="520" />
- </bezel>
+ </element>
<repeat count="16">
<param name="digitno" start="15" increment="-1" />
<param name="x" start="10" increment="60" />
- <bezel name="digit~digitno~" element="char">
+ <element name="digit~digitno~" ref="char">
<bounds x="~x~" y="10" width="40" height="60" />
- </bezel>
+ </element>
</repeat>
<repeat count="2">
@@ -836,9 +836,9 @@ Westinghouse Test Console Serial #5 layout
<param name="col" start="~group~" increment="1" />
<param name="btnx" start="~padx~" increment="110" />
<param name="mask" start="~mask~" lshift="1" />
- <bezel element="btn~row~~col~" inputtag="row~row~" inputmask="~mask~">
+ <element ref="btn~row~~col~" inputtag="row~row~" inputmask="~mask~">
<bounds x="~btnx~" y="~y~" width="80" height="80" />
- </bezel>
+ </element>
</repeat>
</repeat>
</repeat>