DIY Bartop Arcade Cabinet Part IV: Ready to Play!
Päivitetty: 7. tammik. 2021
A lot of progress in my DIY arcade cabinet project! Last month or so has been especially crunchy, but thanks to committing to a deadline for showcasing the arcade cabinet at #XmasJKL last Friday, I now have completely playable bar top arcade game of my own! Best of all is that I specifically designed the cabinet for Little Knight Arthur, the old Commodore 64 game resurrected about a year ago from an almost forgotten floppy disk.
This post is especially for those who are currently working on or planning to start a similar project. It has been fun and I learned a lot about how to build an arcade game. Since I haven’t had much time to update this blog while working on it, this is a good time to recount the major steps.
I started by planning the cabinet construction around the laptop I had available to run the game. I learned to use SketchUp 3D design program, and that was perfect tool for this job. Relatively easy to get into, and with useful features that helped in various stages of the project.
I first measured my laptop carefully and made a simple 3D placeholder object in SketchUp which allowed me to figure the basic positioning and opening angle of the laptop. Then I drew the side panel profile around the laptop model, trying out how to best fit the opened laptop within the cabinet. Extruding the profile face gave me one solid side panel, and by duplicating that I got two, which I then placed around both sides of the laptop model.
Next, I drew the horizontal pieces. One of them I placed directly under the laptop at suitable angle, with two others at the front of the cabinet there would be simple support for the laptop to sit on. I needed to leave small gap for the charger plug and audio cable, so these boards were a bit wider than the laptop. I then continued to draw other horizontal pieces around the cabinet, the most important being the control panel that would be placed above the laptop chassis.
I needed to figure out how to fit joystick and buttons on the control panel so that they would have enough space between the bottom of the panel and the top of the keyboard. For this it was really helpful that both joystick and buttons were available in 1:1 scale in the model library for SketchUp. I could try out placement of buttons and joystick virtually on the SketchUp model of the control panel.
Once I had all board pieces modeled in SketchUp, I cut them out from larger MDF boards. To get the dimensions I used SketchuUp measurement tool. I used table saw to do rough and simple straight cuts, and a small band saw for finer and arc cuts. All the horizontal pieces were simple, but sides I ended up sanding into final shape. I used both common sandpaper and an electronic sander. I ended up with the marquee panel area smaller than I had planned originally just because I was not accurate enough while sawing and I needed to make both side pieces close enough to same shape after the mistake.
After all the individual pieces were cut, it was time to come up a way to fasten the pieces together. I was thinking of ordinary wood screws and little L-shaped pieces of metal first, but while looking for suitable ones in my workshop I came across a box of furniture cam locks, nuts and pegs, from some dismantled piece of shelf or similar. These are easy fasteners for a small cabinet like this.
The way cam lock screws and nuts work is that one drills two holes for pegs, and one hole which the cam screw is screwed into. Then for the other piece that is going to be attached, there are two holes for pegs, and a hole between those for the other end of the cam screw. At right angle to this hole, one makes another hole that houses the cam nut. The nut is shaped so that when it is twisted in the hole it will lock onto the top end of the cam screw. Anybody who has purchased do-your-own-assembly furniture is familiar with this fastening system.
I used bench drill to drill these holes and then did quick test assembly with the fasteners. It was good to see that this was going to work, the only thing was that drilling the holes had to be quite precise - using a hand drill is really out of question here. I did couple of mistakes. I had to correct them by drilling another hole right beside the first one, and one peg hole I drilled a bit too shallow, and cracked the side panel board a little when trying to push it together with the horizontal board. Fortunately the small fracture was easy to fix by gluing and clamping the loose piece and letting the glue dry overnight.
While going through the joints it occurred to me that I don’t need separate hinges on the control and top panels. I could just let the pegs at one end of the boards act as hinges. This allowed lifting open both of these boards. Especially important this was for being able to get to he control panel wiring later on.
One critical and tricky part of the woodworking was making the groove around side panel edges. This groove was for the strip of T-molding that was going to give the edges nice finish. I ended up ordering a 1.5 mm thick disk cutter that could be attached to my bench drill. Milling the cut by doing it once from both sides of the side panel made the groove right in the middle of the board. I needed to make quite a few practice runs on throwaway pieces of board before the drill adjustment was just right to produce a cut with suitable width and depth.
An additional piece made that I made out of wood was the frame over the laptop screen. I made the frame parts from small piece of pine, using bandsaw and sander, and glued them together.
There were three pieces that I was going to make from 2mm clear acrylic sheet, or plexiglass. On top front of the cabinet, there was going to be backlit marquee with the game logo. On top of the control panel there was going to be another sheet to protect the control panel. And finally, there would be third sheet right in front of the lap top screen to protect it.
A friend of mine had a few acrylic boards that he offered to me. He had used them as fences to prevent their puppy to fall into a staircase. These had a lot of small scratches from the paws of the now grown up dog, but I decided to use them anyways. They might make the cabinet look a bit used, but at least it would not matter much if I managed to break the sheets or scratch them a bit more while working them in shape.
I used sharp knife to cut a groove onto the plastic sheet and then twisted it so it would break cleanly at the cut I made. This worked out sometimes, but sometimes it did not, and I either needed to use belt sander make the edge clean and even, or had to throw away a piece that had fractured at the wrong place.
But I did manage, in the end, to make the three rectangular pieces I needed.
Next I painted all MDF board pieces and the screen frame. I used white primer paint, then black chalkboard paint for the inner faces of the panels, and light blue or cyan paint for the front, top, and side external faces.
The primer I painted with electric paint spray gun, and I also tried to use it for the outer layer of cyan paint. While doing this I noticed that using the spray gun got tricky and it was hard to get an even layer of paint. Maybe it was the paint gun, maybe it was the painter doing the job. Regardless, I ended up using a paint roller for the second layer, after I had smoothed the first paint layer with sandpaper. Also, the chalkboard paint contained small particles to give it a rough texture. Therefore this type of paint would not work very well with spray gun as these particles would clog the spray gun nozzle. So I painted the black using the roller. This was much easier than using the spray gun.
After the first layers of paints had dried, I inspected the paint surfaces, and touched up missing or chipped paint from couple of places using a small artist’s brush.
Sawdust, wood chips flying around while drilling and milling, and paint particles and fumes can all be bad for you, so I used a mask and safety glasses at all appropriate times during the woodworking and painting stages. Of course, with noisy machines I also used ear protection.
Artwork on the cabinet defines much of the look of the game. I used Inkscape and Gimp, free graphics software, to draw these. There were essentially three pieces of artwork. Control panel, marquee, and side panels.
For controls I had planned one joystick, a jump button, and two additional buttons for using weapons that could be picked up by the player in the game, the sword and the shield. In the original C64 game the sword and the shield were controlled using up and down directions of the joystick. For arcade cabinet version I thought it would be nice to have separate action buttons for the weapons. Also, there would be need for a few additional buttons that would allow starting and pausing the game, and turning the sound on and off.
Again features of SketchUp were helpful. I applied the artwork as textures on the model, which allowed me to visualise how they would be like on the real cabinet.
I worked on the artwork for for some time and ended up iterating quite a bit. Eventually I was quite happy with the designs which was good since the event I was going to demo the finished cabinet was getting close. Just little over week to the #XmasJKL I finally emailed a few print shops and then chose a company called Kopiotiimi for printing. I received prompt and friendly service from Kopiotiimi. The artwork printing on side & panel stickers as well as a print on acrylic marquee board was done within a day.
Inkscape is a bit tricky for print graphics, as colours are defined typically as RGB colours, and I knew printers usually use CMYK colour model. The support for colour profiles was a bit beyond my skills as an Inkscape user, so I was worried about how the hues would turn out. Fortunately, end result was more than OK.
After getting the prints, it was time to cut them into final shape and stick them on the cabinet panels. I got a good tip on how to do this from Mika from Kopiotiimi. Moistening both the sticker glue surface as well as the panel surface with lightly soapy water prevented the sticker attaching to the board permanently right away and by slightly nudging I could get the artwork positioned exactly.
Now the side panels were ready for T-molding. To get as clean corners as possible, I needed to make small cuts on both the excess sticker as well as strip of the T-molding. These cuts allowed to wrap the sticker underneath the T-molding and T-molding around the corner.
I had left control panel sticker waiting because I had not drilled the holes for the buttons and the joystick yet. Now it was time to do so. This was another slightly tricky step, because not only I needed to get the holes aligned on the control panel board and the sticker, but also on a sheet of acrylic that I was going to be on top the control panel.
I needed to drill four 16 mm holes for small Sparkfun LED ring buttons, and four 25 mm holes for the three arcade pushbuttons (also LED illuminated) and the Sanwa joystick. There were various options for the right tool for this job. I used bench drill and two Bachco Sandflex hole saws. In case of the MDF board I drilled the holes from one side, and then from the other to avoid tearing the rim.
I also drilled four small holes on the other side of the board for blind hole mounting of the joystick, using a kit ordered with the joystick and arcade buttons.
Once the holes had been drilled to boards, I cut the corresponding holes on the control panel sticker (which I had not yet attached) using a sharp utility knife, tore off the paper covering the glue surface and sandwiched the panel art between the acrylic sheet and the MDF board. Again using some soapy water sprayed before gluing helped to wiggle the sticker in the right place. I screwed all the buttons and the joystick in place to make sure the holes were properly aligned, then removed buttons and joystick again and let the glue dry overnight. Once the sticker had dried, I reinserted the buttons and the joystick.
Now I was ready to assemble the cabinet for the final time. I put the boards together, secured them with cam lock screws and nuts and tested the insertion and removal of the laptop from the back of the cabinet. One thing I needed to make sure was that the top edge of the laptop screen would keep firmly in touch with the inner top board. I looked again around in the workshop and found a thin strip of metal that had a small protruding lip that could be bent around the top edge of laptop. I have no recollection whatsoever what this small part was originally for but it found its perfect use now.
Once the laptop was in place I needed to attach the laptop screen frame and acrylic sheet protecting the screen somehow. My solution was pretty simple. I cut a small strip of packaging foam and placed that between the bottom edges of the frame and the plastic sheet, the laptop hinge and the top edge of the control panel. While the piece of foam compresses between these, it also pushes the frame and the sheet upward so that they keep in place. I painted the foam strip black so that it would be as unnoticeable as possible between the black frame and black top edge of the control panel. Attaching the panel and sheet like this is not the strongest possible way, but it does allow easily popping out the parts for cleaning, for example.
Inside the cabinet, on top back bottom board, I attached the laptop power supply, and a power bar with three sockets, using simple fasteners screwed on the board. One socket is for laptop power supply, one for top panel back lighting, and third is a spare for e.g. a new amplifier some time in the future.
Audio, Lights and Marquee
In the spirit of reusing and recycling any old stuff that I could, for audio I found a small USB-powered external speaker that had been left unused for years. This speaker does not produce the best audio quality nor volume, but for now I did not want to invest to a new amp and speakers. I will probably replace the old speaker with newer components later on.
The marquee panel art was already glued onto an plastic sheet by the print service. It was almost the right size as well. I made it just a few fractions of a millimetre narrower with a belt sander and then framed the panel with two L-shaped aluminium bars that I attached to the cabinet boards with glue and two small screws. Behind the marquee panel I placed two led strips and a reflecting surface made from aluminium foil and a scrap piece of acrylic. Back lighting the panel worked out OK, although the colour contrast was not the best. Next time I’ll try improving the contrast with some extra spot lights. Also a different printer with inks that are more suited for backlit artwork printing may be a good idea to try.
Control Panel Wiring
Besides joystick and three in-game action buttons, I had designed the control panel contain four additional buttons. I had chosen to use really nice looking Sparkfun ring illuminated push buttons even before I had figured out what I was going to use all those buttons for.
Regardless of function, an essential piece was a Xin-Mo 1 player arcade controller with led interface. This is a small board with USB connector, controller chip and connections to joystick and button switches. The LED controls were automatic, they either turn lit LEDs off or unlit LEDs on depending on which way they are connected. The chip automatically does the job for each of up to eight buttons. In addition to 8 button inputs, there are connections for four joystick direction inputs.
I attached the Xin-Mo controller at the center of the control panel bottom side, and started wiring the buttons. Since Little Knight Arthur had up and down joystick directions reserved for swinging the sword and pushing up the shield, I made the arcade push buttons for these functions work simply by splitting the up/down joystick signal wires into two parallel wires that I attached to the push buttons.
Wiring was made rather easy by using a set of wires that were pre-crimped with female blade connectors that one could directly connect with terminals on the joystick and pushbutton microswitches. The LED terminals were of different size from the microswitch terminals. Luckily I had ordered a set of wires with different sizes of pre-crimped connectors. However, the Sparkfun pushbuttons had just tiny terminals that required soldering small pieces of wire and suitable blade connectors first, for easier connecting with the pre-crimped wires from the controller.
There was just hardware one modification to the laptop. I opened the cover panel between the keyboard and the display, and exposed the power button soldered on the circuit board beneath. I squeezed in a couple of wires, and soldered them directly on the push button terminals. The other ends of the wires I plugged into one of the top buttons on my control panel. This allows turning on the laptop power with one of the control panel buttons.
When I was finishing the design of the control panel art I had to decide what to put on the labels of the other three buttons. I decided to include the following functions: Pause, Sound, and Menu. Menu would be a button that allowed me to exit the game and tweak the Commodore 64 emulator settings if needed. Pause and Sound would pause/continue the game and mute and restart sound, respectively. For additional eye candy I used different colours on the ring buttons. I also had ordered some extra ones in case I would want to change the colours later on.
Finally I had wired all the switch signals and all LED terminals, and folded and attached the extra wires and spare connectors carefully to the bottom of the control panel.
I had the VICE emulator and the game running on the laptop very early on, even before starting the cabinet planning. VICE is really one nice piece of software if one wants to run old Commodore software on relatively modern PC. VICE does not need very modern or fast hardware to emulate such a simple home computer from decades back. Furthermore it does not need excess baggage from the operating system. I threw away the original Windows XP from the laptop ages ago, and for the VICE emulator I chose to install minimum Linux distribution called Tiny Core Linux.
Tiny Core Linux is ideal for this purpose from many different reasons. First of all, after it boots, it runs completely in RAM. It only writes to disk when shut down, and only if you want to backup changes to certain directories in the file system that you want to restore during next boot. This is very handy in an arcade machine like this, where once the software is configured and just the necessary software is backed up, it can boot and run from that backup.
Tiny Core, being such a minimum distribution, did not have VICE precompiled, so I needed to compile it myself. This was easier than I thought. After getting all required libraries (there were at least SDL, X, and OSS or Alsa) which were readily available using Tiny Core app manager, all that was required was the usual configure and make that Linux/Unix users.
Once I had VICE running, I attached the floppy disk image, and loaded the game. It ran just fine, and I started exploring options to configure the emulator. VICE has a nice and relatively simple menu where you can configure display resolution, sound, graphics, keyboard to joystick mappings, etc.
A pleasant surprise was how easy I could configure my arcade cabinet buttons and joysticks in VICE. First of all, as long as Linux joystick support had been installed, VICE could use the Xin-Mo controller as a joystick/game pad device. For setting directions and buttons there are easy options in the VICE menu, so after a few tries I had all the play controls as well as the top 4 buttons working. VICE emulator had a way to provide hot keys for functions I needed to control. It also allowed using the game controller button presses as hot keys. So getting pause, sound, and menu button working was much simpler than I thought.
At this point I tried the game for the first time using real arcade control, and boy what a difference does it make, compared to using laptop keys as virtual joystick replacement. A-w-e-s-o-m-e.
With VICE you can save its state in snapshot files and configuration files, and start it up using the saved state. So once everything was working, I made sure to save the VICE configuration to a file, and include that file in the files backed up during shutdown in Tiny Core.
One final thing before showing the game to the world was setting the laptop run a boot script that would configure the laptop audio for playback, and then run VICE and the game using the saved configuration files.
Plan vs. reality
I like the way the finished cabinet turned out to be!
Nice playing @ #XmasJKL
So, about a week ago in Friday, I took Little Knight Arthur Re^3 (Arttu Retrogame*Recycled*Resurrected) with me to #XmasJKL, a pre-Christmas Finnish Game Industry Seminar, and demonstrated the game there. It was simply great to see the players enjoying the game in this format.
Thanks for all that came over to play, and all the feedback I got for the game as well as the cabinet. Special thanks to the three players who made it to the Order of Knighthood, as well as their cheering friends, and the event organisers from @ExpaJKL!
Thanks also to Esa Meizi from Oulu, who shared plenty of useful tips based on his own cabinet project while I was on the final stretch building my cabinet, and Sasu Louke from ExpaJKL making the connection between us!
Arthur Re^3 Bartop Arcade Bill-Of-Materials
Recycled or old materials
1 x old Fujitsu Siemens Amilo laptop - free
1 x old usb powered mini speaker + 3.5 mm audio cable - free
1 x old LED strip light with 3 led strip bars + power supply - free
1 x leftover black chalkboard paint can - free
2 x old MDF cabinet sliding doors - free
2 x old worn out 2mm acrylic boards - free
12 x old furniture cam lock + nut, 24 x furniture pegs - free
Some electronic wiring taken from old SCART connector cable
Painter's masking tape, some cardboard
New materials (approximate prices I paid, check latest from your favourite suppliers)
1 x New laptop charger for Fujitsu-Siemens Amilo 26,90 € / akkukauppa.com
1 x Sanwa JLF-TP-8YT Ball Top Joystick 16,86 € / arcadeworldcouk.com
3 x Chrome Effect Illuminated Arcade Button, with 5V led, Cherry microswitches 6,80 € / arcadeworldcouk.com
4 x Sparkfun LED illuminated ring pushbutton 20,20 € / Semicom.lv
1 x Xinmo USB joystick/button interface 19,20 € / arcadeworldcouk.com
2 x Ground daisy chain wires and 3 x signal wire set (included in the Xin-mo controller interface) 5.80 € / arcadeworldcouk.com
5 m Chrome 15 mm T-molding 7,68 € / arcadeworldcouk.com
2 x side art stickers, 1 x control panel sticker, 1 x marquee plate 75€ / Kopioteam, JKL
1 x white primer paint can 10.95€ / Kodin Terra, JKL
1 x light blue/cyan paint can 12.50€ / Kodin Terra, JKL
1 x L-shaped aluminium bar 15,90 € / Puuilo, JKL
About 10 blade connectors, a few red crimp tubes, and black tape from the wire stripper tool kit
Total new materials including VAT: around 256 €
Small band saw
Bench drill, with 1.5mm/ disc cutter, 16mm + 25mm hole saws, and set of wood drill bits
Electric belt sander, 80/120/150 sand papers
Electric screw driver/drill
Electric paint spray gun
Foam paint rollers
Multifunction tool with metal saw blade
Solid large workbench
Small portable workbench