Uncategorized

Turn a Raspberry Pi into an Arcade PCB

ive been building my own arcade machine from scratch and thought it would be interesting to experiment a bit. The goal is to use a spare Raspberry Pi I have lying around, to boot up and literally play only one game. You power on the Pi, a single game loads automatically. When you’re done you power it off – just like an arcade PCB.

Everyone loves to smash a million games on their arcade setup but I tend to think, the more games you have, the more it devalues your arcade. When I was younger, we obviously didn’t have the sort of access to games that we do now mainly due to money and the Internet in its infancy. The result was squeezing every amount of game you could from what you had, which in turn I think made you appreciate your library even more.

I essentially want to recreate the, I paid $500 AUD for an arcade PCB and that’s all I can afford right now, experience.

Why would you want to do something impractical like this? No idea, but you’re here so lets dig into it.

Software

There are 2 different methods that I tried to achieve this instant on single game idea. The first was to use RetroPie and tweak it around to just load a single game. This proved to be a tad more complicated than envisioned as there were tons of changes that needed to happen. RetroPie has a lot of startup procedures that needed to be turned off to give that “instant-on experience”. I managed to get it to work but the start-up time was way longer than I would have liked.

I ended up settling with Lakka, a small Linux distro based on OpenELEC. OpenELEC is based on JeOS, which means Just Enough Operating System. This is designed to be as lightweight as possible, which for our end goal is perfect. Documentation for Lakka is no where near as common as RetroPie, but Lakka is pretty much just OpenELEC + RetroArch, so any documentation on either will work fine for us. I found everything I needed from online resources without an issue.

When you boot up Lakka, you are only presented with a single splash image. When compared to RetroPie there are about 3 or 4 different console screens full of text and images that you would need to disable to achieve the same goal. In addition, boot up time is a lot faster compared to RetroPie. This made it an easy choice for our fake arcade PCB.

Hardware

Which Raspberry Pi?

I initially started this experiment with a Raspberry Pi 2 B+ as it’s what I had already. Later on, I eventually got the 4 as I wanted to see if the extra CPU and RAM would improve load times. The short version is no, it does not improve boot speed so I would say its not a requirement. Also make sure you’re using a sufficient power supply for your Pi. Using something lazy like a USB cable to your PC will just get degraded performance.

Using a quality SD card

Next was the SD card. Yes, SD card speed actually matters. I ended up going out and buying a Samsung Evo Plus to shorten the boot time to little as possible. The great thing about Lakka is that it runs on way more platforms than RetroPie does so If you use a normal PC with a SSD or even better a M2 NVME, I would the imagine start-up times to be lighting fast. Remember, start-up time is important for this as we want to be gaming in the smallest amount of time possible.

Lakka Configuration

Before we start make sure you have a FTP / SFTP program and a SSH client. I am using WinSCP to transfer files and Putty for command line access to the Pi. Both are free and well documented.

For the sake of this guide I’m going to be using the Final Burn Neo core along with Super Street Fighter II Turbo (ssf2t.zip). What you use is up to you, same method will apply. You’ll need to adjust a few parameters later on but this will universally work with anything via RetroArch.

Install Lakka

I’m not going to go through how to do this as their website has a guide that covers all the basics. But once its installed, you’ll want to ensure that you can connect to it with your FTP client and also Putty for terminal access.

Test your ROM

Unlike RetroPie, Lakka won’t automatically know which ROM is for which system – its just RetroArch. Once your ROMs are transferred over (most likely /storage/roms), load your core then the ROM, and confirm that it works no problems. This is also the best time to go ahead and setup all your controllers and anything else like hotkeys, shaders and all that sort of jazz.

  • Within RetroArch go to Load Core
  • Select Arcade (Final Burn Neo)
  • Then select Load Content
  • Browse to /storage/roms
  • Select your ROM

Making it seamless

Display the splash image

When Lakka starts up, a flower logo appears for a few minutes as it boots. We want to get rid of this image so its black. This will give the impression that its more like an arcade PCB, and not a piece of software or OS.

You’ll need to use Putty to connect to your Pi. The below are the defaults on a normal installation of Lakka.

  • Hostname: LAKKA
  • Username and PW: root / root
  • Type and Port: SSH / 22

Once connected, run the following command

mount -o remount,rw /flash

This will mount the system partition as read / write (it’s usually locked)

Next we need to edit the file, type:

nano /flash/cmdline.txt

At the end of the single line that has all the text, add

nosplash

Now we need to save the file

Press CTRL + X
then Y
then Enter

Reboot the system to see the change

reboot now

Now instead of the flower image on startup of the Pi, it should be black. Time to move onto the instant gaming part.

Auto starting the game

By default RetroArch loads once Lakka is all booted up. We want to change this to immediately load our ROM. The below command launches the Final Burn Neo core, along with the full path to my ROM. You will need to adjust this to suit your setup. The default location of the RetroArch cores is /usr/lib/libretro/

My command:

retroarch -L /usr/lib/libretro/fbneo_libretro.so /storage/roms/fba/ssf2t.zip

Example command:

retroarch -L /usr/lib/libretro/CORE_NAME_GOES_HERE /storage/roms/ROM_FILENAME_GOES_HERE

You can test this out by using Putty once again to log into the Pi, and simply typing the command. If the game loads with no issues then you’re in business.

  • Create a new text file on your computer (using Notepad or something similar)
  • Copy and paste your RetroArch command. Ensure its all on a single line.
  • Save the file down as “autostart.sh”

Now we’re going to connect to our Pi via FTP and upload the autostart.sh script. Basically this file will launch first instead of the default RetroArch. In case you missed it, Lakka have a link on how to connect to it via FTP. I am using WinSCP.

  • Once connected to your Pi, change the directory to /storage/.config/
  • Upload your autostart.sh file

Issue another reboot now command, and if you’ve followed along correctly your Pi should start, no splash image straight into your game – just like an arcade PCB. Congrats you’ve made a Raspberry Pi slightly less useless.

Power Button

The final step in completing the package is to add a power button to our fake arcade PCB. This isn’t really necessary – if you’re happy with the Pi turning on as soon as power kicks in, then this you can skip this step.

Now there’s a few ways to do this, but the easiest was to use the GPIO pins on the Pi, wire them to a standard momentary button, then use a script to kick off start up and shutdown.

8BitJunkie has a great guide that covers it all, so I’m not going to repeat it here.

Taking it further

Once I got the Pi working as intended, there were a few other things that I tried to improve the boot performance. These will probably improve overall emulation but I am more concerned about boot up time, which all of these, did nothing.

Totally impractical

As I mentioned before, this guide is completely useless and impractical if you’re looking at it logically, especially in a world where emulation and ROMs are so common around the Internet. But give this a shot if you got a spare Pi lying around or maybe just play a single game arcade title for a month. You’ll be surprised how much you can learn about your favourite games when you’re not only playing two minutes at a time.

C D C R U Z E

C D C R U Z E

Chad is someone who wishes arcades were still around. This also happens to be his site where he rambles on and on about games and emulation. He can also cook a mean cheese toastie.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

C D C R U Z E is ..

Someone who wants to ramble on about games, arcade, emulation and design. Maybe a few other things too.

Where can you reach me?

I’m available on a few other social media platforms! Have a gander at the below.