diff options
author | 2019-03-25 22:44:58 +0100 | |
---|---|---|
committer | 2019-03-25 22:44:58 +0100 | |
commit | c24473ddff715ecec2e258a6eb38960cf8c8e98e (patch) | |
tree | 8ea44b6396a6129913c0aac13859b5de9965e972 /src/emu/rendlay.cpp | |
parent | 009cba4fb8102102168ef32870892438327f3705 (diff) | |
parent | 598cd5227223c3b04ca31f0dbc1981256d9ea3ff (diff) |
conflict resolution (nw)
Diffstat (limited to 'src/emu/rendlay.cpp')
-rw-r--r-- | src/emu/rendlay.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp index b47d643e254..d083ba5510a 100644 --- a/src/emu/rendlay.cpp +++ b/src/emu/rendlay.cpp @@ -3283,6 +3283,8 @@ layout_view::item::item( , m_input_tag(env.get_attribute_string(itemnode, "inputtag", "")) , m_input_port(nullptr) , m_input_mask(0) + , m_input_shift(0) + , m_input_raw(false) , m_screen(nullptr) , m_orientation(orientation_add(env.parse_orientation(itemnode.get_child("orientation")), orientation)) , m_color(render_color_multiply(env.parse_color(itemnode.get_child("color")), color)) @@ -3308,6 +3310,8 @@ layout_view::item::item( 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; if (m_have_output && m_element) m_output = m_element->default_state(); env.parse_bounds(itemnode.get_child("bounds"), m_rawbounds); @@ -3380,9 +3384,16 @@ int layout_view::item::state() const // if configured to an input, fetch the input value if (m_input_port) { - 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; + if (m_input_raw) + { + return (m_input_port->read() & m_input_mask) >> m_input_shift; + } + else + { + 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; + } } } |