Double Leaf Switches

Viewing 16 posts - 1 through 16 (of 16 total)
  • Author
    Posts
  • #69860
    rothbauerw
    Moderator
      @rothbauerw
      ModeratorContributorMembervip

      So I’m a big fan of the Dr. Who pinball.  I owned one for many years.  One of my favorite features was the double leaf switch which allowed the upper flipper to be controlled separate of the lower flipper.  I recently added magna saves (sorry randr) and double leaf switches to both of my flippers.  Attached is a video of a test with Dr. Who.  I found that the upper flipper solenoid call is delayed from the lower, so the only way I could get this to work satisfactorily was to use NFozzy’s (@NFozzy) fast flips scripts.  WOW, what a difference it makes!  In order to update DOF and fire separate contactors for the upper and lower flipper, I needed to modify/create a separate WPC.vbs file so I could control the upper and lower flipper switches separately.  I’m pretty happy with the result.

      Current Project: Perpetual updates of VPX physics.

      2 users thanked author for this post.
      #69862
      randr
      Keymaster
        @randr
        ModeratorMember

        Very cool but now every table needs modding and dof needs modding for all the extra flipper :)

        i may be doing this as it is really correct way to do it :good:  great work Roth(your sick in the head) but amazing!

         

        ********************************************************
        Messing with the VPinball app and push notifications.
        So if you haven't downloaded app yet what are you waiting for!?
        for IOS and Android

        ********************************************************

        #69863
        Thalamus
        Moderator
          @thalamus
          ContributorMemberModerator

          Details … I demand details B-)

          #69864
          BorgDog
          Participant
            @borgdog
            MemberContributorvip

            yeah, what @thalamus says.. we need details.  Like what did you map the second switch to in the keys controls?  I do not see a dual-switch flipper setting there.  I would think to do this right that would need to be added as well.  I need to replace the switches on my flipper buttons anyway, might have to go the dual route.. more wires..

            #69874
            wrd1972
            Participant
              @wrd1972
              MembervipContributor

              i have been thinking about double leafs for the cab here too. Maybe someone can set a standard for assignments that all can consider using on multi flipper tables. Would be nice to have a script option to toggle between modes too. I see it more ss a novelty thing in the end.

              My VP Pincab /MAME Arcade Specs: MSI Micro-ATX Z390m MOBO, Core I5-9600K CPU @ 3.70GHz, 16GB NVRAM, Nvidia 1660 Super,

              40" PF Sony gaming LED TV, Dual 23" monitors in the backbox , Pinscape w. expansion board, Full DOF - Full MAME arcade support

              #69875
              randr
              Keymaster
                @randr
                ModeratorMember

                Years ago when I built my first cab I thought about doing it but since it was not a common practice I just went with the standard setup. This really should be an option in vp for the cab as we all want it authentic as possible :good:

                ********************************************************
                Messing with the VPinball app and push notifications.
                So if you haven't downloaded app yet what are you waiting for!?
                for IOS and Android

                ********************************************************

                #69876
                rothbauerw
                Moderator
                  @rothbauerw
                  ModeratorContributorMembervip

                  I’m a little surprised by the interest.  I thought most would see this as a novelty.  There is actually strategic advantage with this feature on tables like Jurassic Park.

                  I’ll post full details on how I did it on Doctor Who in the next couple of days.  About to hit the road for some travel and will document the steps as soon as I can find an hour.

                  Current Project: Perpetual updates of VPX physics.

                  #69877
                  Jodannar
                  Participant
                    @jodannar
                    Member

                    im not a good enough player to use flipper staging anyway. i always feel off on the virtual cab compared to a real anyway. i currently have microleafs for my flippers, so id ned to swap the flipper buttons completely to support this, plus the code change

                    #69892
                    freneticamnesic
                    Moderator
                      @freneticamnesic
                      vipModeratorMember

                      Well the code is easy. Wiring it up is easy. Getting the proper leaf switches is the hard part.

                      Punch it!

                      1 user thanked author for this post.
                      #69904
                      BorgDog
                      Participant
                        @borgdog
                        MemberContributorvip
                        #69945
                        Sliderpoint
                        Participant
                          @sliderpoint
                          MemberContributor

                          Double leafs would be great!  I think way more than WPC need it.

                          Gah! $19 per switch!  And will they work with low voltage?  Some don’t play nice if I recall.

                          -Mike

                          #69948
                          rothbauerw
                          Moderator
                            @rothbauerw
                            ModeratorContributorMembervip

                            Here is the switch I used ($10.95 each)

                            http://www.marcospecialties.com/pinball-parts/SW-1A-192

                            These come apart easily to adjust spacing and you can remove the long leaf if you wish, which I did on the left flipper.  I needed the long leaf on my right flipper as my zebs plunger didn’t allow enough clearance for a double switch without it.  I’m very happy with them.

                            I mapped my left second flipper switch (vbs variable name KeyUpperLeft) to the (A) key and right second flipper (vbs variable name KeyUpperRight) switch to the ( ‘ ) key.  These are the same mappings found in the VPMKeys.vbs file.

                            To get the upper flipper key to work in Doctor Who, I made the following changes:

                            Note:

                            • The upper right flipper is mapped to Solenoid 34 (or use SURFlipper variable in vbs) and uses switch 116 (or us SWURFlip variable in vbs)
                            • The upper left flipper is mapped to Solenoid 36 (or use SULFlipper variable in vbs) and uses switch 118 (or us SWULFlip variable in vbs)
                            • WPC.vbs sets both the upper and lower switch with the flipper key, I didn’t know how or if I could overwrite this in the table script so I created a WPC2.vbs file changing the following two lines (this is only needed if you’re going to either use the solenoid calls to manage flipper activation or you want to update DOF to call separate contactors for the upper and lower flippers):

                            If keycode = RightFlipperKey Then .Switch(swLRFlip) = True : If cSingleRFlip Or Err Then .Switch(swURFlip) = True
                            If keycode = LeftFlipperKey  Then .Switch(swLLFlip) = True : If cSingleLFlip Or Err Then .Switch(swULFlip) = True

                            To ( WPC2.vbs https://pastebin.com/fhkJd7Xu ):

                            If keycode = RightFlipperKey Then .Switch(swLRFlip) = True : ‘If cSingleRFlip Or Err Then .Switch(swURFlip) = True
                            If keycode = LeftFlipperKey  Then .Switch(swLLFlip) = True : ‘If cSingleLFlip Or Err Then .Switch(swULFlip) = True

                            Changes to the table script are as follows ( https://pastebin.com/UYTEdJpZ )

                            Add NFozzy’s FastFlips:

                            • Add “dim FastFlips” near the top of the script outside of any subs or functions
                            • Add the following to the Table1_Init Sub

                            Set FastFlips = new cFastFlips
                            with FastFlips
                            .CallBackL = “SolLflipper”  ‘Point these to flipper subs
                            .CallBackR = “SolRflipper”  ‘…
                            .CallBackUL = “SolULflipper”‘…(upper flippers, if needed)
                            ‘.CallBackUR = “SolURflipper”‘… .TiltObjects = True ‘Optional, if True calls vpmnudge.solgameon automatically. IF YOU GET A LINE 1 ERROR, DISABLE THIS! (or setup vpmNudge.TiltObj!) ‘
                            ‘.InitDelay “FastFlips”, 100         ‘Optional, if > 0 adds some compensation for solenoid jitter (occasional problem on Bram Stoker’s Dracula)   .DebugOn = False        ‘Debug, always-on flippers. Call FastFlips.DebugOn True or False in debugger to enable/disable. end with

                            • Add the following to the Solenoid setup:

                            SolCallBack(31) = “FastFlips.TiltSol”

                            • Add the following to the keydown sub:

                            If keycode = LeftFlipperKey Then FastFlips.FlipL True :controller.Switch(swLLFlip) = True
                            If keycode = KeyUpperLeft Then FastFlips.FlipUL True :controller.Switch(swULFlip) = True
                            If KeyCode = RightFlipperKey then FastFlips.FlipR True

                            • Add the following to the keyup sub:

                            If keycode = KeyUpperLeft Then  FastFlips.FlipUL False :controller.Switch(swULFlip) = False
                            If KeyCode = LeftFlipperKey then FastFlips.FlipL False :controller.Switch(swLLFlip) = False
                            If KeyCode = RightFlipperKey then FastFlips.FlipR False

                            • Change the flipper code to the following:

                            ‘**************
                            ‘ Flipper Subs
                            ‘**************
                            ‘SolCallback(sLRFlipper) = “SolRFlipper”
                            ‘SolCallback(sLLFlipper) = “SolLFlipper”
                            ‘SolCallback(sULFlipper) = “solULFlipper”

                            Sub SolLFlipper(Enabled)
                            If Enabled Then
                            PlaySound SoundFX(“flipperup” ,DOFFlippers),0,1,-.5:LeftFlipper.RotateToEnd
                            Else
                            PlaySound SoundFX(“FlipperDown” ,DOFFlippers),0,1,-.5:LeftFlipper.RotateToStart
                            End If
                            End Sub

                            Sub SolULFlipper(Enabled)
                            If Enabled Then
                            PlaySound SoundFX(“flipperup” ,DOFFlippers),0,1,-.5:LeftFlipper2.RotateToEnd
                            Else
                            PlaySound SoundFX(“FlipperDown” ,DOFFlippers),0,1,-.5:LeftFlipper2.RotateToStart
                            End If
                            End Sub

                            Sub SolRFlipper(Enabled)
                            If Enabled Then
                            PlaySound SoundFX(“flipperup” ,DOFFLippers),0,1,.5:RightFlipper.RotateToEnd
                            Else
                            PlaySound SoundFX(“FlipperDown” ,DOFFlippers),0,1,.5:RightFlipper.RotateToStart
                            End If
                            End Sub

                            • Then add the rest of NFozzy’s FastFlips code to the end of the table script:

                            ‘cFastFlips by nFozzy
                            ‘Bypasses pinmame callback for faster and more responsive flippers
                            ‘Version 1.1 beta2 (More proper behaviour, extra safety against script errors)

                            ‘*************************************************
                            Function NullFunction(aEnabled):End Function ‘1 argument null function placeholder
                            Class cFastFlips
                            Public TiltObjects, DebugOn, hi
                            Private SubL, SubUL, SubR, SubUR, FlippersEnabled, Delay, LagCompensation, Name, FlipState(3)

                            Private Sub Class_Initialize()
                            Delay = 0 : FlippersEnabled = False : DebugOn = False : LagCompensation = False
                            Set SubL = GetRef(“NullFunction”): Set SubR = GetRef(“NullFunction”) : Set SubUL = GetRef(“NullFunction”): Set SubUR = GetRef(“NullFunction”)
                            End Sub

                            ‘set callbacks
                            Public Property Let CallBackL(aInput) : Set SubL = GetRef(aInput) : Decouple sLLFlipper, aInput: End Property
                            Public Property Let CallBackUL(aInput) : Set SubUL = GetRef(aInput) : End Property
                            Public Property Let CallBackR(aInput) : Set SubR = GetRef(aInput) : Decouple sLRFlipper, aInput: End Property
                            Public Property Let CallBackUR(aInput) : Set SubUR = GetRef(aInput) : End Property
                            Public Sub InitDelay(aName, aDelay) : Name = aName : delay = aDelay : End Sub ‘Create Delay
                            ‘Automatically decouple flipper solcallback script lines (only if both are pointing to the same sub) thanks gtxjoe
                            Private Sub Decouple(aSolType, aInput) : If StrComp(SolCallback(aSolType),aInput,1) = 0 then SolCallback(aSolType) = Empty End If : End Sub

                            ‘call callbacks
                            Public Sub FlipL(aEnabled)
                            FlipState(0) = aEnabled ‘track flipper button states: the game-on sol flips immediately if the button is held down (1.1)
                            If not FlippersEnabled and not DebugOn then Exit Sub
                            subL aEnabled
                            End Sub

                            Public Sub FlipR(aEnabled)
                            FlipState(1) = aEnabled
                            If not FlippersEnabled and not DebugOn then Exit Sub
                            subR aEnabled
                            End Sub

                            Public Sub FlipUL(aEnabled)
                            FlipState(2) = aEnabled
                            If not FlippersEnabled and not DebugOn then Exit Sub
                            subUL aEnabled
                            End Sub

                            Public Sub FlipUR(aEnabled)
                            FlipState(3) = aEnabled
                            If not FlippersEnabled and not DebugOn then Exit Sub
                            subUR aEnabled
                            End Sub

                            Public Sub TiltSol(aEnabled) ‘Handle solenoid / Delay (if delayinit)
                            If delay > 0 and not aEnabled then ‘handle delay
                            vpmtimer.addtimer Delay, Name & “.FireDelay” & “‘”
                            LagCompensation = True
                            else
                            If Delay > 0 then LagCompensation = False
                            EnableFlippers(aEnabled)
                            end If
                            End Sub

                            Sub FireDelay() : If LagCompensation then EnableFlippers False End If : End Sub

                            Private Sub EnableFlippers(aEnabled)
                            If aEnabled then SubL FlipState(0) : SubR FlipState(1) : subUL FlipState(2) : subUR FlipState(3)
                            FlippersEnabled = aEnabled
                            If TiltObjects then vpmnudge.solgameon aEnabled
                            If Not aEnabled then
                            subL False
                            subR False
                            If not IsEmpty(subUL) then subUL False
                            If not IsEmpty(subUR) then subUR False
                            End If
                            End Sub

                            End Class

                             

                            Current Project: Perpetual updates of VPX physics.

                            #69949
                            rothbauerw
                            Moderator
                              @rothbauerw
                              ModeratorContributorMembervip

                              Just one other note, I originally implemented without NFozzy’s FastFlips.  While everything worked using solenoid calls, I saw significant lag.

                              I’ve performed extensive testing on my mini cab and see no noticeable difference between FastFlips and solenoid calls.  On my full size cab, however, I see a significant difference.  I need to do some more testing, but the only differences between my mini and full that I’m aware of is that I use Force Exclusive Fullscreen and Brute Force on the full size cab.  It will be interesting to see if one of those two are the cause of the flipper lag.

                              Current Project: Perpetual updates of VPX physics.

                              #69953
                              nFozzy
                              Participant
                                @nfozzy

                                cSingleRFlip / cSingleLFlip is a weird thing exclusive to WPC.vbs. They’re undeclared variables,  you’d have to dim them first either in the wpc.vbs file or in the table script before LoadVPM, and then set them to false. Only Wpc.vbs does this.. Other system scripts don’t handle upper flipper buttons at all. It’s just assumed that you’ll rig those up those switches manually in the table script.

                                For modern games all it would take would be dedicated key bindings and then the tracking down of upper flipper switch numbers. The system scripts can handle the switch handling, and if the table script is set up correctly the upper flippers will work properly (Pinmame’s flipper solenoid numbers are always supposed to be consistent across all systems and games)

                                Pre-solid state flippers are different though because they typically don’t have dedicated switches for upper flippers at all. These flippers aren’t getting any signals from the game code, so it’s all Pinmame’s abstraction, and pinmame doesn’t make the distinction between lower and upper flippers and only sends the one flipper call. So you’ll have to make table script modifications to split them apart.

                                #70752
                                rothbauerw
                                Moderator
                                  @rothbauerw
                                  ModeratorContributorMembervip

                                  Added an option for double leaf switch in next release of Tee’d Off along with Fastflips.

                                  Current Project: Perpetual updates of VPX physics.

                                  #70753
                                  randr
                                  Keymaster
                                    @randr
                                    ModeratorMember

                                    CRAP! now im going to have to add the dang things  :-)

                                    ********************************************************
                                    Messing with the VPinball app and push notifications.
                                    So if you haven't downloaded app yet what are you waiting for!?
                                    for IOS and Android

                                    ********************************************************

                                  Viewing 16 posts - 1 through 16 (of 16 total)

                                  Forums are currently locked.

                                  ©2024 VPinBall.com

                                  Log in with your credentials

                                  Forgot your details?