BAM Feature How-to Guides
Page 1 of 2

Author:  Gimli [ Thu Feb 08, 2018 12:52 pm ]
Post subject:  BAM Feature How-to Guides


The following are now part of this thread:
1.Intro and Preamble

2.xBAM texture swapping for texture swapping of table and room objects, playfield textures, translite and cabinet textures , object enamal map textures

3.xBAM.MagneticField for creating magnets and magnetic fields

4.xBAM.GameRoom for toggling on/off FP default game room for room swapping

5.xBAM.BallManager for scripting of many custom ball features

6.Animation Sequencer for changing room angles for attract mode and game play

7. XBAM.MiniPlayfield For Miniplayfield and object scaling,moving and animating. And attaching objects to balls

8. XBAM.PhysicsTweaks
The unexplored GEM of BAM.

9. XBAM.CustomCameras
BAM Custom Camera Views

BAM How-To Guides, tips and tricks

On this thread, please enter any tutorials re: HOW-TO use BAM features
Please also include the location of the original discussion of each feature and
any examples that have been provided or that you can offer.
Don't worry that your summary is not exhaustive or accurate, we can refine it as we go :D This thread can be like Wikkipedia "BAMipedia" :lol:
BAM is and always has been a creative tool that you discover as you jump into the Rabbit Hole and try it.

This will be linked to :
1. The more technical and Succinct BAM Functions-Commands page that is under developement
2. The companion thread for Discussion of BAM Functions-Commands here:


BAM was first released in May 2013 by Ravarcade and has grown in a gradual and organic way since, based on Ravarcade's great ideas and suggestions from all of us in the peanut gallery.

With each version of BAM or addition of a new feature, Ravarcade has given explanations as well as demo table examples.

However, many of these discussions are now buried in the many pages of BAM threads and many previously unmentioned nuances have emerged along the way and there is now a need to cull all that BAM has become into a more organized approach.

BAM has many features that are internal and are only accessed through the BAM menu. These tend to allow instant real time adjustment of many features such as Camera Angles, Lighting,
Table Size, Magnetic Fields, Miniplayfields, Gravity setting, Physics tweaks, Ball Swapping, 3d and head tracking modes.

BAM also has many features that are only external and consist of special scripting of an array of features such as highscore fixes, Gameroom swapping, object texture swapping, custom ball features (mass, radius, transparency, texture, location tracking)

In some cases the internal BAM menu will automatically create some of the external code
for you
(xml physics creation and adjustment, miniplayfield set up and adjusting, magnet set up and adjusting and gravity refinement for playfields).
This thread while not exhaustive hopefully will give us users a pooled location for some of our tricks and usages of BAM.

Hopefully, this will generate an understanding, appreciation and overall global acceptance of BAM as an essential part Future Pinball use.

Author:  Gimli [ Thu Feb 08, 2018 12:54 pm ]
Post subject:  Re: BAM Feature How-to Guides


This feature is awesome! You can "reskin" your table graphics during a game, have rotating colours on lights, create cartoon strips/movies on table objects, make elaborate VR Rooms etc...etc..
July 9 and July 17 ,2017

The code is simple and is as follows:

xBAM.SetTexture "fpObjectName", "TextureName", "ObjectFace"

1.fpObjectName refers to the name of the table object you want to swap textures on.

Textures can be swapped on the following object types:

2.TextureName refers to the name of the texture you want to use.

**TIP in order to be accessible textures must BOTH be imported into texture manager AND assigned to a surface on the table editor (each surface has 2 slots)
3.ObjectFace (0,1,2) refers to objects with more that one side (front, top, side )

1.use photoshop to make jpg,tga,bmp textures ( ie. SexyTarget.bmp, PlainTarget.bmp, CoolTarget.bmp)

**TIP objects use texture maps, so consider exporting existing object textures from FP texture manager in the table editor of your desired table. You can then use that texture as a template for editing, to create a new texture..

2.import textures using texture manager( ie. SexyTarget.bmp, PlainTarget.bmp, CoolTarget.bmp)See Image below
3.create new surface of any shape or size using table editor and assign your textures
to surface (2 spots "Top Texture" and"Side Texture" in no particular order, it doesn't matter....)See Image 3 below "Create a Surface"

*Note in was previously thought that you could assign textures to a 3rd location "Enamel Map" however this causes graphical glitches in Arcade Mode for some people, so do not assign texture swap to Enamel Map

4.Add table object using table editor in this case add a droptarget. Give it a name "NewTarget" or whatever. choose a default texture as per usual. See Image Below
5. now you can simply use code above to swap textures.
Code will look like this:

xBAM.SetTexture "NewTarget", "SexyTarget", "0"

You can create code to swap between textures as follows

Dim TargetTexture

Sub CheckTargetTexture
If TargetTexture = 1 then xBAM.SetTexture "NewTarget", "SexyTarget", "0"
If TargetTexture = 2 then xBAM.SetTexture "NewTarget", "PlainTarget", "0"
If TargetTexture = 3 then xBAM.SetTexture "NewTarget", "CoolTarget", "0"
End Sub

Then anywhere in code where you want a switch you simply put the following.
Let's say we want Texture = 2
TargetTexture = 2:CheckTargetTexture 

*UPDATE November 2019
You can swap textures now on playfield, translite, cabinet, arcade wall poster, object enamel maps. Playfield texture swapping is very useful as lighting and shadow maps are maintained when you swap textures. This is a great feature to create lighting ambiance by swapping textures with various brightness throughout game. The process for importing textures is the same as described above but with the following codes:

xBAM.SetPlayfieldTexture textureName
xBAM.SetPlayfieldTexture "texturename"

xBAM.SetTransliteTexture textureName
xBAM.SetTransliteTexture "texturename"

xBAM.SetCabinetTexture textureName
xBAM.SetCabinetTexture "texturename"

xBAM.SetPosterTexture textureName
xBAM.SetPosterTexture "texturename"

xBAM.SetEnamelTexture FPObjectName, textureName

Author:  Gimli [ Thu Feb 08, 2018 12:55 pm ]
Post subject:  Re: BAM Feature How-to Guides

Here is Ravarcade's "SetTextureDemo" table:
With keys X,C,V you can change between 3 colors: red, blue, white. On table are all object-types capable to change texture. except "TOYS" which are also texture swappable :D
ravarcade wrote:


Video Below: All room walls, floor, doors, art, pinball tables swap textures

Tables at Pinsimdb using xBAM.SetTexture

Creature From the Black Lagoon (For Room Swapping) ... ack_lagoon

End of xBAM.SetTexture Tutorial


Author:  Gimli [ Thu Feb 08, 2018 12:59 pm ]
Post subject:  Re: BAM Feature How-to Guides


Another very cool tool, you can easily create magnets to capture the ball, or
use magnetic fields to push or pull the pinball in any direction !

Original Discussion Here:

How to create magnet/magnetic field
1.Choose location of Magnet from table editor (with mouse pointer or select object). x,y coordinates
are at the bottom centre of table editor screen
2.Load Table
3.Press Q to bring up BAM menu
4.Select DEV Options
5.Select Magnetic Fields
6.Enter x,y coordinates
7.Press control-c (BAM will copy magnet code to clipboard)
8.Exit table (pres escape)
9.Load script editor
10.At top of script (under "Option Explicit") press Control-V to paste magnet code to script. It will look like this
Dim MagneticField_0   '                      X           Y    Z  Range Strength
Set MagneticField_0   = xBAM.CreateMagneticField(1442, 871,   0,   500,   1    )

11.Load table , start game and then go into BAM magnet menu again and play with Range and Strength settings on the fly (When you like it press Control-C and paste overtop of original code in script)
12. ***TIP Step 11 On the fly tweaking can only be done if you keep the original names
MagneticField_0, MagneticField_1, MagneticField_2 etc...)

Author:  Gimli [ Thu Feb 08, 2018 1:00 pm ]
Post subject:  Re: BAM Feature How-to Guides

Similar to the Texture Swapping Code above, you can create varying magnet features
based on game events.

For instance
Dim MagnetIntensity

Sub CheckMagnet
If MagnetIntensity = 1 then MagneticField_0.Strength = 1
If MagnetIntensity= 2 then MagneticField_0.Strength = 2
If MagnetIntensity = 3 then MagneticField_0.Strength = 3
End Sub

So, if a game event calls for lets say MagnetIntensity = 3
MagnetIntensity = 3:CheckMagnet

***TIP positive strength values pull and negative strength values push the ball
Rav also has a code for lifting a ball with the magnet off of the table...

Use "U" to lift ball in this demo table

Here's a video showing the process of setting up a magnetic field/magnet in BAM:

Author:  Gimli [ Thu Feb 08, 2018 1:51 pm ]
Post subject:  Re: BAM Feature How-to Guides

Tables at Pinsimdb using xBAM.MagneticField

Dragon's Keep (For Magnet) ... eep_(maxis)

End of Magnetic Field Tutorial


Author:  Gimli [ Sat Feb 10, 2018 11:58 am ]
Post subject:  Re: BAM Feature How-to Guides


Simple but very useful! This will switch the Standard FP Arcade Room on and off.
Allows you to Switch between FP Arcade Room and any Alternative Rooms you have made.
Previously it was one or the other only.

***TIP in order for this funtion to work you must enable "Render Game Room" under
Future Pinball Video Settings.

Author:  Gimli [ Sat Feb 10, 2018 12:01 pm ]
Post subject:  Re: BAM Feature How-to Guides

This Function is used in the following settings:
1.When table has an alternate Game Room and you don't want the Default Game Room
to interfere
2.When you want to give player options to switch between several different rooms
based on player preference, speed of CPU, mode of play (Desktop, Arcade, VR)

I will use Dragon's Keep as an example. At the top of script Franzleo/Wild already had:
If BAM_VERSION > 157 Then
      xBAM.GameRoom = false
End If
End If

This code has the fail safe code in it "if BAM_VERSION > 157 Then" (Version 157 was the first with this feature) See BAM Functions-Commands viewtopic.php?nomobile=f=86&t=6569&p=85656#p85656

"xBAM.GameRoom = false " Will make sure the Standard room does not interfere with
the Excellent castle room

This is all that is required for option 1 above
For option2 above (Give players option to select between different rooms),

I tweaked the code as folllows:
Dim RoomNumber
If BAM_VERSION > 157 Then
      xBAM.GameRoom = false
      RoomNumber = 1
   End If
End If

Added Variable "Dim RoomNumber"
And I set RoomNumber = 1
Then I added a cheatcode to switch between rooms

If keycode = 48 then 'B on keyboard
If BAM_VERSION > 157 Then
      RoomNumber = RoomNumber + 1
      If RoomNumber > 2 then RoomNumber = 1
      If RoomNumber = 2 then xBAM.GameRoom = True:Call MiniPlayField_0.MoveTo( 258,   534, -950,       0,       0,       0,    0,       0):Exit Sub:End if
      If RoomNumber = 1 then xBAM.GameRoom = False:Call MiniPlayField_0.MoveTo( 258,   534, -950,       0,       0,       0,    50,       0):Exit Sub:End if
End if
End if

To hide the New Game Room, I took the existing miniplayfield code (that was used to grab the beautiful game room):
Call MiniPlayField_0.MoveTo( 258,   534, -950,       0,       0,       0,    50,       0)

and changed the Scale (the second last number) from 50 to 0 to make it disappear.
'                              DstX     DstY     DstZ     RotX  RotY  RotZ  Scale  Time
Call MiniPlayField_0.MoveTo( 258,   534, -950,       0,       0,       0,    0,       0)

Prior to the Ability to move game room models with xBAM.Miniplayfield, table developers
assigned Room Models as Toys and used FP "moveto" scripting. So switching between
those type of rooms is more have to first capture them in a xBAM.miniplayfield box
Here is the modded table ( use "B" to toggle Game Room) ... h.rar?dl=0

Author:  Gimli [ Sat Feb 10, 2018 12:28 pm ]
Post subject:  Re: BAM Feature How-to Guides

Some players like to have no games room just black space around table.
This is easy to add as RoomNumber = 3 as follows:
If keycode = 48 then 'B on keyboard
   If BAM_VERSION > 157 Then
      RoomNumber = RoomNumber + 1
      If RoomNumber > 3 then RoomNumber = 1
      If RoomNumber = 3 then xBAM.GameRoom = False:Call MiniPlayField_0.MoveTo( 258,   534, -950,       0,       0,       0,    0,       0):Exit Sub:End if
      If RoomNumber = 2 then xBAM.GameRoom = True:Call MiniPlayField_0.MoveTo( 258,   534, -950,       0,       0,       0,    0,       0):Exit Sub:End if
      If RoomNumber = 1 then xBAM.GameRoom = False:Call MiniPlayField_0.MoveTo( 258,   534, -950,       0,       0,       0,    50,       0):Exit Sub:End if
   End if
End if

In RoomNumber= 3 above, I simpy set "xBAM.GameRoom=False" and the Scale of your
room to 0 at the same time

Here is another example of Room Swapping (uses xBAM.GameRoom , Simple Wall and Floor "Overlays Scaled and positioned using xBAM.Miniplayfield)

Tables at Pinsimdb using xBAM.GameRoom

Creature From the Black Lagoon (For Room Swapping) ... ack_lagoon

Dragon's Keep (For VR Castle Room) ... eep_(maxis)
End of xBAM.GameRoom Tutorial


Author:  Gimli [ Sat Feb 17, 2018 12:11 pm ]
Post subject:  Re: BAM Feature How-to Guides

BAM Animation Sequencer

This Tool is a well kept secret. In fact I think I am the only one who has ever used it :lol:

Original Discussion Here:

To use this feature you MUST do the following:
1. Select Desktop in Future Pinball Video Settings (NOT ARCADE)
2.Be in the Advanced BAM Menu
3.Select "Static Cam" in BAM Menu
4.Select "Forced Arcade Mode" under "AddOns" in BAM menu

See Video Below demonstrating how to access this function

1. Create "Room Camera Sequences" as an attract mode type feature to view the Arcade Room and Table
2. Create new camera angles from which to play the table. This is accomplished by setting the transition time to next angle to 100000000 ms (27 hours !)

In other words it won't go to the next transition and remain at your desired location :lol:

This is a little known BAM Function accessed only through BAM menu.
"Animation Sequencer" is a confusing term.

This function essentially changes the Room Camera angle and creates a sequence of 1 - 10 camera settings per "Animation Sequence".

When in Animation Sequencer Menu
Use the following keys:
1. INSERT to add new line
2.DELETE to remove a line
3. ARROW Keys to move between parameters
4. Select SaveTable.seq
To save

These are the Parameters that can be set and adjusted on the fly:
1. Camera Image Location Tx, Ty, Tz
2. Camera Image Stretch Sx, Sy, Sz
3. Camera Image Rotation Rx, Ry, Rz
4. Time to move the image to parameters set in 1-3 above

You can create 3 independent Sequences per table and they are saved in BAM/CFG directory

The sequences will be played smoothly using F1, F2, F3.

Currently there is a bug and the save feature is creating spacing problems in the tablename.seq file that is generated and saved in your BAM/CFG directory.

This Beta.dll will fix the issue (Released Feb 17,2018. copy this into your BAM directory
after you have renamed the original file of the same name)

***Note: Although this function works in all 3 BAM usages (Desktop, Arcade and VR),
The camera angles do vary between them and so the sequences don't translate perfectly.

Examples: ... s.rar?dl=0
The above zip has example sequence files.
copy the default.seq file into your BAM directory.
It also contains suggested seq files (Desktop.seq for destop users, Arcade.seq for arcade users, the Wild.seq files are suggested for NES table to allow zooming of backglass in that table). Simply substitute the name of your table on the file wish to try and save it
either in the BAM/CFG directory or the FuturePinball/tables directory.
In these demo files, I have set:
1.Animation Sequence1 activated with F1. Will pan around Arcade Room
2.Animation Sequence2 activated with F2 . Goes to Full table view to play table from
3.Animation Sequence3 activated with F3. Zooms to backglass for games with Vertical Playfields

END OF BAM Animation Sequencer Tutorial


Page 1 of 2 All times are UTC - 5 hours [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group