<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vb &#8211; Gary Michael Angelone Jr.</title>
	<atom:link href="https://garyangelonejr.me/tag/vb/feed/" rel="self" type="application/rss+xml" />
	<link>https://garyangelonejr.me</link>
	<description></description>
	<lastBuildDate>Tue, 11 Nov 2025 16:00:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Virtual SlugFest</title>
		<link>https://garyangelonejr.me/virtual-slugfest/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 14 Aug 2025 16:59:51 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[svg]]></category>
		<category><![CDATA[vb]]></category>
		<guid isPermaLink="false">https://garyangelonejr.me/?p=1893</guid>

					<description><![CDATA[VPForums has tables for Visual Pinball X. I found a VPT file for my favourite table there, called Williams SlugFest, but it's outdated and the graphics are low resolution. I figured, I could update it to VPX format and upgrade the script and the graphics.]]></description>
										<content:encoded><![CDATA[<div class="fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;"><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:1248px;margin-left: calc(-4% / 2 );margin-right: calc(-4% / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-text fusion-text-1 translate lang-en "><p><a href="http://www.vpforums.org/">VPForums</a> has tables for <a href="https://github.com/vpinball/vpinball">Visual Pinball X</a>. I found a VPT file for my favourite table there, called <a href="https://www.arcade-museum.com/Pinball/slugfest--williams--1991--9588">Williams SlugFest</a>, but it's outdated and the graphics are low resolution. I figured, I could update it to VPX format and upgrade the script and the graphics.</p>
</div><div class="fusion-text fusion-text-2 translate lang-de"><p><a href="http://www.vpforums.org/">VPForums</a> bietet Tabellen für <a href="https://github.com/vpinball/vpinball">Visual Pinball X</a>. Dort habe ich eine VPT-Datei für meinen Lieblingstisch namens <a href="https://www.arcade-museum.com/Pinball/slugfest--williams--1991--9588">Williams SlugFest</a> gefunden, aber sie ist veraltet und die Grafiken haben eine niedrige Auflösung. Ich dachte mir, ich könnte sie auf das VPX-Format aktualisieren und das Skript und die Grafiken verbessern.</p>
</div><div class="fusion-text fusion-text-3 translate lang-it"><p><a href="http://www.vpforums.org/" target="_blank" rel="noopener">VPForums</a> ha tavoli per <a href="https://github.com/vpinball/vpinball">Visual Pinball X</a>. Ho trovato un file VPT per il mio tavolo preferito, chiamato <a href="https://www.arcade-museum.com/Pinball/slugfest--williams--1991--9588">Williams SlugFest</a>, ma è obsoleto e la grafica è a bassa risoluzione. Ho pensato che avrei potuto aggiornarlo al formato VPX e migliorare lo script e la grafica.</p>
</div><div class="fusion-video fusion-selfhosted-video bordered" style="max-width:100%;"><div class="video-wrapper"><video playsinline="true" width="100%" style="object-fit: cover;" autoplay="true" muted="true" loop="true" preload="auto" controls="1"><source src="/vid/post/WilliamsSlugfest.webm" type="video/webm"><source src="/vid/post/WilliamsSlugfest.mp4" type="video/mp4">Sorry, your browser doesn't support embedded videos.</source></source></video></div></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:0.5em;margin-bottom:0.5em;width:100%;"></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:0.5em;margin-bottom:0.5em;width:100%;"></div><div class="fusion-text fusion-text-4 translate lang-en "><p>I reconstructed the graphics using vector graphics, AI for rescaling and photos from ebay.</p>
</div><div class="fusion-text fusion-text-5 translate lang-de"><p>Ich habe die Grafiken mithilfe von Vektorgrafiken, AI zum Skalieren und Fotos von eBay rekonstruiert.</p>
</div><div class="fusion-text fusion-text-6 translate lang-it"><p>Ho ricostruito la grafica utilizzando grafica vettoriale, intelligenza artificiale per il ridimensionamento e foto provenienti da eBay.</p>
</div><div class="awb-gallery-wrapper awb-gallery-wrapper-1 button-span-no" style="--more-btn-alignment:center;margin-bottom:3em;"><div style="margin:-5px;--awb-bordersize:2px;--awb-bordercolor:var(--awb-color2);--awb-border-radius:1em;" class="fusion-gallery fusion-gallery-container fusion-grid-3 fusion-columns-total-1 fusion-gallery-layout-grid fusion-gallery-1"><div style="padding:5px;" class="fusion-grid-column fusion-gallery-column fusion-gallery-column-3 hover-type-zoomin"><div class="fusion-gallery-image"><a href="https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001.png" rel="noreferrer" data-rel="iLightbox[gallery_image_1]" class="fusion-lightbox" target="_self"><img fetchpriority="high" decoding="async" src="https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001.png" width="1600" height="1600" alt="" title="Slugfest_001" aria-label="Slugfest_001" class="img-responsive wp-image-3094" srcset="https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001-200x200.png 200w, https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001-400x400.png 400w, https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001-600x600.png 600w, https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001-800x800.png 800w, https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001-1200x1200.png 1200w, https://garyangelonejr.me/wp-content/uploads/2025/08/Slugfest_001.png 1600w" sizes="(min-width: 2200px) 100vw, (min-width: 784px) 397px, (min-width: 712px) 595px, (min-width: 640px) 712px, "></a></div></div></div></div><div class="fusion-separator fusion-full-width-sep" style="align-self: center;margin-left: auto;margin-right: auto;margin-top:0.5em;margin-bottom:0.5em;width:100%;"></div><div class="fusion-text fusion-text-7 translate lang-en "><p>Then I updated the VBScript.</p>
</div><div class="fusion-text fusion-text-8 translate lang-de"><p>Dann habe ich das VBScript aktualisiert.</p>
</div><div class="fusion-text fusion-text-9 translate lang-it"><p>Quindi ho aggiornato il VBScript.</p>
</div><style type="text/css" scopped="scopped">.fusion-syntax-highlighter-1 > .CodeMirror, .fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters {background-color:transparent;}.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-gutters { background-color: transparent; }.fusion-syntax-highlighter-1 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color3); }</style><div class="fusion-syntax-highlighter-container fusion-syntax-highlighter-1 fusion-syntax-highlighter-theme-light no-translate" style="opacity:0;margin-top:0px;margin-right:0px;margin-bottom:2em;margin-left:0px;font-size:14px;border-width:2px;border-style:dashed;border-color:var(--awb-color2);"><div class="syntax-highlighter-copy-code"><span class="syntax-highlighter-copy-code-title" data-id="fusion_syntax_highlighter_1" style="font-size:14px;">Copy to Clipboard</span></div><label for="fusion_syntax_highlighter_1" class="screen-reader-text">Syntax Highlighter</label><textarea class="fusion-syntax-highlighter-textarea" id="fusion_syntax_highlighter_1" data-readonly="nocursor" data-linenumbers="1" data-linewrapping="1" data-theme="default" data-mode="text/x-sh">Option Explicit
Randomize
LoadVPM "01530000","WPC.VBS",3.1

' LoadVPM subroutine that initializes the VPinMAME controller and other essential elements
Sub LoadVPM(VPMver,VBSfile,VBSver)
	On Error Resume Next
		If ScriptEngineMajorVersion&lt;5 Then MsgBox"VB Script Engine 5.0 or higher required"
		ExecuteGlobal GetTextFile(VBSfile)
		If Err Then MsgBox"Unable to open "&amp;VBSfile&amp;". Ensure that it is in the same folder as this table."&amp;vbNewLine&amp;Err.Description:Err.Clear
		Set Controller=CreateObject("VPinMAME.Controller")
		If Err Then MsgBox"Can't Load VPinMAME."&amp;vbNewLine&amp;Err.Description
		If VPMver&gt;"" Then If Controller.Version<vpmver or err then msgbox ver required. if vpinmamedriverver vbsfile higher on error goto end sub const usesolenoids='1,UseLamps=1,UseSync=1,SSolenoidOn="SolOn",SSolenoidOff="SolOff",SFlipperOn="FlipperUp",SFlipperOff="FlipperDown",SCoin="Coin3"' define solenoid callback functions to handle activations solcallback m1 m2 m3 flasher20 flasher25 flasher26 m4 subroutine swinging bat activation solswingbat enabled flipper1.rotatetoend playsound flipper1.timerenabled="1" flipper timer return the starting position flipper1_timer flipper1.rotatetostart for magnetic switch setting of magnet solmagswitch players="2" magselect="NONE" mmagnet.x="500" mmagnet.y="1610" mmagnet.size="90" exit mmagnet.magneton="True" else cpuc="RND" triggering a field deactivation trigger5_hit ramp solramp wall4.isdropped="1" controller.switch fast pitch solpitchfast bstrough.balls wall8.isdropped="1" wall9.isdropped="0" bstrough.exitsol_on vpmtimer.pulsesw speed="3" similar subroutines medium solpitchmedium slow solpitchslow when specific is hit adjustment trigger3_hit activeball.vely>0 Then
		Wall9.IsDropped=1
		Wall8.IsDropped=0
		If Speed=3 Then
			ActiveBall.VelY=20
			Speed=0
		End If
		If Speed=2 Then
			ActiveBall.VelY=15
			Speed=0
		End If
		If Speed=1 Then
			ActiveBall.VelY=10
			Speed=0
		End If
	End If
End Sub

' Subroutine to handle card dispensing mechanism '
Sub SolCard(Enabled)
	If Enabled Then
		vpmTimer.PulseSw 28 'Unjam dispenser '
		Controller.Switch(23)=1'Yes there is a card there '
		CardCount=CardCount+1
		Cards=Cards+1
		If CardCount&gt;15 Then
			CardCount=CardCount-1
		Else
			Timer1.Enabled=0
			Timer1.Enabled=1
		End If
		CardReel.SetValue CardCount
		If Cards&gt;12 Then
			Controller.Switch(27)=1'Low Cards '
		Else
			Controller.Switch(27)=0
		End If
	Else
		Controller.Switch(23)=0
	End If
End Sub

' Timer subroutine for resetting card values '
Sub Timer1_Timer
	CardReel.SetValue 0
	Timer1.Enabled=0
End Sub

' Subroutine to set the display of elements on the controller '
Sub SetDisplayToElement(Element)
 	If Controller.Version&lt;="01500000" Then
 		' forget it, version is to old '
 		Exit Sub
 	End If
  	Dim playerRect
 	playerRect=Controller.GetClientRect(GetPlayerHwnd)
 	Dim playerWidth, playerHeight
 	playerWidth=playerRect(2)-playerRect(0)
 	playerHeight=playerRect(3)-playerRect(1)
 	Dim Game
 	Set Game=Controller.Game
 	Dim x,y
  	x=Element.x*playerWidth/1000.0-1
 	y=Element.y*playerHeight/750.0-1
 	Game.Settings.SetDisplayPosition x,y,GetPlayerHwnd
 	Set Game=nothing
End Sub

' Subroutine to handle pausing and unpausing the table '
Sub Table1_Paused:Controller.Pause=True:End Sub
Sub Table1_unPaused:Controller.Pause=False:End Sub

' Initial variables and setup for the table '
Dim Location,bsTrough,mMagnet,mRamp,MagSelect,Speed,Cards,CardCount,RampPos,Players,CPUC
Location=500:MagSelect="NONE":Speed=0:Cards=0:CardCount=0:RampPos=0:Players=0:CPUC=0

' Table initialization subroutine '
Sub Table1_Init
	Wall9.IsDropped=1'Pitch Cover'
	On Error Resume Next
		Controller.Games("sf_l1").Settings.Value("cheat")=1
		Controller.GameName="sf_l1":If Err Then MsgBox"Can't start Game"&amp;cGameName&amp;vbNewLine&amp;Err.Description:Exit Sub
		Controller.SplashInfoLine="Slugfest"
		Controller.HandleMechanics=0
		Controller.HandleKeyboard=0
		Controller.ShowDMDOnly=1 
		Controller.ShowFrame=0 
		Controller.ShowTitle=0
		'SetDisplayToElement TextBox1
		Controller.Run GetPlayerHwnd:If Err Then MsgBox Err.Description:Exit Sub
		Controller.DIP(0)=&amp;H00
	On Error Goto 0
	vpmNudge.TiltSwitch=56:vpmNudge.Sensitivity=5:PinMAMETimer.Interval=PinMAMEInterval:PinMAMETimer.Enabled=1
	Controller.Switch(24)=1

	Set bsTrough=New cvpmBallStack
    bsTrough.InitSw 0,0,0,0,0,0,0,0
	bsTrough.InitKick BallRelease,180,10
    bsTrough.InitExitSnd"Popper","SolOn"
    bsTrough.Balls=1

	Set mMagnet=New cvpmMagnet
	mMagnet.InitMagnet Trigger4,3
	mMagnet.GrabCenter=0
	mMagnet.CreateEvents"mMagnet"

	Set mRamp=New cvpmMech
	mRamp.Sol1=21
	mRamp.MType=vpmMechLinear+vpmMechCircle+vpmMechOneSol
	mRamp.Length=40
	mRamp.Steps=500
	mRamp.AddSw 55,0,20
	mRamp.AddSw 55,40,80
	mRamp.Callback=GetRef("UpdateRamp")
	mRamp.Start

	Controller.Switch(54)=0
	Controller.Switch(22)=1
	vpmMapLights AllLights
	
	'CHANGES'
	LightUpdateTimer.Enabled = True
	
End Sub

' Subroutine to update the ramp position '
Sub UpdateRamp(aCurrPos,aSpeed,aLastPos)
	If aCurrPos=25 Then
		Wall4.IsDropped=1'Down'
		Wall10.IsDropped=1
		RampPos=0
	End If
	If aCurrPos=87 Then
		Wall4.IsDropped=0'Up'
		Wall10.IsDropped=0
		RampPos=1
	End If
End Sub

' Trigger for ramp hit '
Sub Trigger2_Hit
	If RampPos=1 And ActiveBall.VelY&lt;-7 Then ActiveBall.VelZ=120
End Sub

' Displaying key help for the game '
ExtraKeyHelp=KeyName(StartGameKey)&amp;vbTab&amp;"1 Player Game"&amp;vbNewLine&amp;_
			KeyName(KeyFront)&amp;vbTab&amp;"2 Player Game"&amp;vbNewLine&amp;_
			KeyName(LeftFlipperKey)&amp;vbTab&amp;"Fastball"&amp;vbNewLine&amp;_
			KeyName(KeyUpperLeft)&amp;vbTab&amp;"Curveball"&amp;vbNewLine&amp;_
			KeyName(31)&amp;vbTab&amp;"Change Up"&amp;vbNewLine&amp;_
			KeyName(32)&amp;vbTab&amp;"Screwball"&amp;vbNewLine&amp;_
			KeyName(33)&amp;vbTab&amp;"Throw Out Runner"&amp;vbNewLine&amp;_
			KeyName(39)&amp;vbTab&amp;"Pinch Hit"&amp;vbNewLine&amp;_
			KeyName(RightFlipperKey)&amp;vbTab&amp;"Swing Bat"&amp;vbNewLine&amp;_
			KeyName(KeyUpperRight)&amp;vbTab&amp;"Steal Base"&amp;vbNewLine&amp;_
			KeyName(16)&amp;vbTab&amp;"Refill Cards"

' Subroutine to handle key down events (when a key is pressed) '
Sub Table1_KeyDown(ByVal KeyCode)
	If KeyCode=StartGameKey Then
		Controller.Switch(37)=1
		Players=1
	End If
	If KeyCode=KeyFront Then
		Controller.Switch(38)=1
		Players=2
	End If
	If KeyCode=LeftFlipperKey Then Controller.Switch(32)=1
	If KeyCode=KeyUpperLeft Then
		Controller.Switch(34)=1
		MagSelect="RIGHT"'Curve to right'
	End If
	If KeyCode=31 Then
		Controller.Switch(33)=1
		MagSelect="NONE"
	End If
	If KeyCode=32 Then
		Controller.Switch(35)=1
		MagSelect="LEFT"'Curve to left'
	End If
	If KeyCode=33 Then Controller.Switch(36)=1
	If KeyCode=39 Then Controller.Switch(31)=1
	If KeyCode=RightFlipperKey Then Controller.Switch(26)=1
	If KeyCode=KeyUpperRight Then Controller.Switch(25)=1
	If KeyCode=16 And Controller.Switch(27) Then'Refill Cards'
		Cards=0
		CardCount=0
		Controller.Switch(27)=0
		Timer1.Enabled=1
	End If
	If KeyDownHandler(KeyCode) Then Exit Sub
End Sub

' Subroutine to handle key up events (when a key is pressed) '
Sub Table1_KeyUp(ByVal KeyCode)
	If KeyCode=StartGameKey Then Controller.Switch(37)=0
	If KeyCode=KeyFront Then Controller.Switch(38)=0
	If KeyCode=LeftFlipperKey Then Controller.Switch(32)=0
	If KeyCode=KeyUpperLeft Then Controller.Switch(34)=0
	If KeyCode=31 Then Controller.Switch(33)=0
	If KeyCode=32 Then Controller.Switch(35)=0
	If KeyCode=33 Then Controller.Switch(36)=0
	If KeyCode=39 Then Controller.Switch(31)=0
	If KeyCode=RightFlipperKey Then Controller.Switch(26)=0
	If KeyCode=KeyUpperRight Then Controller.Switch(25)=0
	If KeyUpHandler(KeyCode) Then Exit Sub
End Sub

Sub Trigger1_Hit
	Location=ActiveBall.X
	If Location&lt;177 Then
		vpmTimer.PulseSw 41
		Exit Sub
	End If
	If Location&lt;308 Then
		vpmTimer.PulseSw 42
		Exit Sub
	End If
	If Location&lt;437 Then
		vpmTimer.PulseSw 43
		Exit Sub
	End If
	If Location&lt;557 Then
		vpmTimer.PulseSw 44
		Exit Sub
	End If
	If Location&lt;674 Then
		vpmTimer.PulseSw 45
		Exit Sub
	End If
	If Location&lt;802 Then
		vpmTimer.PulseSw 46
		Exit Sub
	End If
	vpmTimer.PulseSw 47
End Sub

' Subroutines for when different kickers (bumper-like mechanisms) hit '
Sub Kicker1_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker2_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker3_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker4_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker5_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker6_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker7_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker8_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker9_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker10_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker11_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker12_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker13_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker14_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker15_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker16_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker17_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub
Sub Kicker18_Hit:bsTrough.AddBall Me:KickerHit Me:End Sub

Sub Kicker19_Hit:Kicker19.DestroyBall:vpmTimer.PulseSwitch(61),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker20_Hit:Kicker20.DestroyBall:vpmTimer.PulseSwitch(61),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker21_Hit:Kicker21.DestroyBall:vpmTimer.PulseSwitch(61),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker22_Hit:Kicker22.DestroyBall:vpmTimer.PulseSwitch(61),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker23_Hit:Kicker23.DestroyBall:vpmTimer.PulseSwitch(61),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker24_Hit:Kicker24.DestroyBall:vpmTimer.PulseSwitch(61),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker25_Hit:Kicker25.DestroyBall:vpmTimer.PulseSwitch(62),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker26_Hit:Kicker26.DestroyBall:vpmTimer.PulseSwitch(62),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker27_Hit:Kicker27.DestroyBall:vpmTimer.PulseSwitch(62),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker28_Hit:Kicker28.DestroyBall:vpmTimer.PulseSwitch(62),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker29_Hit:Kicker29.DestroyBall:vpmTimer.PulseSwitch(62),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker30_Hit:Kicker30.DestroyBall:vpmTimer.PulseSwitch(62),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker31_Hit:Kicker31.DestroyBall:vpmTimer.PulseSwitch(63),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker32_Hit:Kicker32.DestroyBall:vpmTimer.PulseSwitch(63),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker33_Hit:Kicker33.DestroyBall:vpmTimer.PulseSwitch(63),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker34_Hit:Kicker34.DestroyBall:vpmTimer.PulseSwitch(63),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker35_Hit:Kicker35.DestroyBall:vpmTimer.PulseSwitch(63),100,"AddBackTrough":KickerHit Me:End Sub
Sub Kicker36_Hit:Kicker36.DestroyBall:vpmTimer.PulseSwitch(63),100,"AddBackTrough":KickerHit Me:End Sub
Sub AddBackTrough(swNo):vpmTimer.PulseSwitch(51),100,"AddTrough":End Sub
Sub AddTrough(swNo):bsTrough.AddBall 0:MagSelect="NONE":End Sub
Sub Drain_Hit:Drain.DestroyBall:vpmTimer.PulseSwitch(52),100,"AddTrough":End Sub


' Subroutines for when different spinners hit '
Sub Spinner1_Spin:SpinnerHit Me:End Sub
Sub Spinner2_Spin:SpinnerHit Me:End Sub
Sub Spinner3_Spin:SpinnerHit Me:End Sub
Sub Spinner4_Spin:SpinnerHit Me:End Sub
Sub Spinner5_Spin:SpinnerHit Me:End Sub
Sub Spinner6_Spin:SpinnerHit Me:End Sub
Sub Spinner7_Spin:SpinnerHit Me:End Sub


'CHANGES'

Sub KickerHit(Kicker)
	' PlaySound "test"
End Sub

Sub SpinnerHit(Spinner)
	' PlaySound "test"
	Refresh.State = 1
	Refresh.State = 0
End Sub

Sub LightUpdateTimer_Timer()
    UpdateAllLights
End Sub

Sub StartUpdateTimer()
    ' Create a timer that pulses every 16 milliseconds (approximately 60 FPS)
    vpmTimer.PulseSwitch 1, 16, "UpdateAllLights"
End Sub

Sub UpdateAllLights()
    Dim i
    For i = 0 To AllLights.Count - 1
        If AllLights(i).State Then
            AllLights(i).Image = "SFPlayfLa"
        Else
            AllLights(i).Image = "SFPlayf"
        End If
    Next
End Sub

' Function to change the light image
Sub ChangeLightImage(light, newImage)
    light.Image = newImage  ' Set the light's image to the new image
End Sub</vpmver></textarea></div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-padding-right:1em;--awb-padding-left:1em;--awb-overflow:hidden;--awb-bg-color:var(--awb-color3);--awb-bg-color-hover:var(--awb-color3);--awb-bg-size:cover;--awb-border-radius:1em 1em 1em 1em;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:3em;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column"><div class="fusion-text fusion-text-10 translate lang-en " style="--awb-text-color:var(--awb-color1);--awb-margin-top:1em;"><p style="text-align: center;">The ROM file is named "sf_l1.zip". The table won't run without it, but I unfortunately can't share it.</p>
</div><div class="fusion-text fusion-text-11 translate lang-de" style="--awb-text-color:var(--awb-color1);--awb-margin-top:1em;"><p style="text-align: center;">Die ROM-Datei heißt „sf_l1.zip". Ohne sie funktioniert die Tabelle nicht, aber leider kann ich sie nicht weitergeben.</p>
</div><div class="fusion-text fusion-text-12 translate lang-it" style="--awb-text-color:var(--awb-color1);--awb-margin-top:1em;"><p style="text-align: center;">Il file ROM si chiama "sf_l1.zip". Il tavolo non funzionerà senza di esso, ma purtroppo non posso condividerlo.</p>
</div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_2 1_2 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.84%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:3.84%;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:3.84%;--awb-spacing-left-medium:3.84%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div style="text-align:center;"><a class="fusion-button button-flat fusion-button-default-size button-default fusion-button-default button-1 fusion-button-default-span fusion-button-default-type" target="_blank" rel="noopener noreferrer" href="/data/Slugfest.vpx"><span class="fusion-button-text awb-button__text awb-button__text--default">Download VPX</span></a></div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_2 1_2 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.84%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:3.84%;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:3.84%;--awb-spacing-left-medium:3.84%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div style="text-align:center;"><a class="fusion-button button-flat fusion-button-default-size button-default fusion-button-default button-2 fusion-button-default-span fusion-button-default-type" target="_blank" rel="noopener noreferrer" href="https://github.com/KoschKX/WSlugFest"><span class="fusion-button-text awb-button__text awb-button__text--default">GitHub Project</span></a></div></div></div></div></div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
