- This topic has 40 replies, 7 voices, and was last updated 4 years, 7 months ago by LynnInDenver.
-
AuthorPosts
-
May 27, 2018 at 4:37 pm #86515
I’m more looking for input from the more experienced programmers here. I decided I wanted a table “frame” on which I could actually build a table, without having to worry about setting up the player counting and ball tracking on later. Here’s what I’ve put on the default “template” provided with VPX 10.5:
Rudimentary Scoring. I know this I really do need to clean up a bit, putting the math part into a more proper subroutine so I just have one call when I add to score. Scoring values are controlled through a set of constants at the top of the script.
Player Count Tracking, with Freeplay option. Basically, I can add credits, or set to freeplay in the script, and actually run a real game.
Ball Save and Extra Ball. A timer on the table controls the time of the ball save, and currently I can use the right Magnasave to add extra balls for testing.
Test Mode. More or less simulates the original template behavior, kicks a ball out, lets you flip, doesn’t track ball or player counts.
Autoplunge of multiball. Right now, just an added plunger overlaid on the manual plunger, I haven’t figured out how to have manual mechanical control and multiball autofire off one plunger. I’ve also got the left Magnasave set to trigger the autofire plunger for testing.
I’m curious if there’s any improvements/cleanups I can make to this table framework before I make this my template for building brand new tables off of in the future. Plus, who knows, it might prove useful to others.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.Attachments:
You need to login in order to like this post: click here
May 27, 2018 at 5:39 pm #86522Take a look at JP’s Ghostbuster Slimer table for more ideas.
The top half of the script is essentially a template with tons of additional support:Â Tilt, High Score, Instant Info, Music, Lighting, Flasher effects, Multiball, Bonus scoring, Jackpot, Modes, Wizard Mode, Attract mode
You need to login in order to like this post: click here
1 user thanked author for this post.
May 29, 2018 at 11:52 am #86690Look into ScottyWic’s “Orbital Pinball” framework template. I’m not sure if he posted it here yet, but the first version is available.
You need to login in order to like this post: click here
1 user thanked author for this post.
May 29, 2018 at 6:40 pm #86713gtxjoe: I pulled the attract mode out of that table. Looks fairly cut and dried. I’m not finding much else of use without learning more about someone else’s coding style.
TerryRed: I was looking for that and don’t see where he might have posted it. Certainly not any of the regular places. Looks like it’s only really available in his first Stranger Things table, so I might just have to message him and see where things are at.
In other news, I’ve implemented a bonus system (just to have one in place), with multiplier (light the three standup targets to increase) cleaned up the scoring and update mechanisms a bit, added a “reset the lights” between players, and even got an extra ball earner (walk the top rollovers) just because. The one thing I’m actually having trouble on is getting a delay added on the “add the bonus to score” stepping at the end of the ball (like the old Gottlieb Sysy1 machines). I can either add it all in one go, or the resulting timer doesn’t delay start of next ball, which does funky things to the bonus and cuts the ball save short. The new file is attached. It actually feels like it could be a playable table, albeit there’s some really, really challenging things to collect because of the layout…
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.Attachments:
You need to login in order to like this post: click here
May 29, 2018 at 11:52 pm #86727If you like, I can always send you a copy of shivaengine 4 for vpx. It’s unfinished as there were a lot more features and upgrades needed to be added, but it’s fully functioning except for maybe the odd minor bug here and there. It’s mostly engine code and not too much hit code or exclusive code for a single table. It’s a very different structure scriptwise than anything else, but there are several things there that might help you without having to go through tons of table specific coding, it’s mostly engine.
_____________________________________
Latest projects and rants at My Facebook Page
_____________________________________
Latest Project: fpxEngine Table BuilderYou need to login in order to like this post: click here
May 30, 2018 at 7:43 am #86732I’d definitely be interested in taking a look at that, thanks.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.You need to login in order to like this post: click here
May 30, 2018 at 11:14 pm #86804If you dont mind, I will send it tomorrow, or as soon as I have the proper internet access to access my website.
_____________________________________
Latest projects and rants at My Facebook Page
_____________________________________
Latest Project: fpxEngine Table BuilderYou need to login in order to like this post: click here
1 user thanked author for this post.
May 31, 2018 at 7:44 am #86816Yeah, that should work fine. I won’t have time to even fiddle with that tonight anyway.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.You need to login in order to like this post: click here
May 31, 2018 at 9:52 pm #86965OK, so I’ll admit to being more than a little stumped as to how to use Timers to create a bonus countdown like, say, Gottlieb’s Solar Ride table. So far, all my efforts have resulted in, at best, counting the bonus… but for all intents and purposes it gets 100% added as a lump sum value, after waiting for whatever I set the timer for, no updates to lights or score displays during the individual steps. At worst, it’s still trying to add up the bonus while it loads the next ball, resulting in serious shenanigans with the bonus system, particularly when I’m trying to get through multiple timers. (My tiny epic kingdom for a proper delay, I know it’s a state machine and doesn’t really do those.) The intended operation is like this:
Take the Bonus Count. Each “level” of the bonus count, count it each time for the multiplier (*beep beep beep beep* for, say, 4X, quarter second between beeps and scores, updates scoreboard). Switch that light off. Move to the next lower level. Wait a half second. Repeat. Once Bonus Count has hit zero, reset back to one, kick fresh ball into shooter lane or end game.
I’m probably missing something pretty important in order to get this to work correctly.
Sub UpdateScore
ScoreText1.Text = Score(1)
ScoreText2.Text = Score(2)
ScoreText3.Text = Score(3)
ScoreText4.Text = Score(4)
CreditText.Text = Credits
BallText.Text = CurrentBall
ExtraBallCountText.Text = ExtraBall
PlayerCountText.Text = PlayerCount
If BonusCount => 1 then LM1.state = 1 Else LM1.state = 0: End If
If BonusCount => 2 then LM2.state = 1 Else LM2.state = 0: End If
If BonusCount => 3 then LM3.state = 1 Else LM3.state = 0: End If
If BonusCount => 4 then LM4.state = 1 Else LM4.state = 0: End If
If BonusCount => 5 then LM5.state = 1 Else LM5.state = 0: End If
If BonusCount => 6 then LM6.state = 1 Else LM6.state = 0: End If
If BonusCount => 7 then LM7.state = 1 Else LM7.state = 0: End If
If BonusCount => 8 then LM8.state = 1 Else LM8.state = 0: End If
If BonusCount => 9 then LM9.state = 1 Else LM9.state = 0: End If
If BonusCount => 10 then LM10.state = 1 Else LM10.state = 0: End If
If BonusCount => 11 then LM11.state = 1 Else LM11.state = 0: End If
If BonusCount => 12 then LM12.state = 1 Else LM12.state = 0: End If
If BonusCount => 13 then LM13.state = 1 Else LM13.state = 0: End If
If BonusCount => 14 then LM14.state = 1 Else LM14.state = 0: End If
If BonusCount => 15 then LM15.state = 1 Else LM15.state = 0: End If
If BonusCount => 16 then LM16.state = 1 Else LM16.state = 0: End If
If L11.state + l12.state + l13.state = 3 then BonusMultiplier = BonusMultiplier + 1:L11.state = 0:L12.state = 0:l13.state = 0:End If
If BonusMultiplier =>2 then LBonus2.state = 1
If BonusMultiplier =>3 then LBonus3.state = 1
If BonusMultiplier =>4 then LBonus4.state = 1
If BonusMultiplier =>5 then LBonus5.state = 1
If ExtraBall => 1 then ShootAgainLight.state = 1:End If
If BallSaveActive = 1 then ShootAgainLight.state = 2:End If
End SubSub Drain_Hit()
PlaySound “drain”,0,1,AudioPan(Drain),0.25,0,0,1,AudioFade(Drain)
Drain.DestroyBall
BIP = BIP – 1
If BIP = 0 then
If TestMode = False Then
If BallSaveActive = 0 Then
Me.TimerInterval=750
Me.TimerEnabled = True
End If
End If
UpdateScore
End If
End SubSub Drain_Timer()
For ii = 1 to BonusCount
For i = 1 to BonusMultiplier
Me.TimerInterval = 400
AddScore(ScoreBonus):UpdateScore
Next
Me.TimerInterval = 800
BonusCount = BonusCount – 1:UpdateScore
Next
Me.TimerEnabled = False
Call BonusEnded
End SubSub BonusEnded
If ExtraBall = 0 Then
ActivePlayer = ActivePlayer + 1
If ActivePlayer > PlayerCount Then ActivePlayer = 1:CurrentBall = CurrentBall + 1: End If
If CurrentBall > GameBalls Then Game_Over = True:CurrentBall = 0:PlayerCount = 0:ActivePlayer = 0:FirstSwitchHit = 0:StartAttractMode 1: End If
If ActivePlayer = 0 Then PlayerActive1.State = 0: PlayerActive2.State = 0: PlayerActive3.State = 0: PlayerActive4.State = 0:End If
If ActivePlayer = 1 Then PlayerActive1.State = 1: PlayerActive2.State = 0: PlayerActive3.State = 0: PlayerActive4.State = 0:End If
If ActivePlayer = 2 Then PlayerActive1.State = 0: PlayerActive2.State = 1: PlayerActive3.State = 0: PlayerActive4.State = 0:End If
If ActivePlayer = 3 Then PlayerActive1.State = 0: PlayerActive2.State = 0: PlayerActive3.State = 1: PlayerActive4.State = 0:End If
If ActivePlayer = 4 Then PlayerActive1.State = 0: PlayerActive2.State = 0: PlayerActive3.State = 0: PlayerActive4.State = 1:End If
Else ExtraBall = ExtraBall – 1: BallSaveActive = 0
End If
ResetMatrixLights
BonusCount = 1
BonusMultiplier = 1
l6.state = 1
If Game_Over = False Then
‘Plunger.CreateBall
BallRelease.CreateBall
BallRelease.Kick 90, 7
PlaySound SoundFX(“ShooterLaneKickoutt”,DOFContactors), 0,1,AudioPan(BallRelease),0.25,0,0,1,AudioFade(BallRelease)
BIP = BIP + 1
If BallSaveActive = 0 then BallSaveTimer.Enabled = True : ShootAgainLight.State = 2:BallSaveActive = 1 else BallSaveActive = 0:ShootAgainLight.state = 0: End If
End If
UpdateScore
End SubSub AddScore(ScoreValue)
Score(ActivePlayer) = Score(ActivePlayer) + ScoreValue
FirstSwitchHit = 1
UpdateScore
End SubCreator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.You need to login in order to like this post: click here
May 31, 2018 at 10:12 pm #86968sounds like a lot of em tables bonus count is what you are looking for. check out some of loserman’s em tables to see how he does it, or check out my Gemini table (has my more recent way of doing it that I like better than my older em tables)
You need to login in order to like this post: click here
1 user thanked author for this post.
May 31, 2018 at 11:02 pm #86970Thanks, Borg, that did the trick! Granted, I just looked at yours and basically rewrote the code to match my own setup, but I’ve now got a fully and correctly functional EM/Early Gottlieb SS style bonus countdown functioning.
Latest version is now attached.
The last thing I will probably be adding is going to need to be the tilt functionality.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.Attachments:
You need to login in order to like this post: click here
June 1, 2018 at 12:00 am #86976Here you go. Open to anyone to use if they need it. A project just to see what VPX was about, but decided to stick with FP for my tables. Had to remove a couple things, and did a rough and dirty job of changing the lighting and the glow of the lights as my settings were customized to the table graphic I had. I swapped the pf with my Playboy one.
This was me just experimenting with things, so it’s not a normal way, but the concepts should be understandable as I tend to do things the exact same way as much as possible. It’s a decent template, pretty feature loaded already, maybe someone can give it some love and finish it off.
http://shiva.pinballnirvana.com/uploads/vpxTemplate.zip
_____________________________________
Latest projects and rants at My Facebook Page
_____________________________________
Latest Project: fpxEngine Table BuilderYou need to login in order to like this post: click here
June 1, 2018 at 6:55 pm #87060Thanks for posting it, Shiva. I’ll have to dig into that one as well.
I might be spending some time cleaning up my existing code before I look at the next “feature” to implement.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.You need to login in order to like this post: click here
June 2, 2018 at 7:41 pm #87225So I’ve been a reasonably busy bee. Got a drop reset working that isn’t the “reset the individual five seconds after dropping”, that adds one to the kickback when all three are dropped, then the drops reset.
Yes, I now have a left lane kickback installed. Default for each ball is kickback is already activated. So the table now has three plungers in it. If I need one for each outlane, I can always duplicate the objects and scripting. I also added some sounds (credited in the script). Rollover stars are now in the left passage, and are activated with the bonus multipliers. And the apron cards (with “for position only” textures) will rotate depending on Free Play and Test Mode (for the moment) being set to true.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.Attachments:
You need to login in order to like this post: click here
June 2, 2018 at 8:37 pm #87232just took a quick peak at the frame, seems to be coming along. I didn’t see anything that jumped out at me as multiball handling?
also, even though we are just playing in virtual when I make tables, original or recreations, I try to make them so they act like real tables and could be built as real tables. One of the big parts of that I jokingly call “save the balls!”, and is basically no destroying of balls, no magic holes where it disappears and reappears somewhere else unless that can actually be accomplished in the real world by subways, or whatever. the first part of that is setting up a trough system in the table and only creating balls at table init. just a thought.
You need to login in order to like this post: click here
June 2, 2018 at 9:18 pm #87238Yeah, I’ve just been working at getting other things handled. I’m not sure I’m going to go so far (yet) as to set up a proper trough. But I take your point with that, so far I’m working to maintain things within limits of what can be done normally on a real table, even if I’m not actually moving hidden balls under the apron. Although, I’ve got ideas for a future original table with a multiball mode where I’ll want to generate five balls of five different colors (mix of Sentai and Voltron tropes), which might be doable in a real table but would be a colossal, complicated and expensive pain of a trough, subway, vuk and sensor system to actually implement.
Regarding multiball, I am still using the template “multiball”, although I’ve deliberately limited it to five balls with some extra logic. Partly because the table will crash if it generates a sixth ball, which appears to be related to the ball shadow handling. I may fiddle with that to see if I can squeeze a sixth ball out of it.
In the next couple of days, I will probably be looking at creating a captive ball assembly somewhere on the table. I might have to move the multiball kicker over and edit the surroundings to make room for it.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.You need to login in order to like this post: click here
June 3, 2018 at 7:27 pm #87354OK, got the captive ball installed today (installed in place of the far left bumper), all that was an issue was tweaking position because I should add a “clear the Extra Ball variable” to the game start script. It does work, but it reminds me of my difficulty hitting shots precisely, but I can hit it and it adds an extra ball with every (good) hit. I also fiddled around with decals for lighting inserts (thanks Shiva and scottywic) and meddled a bit in Materials land. I also found I had some bugs in my test mode code, and fixing that I introduced (and fixed) a ball count issue.
I think I know what my next task should be… and that’s setting up a B2S on my frame.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.Attachments:
You need to login in order to like this post: click here
June 3, 2018 at 9:49 pm #87361nice. looks like I have a little time to play the latest version, so see what you have. BTW the engine is part of the shivaEngine series, so there’s a lot of things in there like ball to ball player memory, and also features like Bonus held over and bonus collect in case you decide to do that. It also has a sound system set up for both EM and SS type games, as the engine can be used for pretty much any game from 1960’s EM up to System 11. If you have any problems understanding the code just ask (some things were removed like Multiball to be rewritten, other things like the Musicset feature were just put in roughly and is non functional) It’s still pretty damn powerful, maybe a bit too much, but certainly good enough to learn from and take bits of code as you need it.
_____________________________________
Latest projects and rants at My Facebook Page
_____________________________________
Latest Project: fpxEngine Table BuilderYou need to login in order to like this post: click here
June 3, 2018 at 10:14 pm #87363I’ll have to tuck into your engine template here sometime this week; various memory functions are something I’ll need to think about in terms of what I’ll need for most tables.
I also have to think about whether or not I’m going to try to bake in UltraDMD and PUP features, or leave those for when I tackle actual table builds.
Creator of the first PinupPlayer PostDMD mods for VPX - PostDMD for Masters of the Universe VPX and Jaws VPX.
Head Proprietor of Pisces Pinball, a VPX table developer.
Lead Technician of MC Chase Amusements, a private arcade in our home basement.You need to login in order to like this post: click here
June 4, 2018 at 1:58 am #87404Yeah good. It always screws up beginning coders, but this system is very simple.Most coders make this far more complicated than is needed, mine just uses light state. It takes a snapshot of which lights are on/off/blinking that you define using Set MemorySlot(x) and has 3 subroutines. MemorySave() takes the snapshot (like at the drain before the bonus countdown starts, MemoryLoad() will reload the lights (like at the start of a new ball) and MemoryReset() clears out all lights for each player. In my template, I just have the center targets done, they will remember the light state from the previous ball. Define each light you want to store the memory like this
Set MemorySlot(1)=LightCTarget1 Set MemorySlot(2)=LightCTarget2 Set MemorySlot(3)=LightCTarget3 Set MemorySlot(4)=LightCTarget4
Now all you have to do is add the code for what the lights do depending on their state in the new ball subroutine. (which I never did yet…oops)Â I’ve been using this for 16 years, once in it’s pretty much foolproof, hasn’t messed up once.
Here’s a copy of the complete code
' *******************************************************
' ***                   Player Memory by shiva                              ***
' *******************************************************
' here's where you set the lights you want for Memory feature. You can have up to 99 lights, as it's preset
' in the engine.. Will Handle both LightStateOn and LightStateFlashing as well.
Dim slot 'Purely for Looping purposes (unless you like to type a lot...)
slot=99 'should be the same number as values for KeyMemorySlot and last value in KeyMemory
'variable to set lights to memory, make sure the number matches with the last number in the Set MemorySlot code
Dim MemorySlot(99)
' variable matched to KeyMemorySlot. First value=amount of players, the second should match KeyMemorySlot
Dim Memory(4,99)
' Save Memory states
Sub MemorySave()
dim p
for p = 1 to Slot
On Error Resume Next
Select Case Player
Case 1
if MemorySlot(p).State=0 Then Memory(1,(p)) = 0
if MemorySlot(p).State=1 Then Memory(1,(p)) = 1
if MemorySlot(p).State=2 Then Memory(1,(p)) = 2
Case 2
if MemorySlot(p).State=0 Then Memory(2,(p)) = 0
if MemorySlot(p).State=1 Then Memory(2,(p)) = 1
if MemorySlot(p).State=2 Then Memory(2,(p)) = 2
Case 3
if MemorySlot(p).State=0 Then Memory(3,(p)) = 0
if MemorySlot(p).State=1 Then Memory(3,(p)) = 1
if MemorySlot(p).State=2 Then Memory(3,(p)) = 2
Case 4
if MemorySlot(p).State=0 Then Memory(4,(p)) = 0
if MemorySlot(p).State=1 Then Memory(4,(p)) = 1
if MemorySlot(p).State=2 Then Memory(4,(p)) = 2
End Select
next
end sub
' Load Memory states
sub MemoryLoad()
dim p
for p = 1 to slot
On Error Resume Next
Select Case Player
Case 1
if Memory(1,(p)) = 0 then MemorySlot(p).State=0:end if
if Memory(1,(p)) = 1 then MemorySlot(p).State=1:end if
if Memory(1,(p)) = 2 then MemorySlot(p).State=2:end if
Case 2
if Memory(2,(p)) = 0 then MemorySlot(p).State=0:end if
if Memory(2,(p)) = 1 then MemorySlot(p).State=1:end if
if Memory(2,(p)) = 2 then MemorySlot(p).State=2:end if
Case 3
if Memory(3,(p)) = 0 then MemorySlot(p).State=0:end if
if Memory(3,(p)) = 1 then MemorySlot(p).State=1:end if
if Memory(3,(p)) = 2 then MemorySlot(p).State=2:end if
Case 4
if Memory(4,(p)) = 0 then MemorySlot(p).State=0:end if
if Memory(4,(p)) = 1 then MemorySlot(p).State=1:end if
if Memory(4,(p)) = 2 then MemorySlot(p).State=2:end if
End Select
next
end sub
' Reset Memory States
Sub MemoryReset()
dim p
On Error Resume Next
for p=1 to slot:Memory(1,p)=0:Memory(2,p)=0:Memory(3,p)=0:Memory(4,p)=0:next
End Sub
Set MemorySlot(1)=LightCTarget1
Set MemorySlot(2)=LightCTarget2
Set MemorySlot(3)=LightCTarget3
Set MemorySlot(4)=LightCTarget4
' *** END ***
_____________________________________
Latest projects and rants at My Facebook Page
_____________________________________
Latest Project: fpxEngine Table BuilderYou need to login in order to like this post: click here
-
AuthorPosts
Forums are currently locked.