Jump to content

[New VP10 Alert] Airport (Gottlieb 1969) 1.4


Recommended Posts

  • Members

Airport (Gottlieb 1969) 1.4


Airport is a bell-banger from 1969. No spinners or ball locks — just two-fisted vari-target action and plenty of bell ringing bumpers.
 
Vari-targets are those targets that when you ram into them with your ball they retreat backward — your score increasing the farther you drive them back. You love it when Ten Times Value is lit and you drive the ball all the way back. I love vari-targets and Airport has not one but a pair of them. In fact, Airport was the very first pinball table to feature vari-targets. (That probably explains why the rest of the table is fairly spartan.)
 
A four-player version of this table exists with a different theme and artwork, College Queens — also from 1969. Airport’s jet-set theme suggests a time when commercial jet travel was still sexy and new. Would they have had a pinball table such as this in an actual airport in 1969?
 
Airport is another community table that began with the legacy of the late @loserman76. @AxeVerse and others have contributed to and updated the table since. This version adds a recessed apron, playfield shadows, reworking of the plastics, various tweaks to lighting, textures, and more (see table script for details).
 
Be sure to grab the recent backglass from @hauntfreaks featuring @Silversurfer’s amazing vector artwork.
 
Original version by Loserman76:


 

Link to comment
Share on other sites

Just wondering if there's a way to fix this issue I'm having with this table: a very light hit on one of the vari-targets will engage the shaker motor and it won't turn off until one of them gets hit again.  

Link to comment
Share on other sites

I'll look into this. I may have seen a related issue where a light tap moved the vari-target back a touch but it did not "reset". Likely the same bug is also causing the DOF motor to remain on.

Link to comment
Share on other sites

Here's what I see in the script:

 

Sub LeftVT_Hit(idx)
	Dim x
	Lnewpos = idx
	If ActiveBall.VelY < 0 Then
		DOF kDOF_Shaker, DOFOn			' <-----<<<
		ActiveBall.VelY = ActiveBall.VelY * 0.915
		EMPlayVariTargetSound
		VariTargetL.TransX = -(LeftPosition_Vari * 10)
		LeftPosition_Vari = idx + 1
	End If
	Loldpos = Lnewpos
End Sub

Sub LeftVT_UnHit(idx)
	If ActiveBall.VelY > 0 Then
		DOF kDOF_Shaker, DOFOff			' <-----<<<
		TimerLeftVariTarget.Enabled = True
	End If
End Sub

 

I added the arrow comments above to indicate where the shaker motor is turned on and where it is turned off.

 

Why might it not turn off?

Either because LeftVT_UnHit() is not being called, or it is being called but ActiveBall.VelY is not > 0.

My guess is that the latter is the case.

But I'm not sure why that conditional (If ActiveBall.VelY > 0 Then) is even there. My guess is that if you were to remove the conditional, then there may be a quick series of hits/unhits as the ball pushes its way into the vari-target. The conditional was meant to wait until the ball was starting to fall back away from the vari-target before turning off the shaker (and enabling a timer).

 

Likely our edge case is because the ball is not quite greater than zero, but upon the next pass through the game loop contact with the vari-target is lost and so LeftVT_UnHit() is not given another chance to be called.

I think the Right Fix™ is going to be rather tricky — perhaps kicking off a new timer that is deferred each time LeftVT_UnHit() is called until at some point LeftVT_UnHit() is not called and the timer executes (turns off the motor, etc.).

 

I don't have enough familiarity with timers though to prescribe the Right Fix™.

A janky fix would be to not start the motor in the first place if it is a "light tap" of the vari-target. In this case we would address the call in LeftVT_Hit() — specifically the line:  If ActiveBall.VelY < 0 Then.

 

That conditional is saying, "if the ball is traveling upward..." (a less than zero y-velocity). Well we could change it to: If ActiveBall.VelY < -1.0 Then. That would mean the y-velocity on impact would have to not only be upward, but upward faster than -1 (and here, the more negative a number is, the faster the ball is traveling up the playfield).

The janky part is: is -1.0 the right value?  Maybe -0.1 would be better. Or -2.0. Remember, the more negative the number, the harder you will have to hit the vari-target for the  hit to register.

If you feel like experimenting, go into the script for Airport and change the zero on line 883 to something slightly negative. And also line 931 for the right vari-target.
 

Thinking more about this, I am not sure this is a one or two line fix. See my next comment for a fix to try.

Edited by JCalhoun
Link to comment
Share on other sites

Here is a slight (but janky) change to LeftVT_Hit() that might work:
 

Sub LeftVT_Hit(idx)
    Dim x
    Lnewpos = idx
    If ActiveBall.VelY < 0 Then
        If ActiveBall.VelY < 0.5 Then
            EMPlayVariTargetSound
            DOF kDOF_Shaker, DOFOn
        End If
        ActiveBall.VelY = ActiveBall.VelY * 0.915
        VariTargetL.TransX = -(LeftPosition_Vari * 10)
        LeftPosition_Vari = idx + 1
    End If
    Loldpos = Lnewpos
End Sub

 

The change above is to only turn on the shaker motor (and play a sound) if there is more than a light tap. We still do the other things though (slow down the ball, move the vari-target, increment some value for whatever reason). Maybe that will work.


(As an aside, looks like the constant 0.915 above is kind of like the "spring strength" of the vari-target. The closer to 1.0, the looser the spring, allowing you to more easily slam the vari-target all the way home. Something like 0.8 or so would feel like a stiff spring more quickly slowing the ball, very difficult to "peg" the vari-target.)

 

Copy/paste the above to replace the code in the script beginning on line 880.

And then there is also a right vari-target:

 

Sub RightVT_Hit(idx)
    Dim x
    Rnewpos = idx
    If ActiveBall.VelY < 0 Then
        If ActiveBall.VelY < -0.5 Then
            EMPlayVariTargetSound
            DOF kDOF_Shaker, DOFOn
        End If
        ActiveBall.VelY = ActiveBall.VelY * 0.915
        VariTargetR.TransX = -(RightPosition_Vari * 10)
        RightPosition_Vari = idx + 1
    End If
    Roldpos = Rnewpos
End Sub

 

Report back. 🙂

Edited by JCalhoun
Link to comment
Share on other sites

I'll try to figure out the Right Fix™ and get it in a dot-release (1.4.1, I guess).

 

(EDIT: Baseball has the same code, and I expect the same bug.)

Edited by JCalhoun
Link to comment
Share on other sites

I didn't have great results.  First set them to -.1 and -.5 and was getting the same glitch on both sides.  Upped it to -1 and -2 and immediately got it again on the -2 side, so then I went to -5 and -10, and at that point, the vari-targets got noticeably weird, like the ball was getting sucked up the lane with way more force than I was hitting it with.

 

Very much appreciate you looking into this!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...