Advertisement
Arngrim

Untitled

Oct 8th, 2017
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.80 KB | None | 0 0
  1. ' Diamond Lady / IPD No. 678 / Premier February, 1988 / 4 Players
  2. ' VPX v1.0 by JPSalas 2017
  3. ' Solenoids based on Destruk's script
  4.  
  5. Option Explicit
  6. Randomize
  7.  
  8. On Error Resume Next
  9. ExecuteGlobal GetTextFile("controller.vbs")
  10. If Err Then MsgBox "You need the controller.vbs in order to run this table, available in the vp10 package"
  11. On Error Goto 0
  12.  
  13. LoadVPM "01210000", "sys80.vbs", 3.1
  14.  
  15. Dim bsTrough, dtLBank, dtRBank, dtMBank, dtCBank, bsTop, kickbackIM
  16. Dim x, bump1, bump2, bump3
  17.  
  18. Const UseSolenoids = 1
  19. Const UseLamps = 0
  20. Const UseGI = 0
  21. Const UseSync = 0 'set it to 1 if the table runs too fast
  22. Const HandleMech = 0
  23.  
  24. Dim VarHidden
  25. If Table1.ShowDT = true then
  26. VarHidden = 1
  27. For each x in aReels
  28. x.Visible = 1
  29. Next
  30. else
  31. VarHidden = 0
  32. For each x in aReels
  33. x.Visible = 0
  34. Next
  35. lrail.Visible = 0
  36. rrail.Visible = 0
  37. end if
  38.  
  39. if B2SOn = true then VarHidden = 1
  40.  
  41. ' Standard Sounds
  42. Const SSolenoidOn = "fx_Solenoid"
  43. Const SSolenoidOff = ""
  44. Const SCoin = "fx_coin"
  45.  
  46. '************
  47. ' Table init.
  48. '************
  49.  
  50. Sub table1_Init
  51. Dim cGameName
  52. With Controller
  53. cGameName = "diamond"
  54. .GameName = cGameName
  55. .Games(cGameName).Settings.Value("sound") = 1 'ensure the sound is on
  56. .SplashInfoLine = "Diamond Lady, Gottlieb 1988" & vbNewLine & "VPX table by JPSalas v.1.0"
  57. .Games(cGameName).Settings.Value("dmd_red") = 0 'set dmd lights to color blue
  58. .Games(cGameName).Settings.Value("dmd_green") = 128
  59. .Games(cGameName).Settings.Value("dmd_blue") = 255
  60. .Games(cGameName).Settings.Value("rol") = 0
  61. .HandleMechanics = 0
  62. .HandleKeyboard = 0
  63. .ShowDMDOnly = 1
  64. .ShowFrame = 0
  65. .ShowTitle = 0
  66. .Hidden = VarHidden
  67. If Err Then MsgBox Err.Description
  68. End With
  69. On Error Goto 0
  70. Controller.SolMask(0) = 0
  71. vpmTimer.AddTimer 2000, "Controller.SolMask(0)=&Hffffffff'" 'ignore all solenoids - then add the Timer to renable all the solenoids after 2 seconds
  72. Controller.Run GetPlayerHWnd
  73.  
  74. ' Nudging
  75. vpmNudge.TiltSwitch = 57
  76. vpmNudge.Sensitivity = 1
  77. vpmNudge.TiltObj = Array(Bumper1, Bumper2, Bumper3, LeftSlingshot, RightSlingshot)
  78.  
  79. ' Trough & Ball Release
  80. Set bsTrough = New cvpmBallStack
  81. With bsTrough
  82. .InitSw 66, 0, 46, 0, 0, 0, 0, 0
  83. .InitKick BallRelease, 80, 6
  84. .InitExitSnd SoundFX("fx_ballrel",DOFContactors), SoundFX("fx_Solenoid",DOFContactors)
  85. .Balls = 2
  86. End With
  87.  
  88. ' Top saucer
  89. Set bsTop = New cvpmBallStack
  90. With bsTop
  91. .InitSaucer sw74, 74, 300, 28
  92. .InitExitSnd SoundFX("fx_kicker", DOFContactors), SoundFX("fx_Solenoid", DOFContactors)
  93. End With
  94.  
  95. ' Left Drop targets
  96. set dtLBank = new cvpmdroptarget
  97. With dtLBank
  98. .InitDrop Array(sw20, sw30, sw40, sw50, sw60), Array(20, 30, 40, 50, 60)
  99. .initsnd SoundFX("", DOFDropTargets), SoundFX("fx_resetdrop", DOFContactors)
  100. End With
  101.  
  102. ' Middle Drop targets
  103. set dtMBank = new cvpmdroptarget
  104. With dtMBank
  105. .InitDrop Array(sw21, sw31, sw41, sw51), Array(21, 31, 41, 51)
  106. .initsnd SoundFX("", DOFDropTargets), SoundFX("fx_resetdrop", DOFContactors)
  107. End With
  108.  
  109. ' Right Drop targets
  110. set dtRBank = new cvpmdroptarget
  111. With dtRBank
  112. .InitDrop Array(sw22, sw32, sw42, sw52, sw62), Array(22, 32, 42, 52, 62)
  113. .initsnd SoundFX("", DOFDropTargets), SoundFX("fx_resetdrop", DOFContactors)
  114. End With
  115.  
  116. ' Center Drop target
  117. set dtCBank = new cvpmdroptarget
  118. With dtCBank
  119. .InitDrop sw23, 23
  120. .initsnd SoundFX("", DOFDropTargets), SoundFX("fx_resetdrop", DOFContactors)
  121. End With
  122.  
  123. ' Impulse Plunger used as the left kickback
  124. Set kickbackIM = New cvpmImpulseP
  125. With kickbackIM
  126. .InitImpulseP swKickback, 26, 0.4
  127. .Random 0.6
  128. '.Switch 43
  129. .InitExitSnd "fx_popper", "fx_popper"
  130. .CreateEvents "kickbackIM"
  131. End With
  132.  
  133. ' Main Timer init
  134. PinMAMETimer.Interval = PinMAMEInterval
  135. PinMAMETimer.Enabled = 1
  136. End Sub
  137.  
  138. Sub table1_Paused:Controller.Pause = 1:End Sub
  139. Sub table1_unPaused:Controller.Pause = 0:End Sub
  140.  
  141. '**********
  142. ' Keys
  143. '**********
  144.  
  145. Sub table1_KeyDown(ByVal Keycode)
  146. If KeyCode = RightFlipperKey Then Controller.Switch(72) = 1
  147. If keycode = LeftTiltKey Then Nudge 90, 5:PlaySound SoundFX("fx_nudge", 0), 0, 1, -0.1, 0.25
  148. If keycode = RightTiltKey Then Nudge 270, 5:PlaySound SoundFX("fx_nudge", 0), 0, 1, 0.1, 0.25
  149. If keycode = CenterTiltKey Then Nudge 0, 6:PlaySound SoundFX("fx_nudge", 0), 0, 1, 0, 0.25
  150. If keycode = PlungerKey Then PlaySound "fx_PlungerPull", 0, 1, 0.1, 0.25:Plunger.Pullback
  151. If vpmKeyDown(keycode)Then Exit Sub
  152. If keycode = KeyRules Then Rules
  153. End Sub
  154.  
  155. Sub table1_KeyUp(ByVal Keycode)
  156. If KeyCode = RightFlipperKey Then Controller.Switch(72) = 0
  157. If keycode = PlungerKey Then PlaySound "fx_plunger", 0, 1, 0.1, 0.25:Plunger.Fire
  158. If vpmKeyUp(keycode)Then Exit Sub
  159. End Sub
  160.  
  161. '*********
  162. ' Switches
  163. '*********
  164.  
  165. ' Slings & div switches
  166. Dim LStep, RStep
  167.  
  168. Sub LeftSlingShot_Slingshot
  169. PlaySound SoundFX("fx_slingshot", DOFContactors), 0, 1, -0.05, 0.05
  170. DOF 103, DOFPulse
  171. LeftSling4.Visible = 1
  172. Lemk.RotX = 26
  173. LStep = 0
  174. vpmTimer.PulseSw 33
  175. LeftSlingShot.TimerEnabled = 1
  176. End Sub
  177.  
  178. Sub LeftSlingShot_Timer
  179. Select Case LStep
  180. Case 1:LeftSLing4.Visible = 0:LeftSLing3.Visible = 1:Lemk.RotX = 14
  181. Case 2:LeftSLing3.Visible = 0:LeftSLing2.Visible = 1:Lemk.RotX = 2
  182. Case 3:LeftSLing2.Visible = 0:Lemk.RotX = -10:LeftSlingShot.TimerEnabled = 0
  183. End Select
  184. LStep = LStep + 1
  185. End Sub
  186.  
  187. Sub RightSlingShot_Slingshot
  188. PlaySound SoundFX("fx_slingshot", DOFContactors), 0, 1, 0.05, 0.05
  189. DOF 104, DOFPulse
  190. RightSling4.Visible = 1
  191. Remk.RotX = 26
  192. RStep = 0
  193. vpmTimer.PulseSw 33
  194. RightSlingShot.TimerEnabled = 1
  195. End Sub
  196.  
  197. Sub RightSlingShot_Timer
  198. Select Case RStep
  199. Case 1:RightSLing4.Visible = 0:RightSLing3.Visible = 1:Remk.RotX = 14
  200. Case 2:RightSLing3.Visible = 0:RightSLing2.Visible = 1:Remk.RotX = 2
  201. Case 3:RightSLing2.Visible = 0:Remk.RotX = -10:RightSlingShot.TimerEnabled = 0
  202. End Select
  203. RStep = RStep + 1
  204. End Sub
  205.  
  206. ' Bumpers
  207. Sub Bumper1_Hit:vpmTimer.PulseSw 61:PlaySound SoundFX("fx_bumper",DOFContactors), 0, 1, 0, 0.1:DOF 105, DOFPulse:End Sub
  208. Sub Bumper2_Hit:vpmTimer.PulseSw 71:PlaySound SoundFX("fx_bumper",DOFContactors), 0, 1, 0, 0.1:End Sub
  209. Sub Bumper3_Hit:vpmTimer.PulseSw 61:PlaySound SoundFX("fx_bumper",DOFContactors), 0, 1, 0, 0.1:DOF 107, DOFPulse:End Sub
  210.  
  211. ' Drain holes
  212. Sub Drain_Hit:Playsound "fx_drain":bsTrough.AddBall Me:End Sub
  213.  
  214. ' Rollovers
  215. Sub sw43_Hit:Controller.Switch(43) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  216. Sub sw43_UnHit:Controller.Switch(43) = 0:End Sub
  217.  
  218. Sub sw53_Hit:Controller.Switch(53) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  219. Sub sw53_UnHit:Controller.Switch(53) = 0:End Sub
  220.  
  221. Sub sw63_Hit:Controller.Switch(63) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  222. Sub sw63_UnHit:Controller.Switch(63) = 0:End Sub
  223.  
  224. Sub sw73_Hit:Controller.Switch(73) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  225. Sub sw73_UnHit:Controller.Switch(73) = 0:End Sub
  226.  
  227. Sub sw65_Hit:Controller.Switch(65) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  228. Sub sw65_UnHit:Controller.Switch(65) = 0:End Sub
  229.  
  230. Sub sw70_Hit:Controller.Switch(70) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  231. Sub sw70_UnHit:Controller.Switch(70) = 0:End Sub
  232.  
  233. Sub sw45_Hit:Controller.Switch(45) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  234. Sub sw45_UnHit:Controller.Switch(45) = 0:End Sub
  235.  
  236. Sub sw55_Hit:Controller.Switch(55) = 1:PlaySound "fx_sensor", 0, 1, pan(ActiveBall):End Sub
  237. Sub sw55_UnHit:Controller.Switch(55) = 0:End Sub
  238.  
  239. ' Ramp Switches
  240. Sub sw44_Hit():Controller.Switch(44) = 1:End Sub
  241. Sub sw44_UnHit:Controller.Switch(44) = 0:End Sub
  242.  
  243. 'Spinners
  244. Sub sw64_Spin:vpmTimer.PulseSw 64:PlaySound "fx_spinner", 0, 1, 0.1:End Sub
  245. Sub sw54_Spin:vpmTimer.PulseSw 54:PlaySound "fx_spinner", 0, 1, -0.1:End Sub
  246.  
  247. ' Droptargets
  248. Sub sw20_Hit:dtLBank.hit 1:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  249. Sub sw30_Hit:dtLBank.hit 2:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  250. Sub sw40_Hit:dtLBank.hit 3:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  251. Sub sw50_Hit:dtLBank.hit 4:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  252. Sub sw60_Hit:dtLBank.hit 5:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  253. Sub sw22_Hit:dtRBank.hit 1:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  254. Sub sw32_Hit:dtRBank.hit 2:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  255. Sub sw42_Hit:dtRBank.hit 3:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  256. Sub sw52_Hit:dtRBank.hit 4:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  257. Sub sw62_Hit:dtRBank.hit 5:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  258. Sub sw21_Hit:dtMBank.hit 1:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  259. Sub sw31_Hit:dtMBank.hit 2:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  260. Sub sw41_Hit:dtMBank.hit 3:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  261. Sub sw51_Hit:dtMBank.hit 4:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  262. Sub sw23_Hit:dtCBank.hit 1:PlaySound SoundFX("fx_droptarget", DOFDropTargets), 0, 1, pan(ActiveBall):End Sub
  263.  
  264. ' Targets
  265. Sub sw24_Hit:vpmTimer.PulseSw 24:PlaySound SoundFX("fx_target", DOFTargets), 0, 1, pan(ActiveBall):End Sub
  266.  
  267. Sub sw34_Hit:vpmTimer.PulseSw 34:PlaySound SoundFX("fx_target", DOFTargets), 0, 1, pan(ActiveBall):End Sub
  268.  
  269. Sub sw26_Hit:vpmTimer.PulseSw 26:PlaySound SoundFX("fx_target", DOFTargets), 0, 1, pan(ActiveBall):End Sub
  270.  
  271. Sub sw36_Hit:vpmTimer.PulseSw 36:PlaySound SoundFX("fx_target", DOFTargets), 0, 1, pan(ActiveBall):End Sub
  272.  
  273. Sub sw25_Hit:vpmTimer.PulseSw 25:PlaySound SoundFX("fx_target", DOFTargets), 0, 1, pan(ActiveBall):End Sub
  274.  
  275. Sub sw35_Hit:vpmTimer.PulseSw 35:PlaySound SoundFX("fx_target", DOFTargets), 0, 1, pan(ActiveBall):End Sub
  276.  
  277. ' VUK & Holes
  278.  
  279. Sub sw74_Hit:PlaySound "fx_kicker_enter", 0, 1, 0.01:bsTop.AddBall 0:End Sub
  280.  
  281. '********************
  282. 'Solenoids & Flashers
  283. '********************
  284.  
  285. SolCallback(2) = "dtMBank.SolDropUp"
  286. SolCallback(3) = "SetLamp 103," 'Left Spinner Flasher
  287. SolCallback(4) = "SetLamp 104," 'Right Orange Flashers
  288. SolCallback(5) = "dtRBank.SolDropUp"
  289. SolCallback(6) = "dtLBank.SolDropUp"
  290. SolCallback(7) = "SetLamp 107," 'Right Red Flashers
  291. SolCallback(8) = "vpmSolSound SoundFX(""fx_knocker"",DOFKnocker),"
  292. SolCallback(9) = "bsTrough.SolIn"
  293. SolCallback(10) = "dtCBank.SolDropUp"
  294.  
  295. '**************
  296. ' Flipper Subs
  297. '**************
  298.  
  299. SolCallback(sLRFlipper) = "SolRFlipper"
  300. SolCallback(sLLFlipper) = "SolLFlipper"
  301.  
  302. Sub SolLFlipper(Enabled)
  303. If Enabled Then
  304. PlaySound SoundFX("fx_flipperup", DOFFlippers), 0, 1, -0.1, 0.1
  305. LeftFlipper1.RotateToEnd
  306. LeftFlipper2.RotateToEnd
  307. LeftFlipper3.RotateToEnd
  308. LeftFlipper4.RotateToEnd
  309. Else
  310. PlaySound SoundFX("fx_flipperdown", DOFFlippers), 0, 1, -0.1, 0.1
  311. LeftFlipper1.RotateToStart
  312. LeftFlipper2.RotateToStart
  313. LeftFlipper3.RotateToStart
  314. LeftFlipper4.RotateToStart
  315. End If
  316. End Sub
  317.  
  318. Sub SolRFlipper(Enabled)
  319. If Enabled Then
  320. PlaySound SoundFX("fx_flipperup", DOFFlippers), 0, 1, 0.1, 0.1
  321. RightFlipper1.RotateToEnd
  322. RightFlipper2.RotateToEnd
  323. RightFlipper3.RotateToEnd
  324. RightFlipper4.RotateToEnd
  325. Else
  326. PlaySound SoundFX("fx_flipperdown", DOFFlippers), 0, 1, 0.1, 0.1
  327. RightFlipper1.RotateToStart
  328. RightFlipper2.RotateToStart
  329. RightFlipper3.RotateToStart
  330. RightFlipper4.RotateToStart
  331. End If
  332. End Sub
  333.  
  334. Sub LeftFlipper1_Collide(parm)
  335. PlaySound "fx_rubber_flipper", 0, parm / 10, -0.1, 0.25
  336. End Sub
  337.  
  338. Sub RightFlipper1_Collide(parm)
  339. PlaySound "fx_rubber_flipper", 0, parm / 10, 0.1, 0.25
  340. End Sub
  341.  
  342. '*****************************
  343. 'Extra Lamps used as solenoids
  344. 'Based on destruk's code
  345. 'adapted to the fading lights
  346. '*****************************
  347.  
  348. Dim NewL12, OldL12, NewL2, OldL2, NewL13, OldL13, NewL14, OldL14, NewL15, OldL15, NewL16, OldL16, NewL17, OldL17, NewL18, OldL18
  349. OldL12 = 0:OldL2 = 0:OldL13 = 0:OldL14 = 0:OldL15 = 0:OldL16 = 0:OldL17 = 0:OldL18 = 0
  350.  
  351. Set LampCallback = GetRef("ExtraLamps")
  352. Sub ExtraLamps
  353. 'Aux Relay
  354. NewL12 = Controller.Lamp(12)
  355. If NewL12 <> OldL12 Then
  356. If NewL12 Then
  357. Aux.Enabled = 1
  358. Else
  359. Aux.Enabled = 0
  360. SetLamp 111, 0:SetLamp 112, 0:SetLamp 113, 0:SetLamp 114, 0:SetLamp 115, 0
  361. End If
  362. End If
  363. OldL12 = NewL12
  364.  
  365. 'Ball Release
  366. NewL2 = Controller.Lamp(2)
  367. If NewL2 <> OldL2 Then
  368. If NewL2 Then bsTrough.ExitSol_On
  369. End If
  370. OldL2 = NewL2
  371.  
  372. 'Top Kicker
  373. NewL13 = Controller.Lamp(13)
  374. If NewL13 <> OldL13 Then
  375. If NewL13 Then bsTop.ExitSol_On
  376. End If
  377. OldL13 = NewL13
  378.  
  379. 'Kickback
  380. NewL14 = Controller.Lamp(14)
  381. If NewL14 <> OldL14 Then
  382. If NewL14 Then kickbackIM.AutoFire:DOF 108, DOFPulse
  383. End If
  384. OldL14 = NewL14
  385.  
  386. '#1 Drop Target Trip Coil
  387. NewL15 = Controller.Lamp(15)
  388. If NewL15 <> OldL15 Then
  389. If NewL15 Then
  390. dtLBank.Hit 2
  391. dtLBank.Hit 3
  392. dtLBank.Hit 4
  393. End If
  394. End If
  395. OldL15 = NewL15
  396.  
  397. '#2 Drop Target Trip Coil
  398. NewL16 = Controller.Lamp(16)
  399. If NewL16 <> OldL16 Then
  400. If NewL16 Then
  401. dtMBank.Hit 2
  402. dtMBank.Hit 3
  403. End If
  404. End If
  405. OldL16 = NewL16
  406.  
  407. '#3 Drop Target Trip Coil
  408. NewL17 = Controller.Lamp(17)
  409. If NewL17 <> OldL17 Then
  410. If NewL17 Then
  411. dtRBank.Hit 2
  412. dtRBank.Hit 3
  413. dtRBank.Hit 4
  414. End If
  415. End If
  416. OldL17 = NewL17
  417.  
  418. '#4 Drop Target Trip Coil
  419. NewL18 = Controller.Lamp(18)
  420. If NewL18 <> OldL18 Then
  421. If NewL18 Then dtCBank.Hit 1
  422. End If
  423. OldL18 = NewL18
  424. End Sub
  425.  
  426. Dim AuxCount:AuxCount = 0
  427. Sub Aux_Timer
  428. Select Case AuxCount
  429. Case 0:SetLamp 115, 1:SetLamp 111, 0
  430. Case 1:SetLamp 114, 1:SetLamp 115, 0
  431. Case 2:SetLamp 113, 1:SetLamp 114, 0
  432. Case 3:SetLamp 112, 1:SetLamp 113, 0
  433. Case 4:SetLamp 111, 1:SetLamp 112, 0
  434. End Select
  435. AuxCount = AuxCount + 1
  436. If AuxCount = 5 then AuxCount = 0
  437. End Sub
  438.  
  439. '*****************
  440. ' Gi Effects
  441. '*****************
  442.  
  443. Dim OldGiState
  444. OldGiState = -1 'start witht he Gi off
  445.  
  446. Sub GiON
  447. For each x in aGiLights
  448. GiEffect
  449. Next
  450. End Sub
  451.  
  452. Sub GiOFF
  453. For each x in aGiLights
  454. x.State = 0
  455. Next
  456. End Sub
  457.  
  458. Sub GiEffect
  459. For each x in aGiLights
  460. x.Duration 2, 1000, 1
  461. Next
  462. End Sub
  463.  
  464. Sub GIUpdate
  465. Dim tmp, obj
  466. tmp = Getballs
  467. If UBound(tmp) <> OldGiState Then
  468. OldGiState = Ubound(tmp)
  469. If UBound(tmp) = -1 Then
  470. GiOff
  471. Else
  472. GiOn
  473. End If
  474. End If
  475. End Sub
  476.  
  477. '***************************************************
  478. ' JP's VP10 Fading Lamps & Flashers
  479. ' Based on PD's Fading Light System
  480. ' SetLamp 0 is Off
  481. ' SetLamp 1 is On
  482. ' fading for non opacity objects is 4 steps
  483. '***************************************************
  484.  
  485. Dim LampState(200), FadingLevel(200)
  486. Dim FlashSpeedUp(200), FlashSpeedDown(200), FlashMin(200), FlashMax(200), FlashLevel(200), FlashRepeat(200)
  487.  
  488. InitLamps() ' turn off the lights and flashers and reset them to the default parameters
  489. LampTimer.Interval = 10 'lamp fading speed
  490. LampTimer.Enabled = 1
  491.  
  492. ' Lamp & Flasher Timers
  493.  
  494. Sub LampTimer_Timer()
  495. Dim chgLamp, num, chg, ii
  496. chgLamp = Controller.ChangedLamps
  497. If Not IsEmpty(chgLamp)Then
  498. For ii = 0 To UBound(chgLamp)
  499. LampState(chgLamp(ii, 0)) = chgLamp(ii, 1) 'keep the real state in an array
  500. FadingLevel(chgLamp(ii, 0)) = chgLamp(ii, 1) + 4 'actual fading step
  501. Next
  502. End If
  503. If VarHidden Then
  504. UpdateLeds
  505. End If
  506. UpdateLamps
  507. GIUpdate
  508. RollingUpdate
  509. End Sub
  510.  
  511. Sub UpdateLamps
  512. NFadeLm 3, l3a
  513. NFadeL 3, l3
  514. NFadeL 5, l5
  515. NFadeL 6, l6
  516. NFadeL 7, l7
  517. NFadeL 8, l8
  518. NFadeL 9, l9
  519. NFadeL 10, l10
  520. NFadeL 11, l11
  521. NFadeLm 19, l19b
  522. NFadeL 19, l19
  523. NFadeLm 20, l20a
  524. NFadeL 20, l20
  525. Flash 21, l21
  526. Flash 22, l22
  527. Flash 23, l23
  528. Flash 24, l24
  529. Flash 25, l25
  530. Flash 26, l26
  531. Flash 27, l27
  532. NFadeL 28, l28
  533. NFadeL 29, l29
  534. NFadeL 30, l30
  535. NFadeLm 31, l31
  536. NFadeLm 31, l31b
  537. NFadeL 31, l31d
  538. NFadeL 32, l32
  539. NFadeL 33, l33
  540. NFadeL 34, l34
  541. NFadeL 35, l35
  542. NFadeL 36, l36
  543. NFadeL 37, l37
  544. NFadeL 38, l38
  545. NFadeL 39, l39
  546. NFadeL 41, l41
  547. NFadeL 42, l42
  548. NFadeL 43, l43
  549. NFadeL 44, l44
  550. NFadeLm 45, l45
  551. NFadeL 45, l45b
  552. NFadeL 46, l46
  553. NFadeL 47, l47
  554. NFadeL 51, l51
  555.  
  556. 'flashers
  557. NFadeLm 103, f31
  558. NFadeL 103, f3
  559. Flashm 104, f41
  560. Flash 104, f4
  561. Flashm 107, f71
  562. Flash 107, f7
  563.  
  564. ' Aux lights
  565. NFadeL 111, Aux1
  566. NFadeL 112, Aux2
  567. NFadeL 113, Aux3
  568. NFadeL 114, Aux4
  569. NFadeL 115, Aux5
  570. End Sub
  571.  
  572. ' div lamp subs
  573.  
  574. Sub InitLamps()
  575. Dim x
  576. For x = 0 to 200
  577. LampState(x) = 0 ' current light state, independent of the fading level. 0 is off and 1 is on
  578. FadingLevel(x) = 4 ' used to track the fading state
  579. FlashSpeedUp(x) = 0.2 ' faster speed when turning on the flasher
  580. FlashSpeedDown(x) = 0.1 ' slower speed when turning off the flasher
  581. FlashMax(x) = 1 ' the maximum value when on, usually 1
  582. FlashMin(x) = 0 ' the minimum value when off, usually 0
  583. FlashLevel(x) = 0 ' the intensity of the flashers, usually from 0 to 1
  584. FlashRepeat(x) = 20 ' how many times the flash repeats
  585. Next
  586. End Sub
  587.  
  588. Sub AllLampsOff
  589. Dim x
  590. For x = 0 to 200
  591. SetLamp x, 0
  592. Next
  593. End Sub
  594.  
  595. Sub SetLamp(nr, value)
  596. If value <> LampState(nr)Then
  597. LampState(nr) = abs(value)
  598. FadingLevel(nr) = abs(value) + 4
  599. End If
  600. End Sub
  601.  
  602. ' Lights: used for VP10 standard lights, the fading is handled by VP itself
  603.  
  604. Sub NFadeL(nr, object)
  605. Select Case FadingLevel(nr)
  606. Case 4:object.state = 0:FadingLevel(nr) = 0
  607. Case 5:object.state = 1:FadingLevel(nr) = 1
  608. End Select
  609. End Sub
  610.  
  611. Sub NFadeLm(nr, object) ' used for multiple lights
  612. Select Case FadingLevel(nr)
  613. Case 4:object.state = 0
  614. Case 5:object.state = 1
  615. End Select
  616. End Sub
  617.  
  618. 'Lights, Ramps & Primitives used as 4 step fading lights
  619. 'a,b,c,d are the images used from on to off
  620.  
  621. Sub FadeObj(nr, object, a, b, c, d)
  622. Select Case FadingLevel(nr)
  623. Case 4:object.image = b:FadingLevel(nr) = 6 'fading to off...
  624. Case 5:object.image = a:FadingLevel(nr) = 1 'ON
  625. Case 6, 7, 8:FadingLevel(nr) = FadingLevel(nr) + 1 'wait
  626. Case 9:object.image = c:FadingLevel(nr) = FadingLevel(nr) + 1 'fading...
  627. Case 10, 11, 12:FadingLevel(nr) = FadingLevel(nr) + 1 'wait
  628. Case 13:object.image = d:FadingLevel(nr) = 0 'Off
  629. End Select
  630. End Sub
  631.  
  632. Sub FadeObjm(nr, object, a, b, c, d)
  633. Select Case FadingLevel(nr)
  634. Case 4:object.image = b
  635. Case 5:object.image = a
  636. Case 9:object.image = c
  637. Case 13:object.image = d
  638. End Select
  639. End Sub
  640.  
  641. Sub NFadeObj(nr, object, a, b)
  642. Select Case FadingLevel(nr)
  643. Case 4:object.image = b:FadingLevel(nr) = 0 'off
  644. Case 5:object.image = a:FadingLevel(nr) = 1 'on
  645. End Select
  646. End Sub
  647.  
  648. Sub NFadeObjm(nr, object, a, b)
  649. Select Case FadingLevel(nr)
  650. Case 4:object.image = b
  651. Case 5:object.image = a
  652. End Select
  653. End Sub
  654.  
  655. ' Flasher objects
  656.  
  657. Sub Flash(nr, object)
  658. Select Case FadingLevel(nr)
  659. Case 4 'off
  660. FlashLevel(nr) = FlashLevel(nr)- FlashSpeedDown(nr)
  661. If FlashLevel(nr) < FlashMin(nr)Then
  662. FlashLevel(nr) = FlashMin(nr)
  663. FadingLevel(nr) = 0 'completely off
  664. End if
  665. Object.IntensityScale = FlashLevel(nr)
  666. Case 5 ' on
  667. FlashLevel(nr) = FlashLevel(nr) + FlashSpeedUp(nr)
  668. If FlashLevel(nr) > FlashMax(nr)Then
  669. FlashLevel(nr) = FlashMax(nr)
  670. FadingLevel(nr) = 1 'completely on
  671. End if
  672. Object.IntensityScale = FlashLevel(nr)
  673. End Select
  674. End Sub
  675.  
  676. Sub Flashm(nr, object) 'multiple flashers, it doesn't change anything, it just follows the main flasher
  677. Select Case FadingLevel(nr)
  678. Case 4, 5
  679. Object.IntensityScale = FlashLevel(nr)
  680. End Select
  681. End Sub
  682.  
  683. Sub FlashBlink(nr, object)
  684. Select Case FadingLevel(nr)
  685. Case 4 'off
  686. FlashLevel(nr) = FlashLevel(nr)- FlashSpeedDown(nr)
  687. If FlashLevel(nr) < FlashMin(nr)Then
  688. FlashLevel(nr) = FlashMin(nr)
  689. FadingLevel(nr) = 0 'completely off
  690. End if
  691. Object.IntensityScale = FlashLevel(nr)
  692. If FadingLevel(nr) = 0 AND FlashRepeat(nr)Then 'repeat the flash
  693. FlashRepeat(nr) = FlashRepeat(nr)-1
  694. If FlashRepeat(nr)Then FadingLevel(nr) = 5
  695. End If
  696. Case 5 ' on
  697. FlashLevel(nr) = FlashLevel(nr) + FlashSpeedUp(nr)
  698. If FlashLevel(nr) > FlashMax(nr)Then
  699. FlashLevel(nr) = FlashMax(nr)
  700. FadingLevel(nr) = 1 'completely on
  701. End if
  702. Object.IntensityScale = FlashLevel(nr)
  703. If FadingLevel(nr) = 1 AND FlashRepeat(nr)Then FadingLevel(nr) = 4
  704. End Select
  705. End Sub
  706.  
  707. ' Desktop Objects: Reels & texts (you may also use lights on the desktop)
  708.  
  709. ' Reels
  710.  
  711. Sub FadeR(nr, object)
  712. Select Case FadingLevel(nr)
  713. Case 4:object.SetValue 1:FadingLevel(nr) = 6 'fading to off...
  714. Case 5:object.SetValue 0:FadingLevel(nr) = 1 'ON
  715. Case 6, 7, 8:FadingLevel(nr) = FadingLevel(nr) + 1 'wait
  716. Case 9:object.SetValue 2:FadingLevel(nr) = FadingLevel(nr) + 1 'fading...
  717. Case 10, 11, 12:FadingLevel(nr) = FadingLevel(nr) + 1 'wait
  718. Case 13:object.SetValue 3:FadingLevel(nr) = 0 'Off
  719. End Select
  720. End Sub
  721.  
  722. Sub FadeRm(nr, object)
  723. Select Case FadingLevel(nr)
  724. Case 4:object.SetValue 1
  725. Case 5:object.SetValue 0
  726. Case 9:object.SetValue 2
  727. Case 3:object.SetValue 3
  728. End Select
  729. End Sub
  730.  
  731. 'Texts
  732.  
  733. Sub NFadeT(nr, object, message)
  734. Select Case FadingLevel(nr)
  735. Case 4:object.Text = "":FadingLevel(nr) = 0
  736. Case 5:object.Text = message:FadingLevel(nr) = 1
  737. End Select
  738. End Sub
  739.  
  740. Sub NFadeTm(nr, object, b)
  741. Select Case FadingLevel(nr)
  742. Case 4:object.Text = ""
  743. Case 5:object.Text = message
  744. End Select
  745. End Sub
  746.  
  747. '*****************
  748. ' Leds Display
  749. '*****************
  750.  
  751. Dim Digits(40)
  752.  
  753. Digits(0) = Array(a00, a05, a0c, a0d, a08, a01, a06, a0f, a02, a03, a04, a07, a0b, a0a, a09, a0e)
  754. Digits(1) = Array(a10, a15, a1c, a1d, a18, a11, a16, a1f, a12, a13, a14, a17, a1b, a1a, a19, a1e)
  755. Digits(2) = Array(a20, a25, a2c, a2d, a28, a21, a26, a2f, a22, a23, a24, a27, a2b, a2a, a29, a2e)
  756. Digits(3) = Array(a30, a35, a3c, a3d, a38, a31, a36, a3f, a32, a33, a34, a37, a3b, a3a, a39, a3e)
  757. Digits(4) = Array(a40, a45, a4c, a4d, a48, a41, a46, a4f, a42, a43, a44, a47, a4b, a4a, a49, a4e)
  758. Digits(5) = Array(a50, a55, a5c, a5d, a58, a51, a56, a5f, a52, a53, a54, a57, a5b, a5a, a59, a5e)
  759. Digits(6) = Array(a60, a65, a6c, a6d, a68, a61, a66, a6f, a62, a63, a64, a67, a6b, a6a, a69, a6e)
  760. Digits(7) = Array(a70, a75, a7c, a7d, a78, a71, a76, a7f, a72, a73, a74, a77, a7b, a7a, a79, a7e)
  761. Digits(8) = Array(a80, a85, a8c, a8d, a88, a81, a86, a8f, a82, a83, a84, a87, a8b, a8a, a89, a8e)
  762. Digits(9) = Array(a90, a95, a9c, a9d, a98, a91, a96, a9f, a92, a93, a94, a97, a9b, a9a, a99, a9e)
  763. Digits(10) = Array(aa0, aa5, aac, aad, aa8, aa1, aa6, aaf, aa2, aa3, aa4, aa7, aab, aaa, aa9, aae)
  764. Digits(11) = Array(ab0, ab5, abc, abd, ab8, ab1, ab6, abf, ab2, ab3, ab4, ab7, abb, aba, ab9, abe)
  765. Digits(12) = Array(ac0, ac5, acc, acd, ac8, ac1, ac6, acf, ac2, ac3, ac4, ac7, acb, aca, ac9, ace)
  766. Digits(13) = Array(ad0, ad5, adc, add, ad8, ad1, ad6, adf, ad2, ad3, ad4, ad7, adb, ada, ad9, ade)
  767. Digits(14) = Array(ae0, ae5, aec, aed, ae8, ae1, ae6, aef, ae2, ae3, ae4, ae7, aeb, aea, ae9, aee)
  768. Digits(15) = Array(af0, af5, afc, afd, af8, af1, af6, aff, af2, af3, af4, af7, afb, afa, af9, afe)
  769.  
  770. Digits(16) = Array(b00, b05, b0c, b0d, b08, b01, b06, b0f, b02, b03, b04, b07, b0b, b0a, b09, b0e)
  771. Digits(17) = Array(b10, b15, b1c, b1d, b18, b11, b16, b1f, b12, b13, b14, b17, b1b, b1a, b19, b1e)
  772. Digits(18) = Array(b20, b25, b2c, b2d, b28, b21, b26, b2f, b22, b23, b24, b27, b2b, b2a, b29, b2e)
  773. Digits(19) = Array(b30, b35, b3c, b3d, b38, b31, b36, b3f, b32, b33, b34, b37, b3b, b3a, b39, b3e)
  774. Digits(20) = Array(b40, b45, b4c, b4d, b48, b41, b46, b4f, b42, b43, b44, b47, b4b, b4a, b49, b4e)
  775. Digits(21) = Array(b50, b55, b5c, b5d, b58, b51, b56, b5f, b52, b53, b54, b57, b5b, b5a, b59, b5e)
  776. Digits(22) = Array(b60, b65, b6c, b6d, b68, b61, b66, b6f, b62, b63, b64, b67, b6b, b6a, b69, b6e)
  777. Digits(23) = Array(b70, b75, b7c, b7d, b78, b71, b76, b7f, b72, b73, b74, b77, b7b, b7a, b79, b7e)
  778. Digits(24) = Array(b80, b85, b8c, b8d, b88, b81, b86, b8f, b82, b83, b84, b87, b8b, b8a, b89, b8e)
  779. Digits(25) = Array(b90, b95, b9c, b9d, b98, b91, b96, b9f, b92, b93, b94, b97, b9b, b9a, b99, b9e)
  780. Digits(26) = Array(ba0, ba5, bac, bad, ba8, ba1, ba6, baf, ba2, ba3, ba4, ba7, bab, baa, ba9, bae)
  781. Digits(27) = Array(bb0, bb5, bbc, bbd, bb8, bb1, bb6, bbf, bb2, bb3, bb4, bb7, bbb, bba, bb9, bbe)
  782. Digits(28) = Array(bc0, bc5, bcc, bcd, bc8, bc1, bc6, bcf, bc2, bc3, bc4, bc7, bcb, bca, bc9, bce)
  783. Digits(29) = Array(bd0, bd5, bdc, bdd, bd8, bd1, bd6, bdf, bd2, bd3, bd4, bd7, bdb, bda, bd9, bde)
  784. Digits(30) = Array(be0, be5, bec, bed, be8, be1, be6, bef, be2, be3, be4, be7, beb, bea, be9, bee)
  785. Digits(31) = Array(bf0, bf5, bfc, bfd, bf8, bf1, bf6, bff, bf2, bf3, bf4, bf7, bfb, bfa, bf9, bfe)
  786.  
  787. Digits(32) = Array(c00, c05, c0c, c0d, c08, c01, c06, c0f, c02, c03, c04, c07, c0b, c0a, c09, c0e)
  788. Digits(33) = Array(c10, c15, c1c, c1d, c18, c11, c16, c1f, c12, c13, c14, c17, c1b, c1a, c19, c1e)
  789. Digits(34) = Array(c20, c25, c2c, c2d, c28, c21, c26, c2f, c22, c23, c24, c27, c2b, c2a, c29, c2e)
  790. Digits(35) = Array(c30, c35, c3c, c3d, c38, c31, c36, c3f, c32, c33, c34, c37, c3b, c3a, c39, c3e)
  791. Digits(36) = Array(c40, c45, c4c, c4d, c48, c41, c46, c4f, c42, c43, c44, c47, c4b, c4a, c49, c4e)
  792. Digits(37) = Array(c50, c55, c5c, c5d, c58, c51, c56, c5f, c52, c53, c54, c57, c5b, c5a, c59, c5e)
  793. Digits(38) = Array(c60, c65, c6c, c6d, c68, c61, c66, c6f, c62, c63, c64, c67, c6b, c6a, c69, c6e)
  794. Digits(39) = Array(c70, c75, c7c, c7d, c78, c71, c76, c7f, c72, c73, c74, c77, c7b, c7a, c79, c7e)
  795.  
  796. Sub UpdateLeds
  797. Dim ChgLED, ii, num, chg, stat, obj
  798. ChgLED = Controller.ChangedLEDs(&Hffffffff, &Hffffffff)
  799. If Not IsEmpty(ChgLED)Then
  800. For ii = 0 To UBound(chgLED)
  801. num = chgLED(ii, 0):chg = chgLED(ii, 1):stat = chgLED(ii, 2)
  802. For Each obj In Digits(num)
  803. If chg And 1 Then obj.State = stat And 1
  804. chg = chg \ 2:stat = stat \ 2
  805. Next
  806. Next
  807. End If
  808. End Sub
  809.  
  810. '******************************
  811. ' Diverse Collection Hit Sounds
  812. '******************************
  813.  
  814. Sub aMetals_Hit(idx):PlaySound "fx_MetalHit", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  815. Sub aRubber_Bands_Hit(idx):PlaySound "fx_rubber_band", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  816. Sub aRubber_Posts_Hit(idx):PlaySound "fx_rubber_post", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  817. Sub aRubber_Pins_Hit(idx):PlaySound "fx_rubber_pin", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  818. Sub aPlastics_Hit(idx):PlaySound "fx_PlasticHit", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  819. Sub aGates_Hit(idx):PlaySound "fx_Gate", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  820. Sub aWoods_Hit(idx):PlaySound "fx_Woodhit", 0, Vol(ActiveBall), pan(ActiveBall), 0, Pitch(ActiveBall), 0, 0:End Sub
  821.  
  822. ' Ramp Soundss
  823. Sub RHelp1_Hit()
  824. 'StopSound "fx_metalrolling"
  825. PlaySound "fx_ballrampdrop", 0, 1, pan(ActiveBall)
  826. End Sub
  827.  
  828. Sub RHelp2_Hit()
  829. 'StopSound "fx_metalrolling"
  830. PlaySound "fx_ballrampdrop", 0, 1, pan(ActiveBall)
  831. End Sub
  832.  
  833. ' *********************************************************************
  834. ' Supporting Ball & Sound Functions
  835. ' *********************************************************************
  836.  
  837. Function Vol(ball) ' Calculates the Volume of the sound based on the ball speed
  838. Vol = Csng(BallVel(ball) ^2 / 2000)
  839. End Function
  840.  
  841. Function Pan(ball) ' Calculates the pan for a ball based on the X position on the table. "table1" is the name of the table
  842. Dim tmp
  843. tmp = ball.x * 2 / table1.width-1
  844. If tmp > 0 Then
  845. Pan = Csng(tmp ^10)
  846. Else
  847. Pan = Csng(-((- tmp) ^10))
  848. End If
  849. End Function
  850.  
  851. Function Pitch(ball) ' Calculates the pitch of the sound based on the ball speed
  852. Pitch = BallVel(ball) * 20
  853. End Function
  854.  
  855. Function BallVel(ball) 'Calculates the ball speed
  856. BallVel = INT(SQR((ball.VelX ^2) + (ball.VelY ^2)))
  857. End Function
  858.  
  859. Function AudioFade(ball) 'only on VPX 10.4 and newer
  860. Dim tmp
  861. tmp = ball.y * 2 / Table1.height-1
  862. If tmp > 0 Then
  863. AudioFade = Csng(tmp ^10)
  864. Else
  865. AudioFade = Csng(-((- tmp) ^10))
  866. End If
  867. End Function
  868.  
  869. '*****************************************
  870. ' JP's VP10 Rolling Sounds
  871. '*****************************************
  872.  
  873. Const tnob = 20 ' total number of balls
  874. Const lob = 0 'number of locked balls
  875. ReDim rolling(tnob)
  876. InitRolling
  877.  
  878. Sub InitRolling
  879. Dim i
  880. For i = 0 to tnob
  881. rolling(i) = False
  882. Next
  883. End Sub
  884.  
  885. Sub RollingUpdate()
  886. Dim BOT, b, ballpitch
  887. BOT = GetBalls
  888.  
  889. ' stop the sound of deleted balls
  890. For b = UBound(BOT) + 1 to tnob
  891. rolling(b) = False
  892. StopSound("fx_ballrolling" & b)
  893. Next
  894.  
  895. ' exit the sub if no balls on the table
  896. If UBound(BOT) = lob - 1 Then Exit Sub 'there no extra balls on this table
  897.  
  898. ' play the rolling sound for each ball
  899. For b = lob to UBound(BOT)
  900. If BallVel(BOT(b)) > 1 Then
  901. If BOT(b).z < 30 Then
  902. ballpitch = Pitch(BOT(b))
  903. Else
  904. ballpitch = Pitch(BOT(b)) + 15000 'increase the pitch on a ramp or elevated surface
  905. End If
  906. rolling(b) = True
  907. PlaySound("fx_ballrolling" & b), -1, Vol(BOT(b)), Pan(BOT(b)), 0, ballpitch, 1, 0
  908. Else
  909. If rolling(b) = True Then
  910. StopSound("fx_ballrolling" & b)
  911. rolling(b) = False
  912. End If
  913. End If
  914. Next
  915. End Sub
  916.  
  917. '**********************
  918. ' Ball Collision Sound
  919. '**********************
  920.  
  921. Sub OnBallBallCollision(ball1, ball2, velocity)
  922. PlaySound("fx_collide"), 0, Csng(velocity) ^2 / 2000, Pan(ball1), 0, Pitch(ball1), 0, 0
  923. End Sub
  924.  
  925. '******************************************
  926. ' Rules - from Inkochnito instruction cards
  927. '******************************************
  928.  
  929. Dim Msg(20)
  930. Sub Rules()
  931. Msg(0) = "HOW TO PLAY DIAMOND LADY" &Chr(10)&Chr(10)
  932. Msg(1) = ""
  933. Msg(2) = "SPECIALS: A. JOKER SPECIAL LIT BY COMPLETING ROYAL FLUSH."
  934. Msg(3) = "B. DIAMOND AND RIGHT OUTLANE LIT BY COMPLETING ALL DIAMONDS. "
  935. Msg(4) = "C. LIT TOP ROLLOVER AT 10X (MULTIPLIER FEATURE)."
  936. Msg(5) = ""
  937. Msg(6) = "EXTRA-BALL: COMPLETING ROYAL FLUSH WHEN LIT FOR 'EXTRA-BALL'."
  938. Msg(7) = ""
  939. Msg(8) = "DIAMONDS: COMPLETING ALL DIAMONDS SCORES VALUE, LIGHTS 'CAPTURE',"
  940. Msg(9) = "COLLECTS DIAMOND BONUS (IF ANY), AND DOUBLES ENTIRE"
  941. Msg(10) = "SCORE IF ALL SPADE ARE 'UP'."
  942. Msg(11) = ""
  943. Msg(12) = "MULTI-BALL: COMPLETING ALL DIAMONDS LIGHTS 'CAPTURE'. PLAYFIELD"
  944. Msg(13) = "SCORES TIMES 'X'."
  945. Msg(14) = ""
  946. Msg(15) = "SPADES: COMPLETING ALL SPADES LIGHTS RAMP TO ADVANCE 'JACKPOT'."
  947. Msg(16) = ""
  948. Msg(17) = "JACKPOT: MAKING RAMP WHEN FLASHING ADDS LETTER, LAST LETTER COLLECTS"
  949. Msg(18) = ""
  950. Msg(19) = "'SAVE' TARGET: MAKING LOWER LEFT AND RIGHT DIAMONDS RAISE TARGET."
  951. Msg(20) = ""
  952. For X = 1 To 20
  953. Msg(0) = Msg(0) + Msg(X)&Chr(13)
  954. Next
  955. MsgBox Msg(0), , " Instructions and Rule Card"
  956. End Sub
  957.  
  958. '**********************
  959. 'Gottlieb Diamond Lady
  960. 'added by Inkochnito
  961. '**********************
  962.  
  963. Sub editDips
  964. Dim vpmDips:Set vpmDips = New cvpmDips
  965. With vpmDips
  966. .AddForm 700, 400, "Diamond Lady - DIP switches"
  967. .AddFrame 2, 4, 190, "Maximum credits", 49152, Array("8 credits", 0, "10 credits", 32768, "15 credits", &H00004000, "20 credits", 49152) 'dip 15&16
  968. .AddFrame 2, 80, 190, "Coin chute 1 and 2 control", &H00002000, Array("seperate", 0, "same", &H00002000) 'dip 14
  969. .AddFrame 2, 126, 190, "Playfield special", &H00200000, Array("replay", 0, "extra ball", &H00200000) 'dip 22
  970. .AddFrame 2, 172, 190, "High games to date control", &H00000020, Array("no effect", 0, "reset high games 2-5 on power off", &H00000020) 'dip 6
  971. .AddFrame 2, 218, 190, "Auto-percentage control", &H00000080, Array("disabled (normal high score mode)", 0, "enabled", &H00000080) 'dip 8
  972. .AddFrame 2, 264, 190, "Royal flush sequence is", &H40000000, Array("reset royal flush value every ball", 0, "memorize royal flush value every ball", &H40000000) 'dip 31
  973. .AddFrame 2, 310, 190, "Game playing time control", &H80000000, Array("shorter", 0, "longer", &H80000000) 'dip 32
  974. .AddFrame 205, 4, 190, "High game to date awards", &H00C00000, Array("not displayed and no award", 0, "displayed and no award", &H00800000, "displayed and 2 replays", &H00400000, "displayed and 3 replays", &H00C00000) 'dip 23&24
  975. .AddFrame 205, 80, 190, "Balls per game", &H01000000, Array("5 balls", 0, "3 balls", &H01000000) 'dip 25
  976. .AddFrame 205, 126, 190, "Replay limit", &H04000000, Array("no limit", 0, "one per game", &H04000000) 'dip 27
  977. .AddFrame 205, 172, 190, "Novelty", &H08000000, Array("normal", 0, "extra ball and replay scores 500K", &H08000000) 'dip 28
  978. .AddFrame 205, 218, 190, "Game mode", &H10000000, Array("replay", 0, "extra ball", &H10000000) 'dip 29
  979. .AddFrame 205, 264, 190, "3rd coin chute credits control", &H20000000, Array("no effect", 0, "add 9", &H20000000) 'dip 30
  980. .AddChk 205, 316, 180, Array("Match feature", &H02000000) 'dip 26
  981. .AddChk 205, 331, 190, Array("Attract sound", &H00000040) 'dip 7
  982. .AddLabel 50, 360, 300, 20, "After hitting OK, press F3 to reset game with new settings."
  983. .ViewDips
  984. End With
  985. End Sub
  986. Set vpmShowDips = GetRef("editDips")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement