*** DRAFT ***
*** DRAFT ***
Overview:
Build a wall mounted RetroPie Arcade cabinet.
RetroPie turns a Raspberry Pi into a retro-gaming machine and server, which can be configured to play your favorite arcade, home-console, and classic PC games. RetroPie provides emulators for various gaming platforms, such as, Nintendo, Gameboy, PlayStation, Atari and many others.
This is a complex and expensive project. You can probably find a less expensive build. I am not including all of my misssteps in the final project. When I am doing the project, I put everything here. As I go, I remove the steps that didn't work.
In Retropie:
to Switch from Terminal to Game, open a terminal window and enter the command:
$ emulationstation
To go to the Raspberry Pi OS desktop, open a terminal window and enter the command:
$ startx
Decision: Cabinet Type
I watched many YouTube builds for a variety of arcade cabinet types. I ruled out cabinets I didn't like, which are my preferences. You can do what you want. I've included links to other cabinet types below. For example,
I don't like desktop cabinets because they seem too small.
I don't like Arcade1 cabinets because they aren't full-size arcade cabinets. Best Buy sells Arcade1, which is where I checked out the form factor.
I can find many used, cheap ((<$200) Arcade1 cabinets on Facebook Market Place.
This is usually an indicator that the product or form factor isn't very good, whereas full-sized arcade cabinets sell for almost the original list price.
I would prefer a full-size arcade cabinet. However, it is too large and bulky for my space and is too complicated for me to build.
I decided to build a wall mount cabinet. As much as possible, I tried to simplify the build. I can cut the major pieces out of a single sheet of MDF or from project boards (2'x4') .
Decision: Raspberry Pi 4 or 5:
As of 24JAN2025, RetroPie was last updated in 2022. Raspberry 5 was released in 2023. So, there is no requirement to use an RPi5.
Also, it may just be me, but I never want a 25-watt Raspberry Pi (RPi 5).
Decision: Retro Gaming Platform:
There are three main Retro Gaming platforms. Game Room Solutions gives a good overview of all three and reasons why you might want to pick one over the other The three are:
RetroPie
Recalbox
Lakka runs on LibreELEC
I am not sure which is best.
I asked ChatGPT and got a thoughtful response that might be worth reading. Here is my ChatGPT prompt:
You are an expert in retro gaming, and the raspberry pi model 4 B. Please evaluate the following, rank them in order and provide your reasoning. The three are: RetroPie, Recalbox and Lakka.
Many years ago, I used LibreELEC and ran into issues that I could not resolve. So, I am a bit gun shy of smaller on-line communities.
As of 24JAN2025, RetroPie doesn't support the latest version of Raspberry Pi OS (bullseye).
I have been meaning to create a RetroPie machine for years. Without any compelling reasons, I am going to stick with RetroPie (version 4.8). RetroPie runs on top of a Raspberry Pi OS image. The Raspberry Pi Imager will choose the proper Raspberry Pi OS version.
Warning:
Do NOT run
$ apt-get dist-upgrade
It will break your Retropie. Retropie runs an old version of Raspberry Pi OS.
Decision: Standalone Arcade Game, Retro Gaming Server, or Both:
Retropie can be a standalone arcade game, a gaming server or both.
I am going to setup RetroPie as a standalone arcade game.
With RetroArch installed on a laptop, RetroPie can be used as a game server. I am choosing not to do this.
Decision: Controller
There are a lot of different games that can be played on Retropie. I am not any kind of gaming expert. So, my choice of using an SNES-type controller is probably wrong. See the Retropie controller links at the bottom of this page.
Your controller choice determines the type and number of buttons and other input devices. For example, PlayStation controllers have many more buttons than an SNES-type controller. So, PlayStation games may have issues.
Parts:
Order electronics. I followed the recommendations from RetroPie.
Electronics:
I have an older Insignia Monitor that I no longer use ($0), which is 29-3/4 (???28-3/4???) wide by 17-1/2 high by ~3 deep from my storage
Raspberry Pi 4 Kit from Amazon $127.36
Raspberry Pi 4 model B with 8GB (1.5GHz quad core 64-bit ARM Cortex-A72 CPU) with integrated Wi-Fi and Bluetooth
Case
32GB card
card reader
5V 2.5A power supply with on/off
4x heat sinks
cooling fan
Adafruit's Momentary Rugged Metal Push Button with Blue LED $4.95
- ??? This may not be needed because button kit comes with ontroller ???
2x EG STARTS Arcade Buttons from Amazon $55.33
1x Player DIY Kit Joystick
8x 5V LED Arcade Buttons
You should buy the two-in-one kit because with a two-player button ($6.99) and it is less expensive. However, I do like the multi-color buttons in the one-person kit.
ControlBlock from Petrockblock $37.90 is not required beause the buttons ccome with a controller.
Fastoe Retropie Gaming Console ROMs 128GB microSD Card Preloaded Games for Raspberry Pi 4/400 from Amazon $59.99
ROMs can be downloaded for free. However, I am concceerned about introducing viruses into my home network.
This Micro SD Card comes with Retropie preloaded and 10,000 games and many emulators.
I am going to make a copy of the Fastoe SD Card, and then remove the games and emulators I don't want.
Need to add
Add 2-person (or is it player 2) button - need a different one
Add Power switch on side of cabinet ???
Add ??? power strip connected to back plug???
*** STOPPED HERE ***
Do NOT use:
I bought the PowerBlock from Petrockblock $21.90. It allows the RPi to be safely shutdown, started and rebooted.
The PowerBlock worked great for a few days. It was easy to setup, easy to install and easy to use.
I am not sure what happened. After a few days, I stopped working on the Raspberry Pi, but left it running. When I returned, the RPi would not boot. The run light blinked continuously fast.
Luckily, I had a backup. However, this didn't work either. Eventually, I replaced the RPi4 with a spare but did not use the PowerBlock and everything worked.
Since I do not know what happened, I cannot be certain but my best guess is the PowerBlock somehow broke the RPi4.
I have tried various methods to get the first RPi back to a known good state, all have failed. I contacted PetRockBlock and received no reply.
I will NOT use this ever again.
Tools:
Need a list of tools.
Phillips head screwdriver
*** STOPPED HERE ***
Step 1. Cabinet
Step 1.A. Design Cabinet Side
I used ChatGPT to find a full-sized arcade cabinet with dimensions. In researching cabinets, a major ergonomic feature is the tilt of the control panel. If this tilt is not right, then it becomes uncomfortable to play for an extended period.
Many cabinet designs have a curved outer edge and straight interior lines. I prefer to have the outer edge match the interior lines. I believe it makes the build easier.
I traced a full-sized cabinet onto graph paper and then modified it to be a wall mount double checking my measurements repeatedly.
*** STOPPED HERE ***
Cabinet: 2x sides, top, TV cover, control panel, front control, bottom control shelf, very bottom shelf, two additional shelves
Skeleton with Wall Mount using French Cleat, skeleton holds sides and shelves
Use 2x French cleats; don't use plywood for skeleton
Add drawing with dimensions.
Step 2. Electronics
Step 2.A. Fastoe MicroSD Card
The Fastoe MicroSD Card comes with Raspberry Pi OS, RetroPie and 10,000 games aand associated emulators.
Put this in the Raspberry Pi MicroSD Card slot.
If you'd like to build RetroPie from scratch here are the directions.
Step 2.B. Important Defaults
Important defaults for retropie are:
hostname = retropie
password = raspberry
username = pi
For security reasons, you should change hostname and password. To do this:
Open a terminal window on MacBook, and run the commands:
$ ssh pi@retropie.local
$ sudo raspi-config
Change localisation options, keyboard, hostname, user pi's password
Note: if ~ is not recognized, then the keyboard is not setup correctly
$ sudo rebot now
And change hostname and password
Step 2.C. Simple Raspberry Pi Fan
The fan that comes with the RPi connects to pins 4&5 and it runs all the time. The fan it is quite loud. I substituted a quieter fan, and rather than run at 5v, I am running it at 3.5v and only when needed.
Use this Step to add a Simple Raspberry Pi Fan.
Red Fan pin goes to GPIO 3.3v (pin 01 or 17)
Black Fan pin goes to the GPIO_PIN defined in the script (physical pin 37 or GPIO 26)
Step 2.D. Audio
The monitor is also a TV and has built-in Speakers
Anything that comes through the HDMI port from the Raspberry Pi will be played through the TV speakers
The volume is controlled via the monitor.
No external speakers or RPi audio device is required
To change audio config, run
$ cd ~/RetroPie-Setup
$ sudo ./retropie_setup.sh
Configuration tools
audiosettings
HDMI 1
$ sudo raspi-config
System Options
Audio
HDMI 1
$ sudo nano /boot/config.txt
# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=1
#hdmi_mode=1
# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
hdmi_drive=2
$ sudo reboot now
if HDMI audio is working, the following command outputs white noise
$ speaker-test
Step 3. Install Pixel Desktop
Retropie does not come with Pixel installed. Pixel is needed to run Raspberry Pi Imager to make a backup MicroSD Card.
To exit emulationstation, type F4
In the terminal, run this command:
$ sudo bash ~/RetroPie-Setup/retropie_setup.ssh
Notes:
If the tilda (~) appears as a funky character, then the keyboard was not set properly in raspi-config.
Rerun:
$ sudo raspi-config
And fix the keyboard in localisation options.
In retropie_setup, do the following:
select Raspbian Tools
Click Install Pixel Desktop Enviornment
Step 4. Choose RetroPie Platforms & Games (optional)
Do the steps in the link
Step 5. Clone MicroSD Card
Until everything is setup and running as you want, you might want to make clones of the running system.
Moving the games and emulators was a lot of work. So, cloning now could save a lot of re-work if anything goes wrong.
Step 6. Cleanup Menu
Note: many of the Fastoe games used 7z insstead off zip extension. So, they weren't showing in the collections menu items.
Step 6.A. Remove Compilations (or Collections) from RetroPie Menu
The RetroPie menu has several compilations, classics or collections. Once I removed many games and platforms, these menu items had zero games in them. So, I wanted to remove these menu items. The way to do this is from a terminal window, run the commands:
$ cd ~/.emulationstation
$ cd collections
$ mkdir unused
$ mv <unwanted>.cfg unused/.
I moved these into unused:
custom-atari.cfg custom-konami.cfg custom-midway.cfg custom-shmups.cfg custom-vector.cfg
custom-capcom.cfg custom-lightgun.cfg custom-namco.cfg custom-snk.cfg custom-williams.cfg
custom-dataeast.cfg custom-metalslug.cfg custom-nintendo.cfg custom-taito.cfg custom-wrestling.cfg
custom-irem.cfg custom-metroid.cfg custom-sega.cfg custom-trackball.cfg
Step 6.B. Cleanup or Add Collections as Desired
I created two new collections: kids and casino.
$ cd ~/.emulationstation/themes/Slick_CityLights
$ mkdir kids
$ mkdir kids/_inc
$ mkdir casino
$ mkdir casino/_inc
$ cp arcade/theme.xml kids/.
$ cp arcaade/them.xml casino/.
On my MacBook, I grabbed two images off the internet and used PaintX and screenshot to make them the same size and layout as:
arcade/system.png
arcade/background.png
Then, I scp'd this files to the Raspberry Pi and then mv'd them to the proper directory
In the collections directory of 6A, I created a custom-kids.cfg and a custom-casino.cfg. I also updated custom-sports.cfg.
I added the appropriate games to each .cfg file.
Step 6.C. Remove RetroPie menu
I don't want my kids or grandkidss playing with the options in the RetroPie menu option. So, I want to remove this menu item.
Disable Options Menu Item: To do this, run the following ccommands in a terminal window:
$ cd ~/RetroPie-Setup
$ sudo ./retropie_setup.sh
select Manage Packages
Manage Core Packages
RetroPie Menu
Remove
Yes
And then backout and reboot from the menu or command line ($ sudo reboot now)
Enable Options Menu Item: However, it might be necesssary to redo or change the buttons. So, to reverse the above, do this:
$ cd ~/RetroPie-Setup
$ sudo ./retropie_setup.sh
select Manage Packages
Manage Core Packages
RetroPie Menu
Install from pre-compiled binary
And then backout and reboot from the menu or command line ($ sudo reboot now)
Step 6.D. Find Requested Games and Add roms and Platforms
After 6A, I had no Sonic the Hedgehog orStreetfighter games. So, I found them and added them back.
$ cd ~/RetroPi/roms/unused
$ find . -name "Sonic "*" Hedgehog*.*"
$ find . -name "Street Fighter II"*.*
recreate subdirectory in roms and move media and games
file names in cfg must match exactly names in roms subdirectories. Some have different extensions
~/.emulationstation/collections
There are a lot of Pac-Man games but only one shows
To find games, try something like this:
$ find /home/pi/RetroPie/roms -name *Street*.* | grep -v -e "unused" -e "media"
Add the platform and the game, update the .cfg file as needed
Step 7. Add Buttons and Joysticks to Encoder Board and Connect to Raspberry Pi
Notes:
The Encoder "User Manual" is a double-sided piece of paper with poor directions.
I could not get any of the "User Manual" QR Codes to work. So, in the images below, I tried erasing them. I am guessing my phone has a security setting preventing the QR Code connection.
You can wait to do Step 2.B (??? what step ???) until after the cabinet is built.
I wanted to be sure everything worked before building the cabinet, because that is the hardest part of this project.
The reason to wait is the joystick and buttons will need to be removed to put them in the cabinet.
The connectors can be pried apart, but it is probably not a wise thing to do. The Adapter Cables use locking push-on connectors. These have two small hooks that must be pressed together to release the connector.
The 2-pin and 5-volt slots on the Encoder Board are not used.
Not all of the 3 pin slots are used.
Definitions:
An Adapter Cable has 3 or 5 wires and has a connector on each end.
A Slot is a female connection that takes an Adapter Cable and is labelled K1-K12 on the Encoder Board.
K5-K8 are labelled differently on the backside of the board. K5-K8 are not used.
For more definitions, see this link
Step 7. (continued)
The directions in the Encoder User Manual (see images on left) are lacking. Here is what I did:
Shutdown the Raspberry Pi
$ sudo shutdown -h 0
Remove the Raspberry Pi power cable.
This is a two-player build. So, for one button kit, take everything out of the packaging. Undo the twist ties.
As you go through these directions, put any leftover parts in the large button bag.
Step 7. (continued)
My button kit came with multiple Adapter Cables joined together (e.g., 8 connectors on one ribbon cable).
Do NOT separate any of the 3 wires in one Adapter Cable.
Separate any joined Adapter Cables.
Gently pull the Adapter Cables apart to separate.
Step 7. (continued)
Screw the red ball on to the joystick
Insert a 5-pin Adapter Cable into the 5-pin joystick slot and into the 5-pin Encoder Board slot.
On the Encoder Board, insert one end of a 3-pin Adapter Cable in slots K1-K4 and K8-K12.
It doesn't matter which wire one goes into which slot.
Once all the Adapter Cables are plugged into the Encoder Board, then connect the buttons as follows (odd numbers are on top and even are below):
K1 & K2 = yellow buttons
K3 & K4 = red buttons
K5 & K6 = green buttons
K9 = coin button (Select)
K10 = player button (Start)
K11 & K12= blue buttons
The second controller must have the same buttons connected to the same slots.
Step 7. (continued)
A standard controller configuration is to use 6 of the 8 colored buttons. 2 Player buttons and the player and coin buttons. I chose not to use the 2 green buttons. (see image on left)
(??? NEEDS TO BE REPLACED WITH FINAL IMAGE ???)
Step 7. (continued)
Plug the USB-B connector into the Encoder Board and into one of the USB 2.0 slots on the Raspberry Pi 4.
The USB 2.0 connections are next to the ethernet jack.
Plug-in the Raspberry Pi power cord.
When the terminal window is up, enter:
$ emulationstation
The goal is to get a controller with the same functionality as that shown on the controller above.
X & Y are K1 & K2 (yellow buttons)
A & B are K3 & K4 (red buttons)
The joystick replaces the D-PAD direction buttons
Slot K9 = Select (coin button, SE)
Slot K10 = Start (player button, ST)
Left & Right Shoulder are K11 & K12 (blue buttons)
Skip all the other buttons when configuring Retropie (hold a button to skip)
When you get to hotkey, hold the blue button K3 down for a long count, then use the joystick to move to OK. Then press K3, it will take a few seconds and then it will exit Configuring Gamepad.
Step 7. (continued)
Repeat the steps in 2B for the other button kit
*** STOPPED HERE ***
??? Move before after cabinet build so user doesn't have to disconnect switches from Adapter Cables. I did this because I wanted to make sure everything worked before I started building a cabinet, which is the hardest part. ???
Step 8. Power Button
Open a terminal window on the arcade and run these commands:
$ wget -O - https://raw.githubusercontent.com/petrockblog/PowerBlock/master/install.sh | sudo bash
$sudo shutdown -h 0
Disconnect the USB-C power from the Raspberry Pi
Connect Adafruit's Momentary Rugged Metal Push Button with Blue LED to the PowerBlock LED and Power pins using jumper cables.
+ and - on PowerBlock LED pins to button + and - on button
Connect NO and ??? on button to SWITCH pins on PowerBlock
Attach the PowerBlock to the Raspberry Pi headers
Insert the USB-C power into the PowerBlock
The button can safely turn the RPi on and off.
Step X. ???
*** STOPPED HERE ***
Connect electronics to see if it works
Electronics:
Joysticks and buttons,
on/off switch (turn on/off monitor, raspberry Pi without causing it to become corrupted),
power cord/surge supressor for TV and raspberry Pi ?
Step X. Build a case for Raspberry Pi
piece of acrylic for mounting to cabinet
*** STOPPED HERE ***
Step X. Put Electronics in Cabinet
*** STOPPED HERE ***
Hub 1 connects to all the USB ports with the USB 2.10 standard (push buttons and joystick), and hub 2 controls all the ports with the USB 3.00 standard and the Ethernet jack.
https://www.makerspace-online.com/power-point/
A number of techniques allow you to control USB ports, and I found that one of easiest approaches is to use the uhubctl utility, which lets you view and control local USB ports and ports on smart USB hubs. To load this utility, enter:
sudo apt-get install libusb-1.0-0-dev
git clone https://github.com/mvp/uhubctl
cd uhubctl
make
sudo make install
The commands to turn on or off or toggle the USB ports and keep the Ethernet jack powered are:
sudo uhubctl -l 1-1 -p 2 -a on
sudo uhubctl -l 1-1 -p 2 -a off
sudo uhubctl -l 1-1 -p 2 -a toggle
Will disable the USB ports but also the LAN port:
$ sudo sh -c "echo 0 > /sys/devices/platform/soc/3f980000.usb/buspower"
Reactivates them.
4 sudo sh -c "echo 1 > /sys/devices/platform/soc/3f980000.usb/buspower"
RetroPi Arcade and Cabinet
Plan
Materials:
4x8x1/2 inch MDF: For outer panels.
Have Lowe’s cut 2x ??x48
2x4x3/4 Plywood: For structure and for hanging on wall
1x1 wood: for mounting inner panels to side panels
High-Shear Strength Stainless Steel Screws
Tools:
Saw and Table Saw: For cutting the wood.
Drill: For making holes for buttons and assembling parts.
Screwdriver: To assemble the cabinet.
Router: with round over bit and flush trim bit to do side boards
Basic Steps:
Build Cabinet:
Design: Make it in a Polycade form factor. Mounts on wall. Sketch out design, considering the dimensions of the monitor and control panel. Use one of the example links below or save drawings as a base design. Modify as needed. I’d keep top and bottom at right angle to wall. No door on bottom, but shelves might be nice. The outside is slightly larger than the inside pieces and the edges are rounded over using a router. Try to keep it simple.
Cut: Cut the wood pieces according to the design.
Assemble: Put the pieces together, ensuring they are securely attached. Glue and counter sink screws
Wood Putty:
Finish: Sand and paint high-gloss black
Ironman decal on side
Install Electronics
Install: Fit the monitor, computer, and controls in place.
Videos and Links:
I was planning to build this, but I could not find a MicroCenter near me that sells it or one that would ship it to me:
https://www.instructables.com/2-Player-Stand-Up-Retro-Arcade-by-Micro-Center/
https://www.youtube.com/watch?v=6OcVQ5HDLkY&t=33s
https://www.youtube.com/watch?v=K3QXLQ1UXqs&t=16s
https://forum.arcadecontrols.com/index.php/topic,161692.0.html
https://arcadecontrols.com/arcade.htm
How to hookup encoder and buttons:
https://www.youtube.com/watch?v=QI4idp8nxLE
Best Dimensions, modify width to be wall mount: https://www.instructables.com/Easy-Cab-arcade/
Retropie
Button Configurations:
https://retropie.org.uk/docs/RetroArch-Configuration/
Controllers:
https://retropie.org.uk/docs/Controller-Configuration/
Howchoo always has the best directions. He uses a gamepad instead of buttons:
https://howchoo.com/pi/build-your-own-raspberry-pi-retro-gaming-rig/