4/19/2017 – More cabinet work

So the first layer of black paint was down and looked as good as it was going to get.  Next layer is going to be white.  Took a good amount of time to mask of the pattern that I needed, and snap a few pictures.  Doesn’t look like much yet, but I think it is going to look really nice after another two coats of white.  I was amazed at how shiny and reflective the black looked without spraying.  You can definitely see the bumpiness from the roller, but with adding some mineral spirits into the white, I think that it is going to lay even flatter.  (I think that I’m going to need about four coats of the white enamel to get the look that I need.)

This might be the first time that people can really guess what the retheme is going to be.  (Maybe because of the masking tape used to block off the black.)  Here are the pictures:

Please ignore the messy garage.  I really like that I’m keeping all of the fumes out of the house.

In other updates, Jeremy updated the Pinball Makers website with more information on the Power Interface board.   (That is the board that can be connected to an inexpensive 48V power supply from Ebay, and provides more bulk capacitance to fire pinball coils).  He did another great job writing up how to populate the board.  Thanks, as always, Jeremy!  Here is a Pinball Makers link to the write up.

04/11/2017 – Houston, we can read a switch matrix

There are a lot of different things that need to come together to get this retheme done by Pintastic.  Many of them are on my shoulders, but some of them are on Joe’s shoulders.  Joe, I apologize for badgering you, but the schedule is so tight for this project, that everything has to happen perfectly to get this thing in some semblance of finished.  Today, I literally bothered Joe during his lunch hour.  It is his theme, his art, basically his baby, and today, all I did was nag him about things that I need because we are less than 3 months from showing this machine off at Pintastic.  Joe, I’m sorry.

Yes, there are plenty of pinball companies out there that get a new product out in 3 or 4 months.  (Well, actually there is really only Stern, and all the other companies seem to fall late by quite a bit.)  Joe and I are out to prove that a bunch of fools (well, at least I’m a fool) will try to go from a Dolly machine to a completely new machine with new rules in about four or five months.  (We literally didn’t start this project until the beginning of February if I remember properly).  It’s not like we have a whole company behind us, it’s not like we work on pinball during the day, this is simply after hours, during weekends, etc.  A truly audacious goal.  At this point, I literally have no idea if the machine is going to be completed…but we will try our best.

This also proves that anybody can really do this stuff and at a reasonable price.  My budget is about as low as it can go to make a machine, because to me, pinball is simply a hobby.  It is a heck of a fun hobby.  I would say in many ways building pinball is more interesting to me than playing the machine itself.  (I guess I have to say that because I dropped out of league to try and get this machine finished.)  I can guarantee this won’t be an $8K machine.  I can also guarantee that doing these updates to the machine will breathe life back into a trashed machine.

Enough of that crap.  Last Friday, I finished the code for reading a switch matrix.  I checked it into the repository yesterday, but since it wasn’t tested, I didn’t bother putting a new version that can easily be used by upgrade.  Today, I got around to dragging the laptop, the piece of plywood with the OPP boards, and the Bally interface board, and plugged it into the cabinet.  (Bally’s have a switch matrix in the cabinet, and on the playfield.  The playfield is torn down, so I had to go with the cabinet).  Ran Gen2Test which now continuously reads the inputs from both direct switches and a switch matrix if it is configured, and it worked immediately.  Bits were showing up as I tripped them, and there was no bleed from one column to another column in the matrix.  Super sweet!

What does this leave on the firmware?  Well, the only thing left is using a switch matrix input to trigger a solenoid, and being able to change the solenoid configuration.  I’ve already figured out the best data structure to trigger the solenoid automatically, so all the design is really done.  That means I’m just down to the coding which should be pretty easy.  Reading a switch matrix is one big worry out of the way.

If interested in the details, it works like this.  During the main loop, it reads a single input byte.  It then switches to the next column, so if a capacitor needs to be charged it has the time to do it.  It then walks through the data byte looking for changes from the last time it read that column.  If it changes, it clears a counter for each input byte to zero.  If it hasn’t changed, it increments the counter and checks to see if the count has crossed the threshold.  If so, it declares the bit as active, and holds the bit active until the data goes low and crosses the threshold count again.  This makes sure that glitches aren’t caught and automatically debounces the signal.  Next time it moves to the next column, and repeats the process.  This happens thousands of times a second, so for a human it will be instantaneous.  It should detect changes in less than a ms.  Nice!

I wish I had a snazzy video that I could show, but let’s be serious.  It would simply be a picture of the computer screen with one of the 64 ‘0’s changing to a ‘1’ when toggle the coin or tilt switch.  Certainly not worthy of a video.  Maybe this weekend I can make a video, but more than likely, that would be on SS3.

 

04/08/2017 – Pictures of the Teardown

After taking a whole bunch of pictures during the tear down, I suddenly realized I should probably show the pictures.  Dolly is a street level game, so it is simpler than many of the newer games that have multiple levels.

Here are all 31 pictures that I took.  I tend to take a single picture that shows the whole setup so I can refer back to it.  At that point, I remove plastics, then take a picture of each of the different areas of the playfield.  Finally, I take detail photos of anywhere that I think that I might get confused when reassembling.

As I take things apart, I put each section in a separate bag or bin so that I don’t have a huge bucket of parts that I need to know where they go.  Each bin or bag is marked with a location, so I can remember where everything goes.  It’s just that simple.

Here’s the photos:

This slideshow requires JavaScript.

Got the initial implementation of the switch matrix reader completed, but must be tested.  More on that tomorrow if I get some time.  Also, I’ll add some info on the cabinet work that I’ve been doing.  (The last photo in the slideshow shows the cabinet).

4/2/2017 – “Pull it down, tear it down”

I continue to enjoy listening to New Model Army, and as I was tearing down the playfield today, the song just kept running through my head.  Anyhow, back to pinball.

Hey, if I want to get this thing done by Pintastic, I better get my butt in gear.  Joe has been doing his part.  He has been working on rules, art, and even some toys for the playfield.  His pop bumper caps are spectacular.  (Ahhh, but I can’t show them to you because that would tell you what the retheme is, and if you search, you can figure it out, I’m not going to let the cat out of the box.)

This week, I started pondering the long lead items since it is about 3 months until Pintastic.  The longest lead item that I can think about is getting the vinyl artwork for the playfield printed out.  As of Friday, nothing was done on the playfield at all towards getting this retheme moving.  I decided this weekend was the time to tear down the playfield so I could get a good scan to Joe.  I’m going to be using the same process that I used on SharpeShooter 3 which is sand down to wood, apply white primer to the wood where I don’t want the wood to show through, vinyl overlay on the playfield, then finally three coats of auto clear.  I was happy with the results, and should be able to do a much better job this time since it is the second iteration.

On Saturday, I got a few hours to myself, so the tear down began.  Everything has to come off the top of the playfield so that I can get a good scan.  I’m using the HP4600 scanner that Joe actually bought for me a couple years back.  (It has gotten a ton of pinball use, and is a spectacular scanner for getting the job done.)  I just read that it is the same scanner that the Nightmare Before Christmas guy used to scan his playfield.  You really can’t beat the price at about $40.  (I did write up a blog post a while back of how to use it through virtual box and Windows XP if it needs to be supported on newer operating systems).

So basically the process is tear everything off the top of the playfield while taking a ton of pictures.  Every picture you take of the playfield will help you put it all back together so have your digital camera ready.

I tend to take a picture of the whole playfield, then remove the plastics, take another picture of the whole playfield, then zoom into sections of the playfield itself.  If you take enough pictures you can figure things out such as which posts are just screws, and which posts need to have the little nubbin on the top to hold a plastic.  It also helps to show you where all the rubbers should go (or maybe I should say where they were at before you started mucking with the game).

I break the playfield down into different sections, and put the hardware for each section in a plastic bag or a bin with a piece of paper marking where it is from.  If there are any difficult sections such as a gate piece of metal is above another piece of metal, I take individual pictures to highlight how it should go back together.  (When putting everything back together, I tend to print out the pictures so that I can quickly flip back and forth between them, or even have multiple pictures visible at once.  I just find that easier).

After removing everything from the top of the playfield, I go to the backside of the playfield and remove switches, targets, etc.  The screws that hold these in are also labeled individually in a bag.  The less things that are left as guess work, the better.

Last thing I did was remove the pop bumpers.  The pop bumpers where the only things that had to be desoldered.  When I get around to sanding the playfield, I will also have to remove the inline drop targets, but I can put that off for another day.

Since the playfield is now flat, scan row by row.  For this project, each row of the playfield was four individual scans (trying to overlap each of the scans about 30%).  In the end, I had five rows for the whole playfield.  Everything was scanned at 600 dpi.

Here is an example of an individual scan:

Full Size Scan

Dolly in all her glory

To stitch the scans together, I first stitch each of the rows individually.  I use the Microsoft Image Composite Editor (ICE) which is free and does a fantastic job.  Stitching the rows one at a time instead of stitching the whole image reduces the chance that it will warp and rotate the images.  I actually lay down a yardstick to try and get the rows to be coherent.  At that point I had five rows, which I finally stitched into a single scan of the playfield.  That last step takes a good amount of time.

Here are the rows after initial stitching (reduced size):

RowRow2_smRow3_smRow4_smRow5_sm

Here is the whole playfield (reduced size):

Playfield

Not forgetting the plastics, I also scanned all of those in so that I could send those to Joe.  Three of those plastics were a little bit large so that I needed to stitch two pictures together to form a single plastic.

Here are the plastics (reduced size):

At 600 dpi, Joe should easily be able to figure out where the inserts are and such.  OK, I’m tired of typing, so gotta end this thing now.

03/26/2017 – New SharpeShooter3 Video

Here is a video showing the difference between different solenoid initial kicks for the flippers and increasing the voltage.  What was once a lackadaisical unplayable machine is revived into a fun to play snappy machine.  Yes!  It really goes to show that it is difficult to set up the initial kick without using a pinball, and how a little bit of extra voltage (24V upped to 30V) makes a ton of difference.  I’m now back to excited about the machine.

3/20/2017 – Interface board wiring complete

Finally finished up the Bally interface board wiring.  It is one of those things where you think that it will be easier to just solder the wires into the board instead of putting connectors on both ends, and then, about half way through it, you wonder if you made the correct decision.  The good part is that I should now be able to plug the boards into the Dolly retheme.  The bad part is that both the firmware isn’t quite done to support the switch matrix, and the backbox has moved to the garage for painting.  (Still hasn’t gotten warm enough to start painting, so it is just sitting there waiting for the weather to turn.)  Now that all the annoyance of wiring the interface board is completed, I’m getting pretty excited to do some initial tests.

Bally Interface Finished

Finished wiring for Bally interface board

I’m not bothering to create a test fixture to test switch matrices, so that will be implemented and tested on the Dolly playfield itself.  The processors are supplying the voltage for strobing the columns, and all of the grounds are tied together so as long as I can get 5v to the processors, I should be able to test that functionality.  A new firmware command will be needed to read the switch matrix inputs.  Similar to the other read inputs command, read matrix will send back eight bytes of data or an 8×8 matrix.  The firmware is going to automatically debounce the inputs for convenience.

At this point, the firmware is complete for re-running all of the SharpeShooter3 code.  I’m still running into small bugs here and there where I haven’t moved from first generation code to Gen2 code fully, but the bugs seem to get easier and easier.  I’ll throw up a video of the current game play.  I have to slowly work on going through each of the modes to make sure that they are working.  When I brought it to Pintastic in 2015, it didn’t have a ball search algorithm.  This meant that if you jostled the cabinet a lot when the ball was being kicked out of the kickout hole, it would never try to kick out the ball again.  That must be fixed.

Another issue is that the flippers are very under powered.  It could be because I set the initial kick without using a pinball.  I can increase the initial kick, or increase the voltage of the SMPS, but I’m just not sure what is the best way.  The other thing I’m noticing is that previous I was running everything at 48V and everything was really snappy and fun.  Now everything seems dead. Bah!  Seems like more time has to be spent getting it back to where I am happy.  Here is the video.

3/14/2017 – Creating synchronicity

Serial communication bandwidth is “precious” in the OPP environment.  The serial commands are designed to reduce the amount of necessary commands that are needed to control the pinball machine.  The two big heavy hitters are reading status, and controlling lights.  Both of those things happen all the time so efforts were made to reduce this traffic if possible.

Right now the status of the inputs are polled constantly.  There has been a request to change the firmware so that it only sends updates when an input changes.  That would certainly reduce the amount of traffic, but it may come at a terrible price.  Right now, if a message gets corrupted, it is simply dropped.  (all serial messages contain a CRC, so that they can detect if an error has occurred and just ignore those messages with bad CRCs).  If there is a parameter that configures the boards to create messages only when inputs are changed, there is the possibility that a change message could get corrupted and dropped.  At this point, I have not seen any evidence of any serial communication corruption that has not been caused by overflowing the serial port buffers.  That may mean that my fears are unfounded, and I can just ignore them.  Of course, it heavily depends on how people wire their machines.

Back to the other heavy hitter on the serial port line.  It is turning bulbs on and off.  To reduce that bandwidth, the OPP firmware supports commands that tell lights to blink slowly or blink quickly.  After a blink command is sent, the firmware makes the updates automatically so the pinball framework processor doesn’t have to bother sending those commands.  Here is where the problem is…how to synchronize all that blinking because each OPP board has its own processor with its own crystal running at its own frequency.  The blinking became very noticeable as the pinball machine ran for a half an hour or so and the state machines drifted apart between the different cards.

Predicting that this would be a problem, the hardware supports a Synch pulse that goes between the boards.  (Synch of course stands for synchronize).  Here is a description of how the synch pulse works with the new firmware.

When the inventory command is sent, the first OPP board suddenly realizes it is the first board and starts driving this signal.  (Nobody can drive the signal before because of the possibility of two processors driving the signal.  That’s not good because one may be trying to drive a high value, while the other may be trying to drive a low value, and that forces the processor driving the low value to sink the maximum amount of current that the other processor can source).  The first board drives the signal high for a short period of time.  All other boards read this signal and can use the rising edge of the signal to synchronize their internal LED state count, so all of the boards are at the same state in their state machines.  Even if the crystals are off by 60 ppm, or so, the processors continuously re-adjusts to the signal produced by the first board.  Nice and simple.

In the repository, this will be image version Gen2.rev0.2.0.2.cyacd to support this new functionality.  On to the next item on my list.