design/SCREENS.md flagged six standard pinball moments - ball_start/match, tilt_warning,
ball_over, multiball_start/jackpot, game_over, high_score_entry - as net-new, with no
owning design doc, since they aren't playfield "features" in the design/features/ parts/
hardware sense. This is that design pass.
Finding that reshapes the whole list: MPF ships several of these as built-in modes
(.venv/Lib/site-packages/mpf/modes/: attract, bonus, carousel, credits, game, high_score, match, service*, tilt), separate from the always-loaded baseline (mpfconfig.yaml hardcodes
modes: [attract, game] under every project, which is why attract already worked without
being in this project's own config.yaml modes: list). The others need to be added to
config.yaml's modes: list to activate, but need little-to-no project-specific config beyond
that for most of them. This means most of this list is "wire up what MPF already provides," not
"design a mechanic from scratch."
ball_start / matchBuilt-in match mode compares players' last-two-digits scores at game end and awards a free
game/credit. Done: match is in config.yaml's modes: list. No new hardware or shots
needed. Presentation: mpf-gmc ships its own match
slide in the addon's default slides/ folder, currently unused - check that before building a
custom one.
tilt_warningMPF ships a tilt: device (config keys: tilt_warning_switch_tag/tilt_slam_tilt_switch_tag,
warnings_to_tilt, etc.) plus a built-in tilt mode. Genuinely blocked, not just
unregistered: TODO.md already flags no tilt switch exists in hardware-switches.yaml at all -
a tilt switch has to be installed and wired first (the same wire-component pass every other
part gets) before the tilt: device config can be written for real. A DRAFT config without a
real switch would be pure guesswork.
ball_overNot a separate device/mechanic at all - ball_will_end/ball_ended are core MPF events that
already fire automatically as part of the ball_devices/game flow (used today, e.g., by the
existing auditor: config's save_events). This is a presentation-only moment: a transient
slide played on ball_will_end, no new rules needed. Add to design/SCREENS.md's inventory
directly (transient overlay, trigger ball_will_end) once art exists - no rules work blocks it.
multiball_start / jackpotNot bundled as a default mode - built from a multiball: device (config keys: ball_count,
shoot_again, enable_events, etc.). Implemented as a DRAFT (2026-08-27): the multiball
mode starts a 3-ball multiball (mb_dropbank) when the drop bank is completed, drawing the extra
balls straight from the trough (no ball_locks: device). Its slide is multiball_start.tscn, see
design/SCREENS.md. Still open: tuning, the repeat-completion behaviour (TODO.md), and whether
it should move to a real ball lock once VUK6/the VUKs are wired. The wizard-mode shape is a
separate question (super_wizard exists but only awards a flat score, TODO.md).
game_overSame shape as ball_over - game_ended is a core event MPF already posts (game mode's own
lifecycle, no device needed). Presentation-only moment: a transient/persistent slide on
game_ended. Add to design/SCREENS.md directly once art exists.
high_score_entryBuilt-in high_score mode (initials entry, top-N tracking) exists and mpf-gmc ships a default
high_score slide in its own slides/ folder (same "currently unused" note as match). Done: high_score is in config.yaml's modes: list.
No new hardware needed - MPF's default initials-entry input handling works via the same keyboard/
switch input already in use for other testing.
match and high_score are in config.yaml's modes: list. Still to check: whetherball_over and game_over just need a slide once artdesign/SCREENS.md's inventory.tilt_warning (needs a real tilt switch installedmultiball_start/jackpot: a DRAFT multiball is implemented (drop-bank triggered, trough-fed);