Button and Joystick Wiring

Almost done! Adding the buttons on top of the acrylic went pretty well, but I lost the use of 2 buttons. My measurements didn't account for the fact the bottom of the joystick is pretty deep, and it conflicted with one of the buttons. Not a huge deal, as it was only to change "Save States", but still a bummer when things don't go as planned. As can be seen below, using a plug in the hole since a button won't work.

In an earlier post, I showed the USB Encoders that came with my Button kit. All the gaming buttons worked great with the existing encoders, and most people would be perfectly fine with that kit. My issue is they didn't allow for the use of "Admin" buttons which is what I was planning on using the 5 buttons on the front of the arcade cabinet for. So instead of losing the functionality of all those buttons, I decide to upgrade the USB Encoders to an Ultimarc I-PAC 2. Also ordered a few wiring kits to go with it. I could have done it myself, but saved myself a ton of time by just spending an extra $5 on the kits instead.

Setup is pretty stright forward. Each of the button switches has a ground terminal and a signal terminal. I ran a daisy-chained black wire as my ground between the buttons and back to the 1st pin on the IPAD "GND". Then I ran the color wires from the signal terminals of the switches back to their corresponding pins on the IPAC. Player 1 controls are on the left, Player 2 controls on the right. Bottom 1A, 1B, 2A, 2B are some of the "Admin" controls I mentioned earlier. Scroll down a bit for a more detailed explanation and diagram of how I wired stuff together.

This is a picture of the cabinet on its back, bottom facing out. Although I have an access panel cut in the back to allow for quick changes, the amount of wiring I just did justified more space to work in. Cleaned everything up the best I could using Velcro ties and adhesive Velcro strips to mount the Raspberry PI and Power Strip.

With all the wiring completed and the cabinet 95% put together, had to do a bit of work on the control configuration for the new USB Encoder. The default settings worked fine for some gaming systems, but others were having a hard time as some of the action buttons were being seen as keyboard keys such as "Shift", "Ctrl", "Alt", etc. Using the IPAC programming utility, I changed some of the pins to read as different keys that were more universally friendly, and made sure my admin buttons were set to function as I originally intended.

Below is a screen shot of the Excel document I put together to help me sort out what needed to be changed, and verify that everything was matching up to where it should.

With that completed, there will still be a few configuration items I will have to address due to the new USB Encoder for the actual gaming systems, but those are simple enough and I will take care of that at a later time.

Finishing Touches

With all of the internal parts of the build taken care of, moving on to a few remaining items to close out the project. The access panel was cut and painted already, but took the time to add a piano hinge and latch to the back.

Since the innards are done, I also went ahead and attached the bottom to the arcade cabinet. Didn't use glue or brad nails here, just small wood screws. Screws were used so that I can easily access the wiring area if I ever had to made any large changes again, or repair anything that would be too difficult to get to via the access hatch.

With that, the build is done! Next post, FINAL BUILD PICs, and a video walk through of the completed cabinet.

Artwork

With the cabinet assembled and painted we can now wire up all of the buttons and joysticks. Before I can add the buttons, we need to apply the vinyl artwork to the controller top and front panels. We will also install the side panel artwork and marquee logo.

Using Photoshop I built templates for all of the included parts. Using a dark background for the sides, I started adding layer after layer of classic gaming characters. My kids had a say in a few of them, but most are from before their time.

For the top of the Controller Board, I found a template that I modified to work for my panel. I am already doing a black /blue theme, so I am good with the design. Also added some button labels to make it easy to identify certain actions.

The front Controller Board was a mixture of design elements. I found the background online, and really like the high res Mario World look it has. It was a bit sparse so I added a few characters from the Mario catalog, along with some more labels fir various menu buttons.

The last bit if artwork will be for the back lit marquee. I will be installing and LED light strip behind it so it will glow when turned on. I wanted it to have a similar look to the classic NES logo, but still incorporate the name and color theme of this project. I was able to find a similar font to the original logo, and come up with this.

After finishing all of the different parts, I added them to a 48in x 24in canvas, doing some tetris work to get them to all fit. I then flattened all the layers and exported to an Adobe Illustrator format so the vinyl printer could use it. Printing cost for adhesive vinyl was about $50 for the entire project.

Turn around time was only about 2 days. Ended up doing a matte finish as I didn't want it to be overly shiny. Here is the adhesive vinyl roll that I picked up once the artwork had been printed. This particular kind of vinyl has micro openings across the surface, making it easier to work out air bubbles during application.

Application was pretty easy, just took a bit of prep work and time. After cutting out all of the individual pieces, I prepped the wood painted surfaces by lightly sanding with 220 sand paper. This light sanding just ensures I don't have any paint bumps under the vinyl. After sanding, wipe the surface down with a wet rag and allow to fully dry. Peel the vinyl along one of the longer straight edges and line it up with the panel edge. Slowly work your way along the surface, using a rag to push out any air bubbles that get caught underneath. Depending on how good the artwork / panel measurements line up, you may have to do some trimming. A hobby knife made the few areas I had to fix, very easy to work with. Be patient with both application and trimming, and you will have a great looking applied in no time.

With the vinyl installed, we will put the acrylic on top of both the controller boards (top and front). This will not only protect the artwork, but keeps the surface smooth after hours of dirty kids hands mashing buttons. We will show that in more detail once we install the buttons.

Speaker & Marquee Installation

I already showed how I made the speaker grill in a previous previous blog post. Now that everything has been painted, I can add the USB speakers that will provide sound for the arcade cabinet. Before I can attach the speakers, I need to add the lighting elements for the marquee.The vinyl has been applied we can sandwich the acrylic on top of the controller areas and start adding the buttons.

In an attempt to get a more uniform light source, I added reflective tape to the inside of the marquee area of the cabinet. Applied it to the back, and the top then ran the adhesive LED strips along the back. I cut the LED strip into 2 parts, and wired them to allow for 2 rows along the back.

With the light strips installed, I can now add the USB speakers. There are lots of ways I could have done this, but decided to just use a hot glue gun to secure them in place. I then ran the cables out the hole in the picture to be plugged into the Raspberry Pi at the bottom of the cabinet.

With everything secured and the light source installed, I had to figure out a way to attached the acrylic panel and the marquee artwork. I didn't want this to be a permanent install as I might need to get in there and change things in the future. So I decided to go with some magnets and washers superglued to the acrylic to hold everything in place. I was a little worried they wound't be strong enough, but after everything dried and I was able to test it out, no worries at all. It locks in place really well, and I can take it on and off with out issue.

Here is a picture of the marquee installed with the magnets. Not showing the light source behind it in this pic, but will be sure to do so in a later post.

Assembly

Now that all of our wood pieces have been cut out and prepped, its time to start putting this thing together! This part was a bit more tricky than I had anticipated, and took a lot of trial and error to get everything to line up perfectly. The idea is to use small wood "batons" to act as supports and stops for the various panels.The picture below shows how they are used to block the various panels into place. The key is to stat with one side first, get everything lined up how you want it, and mark your joints. Then mark those same joints on the other side before you start gluing or nailing anything down. I used painters tape to hold everything together while testing out the fit of my markings just to be sure.

After you have marked both sides, and are pleased with the fit, its time to secure everything to the panels. I used a combination of wood glue and brad nails. You can probably get away with just using wood glue, but with an air compressor, putting in a few brad nails for extra support is an easy task.

Once all of the batons were secure and in place, its time to begin putting everything together. Starting with the monitor panel, I worked my way around the cabinet, gluing and clamping down the various pieces as can be seen below. If your measurements are good, everything will fit together neatly. Keep things clamped together for at least a few hours before you move the cabinet. I recommend letting it sit with the clamps on overnight.

Electrical Wiring

With the cabinet assembled and the glue drying, it went ahead and added the modular power inlet. This using a standard computer / monitor power cable, which I then wired directly to a surge protected power strip.

Pretty simple to install, just cut a hole to fit, and after a bit of file work, made sure that it went in nice and snug. Don't screw it in yet, as we need to paint before securing this to the cabinet.

Once I was sure it could be mounted in the hole correctly, I started the wiring process. I removed the wall plug end from the power strip and wired it to the inlet switch as shown below. I chose to use female spade adapters instead of directly soldering the connections. Note that there is more than one way to wire this switch, but the way shown here will allow the switch to light up when turned on.

Painting & T-Molding

With the cabinet fully assembled and the glue dry, its time to paint! I have seen people use cans of spray paint for this part, but this MDF really sucks up the paint, and you will go through a lot of cans of spray paint to cover properly. My wife had recently painted all of our interior doors black using a sprayer, so I used the left over paint and her sprayer to take care of my paint job. Would have done it outside, but the temperature has started to drop, so did it in the insulated garage, with some plastic protection applied.

I gave the paint a solid 24 hours to dry before I moved the cabinet from the garage, back down to my project room. With everything coated in a nice black finish, next step is to add the T-Molding. I am using 3/4in T-molding to match the width of the side panels. Using a rubber mallet, I slowly worked my way around both sides. When getting to a corner, I nipped a bit of the insert to make it easier to get flush corner bends as shown below.

Here we have a picture of everything painted black, and the T-Molding installed. If you have seen any of my other projects, you will know that I am a bit fan of Black/Blue themes. It looks great with the T-Molding installed against the black paint. The T-Molding also served as protection for the edges of the MDF, and adds a bit of grip to the bottom keeping the cabinet from sliding around.

With most of the exterior work completed, next step is to install the display. This was tricky due to the built in speakers this monitor has. I'm not planning on using the built-in speakers but they increase the length of the monitor enough that I couldn't mount it without conflicting with the controller board buttons.

The solution was to flip/rotate the display 180 degrees as shown below. I used the existing VESA holes on the back of the LCD to mount a piece of pine to the back. Then used additional wood pieces to create a bracket, using glue and brad nails to keep everything secure.

And here it is, with the screen installed. As mentioned before, I had to rotate the display 180 degrees to make it work in this cabinet. Doing this on the Raspberry Pi is really easy, and here are the steps:

Plug in a USB keyboard and power on the Pi

Once EmulationStation has booted, hit F4 to launch the command console

Type the following in the command line to edit the Configuration file:

sudo nano /boot/config.txt

Now add the following to the bottom of the configuration file and save:

display_rotate=2

Go ahead and reboot, and the display will show right-side up (on your upside down screen)! If you ever need to revert back, setting display_rotate to 0 or deleting the line will set everything back to normal.

Now that we have all the components selected, and figured out, its on to the actual construction of the cabinet unit. We already discussed the type and size of wood panels that will be used here, so lets start cutting! Fist we need to utilize our template for the sides of the cabinet.

I was able to get both sides to easily fit on a 4ft x 2ft MDF panel. Quick note, my first template was too small. Had to reprint it out and do the lines again. Luckily I caught this before cutting began.

The straight edges that aren't already on the sides were easy enough to cut using a circular saw. The curve was a bit more tricky and required the jigsaw. I actually made an makeshift bandsaw with my jigsaw attached to a piece of plywood. I felt there was a bit more control involved this way. Either way you decide to do yours, just go slow and you will have good cuts to work with.

Here are the 2 side panels. Turned out well, but they weren't exactly the same around the curve, so had to bust out the wood file to make them match.

Using a few clamps I lined up the back and bottom of the panels and used my file to get the two curves as close as possible. You can see in the picture below how much they were off after the initial cutting took place.

Here is what it looked like after filing, nice and even. After prepping the side panels and evening things out, I also rounded the edges just a tad to make it easier to apply T-molding and to cut back on chipping that is common when using MDF.

In order to apply T-Molding to these panels, I had to use a 9/16in slot cutting bit on my router. It was pretty easy, but as always when using a router, things got messy really quick. Prepare for a lot of saw dust. Below you can see the nice channel created for the T-molding.

Now that the side panels are ready to go, it is time to cut out the remainder of the cabinet parts. Although I used 3/4in MDF for the side panels, I went with 1/2in and 1/4in for the rest of the parts to cut down on the weight. Below you can see the marking on the other 2 panels I had for this purpose. On the left is the 1/2in for the back and monitor panel, on the right the 1/4in for the rest of the cabinet.

Now that we have the pieces all cut out, its time to drill some holes for the buttons. I laid everything out using a template in Photoshop, and printed it out to make sure everything was lined up correctly.

After using the template I measured the center-point of all of the holes, and began the process of drilling them out using a Forster bit. Make sure you have a piece of scrap wood underneath when drilling so you don't tear out the back of the holes.

If you look at the templates I posted on the other page, you will notice that some of the pieces have angled cuts. I was able to adjust the table saw to help with these cuts. You can probably get away with not having angled cuts, but it will make things fit together with smaller seams.

After my holes have been drilled in the wood, I used the same template to make markings on the acrylic panel to cover the surface of the controller board. Using my "bandsaw" again, I cut the various pieces of acrylic using a blade made for plexiglass. The acrylic will cover the

any part of the arcade that has buttons, as well as the marquee at the top where the light will shine through.

After cutting out the acrylic, I wanted to check my measurements one more time before I started drilling again. Using the controller board as my guide, I lined everything up, and checked all of the center-points. After making a few slight adjustments, took the acrylic to the drill press.

Using a drill-press is recommended due to the larger diameter of these holes, and ensures a nice, clean hole for your buttons. One word of advise... go slow. I found out the hard way that if you try and go too fast, its easy to crack the acrylic while drilling.

With the acrylic done, have just a few more cuts to go. First up, need to cut out the opening for the LCD display. As mentioned before, I measure too small at first, but it was an easy fix. In addition to the screen panel, I cut an opening in the back panel that will be used later on as an access panel.

The last bit of "woodworking" is for the speaker grill. This piece sits directly below the marquee, and the USB speakers I will be using will be mounted on top of this part. I considered using some kind of metal "mesh" as the grill, but in the end decided to just use a small Forster bit to make my own speaker grill from the existing MDF panel.

Took a while to get the measurements marked and all those little holes drilled out, but the end result turned out looking pretty nice.

Here is a shot of all the cut out parts together. I did mess up on the monitor panel as I cut the "screen" opening too small. Luckily going larger isn't an issue, but it looks smaller than it should in the picture below.

Now that the hardware and software to run the emulator has been covered, on to the actual Arcade Cabinet construction. This specific post will mostly cover the controller board, but being that we need something to begin measuring against, lets talk about the cabinet first. I already covered the parts for the Raspberry Pi, but here is the remainder of the parts that will be used for the arcade cabinet.

I initially wanted to build a full-size standing arcade cabinet, but decided that it was a bit much for my first attempt. I still plan on making one in the future, and it will be powered by a small PC instead of a Raspberry Pi, but this project was downsized to a Table-top sized design. It will look similar to a standing cabinet, and will house a 19in 4:3 aspect ratio LCD monitor. I will also be adding speakers to the unit and an access panel to the back.For those that don't want to make their own cabinet from scratch, there are plenty of websites selling kits that will allow you to assemble a cabinet if you don't have all the tools required to build it yourself. Once such site is GameRoomSolutions. They have a really basic kit for around $100, and another kit that is a bit more feature rich (artwork, backlit marquee, etc), similar to what I am building, for around $220.

I was able to find a compelling design for the table-top cabinet on Instructables, made by user Rolfebox. Although I made a lot of modifications especially regarding the controller board, his "Starcade" plans were a great starting point. The plans can be downloaded from the links below. starcade_sidepanel.pdfstarcade_refsheet.pdfstarcade_controls.pdfThickness of the wood panels is up to the user. I personally am using 5/8in MDF for the sides, 1/2in for the controller board and display housing, and 1/4in everywhere else to keep the weight down a bit. You can also use plywood if you would like, as it is a bit less costly, but if you plan on using t-molding along the sides of the cabinet MDF is the best choice.

Control Board Setup

Now that we have the basic dimensions for things like the controller board, on to the display and actual control hardware. I am going for a pretty standard 2 player "US" button layout using a battop joystick, and concave arcade buttons. I initially purchased this kit from Amazon, as it comes with everything you need to get started including:

2x Zero Delay USB Encoder

2x 8 Way Classic Arcade Joystick

18x Classic Arcade Push Button (Including 1p / 2p Start Push Button)

18x Microswitches

These particular USB encoders were guaranteed to work with the Raspberry Pi, with almost no additional configuration. Everything is pretty much plug-and-play, and this kit is a good way to get everything you need in a single purchase. That being said, I wasn't completely satisfied with the microswiches the kit comes with. They aren't horrible, and they will work, but the satisfying "click" and response from the buttons just wasn't as crisp as I was looking for, so I turned to FocusAttack for some better MicroSwitches. It is a pretty great website for all your arcade setup needs, and you can pick from a huge selection of different buttons, switches, joysticks, and USB encoders. The Kit on Amazon works, and makes purchasing simple, but I wish I would have picked everything out from FocusAttack from the beginning. I did end up getting a few additional colors for my buttons, and replaced all of the switches from the Amazon kit with the E-Switch 50g .187" Microswitch. They are pretty inexpensive at .95 cents each, and gave my buttons the "click" I was looking for. They also gave the buttons a bit more resistance, which was the main thing I thought the kit switches were lacking.

Once all the parts had arrived, it was time to start laying out the design for the control board. As mentioned before, I didn't use the control layout from the StartCade project, but made my own using various reference designs found online. I made it to scale in PhotoShop, then printed it out on 2 pieces of paper. Before cutting into the MDF boards, I decided to do some prototyping on cardboard, just to ensure I was happy about the button spacing before omitting to anything. Used a drill press to punch holes through the template and cardboard.

Once I installed the buttons and joystick on the prototype setup, gave it a quick test. They layout seemed to work well so went ahead and transferred the dimensions to the MDF.

This is the template for both the controller board, and the front of the arcade. The controller board layout I went with for a 2 players setup is made up of a joystick, 6x action buttons, Coin, and Player buttons. Coin can also serve as "Select" and Player can be "Start". For the front, there are various menu and option buttons, which will make more sense when the artwork is applied behind it with labels in the required locations.

The holes for the buttons are roughly 29mm. I used a 1-1/8" forstner bit so each hole is nice and smooth. Also had to drill a few holes to secure the joysticks to the board.

To secure the joysticks, using 8-32 x 1in black screws. Also countersunk the holes so they wouldn't touch your hands when brushing across the surface of the board.

Here is a sample of what the hardware will look like when installed on the board. Coming along pretty well at this point. The blank hole on the top will be the "Pause" button. The lower board will be the front of the arcade. As mentioned before it will have various menu, and option buttons. Also shown installed are USB input extensions. This will make it easy to hook up a keyboard for future configuration, or USB controllers if the kids want to use one for a specific game.

USB Encoder Wiring

Now its time to start wiring the buttons to the USB encoder. The cables that came with the kit aren't very long, so I may have to re-position the USB encoders before all is done.

Here is a closeup of how I wired everything. Pretty straight forward, but I did have to move around the direction of a few switches to reach the encoders.

There wasn't a wiring diagram provided with the kit, so a bit of trail and error was involved. Once I had it wired the way I figured it would work, had to test it out. Attached the board via USB to the Raspberry Pi, and attached a small LCD monitor via HDMI. Luckily everything worked as it should on the first try. Sampled the configuration by playing the NES classic, "Contra".

Arcade Display

Now wanted to go over what I will be using for the Arcade display. Going 4:3 instead of widescreen, as every game on this emulator was made before widescreen TVs were common, so there will be no pixel distortion.Initially I was planning on purchasing a display, but wasn't happy with the prices I found for old 4:3 aspect ration LCD monitors. So instead I popped in to a local thrift store, and found this beauty for only $7!! A ViewSonic VG930m, 19in monitor. Not a scratch on it, and no dead pixels. Comes with built in speakers, but won't be using those. It doesn't have HDMI, but planning on using a HDMI to DVI cable for the signal. The stand can be removed, and it has a VESA mount to secure it to the cabinet. Great find!

Now that we have the rest of the hardware covered, time to move on to the cutting, sanding, painting, and assembly of the rest of the cabinet.

About Me

First and foremost, I am a geek... A geek who happens to be a firearms enthusiast, loves PC Gaming, Camping, and making things go boom. I'm also a husband to a beautiful wife, and a father to 4 very active children.
I enjoy building anything ranging from high-end liquid cooled PCs, to Primitive Weapons. I'm always finding something new to build or tinker with, and I decided to create a blog for my creations. I hope you enjoy your visit.