Introduction: Bubble Bobble Arcade Cabinet (Bartop)

About: I'm simply a retrogamer at heart, I still love 8 and 16 bit games.

Yet another cabinet build guide?

Well, I built my cabinet using, primarily, the Galactic Starcade as a template, but I made a few changes as I went along that I feel, in hindsight, improve both the ease of fitting some parts, and improve the aesthetic. I was also inspired by another Bubble Bobble Bartop on Instructables (which is also based in part on the Galactic Starcade)

Also, when reading through several guides prior to making my own bartop, it was clear from both the articles and some of the questions asked, that some aspects need more information. A guide may say something like “, fix the marquee and you’re ready to test” without actually making any suggestion as to how to do it. Much of this I figured out for myself, but I hope that It might help others who find themselves in a similar situation.

I don’t intend this guide to be a replacement for the many ones that are already available, rather it’s a guide as to how I built mine, with a few hints and tips thrown in that may help some people out.


This is list of all the various components that I've bought in order to create the cabinet.

12mm bolt screw (Amazon) £1.50

1mm sealing tape (Amazon) £4.99

25mm bolt screw (Amazon) £1.82

32GB Micro SD (Amazon) £5.25

4 way adaptor (Home Bargains) £3.99

4.3mm & 5.3mm washers (Amazon) £3.90

4cm fan guard (eBay) £2.78

Buttons, sticks, interface (eBay) £44.99

Cam lock (Amazon) £2.80

DC-DC voltage regulator (eBay) £3.46

Fan extender cable (Amazon) £2.97

HDMI to DVI cable (Amazon) £2.49

IEC power point (Amazon) £1.29

LED lights (eBay) £4.99

M4 Flanged hex drive screw (Amazon) £1.99

M5 Flanged hex drive screw (Amazon) £3.95

Misc Screws (Aldi) £3.99

MDF (Local woodyard) £20.00

Monitor (eBay) £13.50

Paint (Sadolin Extra Durable woodstain - Ebony) (Amazon) £13.75

Perspex (marquee and bezel) and all artwork (Nuneaton Signs) £25.00

Primer (Aldi) £4.99

Raspberry Pi 3B+ (Amazon) £34.00

Raspberry Pi Case (Amazon) £11.99

Raspberry Pi PSU (Amazon) £7.99

Speakers (gifted) £0.00

Terminal block (Wilco) £0.65

Thermal case fan (Amazon) £3.68

T-moulding (Arcade World) £13.86

TOTAL £246.56

Step 1: Sourcing Parts

Sourcing the MDF

I found a local wood yard that sold MDF, and also cut it to size. I planned out the dimensions for each panel, knowing that the design for the cabinet was largely going to follow the designs already laid out by rolfebox, and added a couple of centimetres to each measurement to allow for trimming angles. They first cut me a long panel to the correct (500mm) width, then cut each panel off that. This meant that I could be sure all the interior panels would be the same width.

Sourcing components


From reading some forum pages on arcade sites, there was a highly recommended monitor- the HP LP2065. This is a 20” screen (probably about the largest you can get away with installing in this design without changing panel sizes), and has a couple of advantages that make it a great choice. First of all, it has a great resolution – while cheaper and smaller monitors are generally 1024x768, this is 1600x1200. This makes things like the front end menu look really sharp, and vector games like Asteroids are great. The other advantage is that it remembers its settings, including input selection and (this is the important one) power status when the mains power is removed. In essence, it means that there’s no need to wire up some way of turning on the monitor each time the cabinet is turned on.


I found several options on eBay and Amazon for people selling sets of sticks, buttons and encoders. The one I went with gave me the option to mix and match button and stick colours. I already knew I wanted a Bubble Bobble theme, and so this allowed me to have different, but complimentary colours for the different players. The sticks are Zippyy branded – apparently okay as a budget option, and the encoder is a Xin-Mo – not anyone I’d heard of before I started looking, but again it’s considered okay. I’ve no idea what brand the buttons are, they’re just generic.


I bought a cheap amplifier from Amazon. To see what sort of speaker size I needed, I got a couple of scrap PC desktop speaker sets, the kind of thing that people used back in the 90’s, and stripped them down. The speakers in these are very low power – just 2 watt and 4 ohm. I did a test, playing some sounds through them using the amplifier that was inside the speaker, and they were surprisingly loud and clear anyway. As I didn’t want to connect those speakers to the amp I’d paid for (as it was rated up to 15W and so would probably blow the speakers), I took the decision to try and use the amplifier I’d just pulled out of the speaker set. I re-soldered the wires onto the PCB, as I had to cut them to get the speakers out, and hot-glued it to a piece of plywood so that I could potentially mount it inside the case.

My original plan was to have a small PC motherboard in the cabinet, however even with a slim PSU, it was going to be a tight fit. Once I started having problems with the front end I was setting up in Windows, I swapped my plan to the Raspberry Pi.

Step 2: Changes to the Original Design

The main panels for the cabinet are all based on the measurements from the Galactic Starcade. The main thing I wanted to change was the fact that I wasn’t keen on the profile of the Starcade side panels. I wanted something less angular, and more in keeping with the shape of the downloaded artwork, which was found (just as in the original Instructable for a Bubble Bobble machine) at *

Regarding the artwork - I wanted my cabinet to have different colours for the two players, reflecting the different dragons from the game. I modified the right hand art to swap the order of the dragons, making the blue one (Bob) the main one. I couldn't find a control panel graphic that looked as good as the one I'd already seen on Instructables, so I contacted the author of that Instructable, and he was kind enough to send me a copy of his design, which I've cleaned up and used for my own.

I also decided on a couple of other changes that I was going to make. Firstly, I ditched the idea of having the screen panel act as the monitor bezel. This was for 2 reasons – firstly because I wanted the screen to be as close to the front as possible as I’d hoped it would look better, and secondly because it’s hard to change the profile of the surround if it looks more offset on one side or the other (in other words, if I made a mistake either in the initial cutting of the hole, or with the mounting of the screen). I’d planned to put perspex in front of the screen anyway, and it’s easier to modify a bezel mounted to perspex than it is to re-sculpt a hole in MDF.

The second change was to how the control panel meets the rest of the cabinet. the original design has an angle cut into the bottom of the screen section and also the top of the control panel, so the panel effectively slides into the area underneath the screen. I decided to keep the screen section as it was, and instead cut an angle at the back of the control panel so that it rests against the bottom of the screen, without being permanently attached. In hindsight, this has made it much easier to remove and refit the panel when needed, so I’d recommend this modification.

* - It looks like that link is no longer valid. I've included links to the artwork at the end of this instructable.

Step 3: Making the Side Panels

In order to merge the two designs I used PhotoShop to take an outline of the artwork, which would form the profile of the sides, and then overlaid this with the side plan of the internal panels. This allowed me to change the side panel shape to suit my needs more. I shortened the depth of the lowest section by the control panel, as that part of the artwork is about 10cm deeper than the Starcade plan. I also changed the lines as they sweep by the screen to the marquee, and changed the angle of the top.

Once I was happy with the final lines, I printed out the plan in full size, taped the sheets together, and this formed the template for cutting out the side panels. I traced around it twice onto the 18mm MDF and then cut it with a jigsaw. At this point I wasn’t too worried about getting all the rounded corners precise, I just wanted the rough shape to be correct. Once I’d got both side panels cut, I clamped them together and spent an hour or so with 120 grit sandpaper, making sure that they were both the same and rounding off the corners up by the marquee.

At one point I realised that I’d cut too much from one panel at the lower front. I mixed a combination of wood filler and MDF sawdust and bulked this back out, then sanded it down once it had a chance to dry.

I wasn’t sure how best to cut the slot for the t-moulding. I’d read in other build guides that getting a slot bit for a router could be expensive. Fortunately one of my cousins came to the rescue when he revealed he has a woodworking shed with a router table, and also had the appropriate part to make the slot. That saved me a lot of time and worry, and gave a lovely clean slot all around the panels. He also offered assistance with the next part of the build – cutting down the rest of the panels and cutting out any holes.

Step 4: Making the Other Panels

I was spoiled when it came to the other panels, as one of the other tools in my cousins' workshop was a laser cutter. I appreciate that this is a luxury that not many people have access to, but it did save me both time and money.

First all the panels were cut down to the correct size, and to the angles specified in the Starcade instructions (other than the bottom of the screen and the top of the control panel, as mentioned above). Then the laser cutter was used to cut out the monitor aperture, the back panel (cutting out an access hatch, a hole for the IEC mains connector, and a 28mm hole for an arcade button to be used as a PC power switch) and finally the holes for the control panel and front panel, using a template of the artwork to confirm that everything was correctly aligned.

A quick test of the panel fit, using clamps to hold it all together, showed that everything looked about right, so we went ahead with a combination of screws, glue and battens and assembled the basic shell.

Step 5: Building the Cabinet

I’ve seen guides where they put screws through the interior battens in to the panel, and while this means there are no holes to subsequently fill, it can be a fiddly task trying to get all the screws in straight and tight. Although I was making more work for myself later, it was much easier to drill holes and countersinks from the outside. Assembly took a couple of hours, including drilling, screwing and gluing. With the main panels in place, the whole cabinet already felt rigid, and with no changes to make, I was then able to fill in all the screw holes and subsequently sand it all down.

I took the decision that any parts or panels that would need to be occasionally removed wouldn’t simply be screwed straight into wood or MDF, as repeated tightening and removing of screws would chew away the wood. This directly refers to the control sticks, the control panel and the top panel of the marquee. I bought some hex drive screws for this purpose – they screw directly into the wood with a coarse thread, and then have a fine-threaded screw hole through the middle.

To make the holes for the sticks I held them in place from below, checked that they were central from above, then marked out the screw holes underneath the panel. I could then use a pillar drill to make the necessary hole without breaking through to the top surface. The hex screws tighten in place with an allen key and hold the sticks solidly.

I used a similar approach for the control panel and top section. This time I used a hand drill to make a hole through the panel that’s the right size for the screw, and using that as a pilot hole in the batten below, along with a larger drill bit, to make holes for the hex screws.

I wasn’t sure how to fix down the front edge of the control panel. One option I thought of was to have two sets of screws, one near the front and the other near the back. Instead, I experimented with putting a piece of scrap wood along the underside near the front of the control panel. This works really well, as it notches against the inside of the front panel and because of the angle of the panels it means the controls can’t be pulled up. Along with the change in cuts where the panel meets the screen, it makes the control panel simple to drop in and lift out.

The other decision I had to make was speaker grilles. I’d decided to use the lightweight oval speakers I salvaged, but struggled to find an oval grille narrow enough. The only other option I could think of was to cut a series of holes into the lower marquee panel. I tested a few sized drill bits on a scrap piece of MDF, and drew up a quick plan in MS Paint. Taping the plan to the MDF and poking each hole with a pin left a series of indentations in the panel that I drilled out. I was surprised how well this works, especially with the final paint on there – you don’t really even notice them. Screwing the speakers above them, they also give a louder sound that I was expecting from little 2W units. I drilled a hole in the back section of the marquee for cables to run through, and fitted the mounting clips for the LED light.

Finally, it was time to figure how to mount the monitor. Stripping down the monitor is straightforward: Firstly, the bracket that holds it to the stand needs to be removed, followed by a screw in each corner. It’s then a case of pulling off the front trim from the rear shell; the two halves clip together all the way around. There’s a small ribbon cable that connects the front buttons to the main circuit board, however the monitor works fine with this not connected, so there’s no need to work out a way to mount any controls inside the cabinet. After stripping the monitor, I took an old wooden shelf that I cut down to a size that was the interior width of the cabinet, and also deep enough to allow a few centimetres above and below the mounting holes. I made 4 holes in the shelf and attached the monitor to it. With a combination of trial and error and a bit of luck, I was able to hold the monitor in position inside the cabinet with the shelf attached and mark the inside of the side panels where the shelf met it. It was then a case of adding battens either side that matched the markings and screwing the shelf to the battens. I hadn’t yet permanently screwed the front screen MDF panel to the cabinet, and removing this before fixing the shelf in place made that easier. Due to the decision of having the monitor hole big enough to mount the monitor flush with the panel instead of behind it, the monitor is installed and removed via the front of the cabinet, instead of behind. Again, it’s a design decision that makes things so much easier. To spread the strain of the screws at the back of the shelf, I used the original monitor mounting bracket as a spacer as it was already the perfect shape for the job.

Step 6: Preparing to Test

Before I could fire it all up for the first time, there were a few more steps that needed to be completed. The most important one was setting up the Raspberry Pi. I decided to go with a pre-made image for testing purposes. I had a 32GB MicroSD card available, so downloaded a highly recommended build. (I’m not sure whether Instructables allows links to that kind of thing, so I’ll just say that I searched for “Damaso 32GB Ultimate v4”). Writing the image out to SD card took a while, so while that was running I installed the sticks and buttons and wired them to the encoder.

The Xin-Mo encoder is small, so I mounted it to the base of the cabinet in the area beneath the control panel. Each microswitch, be it a button or a direction on the stick, has two connections. A direct wire from the encoder board, and a ground connection that is daisy chained to one of the connectors on every switch. I found it easiest to connect the first ground connector to a switch near the centre of the control panel, then work along to one end and back again. Another tip I’d offer is to put a piece of tape around the sheath of each of the non-ground wires, and label what it’s meant to connect to (I.e. U, D, L, R, 1, 2... etc). Doing that, as well as making sure that when you connect the other end to the encoder you put them all the same way (I chose to go silver-edge out), means that if you have to completely remove the connectors, it’s a fairly simple task to put them back again. I also found it helped to label the base of the stick with some way of identifying which microswitch corresponds to which direction, as it’s not always obvious.

The front buttons need to be wired up along with the main panel buttons, so once the main ones are all connected it may help to have someone hold the panel close while the additional front wiring is completed.

Now comes the great part – testing that everything so far is working. At this point all the internal components were just dropped inside the cabinet with no layout, but it gave a great opportunity to make sure that it all worked as it should. The nuts behind the buttons were only done finger tight, and some worked a bit lose, but otherwise this test made me comfortable that it was going to be a success.

After a couple of weeks of testing, I had to remove all the components and return the cabinet to being an empty shell in order to move on to the next stage

Step 7: Priming and Painting

Before applying any primer to the cabinet, there were a few screw holes that still needed to be filled and sanded down. I then applied the primer using a small foam roller for most of the panels, and a small brush to get right into the corners. after allowing a couple of days for drying, I gave it all a light sand and a second coat.

Note: The primer I used is water based. I’d read of some people having problems with water based primers on MDF, causing the fibres to fluff up, especially on the edges. I tested beforehand on a scrap piece and saw no such problems. I’d suggest testing beforehand anyway.

I considered using spray paint for the next phase, however it was late autumn in England when I was at this point, and I’d need to spray outside. As the weather made this impossible, I consulted someone that makes cabinets professionally, and he suggested the Sadolin wood stain. It’s oil based, and in theory didn’t need a primer, though when I tested it on some unprimed MDF I was glad I’d primed anyway. Applied with a small foam roller, it dries to a lovely black textured finish, with a slight shine. One thing to be aware of is that it needs to be applied in temperatures above 8c, and takes about 24 hours to dry in 20c. As I was painting in a conservatory in November it was only just above the minimum temperature, and I found the drying time between coats was closer to a week than a day. It was worth the wait though, as the finish really does look good. A very light sand with a fine paper was done between coats, and I applied 3 coats in total to the back, top and front. As the sides were going to have artwork applied, I just stuck with a single coat.

At this point I also turned my attention to the rear access panel. I toyed with installing a fan into the cabinet. It probably doesn’t need one at the moment with a Pi 3 inside, but if I swap it at any point for something generating more heat, I might be glad of the ventilation. The fan I chose is a PC case fan that has a thermal sensor on it. This has the advantage that for temperatures below mid-30's, the fan runs at a very low speed and barely makes any noise. I used the biggest hole saw I had and cut a vent hole for the fan, then painted the back panel to match the rest of the cabinet. I also made two 32mm holes in the bottom of the case to draw some air through. They were covered with small fan grilles, and aren’t visible unless the cabinet is laid on its back edge.
I had to consider how to fix this panel as well. I had bought a piano hinge to use, but didn’t have the right recessed screws. Instead I had the idea to place two vertical strips of MDF inside the cabinet opening to prevent the panel falling inwards, and would use a piece of MDF at the inside of the bottom of the panel, along with a cam lock at the top, to prevent it falling outwards. Between them, the panel should be locked in place. I had to drill a 18mm hole near the top of the panel to fit the lock, and painted the vertical strips to match. Finally, adding some 1mm thick sealing tape all around the opening, and an additional strip at the bottom of the panel, means that it sits at the right height.

Step 8: Preparing the Electrics

During testing I had the power for everything going to an extension lead through the open back, and had individual power adaptors for each component (Raspberry Pi, monitor, amplifier and lighting). For the final build I have a power strip inside connected to a single IEC connector at the rear. I cut the plug off an extension lead and crimped spade connectors to the wires in order to attach them to the IEC connector. I did realise that when I had power going through the connector there would potentially be exposed connectors with mains voltage, so at this time I crudely made a box section to cover up the rear of the connector and glued it into place. I used a switched connector with a neon illuminator. It’s possible to wire them up in several ways – either the neon is always unused, is on when the switch is on, or is on as soon as there is mains. I went with the middle option, so that the neon works as a power light.

To supply the voltage for the amplifier, fan and LED, I had a snag. I wanted to leave one socket free, however the LED and fan run from 12 volts, but the amplifier needs 9V. This meant the amplifier would take up the remaining socket. I got around this by using an old laptop 12v PSU to drive the LED and fan, and wiring in a DC-DC converter to step the 12v down to 9v for the amplifier. It just made everything tidier than adding an extra PSU. I wired in a fan extension cable so that I could completely take out the rear panel by disconnecting the fan cable from the extender.

Step 9: Artwork and Moulding

The artwork was produced with an adhesive backing, and was easy to line up with the straight edges of the panels. It’s not so sticky that it can’t be peeled off again and re-positioned, so was easy enough to get into the right place. Trimming the edges are done with a craft knife, as is cutting out the holes for the buttons and sticks. The marquee was done as a reverse print, where the image has the adhesive layer applied to the front instead of the back, and fixed to a piece of 2mm perspex.

For the bezel, I had to re-fit the monitor and measure the distance between the edges of the cabinet and the edge of the screen. My cousin then modified the bezel that came with the artwork to take these sizes into account, and also removed some of the characters that would have been cut off due to the screen size.

With the artwork in place, I attached the t-mounding. The size of the slot was large enough that I didn’t need to hammer it into place, it’s held tightly enough with me pressing it all into place by hand. For any angle that turns into the ‘T’ I used a Stanley knife to remove small sections of ‘T’ so that it doesn’t buckle up. Equally for parts that turn outwards by any degree I made a cut into the ‘T’ to enable the exterior of the mounding to bend easily.

Step 10: Fitting Everything Inside

I started with the speakers and light strip, feeding the wires through the access hole and tacking them to the side of the cabinet. I wanted to try and keep everything fairly neat, so gave this a lot of thought. The cables are either cut to be as short as they can be, or are cable tied or tacked to prevent messy wires everywhere. I used a hot glue gun to fix the extension to the bottom of the cabinet, and to also fix the laptop PSU next to it.

The Raspberry Pi case I used was chosen because it has a built-in mount. The only problem I could see was that it would put the SD card very close to the surface it was mounted to, so fixing it to the side or bottom of the cabinet might make it difficult to get the SD card in or out. For this reason, I mounted the case on to the monitor support section, as close to the edge as possible, so that there’s just enough space to get a card in or out without too much effort.

The amplifier is fixed to the side panel so that the volume can be adjusted by reaching inside.

Step 11: The Marquee

To fit the marquee to the cabinet I managed to get some 500mm lengths of aluminium bent to a ‘L’ shape, with the short inside edge being just 2-3mm, and the longer edge around 20mm. Three holes were drilled into the longer edge, and then the whole ‘L’ is used to hold the marquee against the front of the light box by using three screws into the outside of the marquee section

Step 12: Bezel

The final stage is to mount the bezel. I considered various ways to fix the bezel that would mean it could be removed if I needed to get to the monitor. I was originally expecting the bezel to just sit above the control panel by a millimetre or so which would mean it needed to be removed before I could lift out the control panel (as the panel effectively pivots into place along the front edge). I wondered about drilling it and using screws, or possibly magnets. The eventual solution is much simpler – a few pieces of double-sided Sellotape. It has just enough grip to keep the perspex against the screen, but is easy to pull away if needed.

In one final stroke of luck, the perspex is actually about 3mm deeper than I expected, so the control panel rests against it. That’s great for when I need to remove the panel again, however this immediately had two problems – the first is that the bezel had a tendency to slowly slip down, and the second issue was more serious. The edge of the control panel, rather than being fully supported by the MDF behind, is now only resting on a thin sliver of perspex. I looked around for some wood about 2mm thick that I could fix underneath the bezel, solving the problem of the perspex dropping, as well as giving the control panel something firm to rest against.

The solution for this was somewhat unexpected, but I found that ice lolly sticks were just the right thickness, so I fixed a row of them under the monitor, solving both issues in one go.

Step 13: Snag List

I did hit on a couple of issues after completing the build. As I mentioned earlier, the hand tightened nuts behind the buttons had a tendency to work lose. This time I’d fully tightened them with a spanner, yet still some of them got lose over time. I didn’t want to risk over tightening them, so removed the control panel and applied a small dab of hot glue to each button between the thread and the nut. It should be enough to stop the nut working lose again, but can be picked off fairly easily if I ever need to remove a button again.

The other issue was the sticks themselves. One of the comments about the Zippyy sticks was the difficulty in sometimes hitting diagonals. The more I played games, the more I noticed the problem. Googling the symptoms, one piece of advice is to remove the restrictor plate from underneath the stick (the one that lets you change between a 2, 4 and 8-way stick). This did slightly improve the issue, but not enough. There’s a second plate under the restrictor, and if I also removed that the stick was much better, however the plastic at the bottom of the stick itself is then rubbing directly on the metal plate at the bottom of the unit, potentially wearing it away over time. My solution to this was to use a Dremel to sand away some of the plastic on this second plate, making it much more rounded but still ensuring the bottom of the stick is rubbing plastic-plastic instead of plastic-metal. So far this fix has worked perfectly, and has made the sticks much more pleasant to use.

EDIT: A few months ago I replaced the microswitches in the Zippyy sticks with Cherry branded ones. This has brought two advantages. Firstly, the sticks are now so much more quiet; the switches supplied with the Zippyy sticks are very "clicky", I didn't realise how much until I tried the Cherry ones. Secondly, it's reduced the overall amount of travel needed to register a movement from the stick. This has made gameplay more fluid and accurate, and also means the sticks feel more like the genuine Siemitsu sticks you find in many arcade machines. In total this cost me just over £15 to do both joysticks, including delivery.

Step 14: Enjoy

Once all that is done, the only thing left to do is to enjoy the fruits of your hard work.

I hope this guide makes a good companion to the other build instructions that are out there, and that some of the hints and tips have proved useful.

EDIT: I've uploaded the original artwork to a Google drive account, as I'm not sure whether it's easy to get it from the original source anymore. It can be downloaded here - Original artwork files

EDIT 2: I've also added the final artwork to Google drive. This contains the modified side panels with the dinosaurs swapped on one side, the final marquee, cleaned up graphics for the control panel and the front panel. There are no final graphics for the bezel, however they're largely based on the original download. - Final artwork