Jump to content



Photo
- - - - -

How to get DMDext to stay on top of Future Pinball Tables?

DMDext

  • Please log in to reply
10 replies to this topic

#1 mshaker

mshaker

    Enthusiast

  • Members
  • PipPipPip
  • 84 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness, Heist

Posted 25 July 2023 - 08:20 PM

All; 

 

To play with Head Tracking: I've updated my entire Future Pinball installation. 

 

DMDext is working, but I can't get DMDext to stay on top of Future Pinball Tables. I am passing the --virtual-stay-on-top parameter.

 

I can only get DMDext on top if I either :

a) Start DMDext first, but manually give it focus after the FP Table is loaded and playing.

b) Load and play a FP Table, then start DMDext.

 

I accomplished a) by: 

Running manually: If I first start DMDext and then play a FP Table. I can get DMDext on top by:

Get the focus off FP by clicking on an unused area of the screen.

Using the Windows-Tab Key to show the TaskBar.

Click on the DMDext Taskbar Icon to give it focus (the Virtual DMD is then visible).

Click back on the FP Table so it will accept input (the Virtual DMD stays visible).

 

Note: I can't do the above using PinballX as it actively return focus to Future Pinball. 

 

I accomplished b) by: 

Starting a second script from the PinballX Launch Before script.

The second script contains a timeout, then starts DMDext.

Problem is the variable load times of the Future Pinball Tables. Some take minutes, so it's difficult to know how long to set the timeout.

 

Anyone know a way to either:  

Get the --virtual-stay-on-top to work even in Future Pinball is started after DMDext? 

Start DMDext only after a Future Pinball Table is loaded and playing?

???

 

Thank you for your help! 

 

   - Mark



#2 TerryRed

TerryRed

    Pinball Fan

  • Silver Supporter
  • 1,927 posts

  • Flag: Canada

  • Favorite Pinball: Too many to choose...

Contributor

Posted 26 July 2023 - 11:17 AM

If you mean staying on top of the FP windows... you can't. It's a fullscreen app and DMDext can't stay on top of the FP windows.

 

You can only show DMDext on its own monitor, or on the backglass with frontend / pup-pack media displayed (and the FP Backbox and Arcade mode disabled so the FP Backbox wont cover DMDExt).


Edited by TerryRed, 26 July 2023 - 11:18 AM.


#3 mshaker

mshaker

    Enthusiast

  • Members
  • PipPipPip
  • 84 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness, Heist

Posted 26 July 2023 - 07:47 PM

TerryRed; 

 

Here is a pic of it working the way I want: 

 

20230726_153101_t.jpg

 

So DMDext is not on top of the backglass per say, but next to it. FP's Flyers/Posters often appear in the area. 

 

Al long as I start DMDext after the table is playing, it works the way I want. 

 

 

From a batch file: Is there anyway I can detect that a FP Table has completely loaded and playing?

 

...or...

 

You mentioned that DMDext can be started from a FP Table Script: Is there an example of this I could follow? 

 

Separately: Is there anyway to stop FP from displaying Flyers/Posters? 

 

Thanks for your help! 

 

   - Mark


Edited by mshaker, 26 July 2023 - 07:49 PM.


#4 TerryRed

TerryRed

    Pinball Fan

  • Silver Supporter
  • 1,927 posts

  • Flag: Canada

  • Favorite Pinball: Too many to choose...

Contributor

Posted 26 July 2023 - 09:12 PM

TerryRed; 

 

Here is a pic of it working the way I want: 

 

20230726_153101_t.jpg

 

So DMDext is not on top of the backglass per say, but next to it. FP's Flyers/Posters often appear in the area. 

 

Al long as I start DMDext after the table is playing, it works the way I want. 

 

 

From a batch file: Is there anyway I can detect that a FP Table has completely loaded and playing?

 

...or...

 

You mentioned that DMDext can be started from a FP Table Script: Is there an example of this I could follow? 

 

Separately: Is there anyway to stop FP from displaying Flyers/Posters? 

 

Thanks for your help! 

 

   - Mark

 

 

You have the FP Backbox showing on the same screen as DMDext, so that will always cover the DMDext window. You need DMDext to be the only display on that monitor. 

 

If you try to keep what you want, the only way it can work is to force DMDext after the table is completely loaded (which can cause focus problems as well).

 

There is no example posted for starting DMDext from script. (I don't use it that way myself)

 

I recommend only displaying DMDext on that monitor. You'll have fewer problems.


Edited by TerryRed, 27 July 2023 - 03:32 PM.


#5 mshaker

mshaker

    Enthusiast

  • Members
  • PipPipPip
  • 84 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness, Heist

Posted 26 July 2023 - 11:27 PM

TerryRed; 

 

Thank you!

 

 

Humm... I can do me some scripting....

Let's see what language this is...

VBS? I think I worked with that for a couple days in the 80s...

Let's Google running a .exe or a .bat from vbs...

Ok. These 3 lines just to test...

Push the Start button to call the Reset routine and...
WTF?? It's an ActiveX??  &^%&^!!!

 

Point taken...

 

   - Mark



#6 mshaker

mshaker

    Enthusiast

  • Members
  • PipPipPip
  • 84 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness, Heist

Posted 27 July 2023 - 11:05 PM

All;

 

I'm sorry, but I'm having a hard time letting this go, as what I want to do seems to work fine, as long as DMDext is started after the FP Table is playing.

 

I don't think think it's possible to start DMDext from the FP table script, as the table script is an ActiveX.

 

Is the following possible? 

 

Before loading the FP Table, fire off a batch file which: 

1) Immediately starts DMDext, and acquires some kind of handle. 

2) Using the handle: Wait until DMDext reports that it is receiving frames.

3) Kills that copy DMDext.

4) Starts a new copy of DMDext. (Which should them appear on top of the FP Backglass window.) 

 

Sorry for asking in generalities, I have bit of coding experience, but nothing in Windows.

 

Thanks for your help! 

 

   - Mark



#7 TerryRed

TerryRed

    Pinball Fan

  • Silver Supporter
  • 1,927 posts

  • Flag: Canada

  • Favorite Pinball: Too many to choose...

Contributor

Posted 28 July 2023 - 01:30 AM

All;

 

I'm sorry, but I'm having a hard time letting this go, as what I want to do seems to work fine, as long as DMDext is started after the FP Table is playing.

 

I don't think think it's possible to start DMDext from the FP table script, as the table script is an ActiveX.

 

Is the following possible? 

 

Before loading the FP Table, fire off a batch file which: 

1) Immediately starts DMDext, and acquires some kind of handle. 

2) Using the handle: Wait until DMDext reports that it is receiving frames.

3) Kills that copy DMDext.

4) Starts a new copy of DMDext. (Which should them appear on top of the FP Backglass window.) 

 

Sorry for asking in generalities, I have bit of coding experience, but nothing in Windows.

 

Thanks for your help! 

 

   - Mark

 

 

Try this.

 

- first you MUST be updated to the newest BAM 1.5-365 or higher!

- run a table, open the BAM menu (~ or Q)

- goto plugins

- goto iCOM

- change the setting to "same as VPX (don't care)"

- this basically allows the iCOM plug-in to run wshell level commands from table script

- close BAM menu and table and FP

- make sure you have DMDext and dmddevice.ini installed in the FP main folder (you need the version included with my FP and BAM Essentials AIO 1.2 or higher package)

- make sure the DMDext dmd is setup correctly for your DMD size and position in dmddevice.ini in the FP folder

- make sure the table you are running is in the "FuturePinball \ Tables" folder... NOT in another sub folder or another location!

 

Open the table, and the script editor. At the very bottom of the script add the following:

 
Dim DMDext : Set DMDext = icom.CreateObject( "WScript.Shell" )
DMDext.Run "..\dmdext.exe mirror -s futurepinball -g " & xbam.table.name & " -q --use-ini=..\dmddevice.ini", 0

Save the table, run it and it "should" work (it did here) if your system is not restricting it somehow and you have Text Scaling set to 100 in Windows Display settings for all monitors, etc.

 

Some tables won't update the DMD display right away, until the DMD changes it text (some tables don't change text until you start playing)


Edited by TerryRed, 28 July 2023 - 01:35 AM.


#8 mshaker

mshaker

    Enthusiast

  • Members
  • PipPipPip
  • 84 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness, Heist

Posted 28 July 2023 - 06:34 AM

TerryRed;

Thank you!

Today is going to stink, so I will give it a try tomorrow and report back.

- Mark

#9 mshaker

mshaker

    Enthusiast

  • Members
  • PipPipPip
  • 84 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness, Heist

Posted 30 July 2023 - 02:02 AM

TerryRed;
 

Thank you! Your suggestion worked great. At the moment, I have 53 Future Pinball tables. I was able to modify 26 of them to display DMDext next to the FB Backglass. (The vast majority of the other tables had segmented, video or combo displays.)

 

All;

If anyone else needs to display DMDext on a screen also used by Future Pinball: Here are TerryRed’s instructions augmented with what I learned:
 

 

One-Time Set-Up:

  1. Update BAM to 1.5-365 or higher.
     
  2. Store all FP Tables in the main Future Pinball folder’s Tables subfolder.
     
  3. Set-up DMDext as described in TerryRed’s “Future Pinball and BAM Essentials AIO - 1.2
    1. Install DMDext and dmddevice.ini in the main Future Pinball folder.
    2. Use TerryRed’s DMDExt_FP.BAT to set DMDext’s size and position and save them to  dmddevice.ini in the main Future Pinball folder.
       
  4. Set BAM’s Com Extensions Security Level to “Same as VPX (don’t care)”:
    1. Play any table (using FPLoader.exe).
    2. Open the BAM menu (~ or Q).
    3. Navigate to Config/Plugins/COM Extensions
    4. Select Security Level of “Same as VPX (don’t care)”
    5. Close BAM, the Table and Future Pinball

 

Modify each Table to use DMDext:

  1. Open Future Pinball (using FPLoader.exe), open the Table and click the Script icon to open the Script Editor.
  2. If the following code is not below the Option Explicit line, add it:

    '****** BAM Startup ******
    xBAM.CreateAllExt()    ' create BAM Extension commands (place below Option Explicit)
  3. To automatically close DMDext when the Table is closed: Add the following code to the end of the FuturePinball_EndPlay() routine. (In rare cases, you may have to add the entire routine.)

    Sub FuturePinball_EndPlay()
       '*** Close DMDext. ***
       Dim DMDext : Set DMDext = icom.CreateObject( "WScript.Shell" )
       DMDext.Run "taskkill /f /im ""dmdext.exe""", 0

    End Sub
  4. If the script does not already create the icom object, add the following code to the end of the script:

    '*** Create COM thingy ***
    Dim icom : Set icom = xBAM.Get("icom") ' "icom" is name of "icom.dll" in BAM\Plugins dir

     
  5. Add the following code of the end of the script:

    '*** Start DMDext. This is done after the Table is loaded, so DMDext will appear on top of FP. ***
    Dim DMDext : Set DMDext = icom.CreateObject( "WScript.Shell" )
    DMDext.Run "..\dmdext.exe mirror -s futurepinball -g " & xbam.table.name & " -q --use-ini=..\dmddevice.ini", 0

     
  6. Close the Script Editor, Close Future Pinball, Click Yes when asked if you want to save changes.
     
  7. Open Future Pinball (again using FPLoader.exe), open the Table, and Play it. You make have to start a game to see DMDext.

 

 - Mark

P.S. Sorry about the poor formatting. This HTML based editor is a PIA.


Edited by mshaker, 30 July 2023 - 02:08 AM.


#10 funkatron101

funkatron101

    Hobbyist

  • Members
  • PipPip
  • 13 posts

  • Flag: United States of America

  • Favorite Pinball: Attack from Mars, Bride of Pinbot, Monster Bash

Posted 01 August 2023 - 10:50 PM

Thanks for this. It wasn't working having DMDExt launch before the table. I haven't tried it with Pinup Popper yet (fingers crossed)



#11 benge

benge

    Neophyte

  • Members
  • Pip
  • 5 posts

  • Flag: United Kingdom

  • Favorite Pinball: Elvis

Posted 03 August 2023 - 06:15 PM

Does this work using PinballX frontend?







Also tagged with one or more of these keywords: DMDext