Page 1 of 1

Attn frontend developers: machine flags in XML

Posted: Thu Jul 27, 2017 2:21 am
by cuavas
We're hitting the limitations of the driver element and its attributes in MAME's -listxml output. To allow for inheritance, better deal with systems with configurable slots, and make handling of machines and devices more uniform, this element is being deemphasised, and some of its attributes are deprecated, to be removed in a future release.

The following attributes of the driver element are deprecated and will be removed in a future release (they will be maintained for at least two releases before being removed): color, sound, graphic, protection. The other attributes are not scheduled for removal at this point.

A new feature element is being introduced to provide more detailed information on unemulated and imperfectly emulated features. This element is applicable to both systems and devices, unlike the driver element that is only applicable to systems. The feature element has three attributes:
  • type - required, indicates the feature of the system/device that has emulation issues; possible values at present: protection, palette, graphics, sound, controls, keyboard, mouse, microphone, camera, disk, printer, lan, wan
  • status - implied, indicates the emulation status of the feature for the device itself; possible values: unemulated, imperfect
  • overall - implied, indicates the emulation status of the feature inherited from subdevices; possible values: unemulated, imperfect
The status attribute only be present if the device itself indicates emulation issues for a feature. The overall attribute will only be present if more severe emulation issues are indicated by subdevices than by the device itself. For example

Code: Select all

<feature type="keyboard" status="imperfect"/> <!-- device indicates that its keyboard emulation is imperfect -->
<feature type="mouse" status="unemulated"/> <!-- device indicates that mouse is unemulated -->
<feature type="graphics" overall="imperfect"/> <!-- at least one subdevice indicates that graphics emulation is imperfect -->
<feature type="palette" overall="unemulated"/> <!-- at least one subdevice indicates that colour palette is unemulated -->
<feature type="sound" status="imperfect" overall="unemulated"/> <!-- device indicates that its sound emulation is imperfect, at least one subdevice indicates that sound is unemulated -->
Right now you can see this with the votrax device. The aussieby system inherits imperfect sound from its votrax device. The c64_speakeasy slot card inherits imperfect sound from its votrax device. If you launch a c64 with a c64_speakeasy card in a compatible slot, MAME will warn about imperfect sound.

If you provide a UI for slot device selection, you may want to provide indication of emulation issues declared by slot devices.

Right now, there is no equivalent for the emulation and savestate attributes for devices (NOT_WORKING and SUPPORTS_SAVE flags). This will come at some point in the future.