Option Explicit LoadVPM "01130000","SPINBALL.VBS",3.10 Sub LoadVPM(VPMver,VBSfile,VBSver) On Error Resume Next If ScriptEngineMajorVersion < 5 Then MsgBox "VB Script Engine 5.0 or higher required" ExecuteGlobal GetTextFile(VBSfile) If Err Then MsgBox "Unable to open " & VBSfile & ". Ensure that it is in the same folder as this table. " & vbNewLine & Err.Description : Err.Clear Set Controller = CreateObject("VPinMAME.Controller") If Err Then MsgBox "Can't Load VPinMAME." & vbNewLine & Err.Description If VPMver>"" Then If Controller.Version < VPMver Or Err Then MsgBox "VPinMAME ver " & VPMver & " required." : Err.Clear If VPinMAMEDriverVer < VBSver Or Err Then MsgBox VBSFile & " ver " & VBSver & " or higher required." On Error Goto 0 End Sub Const UseSolenoids=1,UseLamps=1,UseSync=1,SSolenoidOn="SolOn",SSolenoidOff="SolOff",SFlipperOn="FlipperUp",SFlipperOff="FlipperDown",SCoin="Coin3" 'SolCallback(1)= 'Credit Button Light 'SolCallback(2)= 'Coin Lockout SolCallBack(3)="vpmSolSound ""Knocker""," 'Knocker SolCallback(4)="bsTrough.SolIn" 'Outhole SolCallback(5)="vpmNudge.SolGameOn" 'Flipper Enable SolCallBack(6)="vpmSolSound ""Jet3""," 'Right Bumper SolCallBack(7)="vpmSolSound ""Jet3""," 'Middle Bumper SolCallBack(8)="dtL.SolDropUp" 'Left Target Bank SolCallback(9)="bsTrough.SolOut" 'Ball Release SolCallBack(10)="SolLockRelease" 'Lock Ball Release SolCallback(13)="bsThrower.SolOut" 'Ball Launch to Ramp SolCallBack(14)="dtR.SolDropUp" 'Right Target Bank 'SolCallBack(15)="vpmSolSound ""Sling""," 'Right Slingshot - commented out and added to hit event SolCallBack(16)="vpmSolSound ""Jet3""," 'Bottom Bumper SolCallback(sLLFlipper)="vpmSolFlipper LeftFlipper,Nothing," SolCallback(sLRFlipper)="vpmSolFlipper RightFlipper,Nothing," Dim bsTrough,dtL,dtR,bsThrower Sub Table1_Init vpmInit Me L2.IsDropped=1 L3.IsDropped=1 On Error Resume Next With Controller .GameName="bushidoa" .SplashInfoLine="Inder Bushido" .HandleMechanics=0 .HandleKeyboard=0 .ShowDMDOnly=1 .ShowFrame=0 .ShowTitle=0 If Err Then MsgBox Err.Description End With On Error Goto 0 Controller.SolMask(0)=0 vpmTimer.AddTimer 3000,"Controller.SolMask(0)=&Hffffffff'" 'ignore all solenoids - then add the timer to renable all the solenoids after 3 seconds Controller.Run GetPlayerHwnd vpmNudge.TiltSwitch=33 vpmNudge.Sensitivity=5 vpmNudge.TiltObj=Array(Light70,Light71,Light72,RightSlingshot) PinMAMETimer.Interval=PinMAMEInterval:PinMAMETimer.Enabled=1 Set bsTrough=New cvpmBallStack bsTrough.InitSw 71,31,64,70,0,0,0,0 bsTrough.InitKick BallRelease,50,2 bsTrough.Balls=3 bsTrough.InitExitSnd "BallRel","SolOn" Set dtL=New cvpmDropTarget dtL.InitDrop Array(D52,D51,D53),Nothing dtL.InitSnd "FlapClos","FlapOpen" dtL.CreateEvents "dtL" Set dtR=New cvpmDropTarget dtR.InitDrop Array(D56,D54,D55),Nothing dtR.InitSnd "FlapClos","FlapOpen" dtR.CreateEvents "dtR" Set bsThrower=New cvpmBallStack bsThrower.InitSaucer Kicker2,50,0,25 bsThrower.InitExitSnd "Popper","SolOn" vpmCreateEvents ASwitches vpmMapLights AllLights End Sub 'Inder Bushido 'added by Inkochnito Sub editDips Dim vpmDips:Set vpmDips=New cvpmDips With vpmDips .AddForm 700,400,"Bushido - DIP switches" ' SL1-4,3,2,1 (Dip 1-4) .AddFrame 2,0,190,"Credits per coin",&H000F, _ Array("1 coin - 1 credit" ,&H0001, _ "1 coin - 2 credits",&H0000, _ "2 coins - 3 credits",&H000A, _ "2 coins - 1 credit" ,&H0003) ' SL2-5,6 (Dip 13,14) .AddFrame 2,76,190,"Extra ball stays lit for",&H3000, _ Array("- disabled -", &H0000, _ "10 seconds" , &H1000, _ "12 seconds" , &H2000, _ "15 seconds" , &H3000) ' SL2-4 (dip 12) .AddFrame 2,152,190,"Balls per game",&H0800, _ Array ("3 balls", &H0000, _ "5 balls", &H0800) ' SL1-5,6 (dip 5,6) .AddFrame 205,0,190,"Replay threshold",&H0030, _ Array("100 million points", &H0000, _ "150 million points", &H0010, _ "200 million points", &H0020, _ "250 million points", &H0030) ' SL2-1,2 (dip 9,10) .AddFrame 205,76,190,"Handicap value",&H0300, _ Array("250 million points", &H0000, _ "300 million points", &H0100, _ "350 million points", &H0200, _ "400 million points", &H0300) .AddLabel 50,205,300,20,"After hitting OK, press F3 to reset game with new settings." .ViewDips End With End Sub Set vpmShowDips=GetRef("editDips") Dim LockPos LockPos=0 Dim MasterLock MasterLock=Array(L3,L1,L2,L3,L1,L2,L3,L1,L2) Dim LockedBalls(3) LockedBalls(0)=0:LockedBalls(1)=0:LockedBalls(2)=0:LockedBalls(3)=0 Dim Release Release=0 Sub SolLockRelease(Enabled) If Enabled Then Flipper1.RotateToEnd Release=1 Else Flipper1.RotateToStart Release=0 End If End Sub Sub Timer2_Timer MasterLock(LockPos).IsDropped=1 CheckLocked LockPos=LockPos+1 If LockPos>8 Then LockPos=0 MasterLock(LockPos).IsDropped=0 End Sub 'Lock Switches '80/83 top -- 80=Feeler Yellow, 83=Passage by Zero '81/84 left -- 81=Feeler Red, 84=Passage by Zero '82/85 right -- 82=Feeler Violet, 85=Passage by Zero Set LampCallback=GetRef("UpdateMultipleLamps") Dim StartLock,StopLock,SLock1,SLock2 SLock1=0:SLock2=0 Sub UpdateMultipleLamps StopLock=Light23.State If StopLock<>SLock2 Then If StopLock=1 Then Timer2.Enabled=0 SLock2=StopLock Exit Sub End If End If SLock2=StopLock StartLock=Light24.State If StartLock<>SLock1 Then If StartLock=1 Then Timer2.Enabled=1 Else Timer2.Enabled=0 End If End If SLock1=StartLock End Sub Sub Table1_KeyDown(ByVal KeyCode) If KeyCode=keyInsertCoin1 Or KeyCode=keyInsertCoin2 or KeyCode=keyInsertCoin3 Then Controller.Switch(30)=1 Exit Sub End If If KeyCode=RightFlipperKey Then Controller.Switch(45)=1 If KeyCode=PlungerKey Then Plunger.PullBack If vpmKeyDown(KeyCode) Then Exit Sub End Sub Sub Table1_KeyUp(ByVal KeyCode) If KeyCode=keyInsertCoin1 Or KeyCode=keyInsertCoin2 or KeyCode=keyInsertCoin3 Then Controller.Switch(30)=0 Exit Sub End If If KeyCode=RightFlipperKey Then Controller.Switch(45)=0 If KeyCode=PlungerKey Then Plunger.Fire PlaySound"Plunger" End If If vpmKeyUp(KeyCode) Then Exit Sub End Sub Sub Drain_Hit:bsTrough.AddBall Me:End Sub Sub Light70_Hit:vpmTimer.PulseSw 40:End Sub Sub Light71_Hit:vpmTimer.PulseSw 66:End Sub Sub Light72_Hit:vpmTimer.PulseSw 76:End Sub Sub RightSlingshot_Slingshot:vpmTimer.PulseSw 46:PlaySound"Sling":End Sub Sub Kicker2_Hit:bsThrower.AddBall 0:End Sub Sub Kicker3_Hit:Kicker3.DestroyBall:Kicker1.CreateBall:LockedBalls(3)=1:Timer2_Timer:End Sub Sub Trigger1_Hit:ActiveBall.VelY=3:End Sub Sub CheckLocked L1A.DestroyBall:L1B.DestroyBall:L1C.DestroyBall:L1D.DestroyBall:L1E.DestroyBall L1F.DestroyBall:L1G.DestroyBall:L1H.DestroyBall:L1I.DestroyBall Select Case LockPos Case 0:Controller.Switch(85)=1:If LockedBalls(3)=1 And LockedBalls(0)=0 Then Kicker1.DestroyBall LockedBalls(0)=1 LockedBalls(3)=0 Else Kicker1.Kick 320,5 End If If LockedBalls(0)=1 Then L1A.CreateBall.Image="L1APic" If LockedBalls(1)=1 Then L1D.CreateBall.Image="L1DPic" If LockedBalls(2)=1 Then L1G.CreateBall Case 1:Controller.Switch(85)=0:If LockedBalls(3)=1 And LockedBalls(0)=0 Then Kicker1.DestroyBall LockedBalls(0)=1 LockedBalls(3)=0 Else Kicker1.Kick 320,5 End If If LockedBalls(0)=1 Then L1B.CreateBall.Image="L1BPic" If LockedBalls(1)=1 Then L1E.CreateBall.Image="L1EPic" If LockedBalls(2)=1 Then L1H.CreateBall Case 2:Kicker1.Kick 320,5:LockedBalls(3)=0 If LockedBalls(0)=1 Then L1C.CreateBall.Image="L1CPic" If LockedBalls(1)=1 Then L1F.CreateBall If LockedBalls(2)=1 Then L1I.CreateBall.Image="L1IPic" If Release=1 Then L1F.Kick 250,15 LockedBalls(1)=0 End If Case 3:Controller.Switch(83)=1:If LockedBalls(3)=1 And LockedBalls(2)=0 Then Kicker1.DestroyBall LockedBalls(2)=1 LockedBalls(3)=0 Else Kicker1.Kick 320,5 End If If LockedBalls(0)=1 Then L1D.CreateBall.Image="L1DPic" If LockedBalls(1)=1 Then L1G.CreateBall If LockedBalls(2)=1 Then L1A.CreateBall.Image="L1APic" Case 4:Controller.Switch(83)=0::If LockedBalls(3)=1 And LockedBalls(2)=0 Then Kicker1.DestroyBall LockedBalls(2)=1 LockedBalls(3)=0 Else Kicker1.Kick 320,5 End If If LockedBalls(0)=1 Then L1E.CreateBall.Image="L1EPic" If LockedBalls(1)=1 Then L1H.CreateBall If LockedBalls(2)=1 Then L1B.CreateBall.Image="L1BPic" Case 5:Kicker1.Kick 320,5:LockedBalls(3)=0 If LockedBalls(0)=1 Then L1F.CreateBall If LockedBalls(1)=1 Then L1I.CreateBall.Image="L1IPic" If LockedBalls(2)=1 Then L1C.CreateBall.Image="L1CPic" If Release=1 Then L1F.Kick 250,15 LockedBalls(0)=0 End If Case 6:Controller.Switch(84)=1:If LockedBalls(3)=1 And LockedBalls(1)=0 Then Kicker1.DestroyBall LockedBalls(1)=1 LockedBalls(3)=0 Else Kicker1.Kick 320,5 End If If LockedBalls(0)=1 Then L1G.CreateBall If LockedBalls(1)=1 Then L1A.CreateBall.Image="L1APic" If LockedBalls(2)=1 Then L1D.CreateBall.Image="L1DPic" Case 7:Controller.Switch(84)=0:If LockedBalls(3)=1 And LockedBalls(1)=0 Then Kicker1.DestroyBall LockedBalls(1)=1 LockedBalls(3)=0 Else Kicker1.Kick 320,5 End If If LockedBalls(0)=1 Then L1H.CreateBall If LockedBalls(1)=1 Then L1B.CreateBall.Image="L1BPic" If LockedBalls(2)=1 Then L1E.CreateBall.Image="L1EPic" Case 8:Kicker1.Kick 320,5:LockedBalls(3)=0 If LockedBalls(0)=1 Then L1I.CreateBall.Image="L1IPic" If LockedBalls(1)=1 Then L1C.CreateBall.Image="L1CPic" If LockedBalls(2)=1 Then L1F.CreateBall If Release=1 Then L1F.Kick 250,15 LockedBalls(2)=0 End If End Select Controller.Switch(82)=LockedBalls(0) Controller.Switch(80)=LockedBalls(1) Controller.Switch(81)=LockedBalls(2) End Sub