Play classic games on a Raspberry Pi in a Game Boy case

Lead Image © vectorshots, 123RF.com

Pi Boy

,

Nintendo's Game Boy was all the rage in the 1990s. Now you can use your Raspberry Pi to breathe life into those classic games.

The Raspberry Pi is too light on resources for the role of a modern-day game console, but it works well as a tool for discovering classic games of the past. The RetroPie Project [1] is a Debian-based Linux distribution focused on retro gaming for the Raspberry Pi. RetroPie consolidates a variety of emulators, including Amiga, NES, and others, into a unified graphical user interface.

We saw a blog post [2] that describes how to transform a Raspberry Pi into a Game Boy-like retro-gaming device and decided to try it. A Rasp Pi with a generous 3.5-inch display is encased in a housing for a classic Game Boy look; then, RetroPie for the operating system turns a great tiny computer into the Super Pi Boy. In this article we describe how to put this plan into action.

Preparatory Work

Many of the components required for this project can be had for nominal amounts of money on eBay or Amazon (Table 1). All together, the costs for the project, including the purchase of a new Raspberry Pi, ran less than EUR 100 (US$  125/UK£  80). It is perfectly okay to use a Game Boy that is defective or has been cannibalized as the underlying structure for the project. All you need for the Super Pi Boy is the Game Boy housing.

Table 1

Required Components and Tools

Parts

Commentary

Supply Source

Game Boy Classic DMG-01

Visible defects are okay

Raspberry Pi

Model B or B+

SD memory card

16GB or more

3.5-inch monitor

Mini-LCD TaoTronics TT-CM01

Amazon [3]

Common ground DMG printed circuit board

Kitsch Bent [4]

Mini-amplifier

PAM840

eBay [5]

AC/DC converter

LM2596

Amazon [6]

Loudspeaker

Nintendo DS Lite NDSL 2X

Alibaba [7]

40 jumper cables

Each 20cm, male/female

Amazon [8]

Push button

SCI R13 502A 05BK

Conrad [9]

USB 2.0 extension cable (Micro-B)

Connector on socket

Amazon [10]

12V DC power supply

From something like an external 3.5-inch hard drive

Cinch cable (composite)

Audio cable

3.5-mm audio jack

Various cables

For cutting into smaller pieces

Tools

Tri-wing screwdriver

For Nintendo Wii or DS Lite

Amazon [11]

Electrical tape, double-faced adhesive tape

Pliers, wire-cutting pliers

Dremel rotary tool, hot glue gun

Optional Components

Wireless keyboard and mouse

WiFi USB adapter

Edimax EW-7811UN

Amazon [12]

Experimental board

830 Tie Point

Amazon [13]

Soldering station

Basetech ZD-99

Conrad [14]

Solder for electronic work, desoldering braid

We decided to optimize and improve on the original Game Boy design. We would include four, instead of only two, buttons on the back side to provide additional options for controlling the Rasp Pi. An additional button placed on the side of the unit would serve to end the emulation and return the user to the main menu. Screws would fasten the housing together securely. (The Super Pi Boy should be able to get along without any adhesive tape.) Additionally, a transparent cover would protect the display from dirt and scratches.

Experimental Setup

The first big hurdle is implementing the controller for the Super Pi Boy. You can operate RetroPie with a conventional keyboard, but we ultimately want to use the Pi Boy with an original D-pad and its buttons. Therefore, we have to teach the Rasp Pi how to process signals from the buttons.

The GPIO interface is ideally suited for this task. You will find a good introductory guide on integrating Arcade controls on a website like Adafruit [15]. Adafruit Retrogame [16] is a piece of software written in the C programming language. It takes information from GPIO pin prompts created by pressing a control element on the Game Boy and turns it into the corresponding configured keyboard commands. You should wait until later to configure the keyboard commands in the front end of RetroPie.

To acquire some experience in controlling the RetroPie via the arcade buttons, we exposed an old USB gamepad to some abuse. For this project, we took a worn out Logitech WingMan. To carry out the test, we only needed to use the PCB, or printed circuit board, and the housing with its keys. The integrated circuit (IC) that was soldered onto the board has become superfluous because that is where we want our cables to go. As a result, the IC is the first part to fall victim to our soldering iron (Figure 1).

Figure 1: The IC that processes signals on the Logitech WingMan gamepad is no longer needed.

To connect the wires properly later (Figure 2), you should label them before assembly. Next, you should put the gamepad back together and connect the individual wires with the experimental board so that the function of each key and each connection on the PCB can be tested. One approach is to measure resistance using a multimeter (Figure 3).

Figure 2: The cables soldered onto the PCB of the gamepad connect to the experimental board.
Figure 3: Connections between button and pin can be tested using a multimeter.

The pressure-sensitive areas on the board correspond to switches that close when the button is operated. Each switch has its own connecting wire (positive pole); however, all of the switches share a single grounding wire, or common ground (negative pole). At first, the multimeter will measure the resistance between the common ground and any switch, such as switch A, as infinitely large. Operating the A button decreases the measurement value. This means switch A has closed.

You should make the connection from the experimental board to the GPIO pins on the Raspberry Pi with male and female jumper cables that are easy to attach and don't need soldering. When allocating the individual GPIO pins, it is best to use the pin map for the Rasp Pi Model B as a template. (Figure  4).

Figure 4: Pin allocation for the GPIO of the Raspberry Pi Model B.

Next, connect the GPIO pins to the individual switches. You might first want to sketch on paper how you are going to do this and then complete the wiring by means of the jumper cables. In our case, we quickly realized there were not enough buttons on the gamepad. We therefore supplemented the control mechanism with two additional push buttons for the Select and Start functions. We also took two more buttons from an experimental set for the left and right shoulder buttons.

At this point, you can prepare RetroPie and adapt and configure the software according to the existing conditions. You also should prepare for the incorporation of the Kitsch Bent PCB, the setup of the push buttons, and the creation of a final allocation matrix (Figure 5). Additionally, you'll need to consider the wiring diagrams for the connection of the old control element of the Game Boy (Figure  6) and the additional buttons (Figure  7). We will come back to this later.

Figure 5: The allocation matrix.
Figure 6: The wiring diagram for the D-pad.
Figure 7: The wiring diagram for the shoulder buttons.

Buy this article as PDF

Express-Checkout as PDF

Pages: 6

Price $2.95
(incl. VAT)

Buy Raspberry Pi Geek

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content