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.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: 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

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

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

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

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

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

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

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

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

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)

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

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.

5 People Made This Project!


  • CNC Contest

    CNC Contest
  • Make it Move

    Make it Move
  • Teacher Contest

    Teacher Contest

50 Discussions


1 year ago

I made my own version but fitted a Elecrow 11.6 inch ips screen with built in speaker and hdmi.


1 year ago

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!


1 year ago

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?


3 years ago

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

2 replies

Reply 2 years ago

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


Reply 3 years ago

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


Reply 3 years ago

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



Reply 3 years ago

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


4 years ago on Introduction

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...

3 replies

Reply 3 years ago

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



Reply 3 years ago


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:


Reply 3 years ago

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.


3 years ago

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

4 replies

Reply 3 years ago

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!


Reply 3 years ago

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


Reply 3 years ago

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


Reply 3 years ago

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