Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.33 KB | None | 0 0
  1. Option Explicit
  2. Randomize
  3.  
  4. On Error Resume Next
  5. ExecuteGlobal GetTextFile("controller.vbs")
  6. If Err Then MsgBox "You need the controller.vbs in order to run this table, available in the vp10 package"
  7. On Error Goto 0
  8.  
  9. Const cGameName="goinnuts",UseSolenoids=2,UseLamps=1,UseGI=0,SSolenoidOn="SolOn",SSolenoidOff="SolOff",SFlipperOn="FlipperUp",SFlipperOff="FlipperDown"
  10. Const cSingleLFlip = 0
  11. 'Const cSingleRFlip = 0
  12. Const SCoin="coin3",cCredits=""
  13.  
  14. LoadVPM "01120100","sys80.vbs",3.02
  15.  
  16. BMass=1.65
  17.  
  18. Dim DesktopMode: DesktopMode = GN.ShowDT
  19.  
  20. if DesktopMode=False Then
  21. leftrail.visible=0
  22. rightrail.visible=0
  23. end If
  24.  
  25. Sub GN_KeyDown(ByVal keycode)
  26. ' if keycode=LeftFlipperKey then
  27. ' LeftFlipper.RotateToEnd
  28. ' LeftFlipper1.RotateToEnd
  29. ' end if
  30. ' if keycode=RightFlipperKey then
  31. ' RightFlipper.RotateToEnd
  32. ' RightFlipper1.RotateToEnd
  33. ' end if
  34.  
  35. If vpmKeyDown(KeyCode) Then Exit Sub
  36. End Sub
  37.  
  38. Sub GN_KeyUp(ByVal keycode)
  39. ' if keycode=LeftFlipperKey then
  40. ' LeftFlipper.RotateToStart
  41. ' LeftFlipper1.RotateToStart
  42. ' end if
  43. ' if keycode=RightFlipperKey then
  44. ' RightFlipper.RotateToStart
  45. ' RightFlipper1.RotateToStart
  46. ' end if
  47. If vpmKeyUp(KeyCode) Then Exit Sub
  48. End Sub
  49.  
  50. Dim dtGreen,dtRed,dtYellow,dtBlue,dtWhite,bsTrough,cbCaptive
  51.  
  52. Sub GN_Init
  53. vpmInit Me
  54. On Error Resume Next
  55. With Controller
  56. .GameName=cGameName
  57. If Err Then MsgBox "Can't start Game" & cGameName & vbNewLine & Err.Description : Exit Sub
  58. .SplashInfoLine="Goin' Nuts - Gottlieb, 1983" & vbNewLine & "Table Design: fuzzel"
  59. .HandleMechanics=0
  60. .HandleKeyboard=0
  61. .ShowDMDOnly=1
  62. .ShowFrame=0
  63. .ShowTitle=0
  64. .SolMask(0)=0
  65. .Hidden=0
  66. If Err Then MsgBox Err.Description
  67. End With
  68. On Error Goto 0
  69. vpmTimer.AddTimer 1000,"Controller.SolMask(0)=&Hffffffff'"
  70. Controller.Run
  71.  
  72. 'Dip switch settings, shown this way for clarity and ease of modification
  73. ' Controller.Dip(0) = (0*1 + 1*2 + 0*4 + 0*8 + 0*16 + 0*32 + 1*64 + 0*128) '01-08
  74. ' Controller.Dip(1) = (0*1 + 0*2 + 0*4 + 0*8 + 0*16 + 0*32 + 1*64 + 1*128) '09-16
  75. ' Controller.Dip(2) = (0*1 + 1*2 + 0*4 + 1*8 + 0*16 + 0*32 + 1*64 + 1*128) '17-24
  76. ' Controller.Dip(3) = (0*1 + 1*2 + 1*4 + 1*8 + 1*16 + 1*32 + 0*64 + 0*128) '25-32
  77.  
  78. ' Main Timer init
  79. PinMAMETimer.Interval=PinMAMEInterval
  80. PinMAMETimer.Enabled=1
  81.  
  82. ' Nudging
  83. vpmNudge.TiltSwitch=57
  84. vpmNudge.Sensitivity=5
  85. vpmNudge.TiltObj=Array(Bumper1,Bumper2,Bumper3,Bumper4,Bumper5,Bumper6,Bumper7,LeftSlingshot,RightSlingshot)
  86.  
  87. 'drop targets
  88. Set dtGreen=New cvpmDropTarget
  89. dtGreen.InitDrop Array(SW00,SW10,SW20),Array(0,10,20)
  90. dtGreen.initsnd SoundFX("flapclos",DOFDropTargets),SoundFX("flapopen",DOFContactors)
  91.  
  92. Set dtRed=New cvpmDropTarget
  93. dtRed.InitDrop Array(SW01,SW11,SW21),Array(1,11,21)
  94. dtRed.initsnd SoundFX("flapclos",DOFDropTargets),SoundFX("flapopen",DOFContactors)
  95.  
  96. Set dtBlue=New cvpmDropTarget
  97. dtBlue.InitDrop Array(SW02,SW12,SW22),Array(2,12,22)
  98. dtBlue.initsnd SoundFX("flapclos",DOFDropTargets),SoundFX("flapopen",DOFContactors)
  99.  
  100. Set dtYellow=New cvpmDropTarget
  101. dtYellow.InitDrop Array(SW03,SW13,SW23),Array(3,13,23)
  102. dtYellow.initsnd SoundFX("flapclos",DOFDropTargets),SoundFX("flapopen",DOFContactors)
  103.  
  104. Set dtWhite=New cvpmDropTarget
  105. dtWhite.InitDrop Array(SW04,SW14,SW24),Array(4,14,24)
  106. dtWhite.initsnd SoundFX("flapclos",DOFDropTargets),SoundFX("flapopen",DOFContactors)
  107.  
  108. ' Trough handler
  109. Set bsTrough=new cvpmBallStack
  110. bsTrough.InitSw 0,54,0,0,0,0,0,0
  111. bsTrough.InitKick sw54,50,6
  112. bsTrough.InitExitSnd SoundFX("ballrel",DOFContactors),SoundFX("solon",DOFContactors)
  113. bsTrough.Balls=3
  114.  
  115. ' Set cbCaptive = New cvpmCaptiveBall
  116. ' With cbCaptive
  117. ' .InitCaptive CapTrigger, CapWall, Array(CapKicker1,CapKicker2), 320
  118. ' .NailedBalls = 1
  119. ' .ForceTrans = .9
  120. ' .MinForce = 3.5
  121. ' .CreateEvents "cbCaptive"
  122. ' .Start
  123. ' End With
  124.  
  125. CapKicker.createball
  126. CapKicker.kick 120,6
  127. End Sub
  128.  
  129. Sub GN_exit()
  130. Controller.Pause = False
  131. Controller.Stop
  132. End Sub
  133.  
  134. Set LampCallback=GetRef("UpdateMultipleLamps")
  135.  
  136. dim CZ,NewCZ,DTZ,NewDTZ,BZ,NewBZ
  137. CZ=0
  138. DTZ=0
  139. BZ=0
  140.  
  141. Sub UpdateMultipleLamps
  142. NewCZ=L12.State
  143. If NewCZ<>CZ Then
  144. If L12.State=1 And bsTrough.Balls>0 Then bsTrough.ExitSol_On
  145. End If
  146. CZ=NewCZ
  147. NewDTZ=L13.State
  148. If NewDTZ<>DTZ Then
  149. If L13.State=1 Then dtWhite.DropSol_On
  150. End If
  151. DTZ=NewDTZ
  152. NewBZ=L14.State
  153. If NewBZ<>BZ Then
  154. Controller.Switch(53)=0
  155. Kicker2.Kick 0,35
  156. End If
  157. BZ=NewBZ
  158. End Sub
  159.  
  160. 'constants
  161. Const sdtGreen=1'ok
  162. Const sdtRed=2'ok
  163. Const sdtBlue=5'ok
  164. Const sdtYellow=6'ok
  165. Const sCoin1=3'ok
  166. Const sCoin2=4'ok
  167. Const sCoin3=7'ok
  168. Const sknocker=8
  169. Const sOutHole=9
  170. Const swCaptiveBack=64
  171.  
  172. SolCallback(sdtGreen)="dtGreen.SolDropUp"
  173. SolCallback(sdtRed)="dtRed.SolDropUp"
  174. SolCallback(sdtYellow)="dtYellow.SolDropUp"
  175. SolCallback(13)="dtWhite.SolDropUp"
  176. SolCallback(sdtBlue)="dtBlue.SolDropUp"
  177. SolCallback(sKnocker)="VpmSolSound SoundFX(""knocker"",DOFKnocker),"
  178. SolCallback(sOutHole)="HandleTrough"
  179.  
  180. 'SolCallback(sLLFlipper)="VpmSolFlipper LeftFlipper,nothing,"
  181. 'SolCallback(sLRFlipper)="SolRightF"
  182.  
  183. 'Sub SolRightF(Enabled)
  184. ' If Enabled Then
  185. ' LeftFlipper1.RotateToEnd
  186. ' VpmSolFlipper RightFlipper,RightFlipper1,True
  187. ' Else
  188. ' LeftFlipper1.RotateToStart
  189. ' VpmSolFlipper RightFlipper,RightFlipper1,False
  190. ' End If
  191. 'End Sub
  192.  
  193. ' Flipper Subs
  194. SolCallback(sLRFlipper) = "SolRFlipper"
  195. SolCallback(sLLFlipper) = "SolLFlipper"
  196.  
  197. Sub SolLFlipper(Enabled)
  198. If Enabled Then
  199. PlaySound SoundFx("FlipperDown",DOFFlippers):LeftFlipper.RotateToEnd
  200. Else
  201. PlaySound SoundFx("FlipperUp",DOFFlippers):LeftFlipper.RotateToStart
  202. End If
  203. End Sub
  204.  
  205. Sub SolRFlipper(Enabled)
  206. If Enabled Then
  207. PlaySound SoundFx("FlipperDown",DOFFlippers):RightFlipper.RotateToEnd:RightFlipper1.RotateToEnd:LeftFlipper1.RotateToEnd
  208. Else
  209. PlaySound SoundFx("FlipperUp",DOFFlippers):RightFlipper.RotateToStart:RightFlipper1.RotateToStart:LeftFlipper1.RotateToStart
  210. End If
  211. End Sub
  212.  
  213. Sub LeftFlipper_Collide(parm)
  214. PlaySound "fx_rubber_flipper", 0, parm / 10, -0.1, 0.15
  215. End Sub
  216.  
  217. Sub Rightflipper_Collide(parm)
  218. PlaySound "fx_rubber_flipper", 0, parm / 10, 0.1, 0.15
  219. End Sub
  220.  
  221. Sub rubbersCol_Hit(idx):PlaySound "fx_rubber", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  222.  
  223. 'drop targets
  224. Sub sw00_Hit:dtGreen.Hit 1:End Sub
  225. Sub sw10_Hit:dtGreen.Hit 2:End Sub
  226. Sub sw20_Hit:dtGreen.Hit 3:End Sub
  227.  
  228. Sub sw03_Hit:dtYellow.Hit 1:End Sub
  229. Sub sw13_Hit:dtYellow.Hit 2:End Sub
  230. Sub sw23_Hit:dtYellow.Hit 3:End Sub
  231.  
  232. Sub sw02_Hit:dtBlue.Hit 1:End Sub
  233. Sub sw12_Hit:dtBlue.Hit 2:End Sub
  234. Sub sw22_Hit:dtBlue.Hit 3:End Sub
  235.  
  236. Sub sw01_Hit:dtRed.Hit 1:End Sub
  237. Sub sw11_Hit:dtRed.Hit 2:End Sub
  238. Sub sw21_Hit:dtRed.Hit 3:End Sub
  239.  
  240. Sub sw04_Hit:dtWhite.Hit 1:End Sub
  241. Sub sw14_Hit:dtWhite.Hit 2:End Sub
  242. Sub sw24_Hit:dtWhite.Hit 3:End Sub
  243.  
  244. Sub Kicker2_Hit:Controller.Switch(53)=1:End Sub
  245.  
  246. 'spot targets
  247. Sub sw25a_Hit:VpmTimer.PulseSw 25:DOF 113, DOFPulse:End Sub ' #1 spot target
  248. Sub sw25b_Hit:VpmTimer.PulseSw 25:DOF 113, DOFPulse:End Sub ' #3 spot target
  249. Sub sw15a_Hit:VpmTimer.PulseSw 15:DOF 114, DOFPulse:End Sub ' lower rightspot target
  250. Sub sw15b_Hit:VpmTimer.PulseSw 15:DOF 113, DOFPulse:End Sub ' #2 spot target
  251. Sub sw06_Hit:VpmTimer.PulseSw 6:End Sub ' captive ball spot target
  252.  
  253. 'rollovers/rollunders
  254. Sub sw26_Hit:Controller.Switch(26)=1:End Sub
  255. Sub sw26_UnHit:Controller.Switch(26)=0:End Sub
  256. 'Sub sw50_Hit:Controller.Switch(50)=1:End Sub
  257. 'Sub sw50_UnHit:Controller.Switch(50)=0:End Sub
  258. Sub sw50_Hit:VpmTimer.PulseSw 50:End Sub
  259. 'Sub sw51_Hit:Controller.Switch(51)=1:End Sub
  260. 'Sub sw51_unHit:Controller.Switch(51)=0:End Sub
  261. Sub sw51_Hit:VpmTimer.PulseSw 51:End Sub
  262.  
  263. 'Bumpers/Slingshots
  264. Sub Bumper1_Hit:VpmTimer.PulseSw 52:PlaySound SoundFX("jet1",DOFContactors):DOF 101, DOFPulse:End Sub
  265. Sub Bumper2_Hit:VpmTimer.PulseSw 52:PlaySound SoundFX("jet1",DOFContactors):DOF 102, DOFPulse:End Sub
  266. Sub Bumper3_Hit:VpmTimer.PulseSw 52:PlaySound SoundFX("jet1",DOFContactors):DOF 103, DOFPulse:End Sub
  267. Sub Bumper4_Hit:VpmTimer.PulseSw 52:PlaySound SoundFX("jet1",DOFContactors):DOF 104, DOFPulse:End Sub
  268. Sub Bumper5_Hit:VpmTimer.PulseSw 52:PlaySound SoundFX("jet1",DOFContactors):DOF 105, DOFPulse:End Sub
  269. Sub Bumper6_Hit:VpmTimer.PulseSw 52:PlaySound SoundFX("jet1",DOFContactors):DOF 106, DOFPulse:End Sub
  270. Sub Bumper7_Hit:VpmTimer.PulseSw 52:PlaySound SoundFX("jet1",DOFContactors):DOF 107, DOFPulse:End Sub
  271.  
  272. dim rSlingStep:rSlingStep=0
  273. Sub RightSlingshot_Timer
  274. select case rSlingStep
  275. case 1: rsling1.visible=0:rsling2.visible=1
  276. case 2: rsling2.visible=0:rsling3.visible=1
  277. case 3: rsling3.visible=0:rsling0.visible=1:RightSlingshot.TimerEnabled=0
  278. end select
  279. rSlingStep = rSlingStep + 1
  280. end sub
  281.  
  282. dim lSlingStep:lSlingStep=0
  283. Sub LeftSlingShot_Timer
  284. select case lSlingStep
  285. case 1: lsling1.visible=0:lsling2.visible=1
  286. case 2: lsling2.visible=0:lsling3.visible=1
  287. case 3: lsling3.visible=0:lsling0.visible=1:LeftSlingshot.TimerEnabled=0
  288. end select
  289. lSlingStep = lSlingStep + 1
  290. end sub
  291.  
  292.  
  293. Sub LeftSlingshot_Slingshot:PlaySound SoundFX("rsling",DOFContactors):VpmTimer.PulseSw 16:DOF 108, 2:lSlingStep=0:LeftSlingshot.TimerEnabled=1:End Sub
  294. Sub RightSlingshot_Slingshot:PlaySound SoundFX("rsling",DOFContactors):VpmTimer.PulseSw 16:DOF 109, 2:rSlingStep=0:RightSlingshot.TimerEnabled=1:End Sub
  295. Sub upsling_Slingshot:PlaySound SoundFX("rsling",DOFContactors):VpmTimer.PulseSw 16:DOF 110, 2:End Sub
  296. Sub msling_Slingshot:PlaySound SoundFX("rsling",DOFContactors):VpmTimer.PulseSw 16:DOF 111, 2:End Sub
  297. Sub mrslingshot_Slingshot:PlaySound SoundFX("rsling",DOFContactors):VpmTimer.PulseSw 16:DOF 112, 2:End Sub
  298. Sub mlslingshot_Slingshot:PlaySound SoundFX("rsling",DOFContactors):VpmTimer.PulseSw 16:DOF 112, 2:End Sub
  299.  
  300. sub UpdateFlippers
  301. pRightFlipper.rotZ = RightFlipper.currentAngle
  302. pLeftFlipper.rotZ = LeftFlipper.currentAngle
  303. pRightFlipper1.rotZ = RightFlipper1.currentAngle
  304. pLeftFlipper1.rotZ = LeftFlipper1.currentAngle
  305. end Sub
  306.  
  307. Set Lights(3)=L3
  308. Set Lights(12)=L12
  309. Set Lights(13)=L13
  310. Set Lights(14)=L14
  311. Set Lights(15)=L15
  312. Set Lights(16)=L16
  313. Set Lights(17)=L17
  314. Set Lights(18)=L18
  315. Set Lights(19)=L19
  316. Set Lights(20)=L20
  317. Set Lights(21)=L21
  318. Set Lights(22)=L22
  319. Set Lights(23)=L23
  320. Set Lights(24)=L24
  321. Set Lights(25)=L25
  322. Set Lights(26)=L26
  323. Set Lights(27)=L27
  324. Set Lights(28)=L28
  325. Set Lights(29)=L29
  326. Set Lights(30)=L30
  327. Set Lights(31)=L31
  328. Set Lights(32)=L32
  329. Set Lights(33)=L33
  330. Set Lights(34)=L34
  331. Set Lights(35)=L35
  332. Set Lights(36)=L36
  333. Set Lights(37)=L37
  334. Set Lights(38)=L38
  335. Set Lights(39)=L39
  336. Set Lights(40)=L40
  337. Set Lights(41)=L41
  338. Set Lights(42)=L42
  339.  
  340. Sub LightTimer_Timer
  341. if L15.State=1 then L50.State=1 else L50.State=0 end if
  342. if L19.State=1 then L51.State=1:L53.State=1 else L51.State=0:L53.State=0 end if
  343. if L40.State=1 then L52.State=1 else L52.State=0 end if
  344. if L42.State=1 then L54.State=1 else L54.State=0 end if
  345. if L24.State=1 then L55.State=1 else L55.State=0 end if
  346. if L30.State=1 then L56.State=1 else L56.State=0 end if
  347. UpdateFlippers
  348. End Sub
  349.  
  350. Sub sw67_Hit:Controller.Switch(55)=1:End Sub
  351. Sub HandleTrough(Enabled)
  352. If Enabled Then
  353. Controller.Switch(55)=0
  354. bsTrough.AddBall 0
  355. sw67.Destroyball
  356. End If
  357. End Sub
  358.  
  359. ' *********************************************************************
  360. ' Supporting Ball & Sound Functions
  361. ' *********************************************************************
  362.  
  363. Function Vol(ball) ' Calculates the Volume of the sound based on the ball speed
  364. Vol = Csng(BallVel(ball) ^2 / 2000)
  365. End Function
  366.  
  367. Function Pan(ball) ' Calculates the pan for a ball based on the X position on the table. "table1" is the name of the table
  368. Dim tmp
  369. tmp = ball.x * 2 / GN.width-1
  370. If tmp > 0 Then
  371. Pan = Csng(tmp ^10)
  372. Else
  373. Pan = Csng(-((- tmp) ^10) )
  374. End If
  375. End Function
  376.  
  377. Function Pitch(ball) ' Calculates the pitch of the sound based on the ball speed
  378. Pitch = BallVel(ball) * 20
  379. End Function
  380.  
  381. Function BallVel(ball) 'Calculates the ball speed
  382. BallVel = INT(SQR((ball.VelX ^2) + (ball.VelY ^2) ) )
  383. End Function
  384.  
  385. '*****************************************
  386. ' JP's VP10 Rolling Sounds
  387. '*****************************************
  388.  
  389. Const tnob = 7 ' total number of balls in this table is 4, but always use a higher number here bacuse of the timing
  390. ReDim rolling(tnob)
  391. InitRolling
  392.  
  393. Sub InitRolling
  394. Dim i
  395. For i = 0 to tnob
  396. rolling(i) = False
  397. Next
  398. End Sub
  399.  
  400. Sub RollingTimer_Timer()
  401. Dim BOT, b
  402. BOT = GetBalls
  403.  
  404. ' stop the sound of deleted balls
  405. For b = UBound(BOT) + 1 to tnob
  406. rolling(b) = False
  407. StopSound("fx_ballrolling" & b)
  408. Next
  409.  
  410. ' exit the sub if no balls on the table
  411. If UBound(BOT) = -1 Then Exit Sub
  412.  
  413. ' play the rolling sound for each ball
  414. For b = 0 to UBound(BOT)
  415. If BallVel(BOT(b) ) > 1 AND BOT(b).z < 30 Then
  416. rolling(b) = True
  417. PlaySound("fx_ballrolling" & b), -1, Vol(BOT(b) ), Pan(BOT(b) ), 0, Pitch(BOT(b) ), 1, 0
  418. Else
  419. If rolling(b) = True Then
  420. StopSound("fx_ballrolling" & b)
  421. rolling(b) = False
  422. End If
  423. End If
  424. Next
  425. End Sub
  426.  
  427. '**********************
  428. ' Ball Collision Sound
  429. '**********************
  430.  
  431. Sub OnBallBallCollision(ball1, ball2, velocity)
  432. PlaySound("fx_collide"), 0, Csng(velocity) ^2 / 2000, Pan(ball1), 0, Pitch(ball1), 0, 0
  433. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement