Jump to content

All my products and services are free. All my costs are met by donations I receive from my users. If you enjoy using any of my products, please donate to support me. Thank you for your support. Tom Speirs

Patreon

Pinball wicked working in my cabinet


joyrider3774

Recommended Posts

Please read this post on how to set everything up the post below describes the old method before pinball wicked had cabinet support

 

--------------------------------------------------------- OLD WAY ----------------------------------------

Update 27/12/2018: i had forgotten to include some image files in the zip please redownload the zip ... Pinball_wicked.zip and start over / overwrite ini file again


I run in 1600x900 my playfield screen and my backglass in 1024x768 and i have a 2 monitor setup so i display using dmdext a mirrored backglass over my backglass picture. you can do the same with 3 monitor setup but you'll need to change settings and postions of dmdext. You can even use pindmd to do this. I also don't know if dmd positions ingame will be the same at higher resolutions than 1600x900 if not take a screenshot of the game running and showing dmd and find out and change the dmd positions

HOWTO:

1) download and install irotate https://www.entechtaiwan.com/util/irotate.shtm

2) if not running windows 10 download powershell (i use it to run irotate with elevated rights and i have disabled uac prompts for the user i'm logged in with in windows)

3) download and place dmdext files somewhere if you are not using it already i placed it in my scripts folder if it's installed in other location you will need to change parameters in batch files calling dmdext you'll also need to change it if you are using pindmd and not a virtual dmd like i do. https://github.com/freezy/dmd-extensions/ check the readme for parameters for pindmd etc

4)download Pinball wicked.zip it contains everything (launcher script, extra launcher, launch before / after commands backglass etc) except the playfield video (playfield video is available on ftp here /-PinballX-/Other Uploads/Joyrider3774/Pinball Wicked ) or use this file with included table video : https://drive.google.com/file/d/1foqCcH1M2n5vuNOw3KKa6rTbgOdVu1g2/view?usp=sharing

5) start pinball wicked from steam and set it up to use windowed full screen borderless also set up the dmd settings exactly like this (using other settings will need to make you find out the values for dmd positoning) for dmext. Also set camera used to 8 so you see the table full screen. 

pinballwickedsettings.png.3fee1bedde85937a97abb5646d7fd234.png

6) Launch PinballWickedLauncher.exe once and press alt+f4 to exit. It will fill in extra required settings in PinballWickedLauncher.ini then edit
the ini file to use your keyboard or joystick just like it was done for pinball fx3 launcher. It's just a copy of that
launcher with different ini file. all info here https://github.com/joyrider3774/PinballX_Launcher_app This is only needed if you want to be able
to select multiplayer and pure or action mode you can also use LaunchPinballWicked.exe directly to start single player pure mode without the extra
launcher executable with multiplayer options (you'll also need to change pinballx settings then to use LaunchPinballWicked.exe directly instead of my launcher app)

7) Edit and recompile LaunchPinballWicked.ahk. (download and install autohotkey for this, edit ahk file using notepad then rightclick & choose compile)

- check if 10 seconds on this value is enough for your system to show the pinball wicked menu:
WaitForMenu = 10000.  If the menu loads faster decrease the value, if the menu loads slower increase the value
its the value used to wait for the menu to be visible ingame

- IMPORTANT change the key used to exit the game to the same key that is assigned in pinballx / you use to exit normally.
Default is mapped to ESC change it to your key if you are not using the ESC key
; Exit Table
; pinball wicked does not seem to react well on the quit game key from pinball x
; so change the ESC key below to the key you have set in pinballx as quit game key
; info about keys can be found here : https://autohotkey.com/docs/KeyList.htm
; in my cab i use the esc key
    Esc:: ;<----- change HERE
        Gosub killApp
    Return

8) use my Image_Monitor_View.exe to test displaying the image file on the backglass it uses 0 based monitor index so first monitor is value 0, 2nd value 1 etc. I don't know if it follows
windows monitor positioning but you can find out by testing first. You can close the backglass using taskmanager/ rightclick on icon on taskbar and choose exit and perhaps alt + tab to
to form and then press alt + f4. There is no other way. In my case my backglass is on 2nd monitor and i had to use 1 then to display it there. It will display the image stretched to
full screen on it.

start Image_Monitor_View.exe 1 "C:\PinballX\Media\Pinball Wicked\Backglass Images\Black_Flaggers.png"

if it's a different screen or value change "1" value also verify the media folder if it's the same with you

9)  edit Launch before bat file using notepad and check if your playfield monitor is monitor 1 to rotate. If you are not running in landscape in windows but already in portrait mode you don't need irotate to rotate your screen so remove it from launch before & launche after script. If you run landscape you can change the rotate parameters in this value "powershell -Command "Start-Process 'irotate.exe' '/1:rotate=90 /exit' -Verb runAs -WorkingDirectory 'C:\Program Files (x86)\iRotate\'""

10) if you don't have a 2 monitor setup but a 3 monitor setup or even use pindmd you'll need to change the dmdext parameters position. I'll explain the values here but you all will probably need to change the values needed for your setup except perhaps the postion of the dmd ingame (if it does not change on higher resolutions):
The command i used for dmdext was the following in the launchbefore script : start "" /min dmdext.exe mirror --source=screen --position=93 46 328 83 --destination=virtual --virtual-stay-on-top --virtual-hide-grip  --virtual-position=1084 530 656 166
--position=93 46 328 83: defines ingame dmd position to copy and mirror it could be you don't need to change this if it stays the same on other resolutions than mine if it's not correct take a screenshot ingame using steam (f12 is default button) when game is launched using the launcher etc of course (so screen is rotated) and then using gimp or other image drawing program find out dmd offset the x=93,y=46 and 328 = width, 83= height
--virtual-stay-on-top <- is needed because i display the virtual dmd over the backglass my  Image_Monitor_View.exe is drawing (after screen was rotated) it's needed because my imagemonitor view is also displaying on top 
--virtual-position=1084 530 656 166  <- X,Y, Width, HEight of the position of the virtual dmd you will definatly need to change this for your backglass / dmd monitor as you can see i double the original width and heifht of the dmd to be mirrored the 1084 and 530 are the x and y value where it needs to be placed. you need to add up any previous monitor sizes (remember playfield is roated so take that into account) + a value to center the dmd.

11) you need to have ENTER mapped to your plunger Launch / button, if you don't do this you can not confirm player ready screen in multiplayer so i used simple ahk script to map my &/1 key to enter you need to do something similar if your launch button does not use ENTER by default. you can do that using pinball_wicked_remap.ahk script and you need to recompile the exe provided is setup for my system

12) use these pinballx settings: You need to make sure to wait for the launch before & launch after scripts are done so that the rotation if the screen is done using irotate alraedy before using the intermediate launcher or the direct launcher. Irotate is not called with start parameter so i'm sure it's executed all the rest is called with start command so batch file does not wait until the process is ended. otherwise it will get stuck if you don't use start with the wait for exit params set to true

pinballxsettings.thumb.png.e07fa065873dfd2bc423d6178e9aaef1.png

13) launch after script uses taskkill.Exe to kill all started apps in launch before and rotate screen back to normal positioning 


LaunchPinballWicked.exe can also be used instead of pinballwickedlauncher.Exe to directly launch single player pure mode if you don't need multiplayer selections.

LaunchPinballWicked.exe accepts as first parameter player nr (1 2 3 or 4) and as second parameter only "Action" if thats specified it will use action mode. If you don't provide any parameters it will launch single player pure mode.

Examples: 
LaunchPinballWicked.exe <- launch 1 player pure mode
LaunchPinballWicked.exe 1 Action <- launch 1 player action mode
LaunchPinballWicked.exe 2 <- launch 2 player pure mode
LaunchPinballWicked.exe 2 Action <- launch 2 player action mode
etc..


Video of final version i'm using now  

 

  • Thanks 1
Link to comment
Share on other sites

You would just create a static backglass image. Hopefully you can find some resources for the game online somewhere, or else you will have to get creative with Photoshop or the GIMP.

It goes to your the apprpriate PinballX\Media\<Wicked or whatever you are calling the system in your ini>\Backglass Images folder.

Set the hidebackglass tag to False in your xml.

Given that the software only uses your playfield screen this should work.

I'm interested to see how this works out.

 

Another game for you to try out is SlamIt: Big Score Pinball. With Steam Winter Sale, it's only 99 cents but I think it's a pretty entertaining table. Not a big loss if you don't wind up liking it. I've gotten it fully working on three screens using ffmpeg to mirror and livestream the image on my third display.

 

Link to comment
Share on other sites

Hey @Carny_Priest,

This is what i found out related to the backglass showing ingame...

If i rotate my screen (even only the playfield screen) the backglass window gets blackened and erases the backglass picture and pinballx does not seem to redraw the backglass anymore while a game is running, which i think is normal as it would just eat cpu / gpu for nothing if it kept redrawing. So it seems using irotate to rotate the screen makes it black, probably because it does not get redrawn after rotation.

I then tested by not using irotate and never rotating any screen and then the backglass picture from pinballx did indeed stay visible all the time during gameplay but the game would be running in landscape mode then as that's how my orentation of the playfield screen is setup in pinballx.

So i see only 2 solutions one is to make my playfield screen be running in portrait mode in windows so i don't have to rotate anything but then visual pinball is behaving badly and dmd's (from vpinmame) are not positioned right, that can be fixed but i rather not go down that rabbit hole. I did not setup the visual pinball myselve i've gotten it preconfigured.
The other solution would be to find an image displaying program that supports parameters and can be run fullscreen immediatly on a certain monitor and just put a command in my launchbefore script, after the screen has rotated to show this (backglass) picture using such program on my backglass monitor. I have not looked yet if such programs exist, one that comes to mind is infranview but have not checked yet what kind of parameters it allows.

Do you run your playfield screen in windows in portrait or landscape mode ? 

about media for pinball wicked on their press page they have a good picture for backglass and also the text "back flaggers pinball" i used that and created a wheel docklet image out of it all as well. I can share my pictures on ftp if needed http://pinballwicked.com/presskit/ 

 

btw i bought SlamIt: Big Score Pinbal 0.99 cent is indeed not much but have not looked at it yet, i don't think i'll need the ffmpeg part to mirror dmd as i don't have a 3rd monitor i only have a 2 monitor setup. Unless it can be used to mirror play the dmd on my 2nd screen, then it might be even usefull for pinball wicked as well to grab the dmd from main playfield and display (scaled) on my 2nd monitor as well somewhere.
 

Edit: Went with option 2, but created a very simple application myselve in delphi that just displays and image full screen always on top on a certain monitor which i pass in the commandline parameter as well as image filename. I use the same image as the backglass used in pinballx. Start it in my launch before command & kill it in launch after. :) The programs is like 5 lines of code (in delphi) and its working great  

Link to comment
Share on other sites

Yeah, I forgot that you were rotating the screen. PinballX won't work in that scenario. Using AutoHotkey, it has an integrated image viewer. As you know, IrFanView is another solution.

 

SlamIt: Big Score - the script is specifically for 3 screen. The game is normally single screen, landscape, with options on camera and where a DMD can be placed. Ffmpeg is used to capture and livestream just the DMD image. Ffplay rotates and scales the DMD for live playback. The ffplay window can be placed on the backglass display. The deal is that it is a Window with borders and title and navigation buttons, etc. And it is resistant to instructions to remove the title and borders. I wound up just using AutoHotkey to draw a mask over those borders so that it would not appear on a third screen. You'd have to get creative. Take the backglass image and add a display panel with a transparent space for the DMD image. And then make sure that the backglass image is drawn over the DMD ffplay window. May take a lot of tweaking to get the locations/positions of images just right. I like the table myself, so although I only spent a buck or two on it I found that it was worth the time and effort to get it looking good on a cab. 

Link to comment
Share on other sites

@Carny_Priest i got the mirroring using ffpmpeg & ffplay working and positioning on correct location but i got another problem well i had two. If i hide the ffplay cmd window as was done in the original ahk script, the video playback window of ffplay never shows, so i removed the hide parameter and then it shows & play however it only plays if the ffplay window is activated and if its activated the big score pinball game does not react to input. So i actvate big score pinball window again but then the ffplay window is not playing the dmd anymore so you see the loop problem here.

I'm not sure why it does that maybe because the game is running in fullscreen (have not found out how to let it run windowed or fullscreen windowed) or maybe because of ffplay.exe version where something changed as the topic was from 2016 or perhaps due to my windows 10 and / or windows 10 build.

Which version of ffplay.exe do you use ? i tried latest as well as version from 2017 and which version of windows + build nr ? or maybe i'm missing something to be able to run the game windowed. 

Haven't been able to figure this problem out yet. I did split up the script into 3 parts, the dmd mirror part, launching part & key remap part. but all works fine except above mentioned focussing problems. The reason i splitted up the script is because i wanted to add command line parameters for scaling, positioning etc basically make it generic so i could use it perhaps with pinball wicked as well if i got it working.

Btw i do notice the small delay in playback as well it's minor but noticeable

Edit: nvm, i just read through your original post again. The problem is indeed the full screen mode and in your original post you said how to change to windowed. The option is not available ingame :)

edit2: starting ffplay with -noborder option hide's title bar and borders so there's no need for the gui window and draw a black bar i placed the -noborder as first option and seems to work fine so i removed the gui part

Link to comment
Share on other sites

I have pinball wicked as well on my cabinet.     I used to be able to display the backglass on screen but since once I rotate the screen via AHK the backglass screens goes black and does not display again until I exit back to PinballX.        Haven't been able to find a work around for that yet.    I do have Hide Backglass box unchecked in my settings so it should leave the PBX one up.   If I don't rotate the screen on launch the backglass image stays.    Wish Formslingers would add a rotate option in the game itself. 

If you havd a DMD you can get that part working as well if you don't already.    I was able to get this to work when I first got the game earlier in the year pretty easily.   I am running 1920X1080 so your coordinates might need to be updated but this works awesome on my PinDMDV3.

 

dmdext.exe mirror --source=screen --position 110 45 400 90 --destination=pindmdv3  -p COM3 --fps=60 --no-virtual

 

Link to comment
Share on other sites

@GAH1068 I don't have a real dmd screen unfortunatly i use a 2 monitor setup. However i'm using a modified / adapted version of the script @Carny_Priest used for big score pinball to mirror the dmd on my backglass monitor. It works but there is latency as you can notice in the video below as well. I also have fixed the no backglass problem that occurs due to rotating the screen and pinballx not redrawing it anymore. I basically created a small delphi program that can display a png, jpg, bmp or gif (don't think animated have not tried) full screen, always on top on a certain monitor. I'll supply you the little program you can use it to fix your backglass problem as well.

I've attached it as an attachment to this thread: (edit: use version from zip in 1st post, this version was outdated not the same)

 

there is not much help in the program and you'll need to figure out the monitor nr you need to use but basically the program works like this:
 

Image_Monitor_View.exe [0-based monitor nr] [image filename]

like for example to display the image on my backglass monitor (nr 2 in monitor i  supply the following command):

start Image_Monitor_View.exe 1 "C:\PinballX\Media\Pinball Wicked\Backglass Images\Black_Flaggers.png"

The monitor nr is 0 based, so it starts counting from 0 till monitor nr  count -1. i don't know if it follows windows monitor positioning order but you can test it out from command line and try 0 1 2 etc as nr.

Do watch out as it shows it strechted so make sure the image your using is same resolution as your monitor or it might look weird. And supply invalid monitor nr will make it use the first monitor it finds in the monitors array (delphi object).

I added it in my launch before batch script and used the start batch command so the batch file does not wait for the program to end to go on with things and i kill it using taskkill.exe in the launch after script so i can see pinball x backglass back

 

  • Thanks 1
Link to comment
Share on other sites

I was using the same image for my backglass already as well.  :)

  I will take a look at Image_Monitor.   That should do the trick.   Thanks!

 

You should be able to use DMDExt -mirror command.   Just set it up to use a virtual DMD and you should be good to go without using the utility.    

dmdext.exe mirror --source=screen --position 110 45 400 90  

  • Thanks 1
Link to comment
Share on other sites

2 minutes ago, GAH1068 said:

I was using the same image for my backglass already as well.  :)

  I will take a look at Image_Monitor.   That should do the trick.   Thanks!

 

You should be able to use DMDExt -mirror command.   Just set it up to use a virtual DMD and you should be good to go without using the utility.    

dmdext.exe mirror --source=screen --position 110 45 400 90  

Ah will need to try that out and see how it goes but not sure it'll work, the windows needs to be placed always on top as i display the backglass image also always on top. Btw make sure to do the call to image_monitor after your screen has fully rotated at least thats what i do

Link to comment
Share on other sites

2 minutes ago, GAH1068 said:

I looked for an app like this a while back and didn't find anything I liked.   This one works like a champ.    Added line in my AHK at startup to view and then kill the app when exit from PBX.      Thank you!!

Nice one ! I could not find a simple one either, thats why i created one myselve it was only like 5 lines of code and some form :) I'll make sure to upload the source to github eventually

Link to comment
Share on other sites

@GAH1068 got the dmdext thing working so much simpler and no more latency that i can notice. I'm goana modify the bigscore pinball scripts i use to make my playfield screen rotate and also use dmdext instead of ffmpeg + ffplay. I can swap easily to test things as i had the ffmpeg part in seperate script. Thanks for letting me know about dmdext virtual dmd

  • Like 1
Link to comment
Share on other sites

@Outhere i'll try to make a detailed guide / release all needed scripts next week. My ahk script can take parameters to select multiplayer and works in tandem with my launcher executable i made for pinball fx3 with a changed ini to be able to select multiplayer options. But i need to release my updated pinball fx3 launcher first

Link to comment
Share on other sites

SlamIt: BigScore - does not have full screen, windowed mode. The ahk script is used to make the window borderless and then maximize. It's fake full screen, windowed.

Because the game is landscape, the DMD image must be rotated on playback on a third screen. Freezy's dmdext does not support rotation. And I'm not so sure how effective it is at capturing what is in reality 1:4 aspect ratio and not 4:1. For me playback quality wasn't very good at all with SlamIt where it worked quite well for other apps.

But since you are two screen, I think you can get by without rotation. You would rotate the backglass image so that it is oriented landscape similar to the playfield. If dmdext capture works for you then at least you would not have to rotate.

Latency with this method was better with Win 7, when I first developed this solution, than with Win 10.

All said, my cab has been down for nearly two years now with some sporadic up time. I haven't tested anything in a long time. YMMV  

Link to comment
Share on other sites

@Carny_Priest i just got bigscore working with dmdext... I basically rotate my screen first using irotate, use my little tool to display the backglass, used a modifed / trimmed down version of your launcher script (that also did the fake borderless window and removed input mappings / ffmpeg stuff.) but what i had forgotten initially was the windowed parameter inside the cfg otherwise it kept running fullscreen and that was making the ffmpeg system not work. since now my windows was running in portrait mode before i launched the game and maximized it (windowed) i needed new camera settings so i added a new cam setting for this mode where i don't use the ingame portrait mode ($ARCADE2 0 -15 200, i'm not sure this works on all resolutions my playfield runs at 1600x900 or 900x1600 in portrait mode currently) otherwise i saw the table wrong. i also added in the cfg my portrait mode resultions (width & height swapped) as i could not choose that ingame. Then all what was needed whas running dmdext and it works by just mirroring. It could be i can run the game fullscreen again now with the dmdext option but i have not tried it yet.

Btw it is indeed a good table, but you need to be able to get it all working

Edit: fullscreen does not work has side effects, well it works for dmdext, but dmdext window gets hidden when launching the game & activating it again & going back to big score pinball does make it work but left flippers keeps being pressed in then. In pinball wicked it also produces problems so i kept pinball wicked at borderless fullscreen to make dmdext work correctly

  • Like 1
Link to comment
Share on other sites

@Outhere i modifed first post the include all needed files & launchers as well as some information about it all. It really is not that hard but it will not work out of the box if you want to use dmd mirror etc. (it looks harder than it is when you look at all the text i posted just give it a shot or only use the launcher itselve) You could however just use the launch script (without extra launcher to select multiplayer, action / pure mode) to launch your game always in single player pure mode.  and use irotate & my img monitor view tool to show backglass.

only the launching script is available here but it's also available in the pinbaclwicked.Zip in first post LaunchPinballWicked.ahk

Final video of how its all working together / looking in edited first post as well

Link to comment
Share on other sites

43 minutes ago, Outhere said:

Nice work but it looks like I will need some help

When I Launch PinballWickedLauncher.exe It brings up a small window with a bright red X and goes away immediately and after that

This is what the InI file looks like afterwards

So something is not working right for me

 

PinballWickedLauncher.ini

Did you place the ini file from the zip file in the same directory as pinballwickedlauncher.exe before launching it ? You need to do that so it keeps the original settings i provided to launch it not just copy the exe. You need to run it once manually then and press alt + F4 so it adds the extra ini settings. It seems to me you only copied the exe or did not extract everything and ran the executable already once. If you did not do this please explain how you managed to get that ini you showed. Did you edit manually did it get generated or overwritten ? 

Compare this intial settings ini ( PinballWickedLauncher.ini ) and change where it's different in your ini also don't forget to setup your keys or joysticks as per the documentation of the launcher.  If you launch it again afterwards does it result in the same ini file as you showed me before ? As it could be a bug but could also be you did not have the launchers exe or started manually. It should normally not erase the path settings etc as in the default one i provided. The default one does not contain all settings but running it once and pressing alt+f4 should populate the mssing settings so you can alter them afterwards in the ini. LaunchPinballWicked.exe might need to exist in same directory as well

edit: just tested i can make it happen also the problem i'll investigate to see what the problem is

Link to comment
Share on other sites

@Outhere found the culprit i had forgotten to include the images needed for the launcher. They are the same ones as the pinballfx3 launcher one. I have updated the zip in the 1st post so that includes those images now. extract everything again. I still need to update the google link but the one attached to first thread of post should be updated and included background.png, selection.png and noselection.png

edit: google drive link version is also updated in first post.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...