Skip to content

DMD Player plugin integration and declarative settings - #2

Merged
freezy merged 7 commits into
masterfrom
feat/player-plugins
Oct 14, 2026
Merged

freezy merged 7 commits into
masterfrom
feat/player-plugins

Conversation

@freezy

@freezy freezy commented Oct 14, 2026

Copy link
Copy Markdown
Member

Adds DMD as an optional Player plugin in the existing Unity package. The integration declares global and game-specific settings, discovers available colorizations and display sources, and connects DMD runtime output through VPE's shared plugin contracts. The Player owns the configuration UI; no extra DMD Player package is required.

Field metadata supports wide inputs and paired display coordinates in the shared renderer. Package metadata and new source headers follow the VPE conventions.

Validation: exercised with the shared Player's plugin settings and runtime checks during the integration work. The plugin-contract tests and Windows Player standalone build passed; native macOS/Linux display hardware remains untested on this host.

Depends on the Core plugin contracts in freezy/VisualPinball.Engine#588 and the shared settings renderer in VisualPinball/VisualPinball.Engine.Player#1.

@greptile-apps

greptile-apps Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[High impact] The PR appears safe to merge; no actionable new defect was established.

Summary

Adds DMD to the existing Unity package as an optional Player plugin.

  • DMD now takes game display frames through the shared Player.
  • Games can use a chosen colorization from an existing library.
  • The shared Player now offers settings for DMD displays and hardware.
  • Text files now use consistent line endings and file types stay clear.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Settings["Player settings"] --> Library["Find colorization library"]
  Library --> Select["Choose colorization"]
  Select --> Stage["Copy selected files to owned cache"]
  Source["Bound display source"] --> Input["ManagedDmdInput"]
  Input --> Graph["DMD graph and worker"]
  Stage --> Graph
  Graph --> Presentation["Player presentation frames"]
  Graph --> Outputs["Table display and native outputs"]
Loading

Reviews (3) · Last reviewed commit: "dmd: find the default altcolor folder an..." · Reviewed by Greptile

Comment thread Tests/Player/VisualPinball.Engine.DMD.Player.Tests.csproj Outdated
Comment thread VisualPinball.Engine.DMD.Unity/Runtime/DmdBridgePlayer.cs Outdated
Comment thread VisualPinball.Engine.DMD.Unity/Runtime/Plugins/DmdPluginFactory.cs Outdated
Without a configured library the plugin looks next to DmdDevice.ini, in VPM_HOME and next to the ROM folders, like the standalone bridge. Automatic selection prefers the newest Serum file in the game folder, then pin2dmd.pac with a key, then pin2dmd.pal, and skips macOS resource forks.
@freezy
freezy merged commit ecdeb87 into master Oct 14, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant