Piulator Portable Game System via Raspberry Pi

This project was a lot of fun to put together. I was looking for a good Christmas present for my nephew, and decided that a Raspberry Pi influenced project would be cool. He likes gaming and computers, so this made sense. I made an identical version for my other nephews that is stuck in a Raspberry Pi case. Why not make it portable? There are a lot of projects out there with people making portable game systems, so this isn't original in any capacity, but I am happy with how this came together and thought I would share the project! This project took me one month from conception to delivery.

Step 1: Materials

  • Raspberry Pi B+
  • Heat sinks for the Pi
  • Anker Astro E7 Ultra-High Capacity 25600mAh 3-Port 4A Portable Charger
  • HDMI 4 Pi 5″ Display
  • USB SNES Controllers (can use any USB controller)
  • oak planks
  • oak floor trim
  • box hinges
  • l-brackets
  • small wood screws
  • finishing nails
  • stain
  • paper towels
  • circular saw
  • jigsaw
  • drill
  • hammer
  • screwdriver
  • dremmel
  • patiencePiulator Portable Game System via Raspberry Pi

Step 2: The Backend

First things first – get the backend working. This has to function properly before putting everything together, yes?

There are 2 great projects out there that are focused around bringing game emulation to the Raspberry Pi platform. RetroPie and EmulationStation.

RetroPie is a precompiled SD card Pi image that has all of the emulators installed already, as well as the EmulationStation frontend installed with autobooting configuration setup. You can do this by yourself, installing the emulators one at a time and manually installing EmulationStation, but that takes forever. Work smarter, not harder!

EmulationStation is a GUI frontend to navigate your game lists. It's pretty basic by itself, but you can skin the frontend relatively easily with a bit of graphic design and some light XML editing.

This could get lengthy, so I will try and keep this concise and provide basic instructions with links. Additionally, my knowledge came from a culmination of several online resources Check these all out for more information, extra details, forums with people asking every question that you think hasn't been asked yet, etc.

RetroPie Wiki
RetroPie Forum
EmulationStation GitHub Page

  1. Create your SD Card image
    • The pre-compiled SD image can be located here. Write the image to the SD card with something like Win32 Disk Imager.
  2. Update and configure your Pi
    • Expand your SD card disk size with
      1. sudo raspi-config
      2. Select expand disk option
    • Update and upgrade your packages with
      1. sudo apt-get update; sudo apt-get upgrade;
    • Set a new system password with
      1. sudo passwd
      2. Input your new password(don't lose this)
    • Install heat sinks and overclock that badboy
      1. Install heatsinks on the GPU and CPU of the Pi
      2. Overclock your Pi
        1. You can do this without voiding your warranty through raspi-config, but if you want to push it a bit…and you will for decent sound/performance on SNES and higher games…check out this thread on the PetRockBlog forums. I ran the settings from the first poster and my temp never went above 51°C during SNES gameplay.
  3. Configure controllers
    • Change directory to where the configuration program lives
      1. cd /opt/retropie/emulators/RetroArch/installdir/bin
    • Run the configuration program
      1. ./retroarch-joyconfig -o /opt/retropie/configs/all/retroarch.cfg
      2. Hit the appropriate buttons when prompted. When you get to buttons that don't exist on your controller, just keep hitting any button, but make sure it's the same button for ease of finding later. You will remove them next.
    • Alter the CFG file to include player 2 controller, tidy up player 1 and put in a “quit emulator” button configuration
      1. sudo nano /opt/retropie/configs/all/retroarch.cfg
      2. Remove the values for all the buttons that don't exist on your controller. You should be able to decipher the erroneous buttons relatively easy.
      3. Copy and paste the Player 1 configuration under the Player 1 config
      4. Change the new set to say Player 2 in all instances
      5. Change the index from 0 to 1 in the new set
      6. Add in the exit emulator config by adding the following 2 lines under everything
        1. input_enable_hotkey_btn = “1”
        2. input_exit_emulator_btn = “2”
        3. Change the values of “1” and “2” to match the buttons you want to use. I use Select as the hotkey and Start as the exit. That way you have to hold Select and hit Start to exit a game. Sweeeeeet.
      7. It's important to note that this CFG file affects the system on a Global level. If you want different button configurations in specific emulators, you will need to alter the retroarch.cfg file in the individual emulator's configs directory (i.e. /opt/retropie/configs/snes/retroarch.cfg for SNES configurations). Individual CFG files will override the Global config.
  4. Copy over your legally owned ROM files
    • There are a few ways to do this. SSH is the way to go, IMO, because you will want to get familiar with SSH'ing into your Pi. You can auto-copy ROMs over with a USB stick as well. Both processes are documented here.
  5. Make sure it all works before moving forward
    • From your home directory, type
      1. emuationstation
    • You must have at least one ROM copied over to your directory for this to work.
    • Check it out! Are you able to navigate the frontend? Sweet! Can you open a game and properly control said game? Allllright. Wait, it doesn't work right? Look back through the steps, scope the forums, ask a question or two, but get it right before moving forward!
  6. Customize
    • So EmulationStation is pretty bland. Aloshi admits that it is pretty basic and encourages people to create their own skins. I went ahead and did that.
    • EmulationStation is comprised of a chunk of elements used for navigation in a few different screens. It looks at XML files to know what to do with these elements. So basically, you can either alter pre-existing XML theme files or write your own. Aloshi has documentation on a GitHub page here. I went full bore into learn-mode when doing all this and felt the need to document everything I was putting together. I wrote the attached guide on creating themes for Emulation Station 2.x.Piulator Portable Game System via Raspberry Pi schematic

Step 3: The Build

The Pi requires a 5v power supply and the monitor I chose needs anywhere from 5-12v. My friend recommended the Anker Astro E7 battery pack. It claims to adjust it's voltage off of the device attached to it, so that sounded promising. I had zero issues with power, and I let it run the Final Fantasy III intro movie for 19 hours before I had to package the final gift up. There was still 1 bar left on the battery, so it probably could have went a while longer! I would have settled for 5-8 hours, so that made me really happy.

The box was built around the power supply dimensions, but deep enough to accommodate the Pi's length. I knew that I wanted the supply accessible from the outside, as well as the Pi and monitor control board. I also knew I wanted the screen incorporated into the lid.

So first we built the walls and base for the box. The corner was removed from one side and one wall to provide access to the battery pack. I secured the pack in position with L-brackets screwed into the base. With wanting to keep this as small as possible, I put rails on the side walls that could hold tracks to mount the boards to. The walls were wood-glued together and clamped until dry. Then finishing nails were added to secure the walls a little more.

After this, the tracks were installed for the boards. First the Pi was positioned in and holes were marked for access to the power, HDMI, composite, USB and Ethernet areas. It made sense to just cut a large hole in the front of the box for the USB and Ethernet, but make individual holes for the power, HDMI and composite. I think the side access could have been a single hole at this point, but it is what it is. These holes were made with a combination of a drill, a jigsaw and a dremmel. After the Pi fit nicely into it's space, the monitor control board was positioned next to it and an access hole was cut into the front.

Side note: I think that the routing of the video signal from the Pi to the monitor control board could have been done internally, but I didn't look into that close enough. Remember, this was a one-month project, start to finish.

The lid to the box was to hold the monitor as well as enclose the internals, but I wanted it to flip up during use so the screen could be viewed at an angle. A small slit was cut in the lid to provide a channel for the monitor cabling.

At this point, the tracks were removed and everything was sanded and stained. I wanted a little flair on the box, so we made trim for the base, as well as trim for a frame of the monitor. This was achieved with oak trim for the base and cutting a groove in small strips of wood with the circular saw for the monitor trim. These were all sanded and stained a lighter color for aesthetic accent.

After everything was dry, the trim was attached to the base with wood glue and clamped until dry. While that was drying, I attached the monitor trim to the lid. Not only did it make it look framed, but it also provided a way to secure the monitor to the lid. It helped to set the bottom trim piece first and then clamp the rest of the trim after that piece was dry. It made it easier to judge how straight everything was.

 

For more detail: Piulator Portable Game System via Raspberry Pi


About The Author

Ibrar Ayyub

I am an experienced technical writer with a Master's degree in computer science from BZU Multan University. I have written for various industries, mainly home automation and engineering. My writing style is clear and simple, and I am skilled in using infographics and diagrams. I am a great researcher and am able to present information in a well-organized and logical manner.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top