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
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.
- Lakka installation guide
- Accessing Lakka file system – see File Transfer via SCP
- Access Lakka command line interface – see On Windows
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.
- Overlocked the SD card reader to operate at 100mhz (reference link)
- Overlocked the CPU and GPU of the Pi (reference link)
- Disabled Bluetooth and Wifi (reference link)
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.