Skip to content

Added Pinball FX Classic in addition to Pinball FX3#554

Open
bhitney wants to merge 4 commits intofreezy:masterfrom
bhitney:Pinball-FX-Classic
Open

Added Pinball FX Classic in addition to Pinball FX3#554
bhitney wants to merge 4 commits intofreezy:masterfrom
bhitney:Pinball-FX-Classic

Conversation

@bhitney
Copy link
Copy Markdown

@bhitney bhitney commented Apr 4, 2026

Added support for Pinball FX Classic, copied from Pinball FX3. Left Pinball FX3 as-is for compatibility.

@CFTBL
Copy link
Copy Markdown

CFTBL commented May 5, 2026

This version works great in my cabinet. Makes DMDExt memory grabber work with Pinball FX Classic.

@freezy
Copy link
Copy Markdown
Owner

freezy commented May 5, 2026

Sorry, completely missed this one. Did they just rename it, or is there a real new version?

@CFTBL
Copy link
Copy Markdown

CFTBL commented May 5, 2026

Zen pushed out an update that rebranded Pinball FX3 to “Pinball FX Classic”… which broke the memory grabber in DMDExt (because the process name is no longer ‘Pinball FX3'). This pull request fixes it. Also requires that you launch DMDext with the updated "source" parameter, like this:

dmdext mirror --source=pinballfxclassic --no-virtual

I tested it in my cabinet using bhitney's fork, here:

https://github.com/bhitney/dmd-extensions/actions/runs/23983252777

@bhitney
Copy link
Copy Markdown
Author

bhitney commented May 5, 2026

Sorry, completely missed this one. Did they just rename it, or is there a real new version?

I believe they just renamed it (I have not gotten any confirmation from Zen on this). The old could be deleted or left for backward compat?

@freezy
Copy link
Copy Markdown
Owner

freezy commented May 5, 2026

How about just modifying the current driver then instead of adding another one? I suppose most of this PR is duplicated code?

@bhitney
Copy link
Copy Markdown
Author

bhitney commented May 5, 2026

That's good, too (I mentioned in the issue I wasn't sure if preferred renaming or adding.) I chose to add so if someone updated DMDExt but not FX3, it wouldn't break. (Why would someone do that? Not really sure. Figured adding was safer.)

@freezy
Copy link
Copy Markdown
Owner

freezy commented May 5, 2026

How about just checking both process names and grabbing the first match? That wouldn't break BC and changes would be minimal.

@bhitney
Copy link
Copy Markdown
Author

bhitney commented May 6, 2026

I don't think there's a wrong approach, but the way the PinballFXGrabber is defined made that a bit more complicated (though this is just after a casual look, I don't know it well):

	public override string Name { get; } = "Pinball FX3";

	protected override string GetProcessName()
	{
		return "Pinball FX3";
	}

One option is to change the GetProcessName to return an IEnumerable instead of string, then change the FindHandle and wherever else to account for that. That leaves the console arguments untouched. Or, shim in something in the command line parsing that source=PinballFX3 or source=PinballFXClassic maps to the same PinballFX3Grabber, but that wouldn't be too elegant I don't think.

Another option is to dynamically pass a processname override command line argument, for future flexibility. In the end, my thinking was simplicity - deprecate the old PinballFX3 in this version so nothing is at risk of breaking while adding support for the new version, then remove it in the following version. But I'm good either way, if you want to match both process names let me know how you'd like that implemented.

@freezy
Copy link
Copy Markdown
Owner

freezy commented May 6, 2026

I think changing GetProcessName to return an IEnumerable is the best approach. I don't think we need a way of customizing it through the command line, which is already vast enough. Maybe add an alias for pinballfx3 so it works also with pinballfxclassic, or something.

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.

3 participants