VP8 Bally SS Recreation Join the Cirqus! Cirqus Voltaire (scapino) V2.1 is here!

Solid State Machines

scapino

Pinball Wizard
Joined
Jun 23, 2003
Messages
321
Solutions
2
Reaction score
65
Points
35
Get it at...

http://www.nwlink.com/~scapino/Index.htm
and eventually at AJ's.

Release History

*****
Second Release v2.1

PacDude was kind enough to fix some things to gain a pretty good chunk of speed.
There are changes, both to the table, and to the script, so unfortunatly, you need the whole download again.

*****
First Release v2.0

What a monster this is! Sorry about its size, but since the effects on this table, like GI
flashing, the neon, and the ringmaster are so important, it required a LOT of graphics! With
this in mind, I put the script in a separate file, which needs to be in the same folder as
the table. Now if I can fix something in the script, you only need to download a small file,
instead of all the graphics again.

Speaking of monsters, you probably need a good speed machine to run this table. It runs great
on my 2.4 ghz P4, with 1 gig of ram, and a NVidia 5200 video card. It does skip a bit during
NEON multiball, because of the many large reels that make up the neon, switching all at once.
You should definatly turn of hardware acceleration. Also, if you expect smooth ball movement, all the time, dont bother downloading this table... :) Depending on the number of lights flashing at any time, and the number of balls on the table, at any given moment, the speed changes quite a bit. Suffice it to say, I was able to play well enough to join the circus, defeat Voltaire and score 150 million points, so it cant be TOO bad.

I have put menu choices for turning of the GI effects, the neon, and also switching between
fading playfield lights and simple on/off lights. When the Boom balloon is hit EVERY light on
the table (Playfield, GI and neon) flashes at the same time, it would REALLY skip badly. So I
was able to put in a menu choice that disables all the flashing, when the boom balloon is hit
(for 2 seconds). If you have a slow machine I would recommend turning off the GI, neon, boom
balloon, and fading lights. You'll miss the great light show, but that’s life. :(

While this version is far from perfect, its still great fun to play. I could
have done better, but it probably would have taken another 6 months. The big problem is it
did take 6 months, and I learned so much doing it, that to make it perfect would have
required scrapping everything and starting over again. :)

So I trudged along, determined to minimize the problems in my existing table, so I could
release it....FINALLY!

As I said, it came out pretty good. There are some visual anomalies (certain reels don’t quite match the background they are drawn on, due to my using an newer version render, later in the process). They are all real close and I don’t find the differences too annoying...:)

This table has the animated and incremental plunger. You can press and/or hold the down arrow
key to pull the plunger back, or the up arrow key to push the plunger in. Then just press enter to launch the ball.

I have been following Pac Dudes hunt for getting VP and VPM to play nice with each other, and
after this table I can really appreciate his work.

I have spent countless hours writing and re-writing code to get VPM to acknowledge ALL of the
VP switch state changes, but it really is a lost cause. Every once in a while a VP switch event WILL happen when VPM(the emulation) isn’t ready for it and it will go un-noticed. That’s just life in VPM land....

It happens a LOT with the magnets. VP allows you to hit the ball so fast, that the magnet doesn’t always have a chance to collect it. Its annoying but I suppose we have to live with it for now.

Luckily, the software for the real game is so well written that the game does compensate for
balls that don’t get kicked when they are supposed to, and switches that are not hit, when they are supposed to, and balls that are not caught when they are supposed to.

To make things simpler, I tried taking the load off VPM, by really separating the different functions of VP and VPM.

I tried to limit VPM do doing the bare minimum of what it supposed to do. Read switch states, activate solenoids and lights, and run the DMD.

I wrote my own Ringmaster mech, based on the real mech. I said to myself, what’s a motor, with a wheel on it and 3 switches that get hit by cams? In VP, its a timer, simply. So I made a timer, and I had it increment a count, which stood for the position of the wheel, and when
the count hit a certain number (in this case 0, 120, and 180), the switches that were supposed to be hit, were activated in VP by doing the controller.switch = true thing. The ringmaster down switch was at zero, the mid switch at 120, and the top position switch at 180, just the same positions of the switch hitting pegs, on the ringmaster wheel.

The 2 reasons I wrote my own ringmaster, instead of useing the pre-made mech in vbs, are...
1: I needed to know the possition of the ringamster at all times, for the animation...and...
2: I wanted to see if I could code an emulation of a mechanical device in VP.

In the spirit of just trying to emulate the real table, and to get a better understanding of
the way things work, I also eschewed the use of VP ball stacks. I built a 4 ball trough on
this table, similar to the real one, and also I made a 4 ball trough for the balls that go
into the subway. The regular VP stack was ALWAYS eating a ball at random, and never spitting
it back out. It was probably worse on my table, because the reels take so much processor
power, that it would get missed more often then on a traditional VP table.

My version misses occasionally too, I'm sad to say, but not as often. So don’t be supprised if once in a while, a ball will disappear into the ether, or worse, you find yourself batting
around eight balls. My apologies. I might have been able to trace down and re-write code to
make such an occurrence impossible, but it would have cost millions of dollars and thousands
of lives...:)

Oh, yes....On highwire multiball, all of the captured balls will not be released all at once.
Since I have an animated lock spike, I needed more control. I had to write a stackless highwire capture. This means each ball is kick out one at a time. Its a small thing, but necessary at the moment.

Here it is..have fun, and dont take it too seriouslly, its just a game. I probably wont get around to fixing any MAJOR issues for quite a while. I want to move on to other things. If anyone out there thinks they can fix something, feel free. Just let me know so I can also fix the version on my site (and give proper credit.) Just make sure the thing you fix is really fixed. The problems that crop up seem so random, that you will think you have it fixed, and then on the hundreth game, it shows up again. This has happened to me A LOT! And you wonder why I'm sick of working on it..... ;)


*****
Thanks go out to Mr. Hide, for his great plastics scans.

VERY big thanks to my play testers,

Kabuki Joe
Mitchell
Pinball Ken
MatAllum
Mr. Hide
Ice Warm
Pincode

Special thanks to PacDude / Fuseball / wpcmame and everyone else
who recreated this table in the past. This version would ABSOLUTLY NOT have been
possible without your hard work, and attention to detail!

Enjoy Cirqus Voltaire!

Kurt Herman
scapino@nwlink.com
 

Attachments

  • scapcv20.jpg
    scapcv20.jpg
    349.3 KB · Views: 754
Drooling as I look on. I can only admire your tables, since they are more than my junk heap can handle. You must have a special box of crayons, because your SS are always beautiful.

John
 
WOW!!! :D :clown: :jocolor:

With all the bright colors around the edges of the playfield, the center looks a little dark, but still incredible. It sure is a resource hog, but well worth the playing.
penguin66
 
The center is a little dark...:) Its really kind of a cheat on my end. If I had the lights from the sides spilling all the way to the center, I would have needed 4 times as much graphics for the flippers, and playfield lights. I would have had to have animation reels for light off-left gi off-right gi off/light off, light on-left gi off-right gi off/light off, ect. You see where I'm going with this.... Binarilly speaking Each reel would have had to have 8 frames (for simple on/off playfield lights). And since I'm useing 4 intensity fadeing lights, that would make 32 frames... and dont get me started on the flipper animations! 6 positions, times 8, pluse the frames needed on the left flipper for the ring 1 bolt!!!!!! DAHHHHHHHHHHHH!!! Gives me a headache just thinkin' about it. :)

Kurt
 
That gives me a headache just thinking about it too! If you were insane enough to even attempt to program this, no one could play it because of all the additional CPU resources that would be required.

You've done an incredible job on this table. Thank you for sharing this work of art with the rest of us!
 
Thanks, pengy. :)

By the way, PacDude tells me he was able to mod the table to get some good speed increases on his 1 ghz machine. As soon as I get his mod, I'll put the new improved version up. PD really knows his VPM stuff!

Kurt
 
I read some of the things that PacDude was able to do in terms of mods. They sound promising. This is such a great table it would be a shame for people with older machines to not be able to enjoy this table. In fact, I spent the last hour enjoying the table. Thanks again!
 
Well said pengy, I agree whole heartedly.

Kurt, when you and PD have worked out the version for the slower(?) machines will you be having two versions eg. slow and fast - like some of the tables from a few years ago or going with just the one.

Frankly I think it would be cool to have both, but of course it's your call.

Great job - don't know where you get the time let alone the patience to c o m p l e t e a task like this.

RussT
 
Well if the new version runs as well or better then the first version, I dont see why we would need both. :)
I just got it back from PD, now to test it!

Kurt
 
scapino said:
PD really knows his VPM stuff!

Kurt

He sure does. It'll be great if I can play this table, even with some eye candy disabled.

I don't know but I usually get speed problems with all tables that have reel-based flippers. Maybe they require a lot of cpu speed?
 
The newer version with some great speed increases by PacDude is out. Version 2.1, at my site and soon at AJ's.

Kurt
 
ooohhh

Much better speed! I had everything turned on and no ball stutters at all. I like 8) :clown:
 
I'm glad to hear my changes helped. I probably spent a good 5 hours implementing them and testing them. I can't guarantee there won't be some new issue with the Ringmaster or something (let me know if something comes up), but I got through a 114 million game OK (to Stage 4 of Joining the Circus) with no problems on my 1GHz PIII so it must not be too bad. Shutting off the neon effect made the game much smoother yet (but I played that game with it on).

I've got the feeling based on some of issues I ran into that some of the reels are actually getting pegged many times a second (changed to the same frame they're already on, which causes a slowdown, UNLIKE walls which don't use any more real time once they've already changed state), but it would have been a lot of work going through and rewriting routines to get around it. It's one reason I encourage people to use my lighting system as the reel handlers are all optimized to never peg anything. There's so many overlapping GI checks, etc. that it would take awhile to convert the table over to it and because Kurt's fading reels are the wrong order (for my system), I can't just plug it in anyway. I'd have to adapt the handlers for that reel order (I chose the order that I did based on the ability to easily disable fading). I can't even see any fading effect in Kurt's table as it is (turned on or not) and I didn't really see the type of fade control I would expect so I'm not sure if it's even working, so I have the feeling that it might be worth it (the reels I examined looked like they would look really cool with my fade system controlling them, though). If Kurt is interested in switching it over, I'm sure we could work together to move the system over and see how it performs and looks. The reels would either need their frame order changed or I could adapt the reel handlers to use that order without much difficulty (and just append the core like I usually do anyway). The main issue is that the image preview editor doesn't show large reels very well so I can't see what I'm looking at on many of them. Overlapping reels wouldn't plug right in, but they could still be easily adapted to work as they currently are (the light check if/then format is just a little different) and the regular lights could fade easily enough.

But whether it would actually run faster or slower, it's hard to say without actually trying it. It depends on what's getting pegged (not all are from what I can tell; mostly in the animation department. I think the Ringmaster is getting set every timer cycle to its current frame, regardless of whether or not that frame has changed position or not, which would slow things down). But I'd have to go over the timer/mech handler more closely to see what's happening. It was a little beyond the scope of what I had in mind yesterday. :D

Basically, it would help if Randy could optimize reels the same way lights and walls are so that they don't use CPU time when a reel is set again to the same frame it's already at. That would make all that extra coding to avoid that situation unneccessary. But until Randy showed up again recently, that wasn't even an option that could realistically be considered.
 
It's still not running very smoothly but it's almost playable. I wonder if it's possible to get rid of the reel-based flippers because I suspect they're the big cpu eater in my case. I'm afraid it's not easy since they're graphically "connected" to the masterdecal???

I should upgrade to XP eventually. Windows 2000 is a horrendous system. All my tables and MAME are at least 20% slowed than in Win 98ME. I don't think it would require much more to make this table playable, probably just those flippers.

Thanks anyway for both your efforts.
 
I dont think there is any overlapping going on (accept perhaps the right side Gi/Neon). I dont use a timer to scan solinoid states, just the direct handler (subroutine called directly from SolCallback(), lets VPM tell Vp when a solinoid changes state, instead of having VP check in periodically with VPM to see if there were changes.)

In some ways, I wish the same thing was available for lights. IE LightCallBacK(), that you could call a sub directly, with the changed state in "enabled".

That way VPM can tell VP when a light has changed(and how), instead of VP checking with VPM.

As for the fadeing lights, I might have the fade set a little too quick. It really is all done with the addvalue in the light reel. The menu choice that turns it off, just skips the animation and goes straight to the final frame with setvalue.

Kurt

Kurt
 
I just looked deeper into the changes you made to the lighting routine (calling it with a timer at 100), instead of having VPMs lampcallback call it.

That setting of 100 pretty much makes the animation speed irrelevent. I believe I hade the update rate of the reels that get animated set to 20, and there are 4 frames which makes 80, for the whole cycle, so with the timer at 100, the whole animation gets skipped.

I'll experiment a little more with a script change that will allow people to speed up or slow down the effect.

Kurt
 
Yeah, but I tried it before I adjusted the light timer and still didn't notice. Maybe it needs 30-40ms to really notice per frame. As for the light timer, just click on it and change the value lower on faster machines. You could set up a visual way to adjust it during the game, though.
 
Well, I decided to try and not disable directdraw when playing this table... I minimized VP as soon as I could and it eliminated the pixelization effect I was getting (it's a little crapshoot -- have to minimize anything so you don't have to application switch to the player window).. but the ball movement is as smooth as butter on my geforce4 mx420 card with direct draw enabled... it plays VERY jerky with it off. Even during Frenzie, I was still running above 60 FPS (all in-game features disabled).. smooth as silk.

I recommend to anyone still having troubles to try to minimize VP so when VPM comes up it has the forescreen. I'm using Full Screen 1024x768x32 resolution, and I'm using the new VPM 1.50, and VP6.1 (not the xp fix one).
 
Just tested it with xpfix3.. and it's quite unplayable the same way.. frame rate drops to under 20 FPS with just the first ball. So, I'm losing about 200FPS from 6.1 to this xpfix3. :( And that's with the ball anti-alias turned off. Randy has a lot of work ahead of him to get the speed back.
 
General chit-chat
Help Users
You can interact with the ChatGPT Bot in any Chat Room and there is a dedicated room. The command is /ai followed by a space and then your ? or inquiry.
ie: /ai What is a EM Pinball Machine?
  • No one is chatting at the moment.
      Chat Bot Mibs Chat Bot Mibs: Ruhtra89 has left the room.
      Back
      Top