Introduction: Bartop Mini Retro Arcade - Raspberry Pi and Customised Icade

Picture of Bartop Mini Retro Arcade - Raspberry Pi and Customised Icade

"Approaching" middle age, wanting an excuse to play with a Raspberry Pi, and having great memories of 80s games (mainly spectrum, sega master system, neo geo, and Atari ST) i decided to build a mini arcade machine / retro emulator.

Hopefully some of the things i learnt and successes (as well as mistakes) i made along the way will help others as others helped me.

Step 1: The Kit

Picture of The Kit

As a guide this is the kit i used and the sources but part of the fun is finding alternatives (e.g. for the screen you could also use an IPAD replacement screen and controller board ).

Step 2: The Cabinet

Picture of The Cabinet

First off the cabinet. I decided to use an Icade cabinet rather than build my own to save time and cost.

The Icade is a bartop retro arcade-style cabinet and bluetooth arcade joystick that is meant to be used with an Ipad. Sounds a great idea but there's hardly any games that support the Icade and there's no diy fun just plugging in an ipad :)

If you can't get hold of an Icade you could make similar with some 10mm MDF and some joystick parts (available from many online sellers including ebay).

Step 3: Strip the Cabinet

Picture of Strip the Cabinet

I didn't like the graphics on the Icade so i pealed off the front and top stickers, removed the side graphics (mine were quite brittle and came off in small pieces), sanded the sides lightly and then painted the side panels with one coat of black all surface paint.

Although i'm going to put vinyl graphics on the sides i didn't think they would stick too well to bare mdf hence the paint.

Step 4: The Joystick and Buttons

Picture of The Joystick and Buttons

The Icade joystick comes attached to a bluetooth board. To connect to the pi (and be recognised easily by the emulators) you're better off with USB however.

I bought a "no delay usb joystick board", unplugged the bluetooth board and connected up the usb board. This is very easy to swap out as the connectors all just pull off/snap on.

The only gotcha is that there's about 16 screws to get into the joystick housing and 2 of them are security screws requiring a T8 center pin star security screwdriver bit ( i bought a set from Maplin for £5 ).

If you don't want to use USB (e.g. to save cost or save a usb port ) you could also connect up the joystick directly to the PI's GPIO board and use Adafruit's retrogame utility to map the joystick/button inputs to keys ( more on that later as i use it for the exit button ).

Step 5: The Screen Sandwich

Picture of The Screen Sandwich

The screen took the most thought - what size, landscape or portrait, resolution, how do i mount it, does it need perspex, what kind of bezel etc.

I initially ordered a Tontec 7" 16:9 screen with HDMI/VGA board off Amazon but didn't like the size or aspect ratio. A 9" 4:3 would be perfect but they are extremely rare/expensive currently ( unless you can find an hdmipi screen). In the end i bought a Tontec 8" 4:3 screen with HDMI/VGA board off Ebay which i'm very pleased with.

The screen is 6mm deep so i bought some 6mm MDF to make a housing for it and painted it black ( although this isn't necessary).

The screen is secured in place with two MDF battons on the back with the HDMI board screwed in place behind the screen. I bought some clear acrylic to cover the front and drilled four holes in the corners to bolt everything in place to form a sandwich including a "bezel" cut out of black card to hide the silver frame of the screen.

My first attempts at cutting the acrylic ended in disaster ( due to a blunt Stanley knife which couldn't even cut paper ). In the end i bought the acrylic cut to size and just drilled the holes myself.

FYI: Portrait or landscape is a personal choice and depends on what games you're likely to mainly play but i decided on landscape ( i also had some performance issues when i tried portrait due to the extra processing the pi has to do to rotate the output ).

Step 6: Speaker

Picture of Speaker

I used a cheap spare USB speaker i already had that plugs straight into the PI and can charge off a usb cable.

Step 7: Back Panel

Picture of Back Panel

The Icade doesn't have a back panel as such and i didn't want to leave the wiring and Raspberry exposed so i created a panel out of the same 6mm MDF as the screen mount.

Rather than leave it blank i thought it should have some air/sound holes so i drew and printed out a space invader graphic, stuck it down with masking tape, and carefully drilled out the holes.

I drilled a few test holes on a spare piece of wood and found the back exploded after a few holes. To counter this i duck taped the reverse side too, put another piece of wood under the main piece of wood when drilling, and used 3 drill bits of increasing size.

Once drilled it had a very light sanding around the holes and a coat of paint (applied with a small roller).

Step 8: Connecting Up

Picture of Connecting Up

Before screwing everything in place its worth connecting everything up to test its working.

This caused some considerable delays to the progress however but resulted in some new high scores :)

I (eventually) mounted the Pi inside, connected up the USB joystick, USB speaker, HDMI lead to the screen, front LED, and added an additional side "exit" push button.

The exit button is a simple bush button connected to pins 39 (ground) and 40 (GPIO21) on the Pi's GPIO connector.

I wanted to make the front LED light up when powered on so i connected this to pins 14 (Ground) and 16 (GPIO23).

I also plugged in a usb extender cable for when i want to connect up a second controller (e.g. a PS3 controller) for 2 players or a keyboard.

Step 9: The Marquee

Picture of The Marquee

For the marquee i used a 224mm by 45mm piece of perspex with the same size mdf behind it.

I drilled through both and bolted together to form another sandwich.

In the middle i've got a graphic i put together and got printed at Snappy Snaps for £3 ( it's £3 for a 9x6 so you can print 3 different designs on a page and then choose the one you like best - this worked out better value than printing on A4 ).

Step 10: The Side Art

Picture of The Side Art

I ordered the vinyl side art off ebay. I provided the sizes in a pdf template and received back some nice vinyl stickers.

To apply the stickers you have to line up the graphic and then tape down one side ( i used the long back edge) and use this as a hinge to take off the backing paper.

You can then use a credit card, working from the middle, to put the graphic in place whilst smoothing out the air to leave no bubbles.

This worked very well, however don't do what i did and use sellotape! This left a sticky mark on the first graphic i did which i've struggled to get off. Using masking tape worked much better on the 2nd one.

To get a neat trim i laid the cabinet on its side and used a Stanley knife (with new blade) to trim off any spare.

Step 11: The Raspberry PI (and RetroPi)

Picture of The Raspberry PI (and RetroPi)

I used a Raspberry Pi 2 model B with RetroPi ( an image you can download to your SD card) which includes Emulation Station ( a graphical front end ) and a number of emulators.

Once connected its really just a case of mapping the joystick, buttons and the exit button in the appropriate emulators (and copying up the relevant roms for any games you own).

You may also need to set the screen resolution. For my 4:3 800x600 HDMI screen i edited /boot/config.txt to set the following:


By default the N64 emulator sends sound out of the HDMI if HDMI is connected so i had to edit the following setting in /opt/retropie/configs/n64/mupen64plus.cfg to get sound out of the analog:

# Audio output to go to (0) Analogue jack, (1) HDMI


To get the exit button to emulate someone pressing the escape key i used Adafruit's retrogame utility and edited retrogame.c to add the following to the ioStandard table before the line which has "{ -1, -1 }}; END OF LIST"

{ 21, KEY_ESC },

I then compiled it (i.e. typed make), and made sure this started on boot by adding the following to /etc/rc.local:

echo "Starting Adafruit's retrogame utility to map gpio inputs to keyboard presses"

/home/pi/Adafruit-Retrogame/retrogame &

To get the front LED to light up via the GPIO pins i created a small Python script and saved it as /home/pi/arcade_led_on:

#!/usr/bin/env python2.7

import RPi.GPIO as GPIO


GPIO.setup(16, GPIO.OUT)

GPIO.output(16, True)

To get this to run on startup i edited /etc/rc.local again and added the following to the end:

echo "Turning on arcade LED via GPIO pin 16)"

/home/pi/arcade_led_on &

Step 12: Improvements

Picture of Improvements

Potential improvements i'd like to make:

  • Replace the joystick and buttons with something better quality. They work fine but the joystick gate isn't great, and the buttons are quite noisy and can result in an aching hand (more practice required!). If you are going to do this its probably worth making your own cabinet at the outset rather than using the Icade.
  • Replace the mdf behind the marquee with another bit of perspex and add some form of lighting.
  • Try and get one power supply to run off and a master on/off switch - currently the pi needs one and the screen needs one ( i tried running the screen off the PI's 5v output but it flickered on/off every few seconds).

...but they're all nice to haves - for a good while i'll just be playing some games :)

Hope you find some of this useful if you're thinking of trying similar.


Arkarinum (author)2017-12-12

Hey man, do you still have that pdf template for the side stickers? Would you mind making it available in this instructable? You rocked on this project!

TyT14 (author)2017-11-15

I know this is a older post and i finished my icade bartop. I can't figure out the buttons gpio pins and retrogame. Could someone do video tutorial on how to use adafruits retrogame program?

IanS105 (author)2016-04-25

I can recommend these guys for the screen... perfect resolution and the perfect ratio and size...

deepdivered (author)IanS1052017-03-16

did you end up getting this? its the same thing i was looking at.

IanS105 (author)IanS1052016-04-25

You also don't need any step down power supply for this screen, it runs off usb directly from the pi!!

StephanC4 (author)2017-03-02

I'm planning on doing the same. I wanted to use this screen

Do you guys think it will fit if I attach it directly to the main vertical board of the icade? The screen is 27mm/1.06" thick.

Sokratz made it! (author)2016-02-29

Finished mine this weekend. I've built full size, stand up arcade and 2-player bartop versions - and now this single player mini-version all using RetroPie. This one is probably the most efficient since it's small and less expensive. Thanks for the great idea!! Here's some of the design choices I made.

- Screen: I used an old iPad 2 screen since I had one. One perk here was being able to take apart an iPad and see what's inside them :-) I used an HDMI controller board from NJYTouch, a China company, and they are excellent!! I had a bad controller board and the folks at NJYTouch worked with me through troubleshooting and replacing the board. They are GREAT!!

I tried to make mounting the screen as easy as possible. I used a piece of plexiglass as the front cover. I mounted the iPad screen to the plexi with 4 small screws and then mounted the plexi to to the iCade frame with 4 small screws. I masked off the screen location and painted the back of the plexi black.

- Buttons: I added small green and red buttons to the front panel. Green is "coin" and Red is "Esc" to get out of the game. I tried replacing the white buttons with new player 1 & 2 buttons - which had player 1 & 2 symbols on them. But they were about 1/4" too long and wouldn't fit into the case - so had to go back to the default iCade white buttons.

- Button Controller: At first I tried keeping the bluetooth controller built into the iCade and tried to connect the iCade's joypad to the Raspberry Pi via Bluetooth. It just wasn't stable enough to use bluetooth. I couldn't get it to reliably connect every time so I finally dumped that idea and went with a single player Xin-Mo controller. It basically turns the joystick and buttons into a keyboard (eg keyboard emulator). This solution worked great!

- Power LED: I liked that the iCade had a fake lighted 25 cent button on the front and wanted to keep it. To do that I ran power off of the 3.3V Raspberry Pi' GPIO pins. I assumed 3.3V since the iCade was running off of 2 AA batteries. Now when the Raspberry Pi is powered up, the LED lights up.

- Power Switch: I wanted it all to power up with a single switch. In the back I have a 3 outlet power strip (2 outlets needed - Raspberry Pi and HDMI Screen). I modified the power strip with a switch which I ran up to the top of the iCade. When you lift the top "lid" the power switch is easily accessible. Easy power on/off.

- Artwork: I decided to keep the iCade artwork. Saved a little bit of money and it doesn't look that bad. I also don't have any marquee artwork, yet. I'll do that eventually but it's just a blank, black marquee for now.

Overall I'm very happy with this build. It was a lot of fun to build and turned out great. Thanks for the idea!!

Sokratz made it! (author)Sokratz2016-09-12

Decided to put artwork on the the first one I built. Here's the latest pic of how it turned out.

Sokratz made it! (author)Sokratz2016-07-29

Made a second one and did a few things differently this time.

- Put a full back on it with a standard power connector. Allowing any PC type power cable to be used. It gets a little warmer in there with the back on but I left it on for about 8 hours and didn't have any problems.

- Used a 2" speaker mounted at the top, behind the plexi and a small amp w/ volume control mounted so you could adjust the volume by lifting the top. The amp is powered off the RaspberryPi (GPIO header). I tapped into the sound from the test pins on the back of the Pi so I didn't have to mess with a 1/8" jack. You can see the 3 wires going to the back of the Pi in one of the pictures.

Here's the amp from Amazon:

Here's the speakers from Amazon:

I only used one speaker but I think it would be better to use both. Maybe next time....

- Decided I needed sideart this time, too. I used sideart from RidicRick and had one of the guy's I use to print big arcade machine side art do this one for me.

Here's a link to the artwork from RidicRick.

Rod2D2 (author)Sokratz2016-09-05

Can you share more details on how you made/wired the power switch? I like that the power switch controls everthing. Any photos of the wiring or process would be great.

Sokratz made it! (author)Rod2D22016-09-12

I did the power connections two different ways. In the first build I just hacked a power strip and inserted a switch. I've added a picture (the one showing an open power strip) but if you're not familiar with this, please don't do it. It's not the best method. You really don't want to do it wrong and fry everything in your cabinet or worse yet cause a fire and burn down your house. :-)

For the second build I cut off the end of the power strip and replaced it with a standard "PC type" power switch/jack. Then I could use a standard power cord to power the box. The picture showing the back of the box shows it.

I haven't searched for them but I imagine there are power strips that have remote switches on them already. That might be the easiest way if you're not familiar with power connections.

Sokratz (author)Sokratz2016-07-29

I had someone ask a question via a PM so thought I'd post it here since others might have a similar question.


iCade Parts Question

Hello! I was looking over your post and I've gathered the same materials, I just have a question. What screws you used to attach the iPad display to the plexi, and what screws used to attach plexi to the case. Thank you!


re: iCade Parts Question

To attach the iPad screen to the plexi I searched my "spare parts bucket" to find some small black screws (probably 3/8" or 1/2" long). If you have spare screws from computer cases and drives, try those. The iPad has a small tab in each corner. The tab has the holes used to connect the iPad screen to the iPad housing (in the original iPad). Those are the same tabs that I used to connect the screen to the plexi. You have to find screws that will thread through those holes.

Connecting the plexi to the to case I used #6 3/4" sheet metal screws. Pre-drill holes and paint the heads black. Tighten by hand so you don't strip them. It's really easy to strip them in the cheep MDF used for the ICade cabinet. In the second ICade I build I used bigger screws, #10's I think, because I had some that I didn't have to paint black. Those were too big and didn't look very good. Stick with the smaller ones.

patheticpuma (author)Sokratz2016-07-05

Can you point me to the power supply you bought for the controller board? I am going with the same LCD/Board, but I have yet to receive any answer from the seller on what power supply is correct.

Sokratz (author)patheticpuma2016-07-05

I bought it a while ago for a Sony PTZ camera so had it on hand. It's a 12v, 4A adapter with tip positive. The only problem will be the size of the power pin. This looks like the right adapter and is from the same company I purchased the driver board from. It doesn't look like they have the the pin diameter listed, though.

AugieE (author)2015-07-27

I just finished mine over the weekend. :)

mike_therealest (author)AugieE2016-08-23

Where'd you get those tabs to hold up your screen? What are they called?


AugieE (author)mike_therealest2016-08-24

Plastic mirror holders at Home Depot or any home improvement store.

mike_therealest (author)AugieE2016-08-24


NOTHiNG_Fr (author)2015-06-20

I'm planning to use an old Ipad screen (Samsung LTN097XL01-A01 9.7") with LVDS to HDMI board to make mine, the screen fit perfectly to the iCade...

JasonG87 (author)NOTHiNG_Fr2015-12-12

DId you ever find a LVDS to HDMI for the ipad screen? If so how a bout a link.


NOTHiNG_Fr (author)JasonG872015-12-13


suitable for: IPAD1 IPAD2 LCD screen panel like LP097X02-SLA1; LP097X02-SLA2; LP097X02-SLA3; LP097X02-SLAA; LP097X02-SLN1;LP097X02-SLN2

Kindly note: If you have other similar LCD panels, please advise the detailed LCD model no. for checking compatibility, thanks!

General Specification for LCD controller board

1. Support 1ch VGA input;

2. Support 2ch AV input;

3. Support 1ch HDMI input; and IC supports HDMI 1.1

4. Support 1ch reversing input;

5. Support wide-voltage input, and could work within 5V-24V;

6. Standard backlight: 6 pin connector; could connect inverter externally;

7. Integrated with LED backlight circuit;

8. Standard LVDS output, supports 1ch 6 bit, 1ch 8 bit, 2ch 6 bit, 2ch 8 bit; but only with panel voltage 3.3V;

9. Standard keypad; supports double-color LED indicator.

Parameter for LP097X02 LCD panel:

Resolution: 1024x768;

LVDS signal: 1ch, 6 bit;

Backlight: LED;

LVDS interface: 30 pin;

Package includes: A controller for ipad 9.7” LP097x02 LCD; a LVDS cable; and a keypad with cable.

Suitable power adapter(12V,4A) is also required, you could get one here in our eBay store:

Rod2D2 (author)NOTHiNG_Fr2016-08-19

Hi, Did you end up purchasing this ipad controller board? If so how has it worked out for you and did you have to purchase anything else? for example something to control the backlight or anything else? My ipad 1 LCD seems to fit perfectly in the icade on landscape orientation so this seems like a great option.

JasonC136 (author)2016-02-07

Has anyone got a more recent link for a decent sized 4:3 LCD, at a reasonable price. None of the links on here seem to lead to anything usable ? Thanks

DnosH (author)JasonC1362016-03-30

iPad 2 display man. 9.7". IPS. 1024x768. Largest display you can fit in an iCade. Honestly, that's the only one that should be used!

IanS105 (author)DnosH2016-05-09

how do you connect this to the raspberry pi? Have you got a display driver board which is compatible with the ipad screen?

JasonC136 (author)JasonC1362016-02-07

Sorry, I should add I'm making my own cabinet, not using the icade one

JasonC136 (author)JasonC1362016-03-11

I found a 15" 4:3 1024x768 display on eBay. perfect :)

FranciscoG78 (author)2016-05-01


denis.cleary81 (author)2016-04-16

This is almost identical to iCade emulator I made back in late 2014 on a Pi B+. Just this one looks much nicer than mine!!! I used a DC 12V to 5V step-down power supply from amazon to power both the monitor and pi of the same supply. Also I went down the route of using the GPIO to hook up the joystick and buttons. Love the art work on your arcade this is the one things I could not get anywhere near as good!!! Great post

IanS105 (author)2016-03-30

Do you think you could do this with a taito invadercade? I prefer the artwork on that one with it being a space invaders one. I'm not sure of the insides of that one though.

zumka (author)2016-03-15

Any ideas how to solve power input with monitor needing 12V and PI 5V? What if I buy 12V 10A power supply and 12V to 5V converter this way I can split it and power both devices.

happyhippy1 (author)2016-02-05

what is the total cost for this project?

jackandwho (author)happyhippy12016-02-07

Without side art/paint i think it was about £140. Optional side art (£25-30), paint (£10), and reset button (£2). So £180 ish.

happyhippy1 (author)jackandwho2016-02-10


sounddave1981 (author)2015-11-26

I've credited you for the inspiration for my own arcade

jackandwho (author)sounddave19812016-02-07

Nice. Especially like the buttons and side art.

happyhippy1 (author)2016-02-05

what is the total cost for this project?

onedumbtrucker (author)2015-07-28

Great instructable. Just got my icade in last night. Can't wait to start building.

harty123 (author)2015-07-12


awesome project! I've made a similar one based on an Arcadie gamedoch for iPad mini:

dustoweb (author)2015-07-05

Could you post a link or a description of how you got the side art printed from eBay? I looked around for custom vinyl decals or stickers, but all of them seem to just be text and not images. I sent a few of the sellers questions about doing something like this, but haven't heard anything back. One other question, how did you go about attaching the marquee to the rest of the cabinet? Did u just glue it to the top piece? Thanks for posting this, it is an awesome idea.

jackandwho (author)dustoweb2015-07-11

For the side art i emailed RockStarPrint...

To attach the marquee to the cabinet i used two small right angle metal brackets. The screw comes through from the front. This way you can swap out the marquee graphic if you fancy a change.

jackandwho (author)jackandwho2015-07-11

Better link perhaps...

tonyt3rry (author)2015-07-10

excelent build, been wanting to make one myself but hopefully use a less expensive lcd or repurpose a old laptop screen and buy a controller

Sivioke (author)2015-06-30

Love it! This post inspired me to build my own - still in progress but should be done soon!

Wolf1200 (author)2015-06-18

AWESOME!!!! you did a good job

snowflafe (author)2015-06-16

wow so awsome

AugieE (author)2015-06-16

I'm in the middle of building this project, I started a couple of weeks ago. So far I have the iCade, RPi2 with RetroPie image and have all wires plugged in to the zero delay USB encoder. I'm looking to order Tontec 9" TFT LCD display next. Slowly but surely it's coming along. I like the marquee and side art idea, might have to look into that next.

jedimaster1974 (author)2015-06-11

Just ordered some parts to give this a go! Thanks very much for the tutorial.

Would you be able top post a link to the type of screen you have used so I can get an idea of this? Many Thanks and keep up the good work!

I used one of these..

..except it was the 8 inch 4:3 version rather than this 7 inch widescreen.

Good luck !

Thanks for that, I can get some ideas then. The rest of my bits have arrived, so just need to get the screen, thanks again for this instructable. Hope I can do it justice!!! :)

About This Instructable




More by jackandwho:Bartop Mini Retro Arcade - Raspberry Pi and Customised Icade
Add instructable to: