Arcade 1Up Raspberry Pi Mod
Installation of the Pi, Audio, and LCD Controller
To start off, I’m first going to say that I’m definitely not the first person to do this. I have to admit though, as soon as I saw the Arcade1Up cabinets, this is the first thing I thought about and knew that eventually I was going to do this to one of them.
Second, this isn’t a complete write-up on how to integrate a Pi with the Arcade1Up hardware, rather, it’s just a compilation of a few tips that I recommend to make your conversion go easier. If you’re starting from the beginning, I’m going to recommend a video that will show you exactly how to get started in a really nice step-by-step fashion, complete with everything you’ll need to buy. This video was created by a great YouTube channel, ETA Prime, of which I’m a huge fan.
I used the same LCD controller, audio amplifier, and buttons and sticks package as is shown in the video. Note also that the amp might not come with a power supply, so you’ll need a 12V 2.5A power supply for that, as well as a 12V 2.5A power supply for the LCD controller (for the LCD controller, I just re-used the power supply that came with the Arcade1Up cabinet.
All I can say if you decide to do this — make sure you follow the instructions in that video to the letter. If you’ve never done an arcade control panel to PC project before, there are a lot of small things that you could miss that could result in much frustration. One, in particular, is that both of the arcade button USB controllers for players 1 and 2 must be wired exactly the same in terms of which buttons are on which inputs (12:45 in the video). I’ve done a few of these before with PCs and Pis, so I knew what to expect, but be mindful if you’re new to this.
One thing I did differently from the ETA Prime video is to source the audio from the 3.5 mm audio jack on the Pi instead of via the LCD controller, which pulls it from HDMI. The reasons for this will be evident later in this article.
Remapping Emulation Station Buttons and Disabling ES Menus
First we’re going to swap the functions of the Start and Select buttons in Emulation Station with the functions of the A and B buttons. As they’re mapped on the arcade machine, using A and B doesn’t make much sense for what is effectively Back and Enter functions. We want Start to be Enter (select a menu or begin a game) and Select to be Back (back out of a specific system menu to the main menu).
- SSH to the Pi
- cd /opt/retropie/configs/all/emulationstation/
- Create a backup of es_input.cfg. I called mine es_input.bak
- sudo nano es_input.cfg
- Swap the numbers in id=”x” between the lines containing input name=”a” and input name=”start”
- Swap the numbers in id=”x” between the lines containing input name=”b” and input name=”select”
Now, what used to be Start is mapped to A (and vice versa), and what used to be Select is mapped to B (and vice versa). This only effects Emulation Station and not any of the games. At this point if you restart Emulation Station for the changes to take effect, you should be able to use the Player 1 Start button to enter a menu / begin a game and our Select/Insert Coin button to exit a menu. The down side is that buttons A and B will still bring up ES menus. We need to disable that so someone doesn’t screw up our settings our delete ROMs accidentally.
- SSH to the Pi
- cd /opt/retropie/configs/all/emulationstation/
- sudo nano es_input.cfg
- Put the characters <!– before and –> after the line that contains <input name=”start” and <input name=”select”
After ES is restarted so that the changes can take effect, you will no longer have to worry about someone messing up your install via the menus.
Creating Mono Sound Output for a Single Speaker
The Street Fighter cab that I have only has a single speaker, but some games output stereo sound. You can’t just only wire up the single speaker to the left or right output on a stereo amp or else you will lose some sounds in stereo games completely, or at the very least they’ll sound weird or incomplete.
The cheap Chinese amp I bought doesn’t support bridging, so I found a solution to down-mix the left and right audio channels in software and output them via the left audio output on the Pi’s stereo headphone jack. It should also be noted that you can’t hook one speaker up to a stereo set of outputs, since the amp will be feeding output voltage back in to itself. This might work temporarily, but it will definitely cause you problems.
You must first use the Audio Options menu in Retropie settings to force output to the 3.5 mm audio jack. Next, create a file called /etc/asound.conf and add the following to it:
pcm.card0 { type hw card 0 } ctl.card0 { type hw card 0 } pcm.monocard { slave.pcm card0 slave.channels 2 # type plug type route ttable { # Copy both input channels to output channel 0 (Left). 0.0 1 1.0 1 # Send nothing to output channel 1 (Right). 0.1 0 1.1 0 } } ctl.monocard { type hw card 0 } pcm.!default monocard
This file gets read by ALSA at boot as a sort of global configuration file. After creating that file, run the following command to restart the driver (or just reboot):
/etc/init.d/alsa-utils restart
At this point you should be able to use a 3.5 mm to RCA stereo audio cable from the Pi to a stereo amp, and then only use the left output on the amp to present a mono down-mix to the single speaker.
Remove Retropie Menu from Systems
By default, there’s a RetroPie option in the choice of available systems. Things within this menu are used to change system settings, enable and connect to Wi-Fi, configure sound options, configure splash screens and RetroArch settings, etc. This is all very useful when configuring RetroPie, but once everything is configured and you start letting other people (or kids) use your system, it’s a good idea to disable this menu so nobody can go in and mess with the settings and potentially break things.
To do this you’ll edit the file /etc/emulationstation/es_systems.cfg. This is a simple XML file that contains configuration information for each system that RetroPie supports. You can remove systems from the visible list of systems in two ways. 1.) Ensure that the roms directory that is associated with a given system is empty. If a system has no games to play, Emulation Station will hide it by default. 2.) Comment out the block of XML pertaining to the system in this configuration file. Since the RetroPie menu has no associated roms, it’s always shown.
You’ll want to find the block of text that begins with
<system> <name>retropie</name>
and ends with
<theme>retropie</theme> </system>
Put a <!– before and a –> after that block of text to comment it out. Example:
... <theme>psx</theme> </system> <!-- <system> <name>retropie</name> <fullname>RetroPie</fullname> <path>/home/pi/RetroPie/retropiemenu</path> <extension>.rp .sh</extension> <command>sudo /home/pi/RetroPie-Setup/retropie_packages.sh retropiemenu lau$ <platform/> <theme>retropie</theme> </system> --> <system> <name>sega32x</name> ...
Now restart Emulation Station (or just reboot) and the RetroPie menu will no longer be visible. Note that as typical when editing configuration files like this, it’s a good idea to make a backup, just in case.
Conclusion
If you enjoyed this tutorial and would like to see more, please feel free to share this article on social media, comment below letting me know what else you’d like to see, and follow me on Twitter @JROlmstead.
hi Jason . im completely new to rasberry pi. I’m modding my street fighter 2 cab this weekend following mainly ETAs YouTube video. I want to keep stock speaker and downmix it as you’ve explained so I get the full audio of the games. do i do this via SSH or on the pi?
kind regards
David
I modded the street fighter 2 cab and the display is off on many of the games. Can you please let me know the correct display and how to make the edits?
Thank you,
Steve