WIP Original Table FP Billiard Queen (original)

Future Pinball
Thanks I'll try that and post the result! I don't have dof or pup.
 
Setting those two things to false in meteor resolves the error, but now the table is black. no graphics show up. I can start a game and play it without it stopping, I just can't see much of anything. But this is progress. I will tinker with display settings when I have a bit of time. Thanks! Once I can play these tables properly, I will feel comfortable attempting the fizxification of Billiard Queen!
 
Setting those two things to false in meteor resolves the error, but now the table is black. no graphics show up. I can start a game and play it without it stopping, I just can't see much of anything. But this is progress. I will tinker with display settings when I have a bit of time. Thanks! Once I can play these tables properly, I will feel comfortable attempting the fizxification of Billiard Queen!
Wonderful! Yes check out the graphics settings. I also noticed that Meteor seems to do some custom camera control, I noticed in your screen shots you might be using a monitor in portrait (up & down) orientation and perhaps using cabinet view? I'm not positive there. There might be a bug in the code for the Meteor table which has the camera facing the wrong way.

Note that all of TerryRed's PinEvent tables as well as the MetaTed's Cars table also have similar settings like below that you would want to turn off:
Code:
    DOF_enabled            = True    ' enable DOF for cabinet users with feedback and lighting
    PUP_SSF_enabled        = True    ' enable PUP SSF (needs Pinup Player and FP_PUP_SSF PuP-Pack installed)
 
Wonderful! Yes check out the graphics settings. I also noticed that Meteor seems to do some custom camera control, I noticed in your screen shots you might be using a monitor in portrait (up & down) orientation and perhaps using cabinet view? I'm not positive there. There might be a bug in the code for the Meteor table which has the camera facing the wrong way.

Note that all of TerryRed's PinEvent tables as well as the MetaTed's Cars table also have similar settings like below that you would want to turn off:
Code:
    DOF_enabled            = True    ' enable DOF for cabinet users with feedback and lighting
    PUP_SSF_enabled        = True    ' enable PUP SSF (needs Pinup Player and FP_PUP_SSF PuP-Pack installed)
And to note, Terry does an amazing job at documenting all of the options for his PinEvent tables. As well as the AIO table framework. It definitely pays off to read the manual for those!
 
Terry's work is simply incredible, for sure!
 
I have a thought. When I get fizx implemented I might dabble and see if I can come up with a way of automating these two variables - eg check for the presence of a pup config file and if not present turn off pup, and similar for dof. I'd leave the lines discussed above commented so if my code doesn't work users could uncomment those to override it. Not sure which files I would check for yet, but as a concept I'm intrigued.
 
I have a thought. When I get fizx implemented I might dabble and see if I can come up with a way of automating these two variables - eg check for the presence of a pup config file and if not present turn off pup, and similar for dof. I'd leave the lines discussed above commented so if my code doesn't work users could I comment those to override it. Not sure which files I would check for yet, but as a concept I'm intrigued.
I like that idea. Perhaps start with attempting to create the object(s) in script and see if that errors out or returns nothing. That could be used to set the value based upon "is this even available".

Personally, I set BAM security to most restrictive since I have a security mindset.

But yeah, I'm sure it would be great to find some way to not require people who just want to play the table to have to go into the script. (in an ideal world)
 
Oh error catching is a great idea. That way those with the feature installed but some other configuraton issue breaking it for that table would still be able to run it. So much better than just the presence of a file.
 
Plus FP is already up against a "not as good" mentality in the broader VP community so anything that reduces problems running tables is good. (It's as good of course, we know that here...)
 
Those variables don't fix cars on my system. Oh well. Well get there.
 
Oh error catching is a great idea. That way those with the feature installed but some other configuraton issue breaking it for that table would still be able to run it. So much better than just the presence of a file.
In VB script you can do the following to error check without getting a runtime error:
Code:
Dim icom : Set icom = xBAM.Get("icom") ' "icom" is name of "icom.dll" in BAM\Plugins dir

Function CreateObject(className)
    set CreateObject = nothing

    If not (icom is Nothing) Then
        on error resume next
            Err.Clear
            Set CreateObject =icom.CreateObject(className)
            Err.Clear
        on error goto 0
    End If
    
End Function
 
Those variables don't fix cars on my system. Oh well. Well get there.
For Cars, make the following changes:

Update icom code to this code block
Code:
Dim icom : Set icom = xBAM.Get("icom") ' "icom" is name of "icom.dll" in BAM\Plugins dir

Function CreateObject(className)
    set CreateObject = nothing

    If not (icom is Nothing) Then
        on error resume next
            Err.Clear
            Set CreateObject =icom.CreateObject(className)
            Err.Clear
        on error goto 0
    End If
    
End Function

Modify the DMDExt initialization to this block:
Code:
'######################## DMDExt - Launch from table ########################

' By JLou

' This is used to Launch DMDExt directly from the table (if enabled)
' This requires the BAM iCOM plugin to be set in the table script first to work!
' In the BAM menu, the BAM iCOM plugin must be set to "Same as VPX" to work!
' Read AIO Example Table tutorial for more information

Dim DMDext : Set DMDext = CreateObject( "WScript.Shell" )

If Launch_DMDExt = true then
    if not DMDext is Nothing then
        DMDext.Run """%DMDFP_EXE%"" mirror -s futurepinball -g " & xbam.table.name & " -q --use-ini=""%DMDFP_INI%""",0
    else
        ' we couldn't get the DMD ext so turn off DMD.
        Launch_DMDExt = false
    End If
End If

And you should be good to go!
 
Thsnk you! I will give that a shot. The error persists on the AiO table as well.
 
That worked for cars. Thanks! Its a fun table.
 
Thsnk you! I will give that a shot. The error persists on the AiO table as well.
Yup! You'll need to apply the fix that you did for Cars to the AiO table and it should be good.

For PinEvent 2 tables, you'll nave to adjust its code where it creates a file System object to look for the existence of a File:

Code:
'####################### PINEVENT - CHECK FOR FILE #######################

' Version: 2.0
' April - 2022

' Add function to check for an external file

Dim fso: Set fso = CreateObject("Scripting.FileSy"&"stemObject")
Function FileExists(FilePath)   
    If not (fso is nothing) Then
        If fso.FileExists(FilePath) Then
            FileExists=CBool(1)
        Else
            FileExists=CBool(0)
        End If
    Else
        FileExists=CBool(0)
    End If
End Function
 
Legendary effort Madmrmax! Thanks for that!now I can comfortably delve into fizx for this table.
 
Legendary effort Madmrmax! Thanks for that!now I can comfortably delve into fizx for this table.
Awesome! Looking forward to your table release in the future!

@TerryRed - Would you be interested in making these small tweaks to your AiO template and PinEvent 2 tables?
 
I have a thought. When I get fizx implemented I might dabble and see if I can come up with a way of automating these two variables - eg check for the presence of a pup config file and if not present turn off pup, and similar for dof. I'd leave the lines discussed above commented so if my code doesn't work users could uncomment those to override it. Not sure which files I would check for yet, but as a concept I'm intrigued.

iCOM PLUG-IN

Make sure you have your iCOM security level is set correctly, or some things from the FizX AIO Example code (or PinEvent tables) won't work. Read about that here:



PinMechSound SECTION

If you still get errors when enabling DOF or PUP, that may be a result from you linking PinMechSound subs to your main script, and not updating the pinmechound commands to use the correct parameters for your table items, etc. Those PinMechSound subs are not required for the table to function (they are required if you want dof and SSF for those events), but if you do use them and link them to your main script for those events, then they MUST be updated correctly for your table, or you WILL get errors.

1716100008809.png


DOF

For DOF, there is no file to check for. The only thing that can be checked is for the existence of DOF being installed at all on the PC and being accessible (if DOF was set to be enabled). The AIO Example code already does this, and disables DOF normally if DOF does not exist.

1716100432808.png


PUP

The AIO Example code does a similar check for PUP. If its not installed or can't be accessed then it normally is disabled, and FP mechanical sounds are used instead.

However... if PUP is installed... and the Pup-Pack the table needs is not installed... then you will have PUP running, but it won't have loaded any sounds to use... so your mechanical SSF sounds won't play at all.

1716100602857.png


DMDExt

The DMDext code on the AIO Example code is something JLou wanted on there. I think that 98% of people who would use DMDext with FP will NOT use it that way as cabinet users already launch DMDext with a front-end. Everyone else who wants to use it with any table (and nothing else needed) can easily launch it with FP using my "Start FP - DMDExt" BAT files.

Myself, I would remove that portion completely (and the option to enable it in TABLE OPTIONS) if it's something you don't know how to support (or want to support) when used from table script. (I show that in the removal section in the AIO Example PDF Guide).

1716101084703.png



I would highly recommend everyone (who used the AIO Exmplae coe in their table) keep DOF and PUP SSF disabled by default on your tables, and mention in the download page description what features you support. You do NOT have to support either DOF or PUP or DMDext on your tables if you do not want to. You can add a note in the table script "DO NOT ENABLE - Not supported, may cause errors, etc". Those features are in there as options... they are not required for the code and FizX to work.

It goes without saying... anyone using the AIO Example Table's code... MUST follow the updated PDF Guide included with it step by step in order to make sure your are adding it properly, and as required. Don't skip steps. Follow my video if that helps... but ALWAYS follow the PDF, as its more up to date.


=================================================================


PinEvent code and the AIO Example code are NOT the same!!! Do NOT try to use PinEvent code in your tables!


Don't compare how they work. The FizX AIO code / table was created because JLou wanted the basic functions of dof, pup, ball rolling added... so I made a more basic and simpler version of the code I created for PinEvent and added ot to that table (as the other PinEvent stuff is WAY overkill for you guys).

On PinEvent, I do MANY checks for different things on startup. The existence of the PinEvent_V2_Settings.txt file (for global PinEvent settings for all PinEvent tables to use by default). If the file is not found (or the correct file), the table will use the settings within the table script. Then it does many checks for DOF / PUP and will enable / disable them as desired or if they don't exist on the PC. I do a check for the existence of the "required" PuP-Pack and it's version. (I check for a version.txt file in the pup-pack folder, and the contents of that file) If it's not the correct pup-pack, then pup features are disabled. If pup is enabled and pupstream is enabled, then I do check for the existence of the windows specified in the pupstream settings.... and many more things.

Just run a Pinevent table in Debugger mode (F9) and you'll see some of the checks I do.


PinEvent code is not something I will provide support for on other tables, as it's hard enough to get people to understand the much simpler AIO table let alone everything I manage on a PinEvent table. Hell, I have to reteach myself each time I add it to a table if it's been a while.


No one should need to modify a PinEvent table to get it to run correctly! The only exception is if your PC refuses to find the PinEvent_V2_Setting.txt and gives that error on table startup (not a FP / table problem.. it's your PC or security, etc). If you get that error, then disable PinEvent in TABLE OPTIONS if you don't need those features, or enable PinEvent Custom Settings in the table script to bypass the check for that file completely, and use the table's settings.

If having issues with PinEvent tables... consult the PinEvent Guide, and The FAQ and Help Guide I include with my FP and BAM Essentials AIO.

1716103544086.png
 
Last edited:
Thanks TerryRed for the detailed and informative post! I am always amazed by what you squeeze from FP. Especially as we approach its twentieth birthday.
 
Fizx implementation in Billiard Queen is under way, but is going to take some time. Flippers seem to be pretty good. Shot accuracy is improved, but they need to be stronger. I hate wet celery flippers at the best of times, and these aren't quite that, but they are definitely just a smidge too weak for good gameplay - ten to fifteen percent more flipper strength is critically needed.

The main playfield slingshots are implemented, but they are bloody awful. I will tinker some more before making a call - at the moment, vanilla would be better so on my next session I will scrap them and retry, see if I get a better result. If not, they go back to vanilla. I'm undecided on the bumpers, there are six of them, but none are visible to the player as they are under the raised area, in an arch around the back half of the playfield. THe player will never see what the ball is doing when it strikes them, so the changes will be largely wasted on the player - a ball goes in there, and a ball comes out. All the action in between is not witnessed.

It's a fascinating process, and Fizx shows a lot of promise so far. Crossing fingers it all works out. I obliterated the dmdext section to get the table to run. Those who want it are of course welcome to add it back in, but I can't test it or support it.
 
I usually start out with the FlipperOmega at 75, CoilType to 25 or 30 ms, SlingShotThreshold to 2.5 and Table Slope to 5.3.
 
Fizx implementation in Billiard Queen is under way, but is going to take some time. Flippers seem to be pretty good. Shot accuracy is improved, but they need to be stronger. I hate wet celery flippers at the best of times, and these aren't quite that, but they are definitely just a smidge too weak for good gameplay - ten to fifteen percent more flipper strength is critically needed.

The main playfield slingshots are implemented, but they are bloody awful. I will tinker some more before making a call - at the moment, vanilla would be better so on my next session I will scrap them and retry, see if I get a better result. If not, they go back to vanilla. I'm undecided on the bumpers, there are six of them, but none are visible to the player as they are under the raised area, in an arch around the back half of the playfield. THe player will never see what the ball is doing when it strikes them, so the changes will be largely wasted on the player - a ball goes in there, and a ball comes out. All the action in between is not witnessed.

It's a fascinating process, and Fizx shows a lot of promise so far. Crossing fingers it all works out. I obliterated the dmdext section to get the table to run. Those who want it are of course welcome to add it back in, but I can't test it or support it.

For slingshots... you MUST add new FizX diverters to the slingshots as directed, and you also MUST add the extra FizX commands to the slingshot Subs as shown in the AIO Example table PDF Guide (use my video guide to help if you must).

If you don't do this the slings will NOT run correctly. FizX code changes how FP works with rubbers, so slings won't work corectly until you add what is required.

When done properly, slings will act more realistically and "correct". They won't trigger unless the ball hits the slings hard enough, and the ball will bounce off the middle and ends correctly. Not like FP did before where the ball would bounce off the sling at incorrect angles and was very sensitive and would trigger when they shouldn't be.
 
If needed, you can adjust the impulse of the diverter in the XML in the script. I suggest watching Terry's video linked in the description of the AIO.
 
Yes I've done all that. I think I simply got the position of the diverters off. I'll tweak and see. I'll have to do a bunch of other slings on this table anyway.
 
Like you said somewhere in the pdf, tables need adjusting. It is amazing how much different layouts will change things.
 
General chit-chat
Help Users
You can interact with the ChatGPT Bot in any Chat Room and there is a dedicated room. The command is /ai followed by a space and then your ? or inquiry.
ie: /ai What is a EM Pinball Machine?
  • No one is chatting at the moment.
      Chat Bot Mibs Chat Bot Mibs: MoFloh has left the room.
      Back
      Top