summaryrefslogtreecommitdiffstats
path: root/docs/release/scripts
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2018-07-25 16:06:48 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2018-07-25 16:06:48 +1000
commit0c3a53f06ffdfc9888efbacc9294ce5c181ba94d (patch)
treea66283943f0bfb7de0f96b0d2a03aeffdc19f221 /docs/release/scripts
parente03b7b6b4a90dff1d18007e1141936a5eb23032c (diff)
0.200 Release filestag200
Diffstat (limited to 'docs/release/scripts')
-rw-r--r--docs/release/scripts/build/complay.py487
-rw-r--r--docs/release/scripts/genie.lua6
-rw-r--r--docs/release/scripts/src/bus.lua43
-rw-r--r--docs/release/scripts/src/cpu.lua6
-rw-r--r--docs/release/scripts/src/emu.lua27
-rw-r--r--docs/release/scripts/src/machine.lua130
-rw-r--r--docs/release/scripts/src/main.lua2
-rw-r--r--docs/release/scripts/src/sound.lua12
-rw-r--r--docs/release/scripts/src/video.lua22
-rw-r--r--docs/release/scripts/target/hbmame/hbmame.lua1
-rw-r--r--docs/release/scripts/target/mame/arcade.lua6
-rw-r--r--docs/release/scripts/target/mame/mess.lua37
-rw-r--r--docs/release/scripts/target/mame/virtual.lua32
13 files changed, 628 insertions, 183 deletions
diff --git a/docs/release/scripts/build/complay.py b/docs/release/scripts/build/complay.py
index af5003581e6..f6e7db4320e 100644
--- a/docs/release/scripts/build/complay.py
+++ b/docs/release/scripts/build/complay.py
@@ -92,7 +92,9 @@ class XmlError(Exception):
class LayoutChecker(Minifyer):
- VARPATTERN = re.compile('^~scr(0|[1-9][0-9]*)(native[xy]aspect|width|height)~$')
+ BADTAGPATTERN = re.compile('[^abcdefghijklmnopqrstuvwxyz0123456789_.:^$]')
+ VARPATTERN = re.compile('^.*~[0-9A-Za-z_]+~.*$')
+ FLOATCHARS = re.compile('^.*[.eE].*$')
SHAPES = frozenset(('disk', 'led14seg', 'led14segsc', 'led16seg', 'led16segsc', 'led7seg', 'led8seg_gts1', 'rect'))
OBJECTS = frozenset(('backdrop', 'bezel', 'cpanel', 'marquee', 'overlay'))
@@ -105,8 +107,6 @@ class LayoutChecker(Minifyer):
self.views = { }
self.referenced_elements = { }
self.referenced_groups = { }
- self.have_bounds = [ ]
- self.have_color = [ ]
def formatLocation(self):
return '%s:%d:%d' % (self.locator.getSystemId(), self.locator.getLineNumber(), self.locator.getColumnNumber())
@@ -115,36 +115,125 @@ class LayoutChecker(Minifyer):
self.errors += 1
sys.stderr.write('error: %s: %s\n' % (self.formatLocation(), msg))
- def checkBoundsDimension(self, attrs, name):
- if name in attrs:
- try:
- return float(attrs[name])
- except:
- if not self.VARPATTERN.match(attrs[name]):
- self.handleError('Element bounds attribute %s "%s" is not numeric' % (name, attrs[name]))
- return None
+ def checkIntAttribute(self, name, attrs, key, default):
+ if key not in attrs:
+ return default
+ val = attrs[key]
+ if self.VARPATTERN.match(val):
+ return None
+ base = 10
+ offs = 0
+ if (len(val) >= 1) and ('$' == val[0]):
+ base = 16
+ offs = 1
+ elif (len(val) >= 2) and ('0' == val[0]) and (('x' == val[1]) or ('X' == val[1])):
+ base = 16
+ offs = 2
+ elif (len(val) >= 1) and ('#' == val[0]):
+ offs = 1
+ try:
+ return int(val[offs:], base)
+ except:
+ self.handleError('Element %s attribute %s "%s" is not an integer' % (name, key, val))
+ return None
+
+ def checkFloatAttribute(self, name, attrs, key, default):
+ if key not in attrs:
+ return default
+ val = attrs[key]
+ if self.VARPATTERN.match(val):
+ return None
+ try:
+ return float(val)
+ except:
+ self.handleError('Element %s attribute %s "%s" is not a floating point number' % (name, key, val))
+ return None
+
+ def checkNumericAttribute(self, name, attrs, key, default):
+ if key not in attrs:
+ return default
+ val = attrs[key]
+ if self.VARPATTERN.match(val):
+ return None
+ base = 0
+ offs = 0
+ try:
+ if (len(val) >= 1) and ('$' == val[0]):
+ base = 16
+ offs = 1
+ elif (len(val) >= 2) and ('0' == val[0]) and (('x' == val[1]) or ('X' == val[1])):
+ base = 16
+ offs = 2
+ elif (len(val) >= 1) and ('#' == val[0]):
+ base = 10
+ offs = 1
+ elif self.FLOATCHARS.match(val):
+ return float(val)
+ return int(val[offs:], base)
+ except:
+ self.handleError('Element %s attribute %s "%s" is not a number' % (name, key, val))
+ return None
+
+ def checkParameter(self, attrs):
+ if 'name' not in attrs:
+ self.handleError('Element param missing attribute name')
+ else:
+ name = attrs['name']
+ self.checkNumericAttribute('param', attrs, 'increment', None)
+ lshift = self.checkIntAttribute('param', attrs, 'lshift', None)
+ if (lshift is not None) and (0 > lshift):
+ self.handleError('Element param attribute lshift "%s" is negative', (attrs['lshift'], ))
+ rshift = self.checkIntAttribute('param', attrs, 'rshift', None)
+ if (rshift is not None) and (0 > rshift):
+ self.handleError('Element param attribute rshift "%s" is negative', (attrs['rshift'], ))
+ if self.repeat_depth and self.repeat_depth[-1]:
+ if 'start' in attrs:
+ if 'value' in attrs:
+ self.handleError('Element param has both start and value attributes')
+ if 'name' in attrs:
+ if name not in self.variable_scopes[-1]:
+ self.variable_scopes[-1][name] = True
+ elif not self.VARPATTERN.match(name):
+ self.handleError('Incrementing parameter "%s" redefined', (name, ))
+ else:
+ if 'value' not in attrs:
+ self.handleError('Element param missing attribute value')
+ if ('increment' in attrs) or ('lshift' in attrs) or ('rshift' in attrs):
+ self.handleError('Element param has increment/lshift/rshift attribute(s) without start attribute')
+ if 'name' in attrs:
+ if not self.variable_scopes[-1].get(name, False):
+ self.variable_scopes[-1][name] = False
+ elif not self.VARPATTERN.match(name):
+ self.handleError('Incrementing parameter "%s" redefined', (name, ))
+ else:
+ if ('start' in attrs) or ('increment' in attrs) or ('lshift' in attrs) or ('rshift' in attrs):
+ self.handleError('Element param with start/increment/lshift/rshift attribute(s) not in repeat scope')
+ if 'value' not in attrs:
+ self.handleError('Element param missing attribute value')
+ if 'name' in attrs:
+ self.variable_scopes[-1][attrs['name']] = False
def checkBounds(self, attrs):
if self.have_bounds[-1]:
self.handleError('Duplicate element bounds')
else:
self.have_bounds[-1] = True
- left = self.checkBoundsDimension(attrs, 'left')
- top = self.checkBoundsDimension(attrs, 'top')
- right = self.checkBoundsDimension(attrs, 'right')
- bottom = self.checkBoundsDimension(attrs, 'bottom')
- x = self.checkBoundsDimension(attrs, 'bottom')
- y = self.checkBoundsDimension(attrs, 'bottom')
- width = self.checkBoundsDimension(attrs, 'width')
- height = self.checkBoundsDimension(attrs, 'height')
+ left = self.checkFloatAttribute('bounds', attrs, 'left', 0.0)
+ top = self.checkFloatAttribute('bounds', attrs, 'top', 0.0)
+ right = self.checkFloatAttribute('bounds', attrs, 'right', 1.0)
+ bottom = self.checkFloatAttribute('bounds', attrs, 'bottom', 1.0)
+ x = self.checkFloatAttribute('bounds', attrs, 'x', 0.0)
+ y = self.checkFloatAttribute('bounds', attrs, 'y', 0.0)
+ width = self.checkFloatAttribute('bounds', attrs, 'width', 1.0)
+ height = self.checkFloatAttribute('bounds', attrs, 'height', 1.0)
if (left is not None) and (right is not None) and (left > right):
self.handleError('Element bounds attribute left "%s" is greater than attribute right "%s"' % (
- attrs['left'],
- attrs['right']))
+ attrs.get('left', 0.0),
+ attrs.get('right', 1.0)))
if (top is not None) and (bottom is not None) and (top > bottom):
self.handleError('Element bounds attribute top "%s" is greater than attribute bottom "%s"' % (
- attrs['top'],
- attrs['bottom']))
+ attrs.get('top', 0.0),
+ attrs.get('bottom', 1.0)))
if (width is not None) and (0.0 > width):
self.handleError('Element bounds attribute width "%s" is negative' % (attrs['width'], ))
if (height is not None) and (0.0 > height):
@@ -154,61 +243,242 @@ class LayoutChecker(Minifyer):
has_ltrb = ('left' in attrs) or ('top' in attrs) or ('right' in attrs) or ('bottom' in attrs)
has_origin_size = ('x' in attrs) or ('y' in attrs) or ('width' in attrs) or ('height' in attrs)
if has_ltrb and has_origin_size:
- self.handleError('Element bounds has both left/top/right/bottom and origin/size')
+ self.handleError('Element bounds has both left/top/right/bottom and origin/size attributes')
def checkColorChannel(self, attrs, name):
- if name in attrs:
- try:
- channel = float(attrs[name])
- if (0.0 > channel) or (1.0 < channel):
- self.handleError('Element color attribute %s "%s" outside valid range 0.0-1.0' % (name, attrs[name]))
- except:
- self.handleError('Element color attribute %s "%s" is not numeric' % (name, attrs[name]))
-
- def checkGroupViewItem(self, name, attrs):
+ channel = self.checkFloatAttribute('color', attrs, name, None)
+ if (channel is not None) and ((0.0 > channel) or (1.0 < channel)):
+ self.handleError('Element color attribute %s "%s" outside valid range 0.0-1.0' % (name, attrs[name]))
+
+ def checkTag(self, tag, element, attr):
+ if '' == tag:
+ self.handleError('Element %s attribute %s is empty', (element, attr))
+ else:
+ if tag.find('^') >= 0:
+ self.handleError('Element %s attribute %s "%s" contains parent device reference' % (element, attr, tag))
+ if ':' == tag[-1]:
+ self.handleError('Element %s attribute %s "%s" ends with separator' % (element, attr, tag))
+ if tag.find('::') >= 0:
+ self.handleError('Element %s attribute %s "%s" contains double separator' % (element, attr, tag))
+
+ def rootStartHandler(self, name, attrs):
+ if 'mamelayout' != name:
+ self.ignored_depth = 1
+ self.handleError('Expected root element mamelayout but found %s' % (name, ))
+ else:
+ if 'version' not in attrs:
+ self.handleError('Element mamelayout missing attribute version')
+ else:
+ try:
+ long(attrs['version'])
+ except:
+ self.handleError('Element mamelayout attribute version "%s" is not an integer' % (attrs['version'], ))
+ self.variable_scopes.append({ })
+ self.repeat_depth.append(0)
+ self.handlers.append((self.layoutStartHandler, self.layoutEndHandler))
+
+ def rootEndHandler(self, name, attrs):
+ pass # should be unreachable
+
+ def layoutStartHandler(self, name, attrs):
+ if 'element' == name:
+ if 'name' not in attrs:
+ self.handleError('Element element missing attribute name')
+ else:
+ generated_name = self.VARPATTERN.match(attrs['name'])
+ if generated_name:
+ self.generated_element_names = True
+ if attrs['name'] not in self.elements:
+ self.elements[attrs['name']] = self.formatLocation()
+ elif not generated_name:
+ self.handleError('Element element has duplicate name (previous %s)' % (self.elements[attrs['name']], ))
+ self.handlers.append((self.elementStartHandler, self.elementEndHandler))
+ elif 'group' == name:
+ if 'name' not in attrs:
+ self.handleError('Element group missing attribute name')
+ else:
+ generated_name = self.VARPATTERN.match(attrs['name'])
+ if generated_name:
+ self.generated_group_names = True
+ if attrs['name'] not in self.groups:
+ self.groups[attrs['name']] = self.formatLocation()
+ elif not generated_name:
+ self.handleError('Element group has duplicate name (previous %s)' % (self.groups[attrs['name']], ))
+ self.handlers.append((self.groupViewStartHandler, self.groupViewEndHandler))
+ self.variable_scopes.append({ })
+ self.repeat_depth.append(0)
+ self.have_bounds.append(False)
+ elif 'view' == name:
+ if 'name' not in attrs:
+ self.handleError('Element view missing attribute name')
+ else:
+ if attrs['name'] not in self.views:
+ self.views[attrs['name']] = self.formatLocation()
+ elif not self.VARPATTERN.match(attrs['name']):
+ self.handleError('Element view has duplicate name (previous %s)' % (self.views[attrs['name']], ))
+ self.handlers.append((self.groupViewStartHandler, self.groupViewEndHandler))
+ self.variable_scopes.append({ })
+ self.repeat_depth.append(0)
+ self.have_bounds.append(False)
+ elif 'repeat' == name:
+ if 'count' not in attrs:
+ self.handleError('Element repeat missing attribute count')
+ else:
+ count = self.checkIntAttribute(name, attrs, 'count', None)
+ if (count is not None) and (0 >= count):
+ self.handleError('Element repeat attribute count "%s" is negative' % (attrs['count'], ))
+ self.variable_scopes.append({ })
+ self.repeat_depth[-1] += 1
+ elif 'param' == name:
+ self.checkParameter(attrs)
+ self.ignored_depth = 1
+ elif 'script' == name:
+ self.ignored_depth = 1
+ else:
+ self.handleError('Encountered unexpected element %s' % (name, ))
+ self.ignored_depth = 1
+
+ def layoutEndHandler(self, name):
+ self.variable_scopes.pop()
+ if self.repeat_depth[-1]:
+ self.repeat_depth[-1] -= 1
+ else:
+ if not self.generated_element_names:
+ for element in self.referenced_elements:
+ if (element not in self.elements) and (not self.VARPATTERN.match(element)):
+ self.handleError('Element "%s" not found (first referenced at %s)' % (element, self.referenced_elements[element]))
+ if not self.generated_group_names:
+ for group in self.referenced_groups:
+ if (group not in self.groups) and (not self.VARPATTERN.match(group)):
+ self.handleError('Group "%s" not found (first referenced at %s)' % (group, self.referenced_groups[group]))
+ self.handlers.pop()
+
+ def elementStartHandler(self, name, attrs):
+ if name in self.SHAPES:
+ self.handlers.append((self.shapeStartHandler, self.shapeEndHandler))
+ self.have_bounds.append(False)
+ self.have_color.append(False)
+ elif 'text' == name:
+ if 'string' not in attrs:
+ self.handleError('Element bounds missing attribute string')
+ if 'align' in attrs:
+ align = self.checkIntAttribute(name, attrs, 'align', None)
+ if (align is not None) and ((0 > align) or (2 < align)):
+ self.handleError('Element text attribute align "%s" not in valid range 0-2' % (attrs['align'], ))
+ self.handlers.append((self.shapeStartHandler, self.shapeEndHandler))
+ self.have_bounds.append(False)
+ self.have_color.append(False)
+ else:
+ self.ignored_depth = 1
+
+ def elementEndHandler(self, name):
+ self.handlers.pop()
+
+ def shapeStartHandler(self, name, attrs):
+ if 'bounds' == name:
+ self.checkBounds(attrs)
+ elif 'color' == name:
+ if self.have_color[-1]:
+ self.handleError('Duplicate bounds element')
+ else:
+ self.have_color[-1] = True
+ self.checkColorChannel(attrs, 'red')
+ self.checkColorChannel(attrs, 'green')
+ self.checkColorChannel(attrs, 'blue')
+ self.checkColorChannel(attrs, 'alpha')
+ self.ignored_depth = 1
+
+ def shapeEndHandler(self, name):
+ self.have_bounds.pop()
+ self.have_color.pop()
+ self.handlers.pop()
+
+ def groupViewStartHandler(self, name, attrs):
if name in self.OBJECTS:
if 'element' not in attrs:
self.handleError('Element %s missing attribute element', (name, ))
elif attrs['element'] not in self.referenced_elements:
self.referenced_elements[attrs['element']] = self.formatLocation()
- self.in_object = True
+ if 'inputtag' in attrs:
+ if 'inputmask' not in attrs:
+ self.handleError('Element %s has inputtag without inputmask attribute' % (name, ))
+ self.checkTag(attrs['inputtag'], name, 'inputtag')
+ self.checkIntAttribute(name, attrs, 'inputmask', None)
+ self.handlers.append((self.objectStartHandler, self.objectEndHandler))
self.have_bounds.append(False)
elif 'screen' == name:
if 'index' in attrs:
- try:
- index = long(attrs['index'])
- if 0 > index:
- self.handleError('Element screen attribute index "%s" is negative' % (attrs['index'], ))
- except:
- self.handleError('Element screen attribute index "%s" is not an integer' % (attrs['index'], ))
- self.in_object = True
+ index = self.checkIntAttribute(name, attrs, 'index', None)
+ if (index is not None) and (0 > index):
+ self.handleError('Element screen attribute index "%s" is negative' % (attrs['index'], ))
+ if 'tag' in attrs:
+ self.handleError('Element screen has both index and tag attributes')
+ if 'tag' in attrs:
+ tag = attrs['tag']
+ self.checkTag(tag, name, 'tag')
+ if self.BADTAGPATTERN.search(tag):
+ self.handleError('Element screen attribute tag "%s" contains invalid characters' % (tag, ))
+ self.handlers.append((self.objectStartHandler, self.objectEndHandler))
self.have_bounds.append(False)
elif 'group' == name:
if 'ref' not in attrs:
self.handleError('Element group missing attribute ref')
elif attrs['ref'] not in self.referenced_groups:
self.referenced_groups[attrs['ref']] = self.formatLocation()
- self.in_object = True
+ self.handlers.append((self.objectStartHandler, self.objectEndHandler))
self.have_bounds.append(False)
+ elif 'repeat' == name:
+ if 'count' not in attrs:
+ self.handleError('Element repeat missing attribute count')
+ else:
+ count = self.checkIntAttribute(name, attrs, 'count', None)
+ if (count is not None) and (0 >= count):
+ self.handleError('Element repeat attribute count "%s" is negative' % (attrs['count'], ))
+ self.variable_scopes.append({ })
+ self.repeat_depth[-1] += 1
+ elif 'param' == name:
+ self.checkParameter(attrs)
+ self.ignored_depth = 1
elif 'bounds' == name:
self.checkBounds(attrs)
+ if self.repeat_depth[-1]:
+ self.handleError('Element bounds inside repeat')
self.ignored_depth = 1
else:
self.handleError('Encountered unexpected element %s' % (name, ))
self.ignored_depth = 1
+ def groupViewEndHandler(self, name):
+ self.variable_scopes.pop()
+ if self.repeat_depth[-1]:
+ self.repeat_depth[-1] -= 1
+ else:
+ self.repeat_depth.pop()
+ self.have_bounds.pop()
+ self.handlers.pop()
+
+ def objectStartHandler(self, name, attrs):
+ if 'bounds' == name:
+ self.checkBounds(attrs)
+ self.ignored_depth = 1
+
+ def objectEndHandler(self, name):
+ self.have_bounds.pop()
+ self.handlers.pop()
+
def setDocumentLocator(self, locator):
self.locator = locator
super(LayoutChecker, self).setDocumentLocator(locator)
def startDocument(self):
- self.in_layout = False
- self.in_element = False
- self.in_group = False
- self.in_view = False
- self.in_shape = False
- self.in_object = False
+ self.handlers = [(self.rootStartHandler, self.rootEndHandler)]
self.ignored_depth = 0
+ self.variable_scopes = [ ]
+ self.repeat_depth = [ ]
+ self.have_bounds = [ ]
+ self.have_color = [ ]
+ self.generated_element_names = False
+ self.generated_group_names = False
super(LayoutChecker, self).startDocument()
def endDocument(self):
@@ -218,127 +488,28 @@ class LayoutChecker(Minifyer):
self.views.clear()
self.referenced_elements.clear()
self.referenced_groups.clear()
- del self.have_bounds[:]
- del self.have_color[:]
+ del self.handlers
+ del self.ignored_depth
+ del self.variable_scopes
+ del self.repeat_depth
+ del self.have_bounds
+ del self.have_color
+ del self.generated_element_names
+ del self.generated_group_names
super(LayoutChecker, self).endDocument()
def startElement(self, name, attrs):
if 0 < self.ignored_depth:
self.ignored_depth += 1
- elif not self.in_layout:
- if 'mamelayout' != name:
- self.ignored_depth = 1
- self.handleError('Expected root element mamelayout but found %s' % (name, ))
- else:
- if 'version' not in attrs:
- self.handleError('Element mamelayout missing attribute version')
- else:
- try:
- long(attrs['version'])
- except:
- self.handleError('Element mamelayout attribute version "%s" is not an integer' % (attrs['version'], ))
- self.in_layout = True
- elif self.in_object:
- if 'bounds' == name:
- self.checkBounds(attrs)
- self.ignored_depth = 1
- elif self.in_shape:
- if 'bounds' == name:
- self.checkBounds(attrs)
- elif 'color' == name:
- if self.have_color[-1]:
- self.handleError('Duplicate bounds element')
- else:
- self.have_color[-1] = True
- self.checkColorChannel(attrs, 'red')
- self.checkColorChannel(attrs, 'green')
- self.checkColorChannel(attrs, 'blue')
- self.checkColorChannel(attrs, 'alpha')
- self.ignored_depth = 1
- elif self.in_element:
- if name in self.SHAPES:
- self.in_shape = True
- self.have_bounds.append(False)
- self.have_color.append(False)
- elif 'text' == name:
- if 'string' not in attrs:
- self.handleError('Element bounds missing attribute string')
- if 'align' in attrs:
- try:
- align = long(attrs['align'])
- if (0 > align) or (2 < align):
- self.handleError('Element text attribute align "%s" not in valid range 0-2' % (attrs['align'], ))
- except:
- self.handleError('Element text attribute align "%s" is not an integer' % (attrs['align'], ))
- self.in_shape = True
- self.have_bounds.append(False)
- self.have_color.append(False)
- else:
- self.ignored_depth = 1
- elif self.in_group or self.in_view:
- self.checkGroupViewItem(name, attrs)
- elif 'element' == name:
- if 'name' not in attrs:
- self.handleError('Element element missing attribute name')
- else:
- if attrs['name'] in self.elements:
- self.handleError('Element element has duplicate name (previous %s)' % (self.elements[attrs['name']], ))
- else:
- self.elements[attrs['name']] = self.formatLocation()
- self.in_element = True
- elif 'group' == name:
- if 'name' not in attrs:
- self.handleError('Element group missing attribute name')
- else:
- if attrs['name'] in self.groups:
- self.handleError('Element group has duplicate name (previous %s)' % (self.groups[attrs['name']], ))
- else:
- self.groups[attrs['name']] = self.formatLocation()
- self.in_group = True
- self.have_bounds.append(False)
- elif 'view' == name:
- if 'name' not in attrs:
- self.handleError('Element view missing attribute name')
- else:
- if attrs['name'] in self.views:
- self.handleError('Element view has duplicate name (previous %s)' % (self.views[attrs['name']], ))
- else:
- self.views[attrs['name']] = self.formatLocation()
- self.in_view = True
- self.have_bounds.append(False)
- elif 'script' == name:
- self.ignored_depth = 1
else:
- self.handleError('Encountered unexpected element %s' % (name, ))
- self.ignored_depth = 1
+ self.handlers[-1][0](name, attrs)
super(LayoutChecker, self).startElement(name, attrs)
def endElement(self, name):
if 0 < self.ignored_depth:
self.ignored_depth -= 1
- elif self.in_object:
- self.in_object = False
- self.have_bounds.pop()
- elif self.in_shape:
- self.in_shape = False
- self.have_bounds.pop()
- self.have_color.pop()
- elif self.in_element:
- self.in_element = False
- elif self.in_group:
- self.in_group = False
- self.have_bounds.pop()
- elif self.in_view:
- self.in_view = False
- self.have_bounds.pop()
- elif self.in_layout:
- for element in self.referenced_elements:
- if element not in self.elements:
- self.handleError('Element "%s" not found (first referenced at %s)' % (element, self.referenced_elements[element]))
- for group in self.referenced_groups:
- if group not in self.groups:
- self.handleError('Group "%s" not found (first referenced at %s)' % (group, self.referenced_groups[group]))
- self.in_layout = False
+ else:
+ self.handlers[-1][1](name)
super(LayoutChecker, self).endElement(name)
diff --git a/docs/release/scripts/genie.lua b/docs/release/scripts/genie.lua
index ed289f73396..12214497f0c 100644
--- a/docs/release/scripts/genie.lua
+++ b/docs/release/scripts/genie.lua
@@ -1017,6 +1017,11 @@ end
"-Wno-ignored-qualifiers"
}
end
+ if (version >= 60000) then
+ buildoptions {
+ "-Wno-pragma-pack" -- clang 6.0 complains when the packing change lifetime is not contained within a header file.
+ }
+ end
else
if (version < 50000) then
print("GCC version 5.0 or later needed")
@@ -1272,6 +1277,7 @@ end
"/wd4510", -- warning C4510: 'xxx' : default constructor could not be generated
"/wd4512", -- warning C4512: 'xxx' : assignment operator could not be generated
"/wd4514", -- warning C4514: 'xxx' : unreferenced inline function has been removed
+ "/wd4521", -- warning C4521: 'xxx' : multiple copy constructors specified
"/wd4571", -- warning C4611: interaction between '_setjmp' and C++ object destruction is non-portable
"/wd4610", -- warning C4619: #pragma warning : there is no warning number 'xxx'
"/wd4611", -- warning C4571: Informational: catch(...) semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught
diff --git a/docs/release/scripts/src/bus.lua b/docs/release/scripts/src/bus.lua
index c67ee9c9805..869a6d1b639 100644
--- a/docs/release/scripts/src/bus.lua
+++ b/docs/release/scripts/src/bus.lua
@@ -100,6 +100,47 @@ end
---------------------------------------------------
--
+--@src/devices/bus/acorn/bus.h,BUSES["ACORN"] = true
+---------------------------------------------------
+
+if (BUSES["ACORN"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/bus/acorn/bus.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/bus.h",
+ MAME_DIR .. "src/devices/bus/acorn/atom/sid.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/atom/sid.h",
+ MAME_DIR .. "src/devices/bus/acorn/atom/discpack.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/atom/discpack.h",
+ MAME_DIR .. "src/devices/bus/acorn/atom/econet.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/atom/econet.h",
+ MAME_DIR .. "src/devices/bus/acorn/cms/4080term.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/cms/4080term.h",
+ MAME_DIR .. "src/devices/bus/acorn/cms/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/cms/fdc.h",
+ MAME_DIR .. "src/devices/bus/acorn/cms/hires.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/cms/hires.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/32k.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/32k.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/8k.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/8k.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/cass.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/cass.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/econet.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/econet.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/fdc.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/fdc.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu40.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu40.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu80.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/vdu80.h",
+ MAME_DIR .. "src/devices/bus/acorn/system/vib.cpp",
+ MAME_DIR .. "src/devices/bus/acorn/system/vib.h",
+ }
+end
+
+
+---------------------------------------------------
+--
--@src/devices/bus/adam/exp.h,BUSES["ADAM"] = true
---------------------------------------------------
@@ -1076,6 +1117,8 @@ if (BUSES["ISA"]~=null) then
MAME_DIR .. "src/devices/bus/isa/aha1542.h",
MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.cpp",
MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.h",
+ MAME_DIR .. "src/devices/bus/isa/wd1007a.cpp",
+ MAME_DIR .. "src/devices/bus/isa/wd1007a.h",
MAME_DIR .. "src/devices/bus/isa/dectalk.cpp",
MAME_DIR .. "src/devices/bus/isa/dectalk.h",
MAME_DIR .. "src/devices/bus/isa/pds.cpp",
diff --git a/docs/release/scripts/src/cpu.lua b/docs/release/scripts/src/cpu.lua
index 132c32861a7..456a7412131 100644
--- a/docs/release/scripts/src/cpu.lua
+++ b/docs/release/scripts/src/cpu.lua
@@ -1263,12 +1263,18 @@ if (CPUS["MIPS"]~=null) then
MAME_DIR .. "src/devices/cpu/mips/mips3fe.cpp",
MAME_DIR .. "src/devices/cpu/mips/mips3fe.h",
MAME_DIR .. "src/devices/cpu/mips/mips3drc.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vu.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vu.h",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vif1.cpp",
+ MAME_DIR .. "src/devices/cpu/mips/ps2vif1.h",
}
end
if (CPUS["MIPS"]~=null or _OPTIONS["with-tools"]) then
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/mips3dsm.cpp")
table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/mips3dsm.h")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/vudasm.cpp")
+ table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/vudasm.h")
end
--------------------------------------------------
diff --git a/docs/release/scripts/src/emu.lua b/docs/release/scripts/src/emu.lua
index cc281b6a8c3..c9a8ddeb625 100644
--- a/docs/release/scripts/src/emu.lua
+++ b/docs/release/scripts/src/emu.lua
@@ -116,6 +116,33 @@ files {
MAME_DIR .. "src/emu/emucore.h",
MAME_DIR .. "src/emu/emumem.cpp",
MAME_DIR .. "src/emu/emumem.h",
+ MAME_DIR .. "src/emu/emumem_mud.cpp",
+ MAME_DIR .. "src/emu/emumem_mud.h",
+ MAME_DIR .. "src/emu/emumem_hea.h",
+ MAME_DIR .. "src/emu/emumem_hem.cpp",
+ MAME_DIR .. "src/emu/emumem_hem.h",
+ MAME_DIR .. "src/emu/emumem_hedp.cpp",
+ MAME_DIR .. "src/emu/emumem_hedp.h",
+ MAME_DIR .. "src/emu/emumem_heun.cpp",
+ MAME_DIR .. "src/emu/emumem_heun.h",
+ MAME_DIR .. "src/emu/emumem_heu.cpp",
+ MAME_DIR .. "src/emu/emumem_heu.h",
+ MAME_DIR .. "src/emu/emumem_hedr.ipp",
+ MAME_DIR .. "src/emu/emumem_hedr.h",
+ MAME_DIR .. "src/emu/emumem_hedr0.cpp",
+ MAME_DIR .. "src/emu/emumem_hedr1.cpp",
+ MAME_DIR .. "src/emu/emumem_hedr2.cpp",
+ MAME_DIR .. "src/emu/emumem_hedr3.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw.ipp",
+ MAME_DIR .. "src/emu/emumem_hedw.h",
+ MAME_DIR .. "src/emu/emumem_hedw0.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw1.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw2.cpp",
+ MAME_DIR .. "src/emu/emumem_hedw3.cpp",
+ MAME_DIR .. "src/emu/emumem_hep.cpp",
+ MAME_DIR .. "src/emu/emumem_hep.h",
+ MAME_DIR .. "src/emu/emumem_het.cpp",
+ MAME_DIR .. "src/emu/emumem_het.h",
MAME_DIR .. "src/emu/emuopts.cpp",
MAME_DIR .. "src/emu/emuopts.h",
MAME_DIR .. "src/emu/emupal.cpp",
diff --git a/docs/release/scripts/src/machine.lua b/docs/release/scripts/src/machine.lua
index 80c9419a4e8..19542841d88 100644
--- a/docs/release/scripts/src/machine.lua
+++ b/docs/release/scripts/src/machine.lua
@@ -3568,4 +3568,134 @@ if (MACHINES["I8291A"]~=null) then
}
end
+---------------------------------------------------
+--
+--@src/devices/machine/ps2dma.h,MACHINES["PS2DMAC"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2DMAC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2dma.cpp",
+ MAME_DIR .. "src/devices/machine/ps2dma.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2intc.h,MACHINES["PS2INTC"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2INTC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2intc.cpp",
+ MAME_DIR .. "src/devices/machine/ps2intc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2mc.h,MACHINES["PS2MC"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2MC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2mc.cpp",
+ MAME_DIR .. "src/devices/machine/ps2mc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2pad.h,MACHINES["PS2PAD"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2PAD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2pad.cpp",
+ MAME_DIR .. "src/devices/machine/ps2pad.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2sif.h,MACHINES["PS2SIF"] = true
+---------------------------------------------------
+
+if (MACHINES["PS2SIF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2sif.cpp",
+ MAME_DIR .. "src/devices/machine/ps2sif.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ps2timer.h,MACHINES["PS2TIMER"] = true
+---------------------------------------------------
+if (MACHINES["PS2TIMER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ps2timer.cpp",
+ MAME_DIR .. "src/devices/machine/ps2timer.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopcdvd.h,MACHINES["IOPCDVD"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPCDVD"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopcdvd.cpp",
+ MAME_DIR .. "src/devices/machine/iopcdvd.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopdma.h,MACHINES["IOPDMA"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPDMA"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopdma.cpp",
+ MAME_DIR .. "src/devices/machine/iopdma.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopintc.h,MACHINES["IOPINTC"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPINTC"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopintc.cpp",
+ MAME_DIR .. "src/devices/machine/iopintc.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/iopsio2.h,MACHINES["IOPSIO2"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPSIO2"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/iopsio2.cpp",
+ MAME_DIR .. "src/devices/machine/iopsio2.h",
+ }
+end
+
+---------------------------------------------------
+--
+--@src/devices/machine/ioptimer.h,MACHINES["IOPTIMER"] = true
+---------------------------------------------------
+
+if (MACHINES["IOPTIMER"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/ioptimer.cpp",
+ MAME_DIR .. "src/devices/machine/ioptimer.h",
+ }
+end
diff --git a/docs/release/scripts/src/main.lua b/docs/release/scripts/src/main.lua
index 8f182903009..d08c94de64f 100644
--- a/docs/release/scripts/src/main.lua
+++ b/docs/release/scripts/src/main.lua
@@ -169,7 +169,7 @@ end
if _OPTIONS["WEBASSEMBLY"] then
emccopts = emccopts
- .. " -s BINARYEN=1"
+ .. " -s WASM=" .. _OPTIONS["WEBASSEMBLY"]
end
if _OPTIONS["ARCHOPTS"] then
diff --git a/docs/release/scripts/src/sound.lua b/docs/release/scripts/src/sound.lua
index a67c71ed782..f8e7f0f20a1 100644
--- a/docs/release/scripts/src/sound.lua
+++ b/docs/release/scripts/src/sound.lua
@@ -1471,3 +1471,15 @@ if (SOUNDS["UPD934G"]~=null) then
MAME_DIR .. "src/devices/sound/upd934g.h",
}
end
+
+---------------------------------------------------
+--
+--@src/devices/sound/iopspu.h,SOUNDS["IOPSPU"] = true
+---------------------------------------------------
+
+if (SOUNDS["IOPSPU"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/sound/iopspu.cpp",
+ MAME_DIR .. "src/devices/sound/iopspu.h",
+ }
+end
diff --git a/docs/release/scripts/src/video.lua b/docs/release/scripts/src/video.lua
index dc25ec8c581..c014a026fad 100644
--- a/docs/release/scripts/src/video.lua
+++ b/docs/release/scripts/src/video.lua
@@ -1090,3 +1090,25 @@ if (VIDEOS["NEREID"]~=null) then
MAME_DIR .. "src/devices/video/nereid.h",
}
end
+
+--------------------------------------------------
+--
+--@src/devices/video/ps2gif.h,VIDEOS["PS2GIF"] = true
+--------------------------------------------------
+if (VIDEOS["PS2GIF"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ps2gif.cpp",
+ MAME_DIR .. "src/devices/video/ps2gif.h",
+ }
+end
+
+--------------------------------------------------
+--
+--@src/devices/video/ps2gs.h,VIDEOS["PS2GS"] = true
+--------------------------------------------------
+if (VIDEOS["PS2GS"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/video/ps2gs.cpp",
+ MAME_DIR .. "src/devices/video/ps2gs.h",
+ }
+end
diff --git a/docs/release/scripts/target/hbmame/hbmame.lua b/docs/release/scripts/target/hbmame/hbmame.lua
index ac238411fba..40a885a9698 100644
--- a/docs/release/scripts/target/hbmame/hbmame.lua
+++ b/docs/release/scripts/target/hbmame/hbmame.lua
@@ -316,7 +316,6 @@ files {
MAME_DIR .. "src/hbmame/drivers/gauntlet.cpp",
MAME_DIR .. "src/mame/video/gauntlet.cpp",
MAME_DIR .. "src/hbmame/drivers/tempest.cpp",
- MAME_DIR .. "src/mame/machine/atari_vg.cpp",
MAME_DIR .. "src/mame/machine/atarigen.cpp",
MAME_DIR .. "src/mame/machine/mathbox.cpp",
MAME_DIR .. "src/mame/machine/slapstic.cpp",
diff --git a/docs/release/scripts/target/mame/arcade.lua b/docs/release/scripts/target/mame/arcade.lua
index d92c75cf8d7..1e2c83b6ea5 100644
--- a/docs/release/scripts/target/mame/arcade.lua
+++ b/docs/release/scripts/target/mame/arcade.lua
@@ -348,6 +348,8 @@ VIDEOS["VOODOO"] = true
VIDEOS["VOODOO_PCI"] = true
VIDEOS["ZEUS2"] = true
VIDEOS["PPU2C0X"] = true
+VIDEOS["PS2GS"] = true
+VIDEOS["PS2GIF"] = true
--------------------------------------------------
-- specify available machine cores
@@ -1257,8 +1259,6 @@ files {
MAME_DIR .. "src/mame/video/xybots.cpp",
MAME_DIR .. "src/mame/machine/asic65.cpp",
MAME_DIR .. "src/mame/machine/asic65.h",
- MAME_DIR .. "src/mame/machine/atari_vg.cpp",
- MAME_DIR .. "src/mame/machine/atari_vg.h",
MAME_DIR .. "src/mame/machine/atarigen.cpp",
MAME_DIR .. "src/mame/machine/atarigen.h",
MAME_DIR .. "src/mame/machine/mathbox.cpp",
@@ -2688,6 +2688,7 @@ files {
MAME_DIR .. "src/mame/video/baraduke.cpp",
MAME_DIR .. "src/mame/drivers/cswat.cpp",
MAME_DIR .. "src/mame/drivers/dambustr.cpp",
+ MAME_DIR .. "src/mame/drivers/dkmb.cpp",
MAME_DIR .. "src/mame/drivers/gal3.cpp",
MAME_DIR .. "src/mame/drivers/galaga.cpp",
MAME_DIR .. "src/mame/includes/galaga.h",
@@ -3713,6 +3714,7 @@ files {
MAME_DIR .. "src/mame/drivers/changela.cpp",
MAME_DIR .. "src/mame/includes/changela.h",
MAME_DIR .. "src/mame/video/changela.cpp",
+ MAME_DIR .. "src/mame/drivers/cpzodiac.cpp",
MAME_DIR .. "src/mame/drivers/crbaloon.cpp",
MAME_DIR .. "src/mame/includes/crbaloon.h",
MAME_DIR .. "src/mame/video/crbaloon.cpp",
diff --git a/docs/release/scripts/target/mame/mess.lua b/docs/release/scripts/target/mame/mess.lua
index b51965ff981..71aa52b0e9f 100644
--- a/docs/release/scripts/target/mame/mess.lua
+++ b/docs/release/scripts/target/mame/mess.lua
@@ -271,6 +271,7 @@ SOUNDS["MEA8000"] = true
SOUNDS["DAVE"] = true
--SOUNDS["LC7535"] = true
SOUNDS["UPD934G"] = true
+SOUNDS["IOPSPU"] = true
--------------------------------------------------
-- specify available video cores
@@ -360,6 +361,8 @@ VIDEOS["MGA2064W"] = true
VIDEOS["PPU2C0X"] = true
VIDEOS["DP8510"] = true
VIDEOS["MB88303"] = true
+VIDEOS["PS2GS"] = true
+VIDEOS["PS2GIF"] = true
--------------------------------------------------
-- specify available machine cores
@@ -642,6 +645,17 @@ MACHINES["ADC0844"] = true
MACHINES["28FXXX"] = true
-- MACHINES["GEN_FIFO"] = true
MACHINES["Z80DAISY"] = true
+MACHINES["PS2DMAC"] = true
+MACHINES["PS2INTC"] = true
+MACHINES["PS2MC"] = true
+MACHINES["PS2PAD"] = true
+MACHINES["PS2SIF"] = true
+MACHINES["PS2TIMER"] = true
+MACHINES["IOPCDVD"] = true
+MACHINES["IOPDMA"] = true
+MACHINES["IOPINTC"] = true
+MACHINES["IOPSIO2"] = true
+MACHINES["IOPTIMER"] = true
--------------------------------------------------
-- specify available bus cores
@@ -653,6 +667,7 @@ BUSES["A7800"] = true
BUSES["A800"] = true
BUSES["ABCBUS"] = true
BUSES["ABCKB"] = true
+BUSES["ACORN"] = true
BUSES["ADAM"] = true
BUSES["ADAMNET"] = true
BUSES["APF"] = true
@@ -1369,15 +1384,16 @@ files {
createMESSProjects(_target, _subtarget, "acorn")
files {
MAME_DIR .. "src/mame/drivers/aa310.cpp",
- MAME_DIR .. "src/mame/drivers/a6809.cpp",
MAME_DIR .. "src/mame/drivers/accomm.cpp",
MAME_DIR .. "src/mame/drivers/acrnsys1.cpp",
+ MAME_DIR .. "src/mame/drivers/acrnsys.cpp",
MAME_DIR .. "src/mame/drivers/atom.cpp",
MAME_DIR .. "src/mame/includes/atom.h",
MAME_DIR .. "src/mame/drivers/bbc.cpp",
MAME_DIR .. "src/mame/includes/bbc.h",
MAME_DIR .. "src/mame/machine/bbc.cpp",
MAME_DIR .. "src/mame/video/bbc.cpp",
+ MAME_DIR .. "src/mame/drivers/cms.cpp",
MAME_DIR .. "src/mame/drivers/electron.cpp",
MAME_DIR .. "src/mame/includes/electron.h",
MAME_DIR .. "src/mame/machine/electron.cpp",
@@ -1497,17 +1513,12 @@ createMESSProjects(_target, _subtarget, "apple")
files {
MAME_DIR .. "src/mame/drivers/apple1.cpp",
MAME_DIR .. "src/mame/drivers/apple2.cpp",
- MAME_DIR .. "src/mame/includes/apple2.h",
MAME_DIR .. "src/mame/drivers/apple2e.cpp",
MAME_DIR .. "src/mame/includes/apple2e.h",
- MAME_DIR .. "src/mame/machine/apple2.cpp",
MAME_DIR .. "src/mame/video/apple2.cpp",
MAME_DIR .. "src/mame/video/apple2.h",
MAME_DIR .. "src/mame/drivers/tk2000.cpp",
MAME_DIR .. "src/mame/drivers/apple2gs.cpp",
- MAME_DIR .. "src/mame/includes/apple2gs.h",
- MAME_DIR .. "src/mame/machine/apple2gs.cpp",
- MAME_DIR .. "src/mame/video/apple2gs.cpp",
MAME_DIR .. "src/mame/drivers/apple3.cpp",
MAME_DIR .. "src/mame/includes/apple3.h",
MAME_DIR .. "src/mame/machine/apple3.cpp",
@@ -1536,6 +1547,7 @@ files {
MAME_DIR .. "src/mame/machine/macpci.cpp",
MAME_DIR .. "src/mame/machine/cuda.cpp",
MAME_DIR .. "src/mame/machine/cuda.h",
+ MAME_DIR .. "src/mame/drivers/iphone2g.cpp",
}
createMESSProjects(_target, _subtarget, "applied")
@@ -1887,6 +1899,9 @@ files {
createMESSProjects(_target, _subtarget, "dec")
files {
MAME_DIR .. "src/mame/drivers/dct11em.cpp",
+ MAME_DIR .. "src/mame/drivers/decstation.cpp",
+ MAME_DIR .. "src/mame/machine/decioga.cpp",
+ MAME_DIR .. "src/mame/machine/decioga.h",
MAME_DIR .. "src/mame/drivers/dectalk.cpp",
MAME_DIR .. "src/mame/drivers/decwritr.cpp",
MAME_DIR .. "src/mame/drivers/pdp11.cpp",
@@ -2518,7 +2533,9 @@ files {
MAME_DIR .. "src/mame/drivers/pc8001.cpp",
MAME_DIR .. "src/mame/includes/pc8001.h",
MAME_DIR .. "src/mame/drivers/pc8801.cpp",
+ MAME_DIR .. "src/mame/includes/pc8801.h",
MAME_DIR .. "src/mame/drivers/pc88va.cpp",
+ MAME_DIR .. "src/mame/includes/pc88va.h",
MAME_DIR .. "src/mame/drivers/pc100.cpp",
MAME_DIR .. "src/mame/drivers/pc9801.cpp",
MAME_DIR .. "src/mame/includes/pc9801.h",
@@ -2973,6 +2990,8 @@ files {
MAME_DIR .. "src/mame/machine/x68k_hdc.h",
MAME_DIR .. "src/mame/machine/x68k_kbd.cpp",
MAME_DIR .. "src/mame/machine/x68k_kbd.h",
+ MAME_DIR .. "src/mame/video/x68k_crtc.cpp",
+ MAME_DIR .. "src/mame/video/x68k_crtc.h",
MAME_DIR .. "src/mame/drivers/mz80.cpp",
MAME_DIR .. "src/mame/includes/mz80.h",
MAME_DIR .. "src/mame/video/mz80.cpp",
@@ -2984,6 +3003,7 @@ files {
MAME_DIR .. "src/mame/video/x1.cpp",
MAME_DIR .. "src/mame/drivers/x1twin.cpp",
MAME_DIR .. "src/mame/drivers/mz2500.cpp",
+ MAME_DIR .. "src/mame/includes/mz2500.h",
MAME_DIR .. "src/mame/drivers/mz3500.cpp",
MAME_DIR .. "src/mame/drivers/pce220.cpp",
MAME_DIR .. "src/mame/machine/pce220_ser.cpp",
@@ -3331,6 +3351,7 @@ files {
MAME_DIR .. "src/mame/includes/dgnalpha.h",
MAME_DIR .. "src/mame/video/gime.cpp",
MAME_DIR .. "src/mame/video/gime.h",
+ MAME_DIR .. "src/mame/drivers/meritum.cpp",
MAME_DIR .. "src/mame/drivers/trs80.cpp",
MAME_DIR .. "src/mame/includes/trs80.h",
MAME_DIR .. "src/mame/machine/trs80.cpp",
@@ -3339,6 +3360,10 @@ files {
MAME_DIR .. "src/mame/includes/trs80m2.h",
MAME_DIR .. "src/mame/machine/trs80m2kb.cpp",
MAME_DIR .. "src/mame/machine/trs80m2kb.h",
+ MAME_DIR .. "src/mame/drivers/trs80m3.cpp",
+ MAME_DIR .. "src/mame/includes/trs80m3.h",
+ MAME_DIR .. "src/mame/machine/trs80m3.cpp",
+ MAME_DIR .. "src/mame/video/trs80m3.cpp",
MAME_DIR .. "src/mame/drivers/tandy2k.cpp",
MAME_DIR .. "src/mame/includes/tandy2k.h",
MAME_DIR .. "src/mame/machine/tandy2kb.cpp",
diff --git a/docs/release/scripts/target/mame/virtual.lua b/docs/release/scripts/target/mame/virtual.lua
index 845da627bb2..12c95125385 100644
--- a/docs/release/scripts/target/mame/virtual.lua
+++ b/docs/release/scripts/target/mame/virtual.lua
@@ -24,30 +24,32 @@ CPUS["DSP16"] = true -- for qsound
-- only for MAME and so aren't included
--------------------------------------------------
-SOUNDS["NES_APU"] = true
-SOUNDS["YM2612"] = true
-SOUNDS["YM2151"] = true
-SOUNDS["YM2413"] = true
-SOUNDS["YM2608"] = true
-SOUNDS["YM2203"] = true
SOUNDS["AY8910"] = true
-SOUNDS["YM3526"] = true
-SOUNDS["YM3812"] = true
-SOUNDS["YMF271"] = true
-SOUNDS["YMZ280B"] = true
+SOUNDS["C352"] = true
SOUNDS["C6280"] = true
-SOUNDS["SN76496"] = true
+SOUNDS["GB_SOUND"] = true
+SOUNDS["IREMGA20"] = true
SOUNDS["K051649"] = true
SOUNDS["K053260"] = true
SOUNDS["K054539"] = true
-SOUNDS["SEGAPCM"] = true
SOUNDS["MULTIPCM"] = true
-SOUNDS["GB_SOUND"] = true
-SOUNDS["POKEY"] = true
-SOUNDS["C352"] = true
+SOUNDS["NES_APU"] = true
SOUNDS["OKIM6295"] = true
+SOUNDS["POKEY"] = true
SOUNDS["QSOUND"] = true
+SOUNDS["RF5C68"] = true
+SOUNDS["SEGAPCM"] = true
+SOUNDS["SN76496"] = true
SOUNDS["WAVE"] = true
+SOUNDS["YM2151"] = true
+SOUNDS["YM2203"] = true
+SOUNDS["YM2413"] = true
+SOUNDS["YM2608"] = true
+SOUNDS["YM2612"] = true
+SOUNDS["YM3526"] = true
+SOUNDS["YM3812"] = true
+SOUNDS["YMF271"] = true
+SOUNDS["YMZ280B"] = true
--------------------------------------------------
-- specify available video cores