Schema reference

Every field of every type in the catalog's formats — 36 types, 189 fields. Generated from the JSON Schemas on each build, so this page cannot drift from the files it describes.

For what the vocabulary means — bindings, polarity, coverage, evidence precedence — read the guide instead.

Machine definition

One document per physical machine: what the ROM can address, what each address is on the real playfield, and where every claim came from. This is the file behind each machine page.

schemas/machine.schema.json

machine definition

document root

When schema_version is 2, coverage.dimensions includes spatial_placement.

When coverage.status is author_ready, schema_version is 2.

Field Type Req Notes
formatstring

Identifies the document type. Always this exact string.

pinmame-machine-definition

schema_versionenum

Version 2 adds optional spatial evidence. Version 1 definitions remain valid, but author-ready definitions must use version 2.

12

machinemachine identity
coveragecoverage
driversdriver[]

at least 1 item

inputsinput[]
outputsoutput[]
displaysdisplay[]
mechanismsmechanism[]
relationshipsrelationship[]
sourcessource[]
knowledgeknowledge
controllercontroller·
conflictsconflict[]·

identifier

value

The shape every id in the catalog takes: lowercase, dot, hyphen or underscore separated.

Used bymachine identity.id,controller.platform,driver.id,driver.clone_of,binding.group,alias.namespace,provenance.source_refs,input.id,input.roles,output.id,output.model,output.roles,display.id,display override.target,mechanism.id,mechanism.actuators,mechanism.sensors,mechanism.positions.id,mechanism.positions.sensors,relationship.id,relationship.source,relationship.destination,source.id,spatial placement.id,device override.target,conflict.id,conflict.source_refs

Pattern^[a-z0-9]+(?:[._-][a-z0-9]+)*$

machine identity

Used bymachine definition.machine

Field Type Req Notes
ididentifier

The physical product: one playfield, one wiring loom, one definition, however many ROM revisions exist.

namestring

at least 1 character

manufacturerstring

at least 1 character

yearinteger

Null where the release year is genuinely unknown rather than merely unrecorded.

minimum 1900 · maximum 2100

kindenum·

physical_pinballphysical_conversionredemption_gamediagnostic_softwaresystem_softwareunknown

model_numberstring·

at least 1 character

ipdb_idinteger·

minimum 1

coverage

Used bymachine definition.coverage

Field Type Req Notes
statusenum

Fail-closed. Only the completeness validator may grant author_ready; do not set it by hand.

stubpartialauthor_ready

missingenum[]

The authoring requirements not yet satisfied. Empty is what author_ready requires.

identitydriver_mappingcontroller_platforminput_enumerationinput_semanticsoutput_enumerationoutput_semanticsdisplay_inventorymechanism_inventorymechanism_behaviorpolarityvariant_differencesrecreation_notesprovenancespatial_placementunresolved_conflicts

unique

dimensionsmap of assertion state

How well each axis of the definition is established. Keys are the seven axes below.

assertion state

value

How well one assertion is established. Per claim, not per document — observing that an output toggled is not the same as knowing what it drives, and failing to observe one is not evidence that it is unused.

Used bycoverage.dimensions,provenance.status

Valuesunknowncandidateobservedvalidatedconflictednot_applicable

controller

Used bymachine definition.controller

Field Type Req Notes
platformidentifier

Holds the id of a controller profile.

hardware_generationstring·

pattern ^0x[0-9a-f]+$

inversion_applied_by_emulatorboolean·

driver

Used bymachine definition.drivers

Field Type Req Notes
ididentifier

One exact PinMAME ROM set. Many drivers resolve to one machine.

descriptionstring

at least 1 character

yearstring

at least 1 character

manufacturerstring

at least 1 character

flagsinteger

The PinMAME driver flags for this set, as a bitfield.

minimum 0

clone_ofidentifier·

Holds another driver id in this document.

physical_compatibilityenum·

Compatibility of this ROM driver with the physical machine described by the containing definition.

identicalcompatibledifferentunknown

variant_notesstring·

at least 1 character

display_overridesdisplay override[]·

Driver-specific display-layout differences from the canonical physical-machine display inventory.

at least 1 item

overridesdevice override[]·

binding

Used byinput.binding,output.binding,device override.binding

Field Type Req Notes
groupidentifier

Names the address space. The platform profile says which numbers are legal in it.

deviceinteger

The number PinMAME reports, not a hardware pin. Negative numbers are real: they carry dedicated and diagnostic inputs from outside the matrix.

channelinteger·

Only meaningful for an rgb_lamp, which binds one channel per colour.

minimum 0

alias

Used byinput.aliases,output.aliases

Field Type Req Notes
namespaceidentifier

Which naming system the value belongs to — vpx, pinmame, the operator manual.

valuestring

The name that namespace uses for this device.

at least 1 character

input

Used bymachine definition.inputs

Field Type Req Notes
ididentifier

The stable semantic name a table should bind to. If a controller number ever changes, this does not.

labelstring

at least 1 character

kindenum

switchdip_switchconstantvirtual

bindingbinding
aliasesalias[]
provenanceprovenance
normally_closedboolean·

A fact about the real part — an opto conducting at rest, a drop target closed while raised. Build the hardware behaviour; do not convert it into a runtime flip.

pulseboolean·

The switch fires its coil directly in copper, so it must act whether or not a game is running.

initial_activeboolean·

Controller-facing active state that a recreation must establish before starting the game controller; omitted means the definition does not declare a startup state.

availabilityenum·

unused means the address was checked and found to have nothing wired to it — which is not the same as nobody having looked.

usedunusedoptionalunknown

physicalphysical·
spatialspatial·
wiringwiring·
rolesidentifier[]·

Holds portable role names such as cabinet.start or ball.position.

unique

constant_activeboolean·

Whether a constant or virtual input remains permanently active while the controller runs; omitted means the definition does not declare constant activity.

output

Used bymachine definition.outputs

Field Type Req Notes
ididentifier

The stable semantic name a table should bind to.

labelstring

at least 1 character

kindenum

coilflasherlamprgb_lampgimotorservomagnetrelayvirtual

bindingbinding
aliasesalias[]
provenanceprovenance
modelidentifier·

Holds a shared behaviour model.

availabilityenum·

unused means the address was checked and found to drive nothing.

usedunusedoptionalunknown

physicalphysical·
spatialspatial·
rolesidentifier[]·

Holds portable role names, engine-neutral.

unique

wiringwiring·
rangeobject·

The travel of a servo or other modulated drive.

output.range

Used byoutput.range

Field Type Req Notes
minimumnumber
maximumnumber
stepsinteger·

minimum 1

display

Used bymachine definition.displays

Field Type Req Notes
ididentifier
labelstring

at least 1 character

kindenum

segmentdmdvideo

provenanceprovenance
controller_indexinteger·

Zero-based display-layout index exposed by the controller for this physical display.

minimum 0

segment_startinteger·

Zero-based start position in controller display memory for a segment display, measured in digits.

minimum 0

widthinteger·

minimum 1

heightinteger·

minimum 1

spatialdisplay spatial·

display override

Used bydriver.display_overrides

Needs at least one of controller_index, segment_start, width and height.

Field Type Req Notes
targetidentifier

Holds a display id.

provenanceprovenance
controller_indexinteger·

Replacement zero-based controller display-layout index for the target display.

minimum 0

segment_startinteger·

Replacement zero-based controller display-memory start position for the target segment display, measured in digits.

minimum 0

widthinteger·

minimum 1

heightinteger·

minimum 1

mechanism

Used bymachine definition.mechanisms

Field Type Req Notes
ididentifier
labelstring

at least 1 character

kindenum

drop_target_bankdivertergatekickermotorizedreelrotarytoyother

actuatorsidentifier[]

Holds output ids.

unique

sensorsidentifier[]

Holds input ids.

unique

behaviorstring

How the assembly acts, in prose: what ejects, what confirms, what state it starts in.

at least 1 character

provenanceprovenance
assembly_part_numberstring·

at least 1 character

positionsobject[]·

The named states the assembly can be in, and the sensors that report each.

source

Used bymachine definition.sources

Field Type Req Notes
ididentifier
kindenum

pinmame_catalogpinmame_corepinmame_simvpe_csharpvpe_scenelegacy_jsonvpx_scriptvpx_tablemanualservice_bulletinservice_diagnosticrom_static_analysisruntime_scenariohuman_review

uristring

Where the source lives. Never a copy of the source itself — no ROM, manual or table binary is committed.

at least 1 character

locatorstring

The exact place inside it: page, line range or section.

at least 1 character

revisionstring·

at least 1 character

sha256string·

pattern ^[0-9a-f]{64}$

licensestring·

at least 1 character

attributionstring·

at least 1 character

source_idstring·

at least 1 character

original_filenamestring·

at least 1 character

rightsstring·

at least 1 character

known_workingboolean·

This table is known to run the real ROM, which is what makes it authoritative on bindings.

acquired_atstring·

date-time

spatial

one of

Optional spatial evidence for a device or display in the canonical global playfield space: x=0 is left, x=1 is right, y=0 is the rear/backglass end, and y=1 is the front/apron end. This is normalized VPX/player view and is never inferred from physical.location prose.

Used byinput.spatial,output.spatial

spatial not applicable

Used byspatial.one of

Field Type Req Notes
statusstring

not_applicable

reasonenum

unusedvirtualconstantdip_switchcabinet_or_serviceinternal_nonvisualno_physical_device

provenanceprovenance

display spatial

value

Displays are cabinet/backbox services, not playfield devices; located playfield display coordinates are unsupported.

Used bydisplay.spatial

spatial placement

Used byspatial located.placements

Field Type Req Notes
ididentifier
roleenum

What the device does at that point: reads the ball, moves it, or lights it.

sensoreffectemitter

spacestring

playfield

xnumber

0 is the left edge of the playfield, 1 the right.

minimum 0 · maximum 1

ynumber

0 is the rear, at the backglass end; 1 is the front, at the apron.

minimum 0 · maximum 1

provenanceprovenance

knowledge

Used bymachine definition.knowledge

Field Type Req Notes
pathstring

The recreation note beside this definition.

pattern ^knowledge/.+\.md$

statusenum

stubpartialcomplete

physical

Used byinput.physical,output.physical

Field Type Req Notes
part_numberstring·

at least 1 character

assembly_part_numberstring·

at least 1 character

locationstring·

Prose from the manual. Never used to infer coordinates — that is what spatial is for.

at least 1 character

quantityinteger·

minimum 1

switch_typeenum·

leafmicroswitchoptoreedbuttondiptiltotherunknown

shared_emitter_groupstring·

at least 1 character

emitter_channelenum·

bluegreenred

co_located_addressesinteger[]·

unique

shared_physical_quantityinteger·

minimum 1

notesstring·

at least 1 character

wiring

Used byinput.wiring,output.wiring

Field Type Req Notes
boardstring·

at least 1 character

driver_transistorstring·

at least 1 character

drive_wirestring·

at least 1 character

drive_connectionstring·

at least 1 character

return_wirestring·

at least 1 character

return_connectionstring·

at least 1 character

return_componentstring·

at least 1 character

power_wirestring·

at least 1 character

power_connectionstring·

at least 1 character

control_wirestring·

at least 1 character

control_connectionstring·

at least 1 character

nominal_voltage_vnumber·

greater than 0

voltage_typeenum·

acdc

conflict

Used bymachine definition.conflicts

Field Type Req Notes
ididentifier
pathstring

Where in the document the sources disagree.

at least 1 character

descriptionstring

at least 1 character

source_refsidentifier[]

At least two, since a conflict needs two sides.

Holds source ids.

at least 2 items · unique

Controller profile

One document per controller platform: the address groups a machine on that platform may bind to, the legal numbers in each, and whether the emulator has already normalised polarity.

schemas/controller.schema.json

controller profile

document root
Field Type Req Notes
formatstring

Identifies the document type. Always this exact string.

pinmame-controller-profile

versionnumber

1

idstring
authoritystring

pinmame

hardware_familystring

at least 1 character

inversion_applied_by_emulatorboolean

Always true: PinMAME reports logical active state, so inverting again in a table boots every optical switch backwards.

true

groupsgroup[]

at least 1 item

sourcesobject[]

at least 1 item

sources

Used bycontroller profile.sources

Field Type Req Notes
uristring

at least 1 character

revisionstring

at least 1 character

locatorstring

at least 1 character

address rule

Used bygroup.address_rules

Needs exactly one of minimum and maximum, or values.

Field Type Req Notes
minimuminteger·
maximuminteger·
valuesinteger[]·

An explicit list, where the legal numbers are not a contiguous range.

unique

group

Used bycontroller profile.groups

Field Type Req Notes
idstring

The value a device binding names in its group field.

directionenum

Which way the data flows across this group.

inputcontrolled_deviceconfiguration

kindenum

switchdip_switchsolenoidlampgi

labelstring

at least 1 character

address_rulesaddress rule[]

at least 1 item

transportsobject

How this group reaches the emulator, per integration.

notesstring·

at least 1 character

Something wrong or missing?

Changing the schema changes this page — it is generated from the files themselves on every deploy. Adding a field means adding it to schemas/machine.schema.json and to the validator that enforces it.

Cite a source for anything you change — a manual page, a line in a working VPX script, PinMAME source, or a reading from the machine's own service menu. Claims without provenance cannot be validated.