@GeorgeH @AnonTet , I make and update AFM with new Dynamic Flipper and Charts. So, even with my poor level even if i'm a real player, its easy to make all tricks and good save ( apart livecatch ).
Also, i rewrote the Dynamic Flipper Code to help aiming. Now, flipper bats are divide in 4 zones with 5 Omega points ( 0 to 0.25, 0.25 to 0.5, 0.5 to 0.75 and 0.75 to 1.2 for the tips zone ). Now, instead of linear math along the flipper bats, you can set a "curves" or what you want for Omega.
Here for AFM, I set the same omega from base to middle of the bats, and it decrease after. I'm sure it can be better more, zone point can be move. I think the second zone can be move at 0.25-->0.75 and the third zone at 0.75-->0.9 for better amaing. I will make more test but the result is good i think. I fine tune the charts too and set flip bats swing as real at 48°
Tell me what you think.
EDIT: Change the third second zone 0.25-->0.5 to 0.25-->0.6 and third zone 0.5-->0.75 to 0.6-->0.75 for great center shoot ^^
Here the new code for Dynamic Flipper:
' === Dynamic Flipper Settings ===
Const BAM_VERSION = 0 ' Note that BAM 233 implemented dynamic flippers but this table uses
' "xBAM.CreateAllExt" which requires BAM 254.
AddDebugText BAM_VERSION
If BAM_VERSION => 254 then
Dim omegaCorrectionL12
Dim omegaCorrectionL23
Dim omegaCorrectionL34
Dim omegaCorrectionL45
Dim omegaCorrectionR12
Dim omegaCorrectionR23
Dim omegaCorrectionR34
Dim omegaCorrectionR45
Dim BounceMix
xBAM.CreateAllExt
'xBAM.BallSpeedLimit = 5500
End If
Sub BAM_Init
If BAM_VERSION < 254 then Exit Sub
' FLIPPER OMEGA
' You may want to adjust the strength (also called omega) of the flippers when you add dynamic flippers to other tables.
' Only change the values for "MaxOmega" and "MinOmega" These settings override the flipper omega listed in the XML.
' You probably will want to adjust MaxOmega between 40 and 50 and MinOmega between 26 and 33. This is not a strict rule
' but it gives you an idea of approximate values that work for me. You need to leave the section below "MaxOmega2"
' unchanged and then go on to "BOUNCE CONTROL" below.below.
If BAM_VERSION => 254 then
const Omega1 = 70 ' Omega at base of flipper. Must be < MaxOmega. Default = 70
const Omega2 = 70 ' Omega at base/middle of flipper. Must be < MaxOmega. Default = 70
const Omega3 = 70 ' Omega at middle of flipper. Must be < MaxOmega. Default = 70
const Omega4 = 40 ' Omega at middle/tip of flipper. Must be < MaxOmega. Default = 40
const Omega5 = 20 ' Omega at tip of flipper. Must be > MinOmega. Default = 33
End If
Dim ball_to_flipper_angle
''''''''''''''''''''''''''''''''''''''''''''Right Flipper Prehit Code'''''''''''''''''''''''''''''''''''''''
Sub RightFlipper_prehit()
If BAM_VERSION < 254 then Exit Sub
Dim ball
Set ball = xBAM.BallCloseTo(0,0)
If xBAM.Ball.Speed <= 200 then BounceMix = 1 'Ball Speed Measures 150 rolling down left fliper from cradled ball so this should capture it
If xBAM.Ball.Speed > 200 then BounceMIx = 2
OnPreHitFlipperSettings(RightFlipperExt)
omegaCorrectionR12 = Omega1 - (RightFlipperExt.ContactPoint * ((Omega1 - Omega2)/1.2))
omegaCorrectionR23 = Omega2 - (RightFlipperExt.ContactPoint * ((Omega2 - Omega3)/1.2))
omegaCorrectionR34 = Omega3 - (RightFlipperExt.ContactPoint * ((Omega3 - Omega4)/1.2))
omegaCorrectionR45 = Omega4 - (RightFlipperExt.ContactPoint * ((Omega4 - Omega5)/1.2))
If RightFlipperExt.ContactPoint < 0.0 then RightFlipperExt.Omega = Omega1
If RightFlipperExt.ContactPoint > 1.2 then RightFlipperExt.Omega = Omega5
If (RightFlipperExt.ContactPoint => 0.0) And (RightFlipperExt.ContactPoint =< 0.25) then
RightFlipperExt.Omega = omegaCorrectionR12
Else
If (RightFlipperExt.ContactPoint => 0.25) And (RightFlipperExt.ContactPoint =< 0.6) then
RightFlipperExt.Omega = omegaCorrectionR23
Else
If (RightFlipperExt.ContactPoint => 0.6) And (RightFlipperExt.ContactPoint =< 0.75) then
RightFlipperExt.Omega = omegaCorrectionR34
Else
If (RightFlipperExt.ContactPoint => 0.75) And (RightFlipperExt.ContactPoint =< 1.2) then
RightFlipperExt.Omega = omegaCorrectionR45
End If
End If
End iF
End if
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''Left Flipper PreHit Code'''''''''''''''''''''''''''''
Sub LeftFlipper_prehit()
If BAM_VERSION < 254 then Exit Sub
Dim ball
Set ball = xBAM.BallCloseTo(0,0)
If ball.Speed <= 200 then BounceMix = 1 'Ball Speed Measures 150 rolling down left fliper from cradled ball so this should capture it
If xBAM.Ball.Speed <= 200 then BounceMix = 1 'Ball Speed Measures 150 rolling down left fliper from cradled ball so this should capture it
If xBAM.Ball.Speed > 200 then BounceMIx = 2
If BAM_VERSION < 254 then Exit Sub
OnPreHitFlipperSettings(LeftFlipperExt)
omegaCorrectionL12 = Omega1 - (LeftFlipperExt.ContactPoint * ((Omega1 - Omega2)/1.2))
omegaCorrectionL23 = Omega2 - (LeftFlipperExt.ContactPoint * ((Omega2 - Omega3)/1.2))
omegaCorrectionL34 = Omega3 - (LeftFlipperExt.ContactPoint * ((Omega3 - Omega4)/1.2))
omegaCorrectionL45 = Omega4 - (LeftFlipperExt.ContactPoint * ((Omega4 - Omega5)/1.2))
If LeftFlipperExt.ContactPoint < 0.0 then LeftFlipperExt.Omega = Omega1
If LeftFlipperExt.ContactPoint > 1.2 then LeftFlipperExt.Omega = Omega5
If (LeftFlipperExt.ContactPoint => 0.0) And (LeftFlipperExt.ContactPoint =< 0.25) then
LeftFlipperExt.Omega = omegaCorrectionL12
Else
If (LeftFlipperExt.ContactPoint => 0.25) And (LeftFlipperExt.ContactPoint =< 0.6) then
LeftFlipperExt.Omega = omegaCorrectionL23
Else
If (LeftFlipperExt.ContactPoint => 0.6) And (LeftFlipperExt.ContactPoint =< 0.75) then
LeftFlipperExt.Omega = omegaCorrectionL34
Else
If (LeftFlipperExt.ContactPoint => 0.75) And (LeftFlipperExt.ContactPoint =< 1.2) then
LeftFlipperExt.Omega = omegaCorrectionL45
End IF
End If
End If
End if
End Sub