Emulating game console classics on the Raspberry Pi

Lead Image © Maxim Maksutov , 123RF.com

Old Heroes

The Raspberry Pi is particularly well suited for playing classic games, and a pair of promising Rasp Pi distros come preconfigured with several built-in game emulators.

Twenty-five years ago, playing a video game meant attaching a small box to the family television in the living room. This box was either a game console or a small home computer. For control, you used a joystick or a gamepad. Now you can do all of these things using the corresponding SD card images on the Raspberry Pi.


A favorite image for Raspberry Pi retro gamers is PiMAME [1]. PiMAME is a Raspbian-based Raspberry Pi distro preconfigured with emulators for a number of the most popular retro gaming platforms. (See the box titled "PiMAME Emulators" for a list of the emulators supported by PiMAME.) Although you could theoretically set these emulators up on Raspbian – or almost any other Linux distribution – PiMAME saves you several configuration steps and even displays the emulators in a menu for easy access.

PiMAME Emulators

According to the project website, PiMAME emulates the following legacy platforms.

  • MAME – AdvanceMAME and MAME4ALL
  • CPS I/CPS II – FinalBurn Alpha
  • Neo Geo – GNGeo
  • Playstation – PCSX-ReARMed
  • Genesis – DGen
  • SNES – SNES9x
  • NES – AdvMESS
  • Game Boy – Gearboy
  • Game Boy Advance – GPSP
  • ScummVM
  • Atari 2600 – Stella
  • Cave Story – NXEngine
  • Commodore 64 – VICE

After bootup, the emulators appear in a small text menu, which you can navigate using the cursor keys (Figure 1). If you are playing on a TV with an HDMI connection, you should have no problems with the display of the text menu. However, many retro fans prefer to play '80s and '90s era console games on old CRT televisions. Thanks to the RCA video and audio analog outputs present on the Pi, it is possible to connect to an old system [2].

Figure 1: PiMAME is limited to a simple, but nonetheless well-structured, text menu.

On old TVs, because of interlacing and softer transitions, the picture appears more true to the original than the needle-sharp, digital representation. On digital TVs, the picture might look unappealing when you display pixelated graphics. If you have decided to use an old CRT television for display, you will need to use a set that's not too small. Otherwise, the text menu of PiMAME might be too difficult to read.

PiMAME's emulator menu includes PlayStation 1, SNES, Game Boy, Game Boy Advance, Atari 2600, and Neo Geo. Additionally, the ScummVM emulator is part of the set (see the box titled "ScummVM Is In"). By using MAME4All and AdvanceMAME on the Pi, you can bring many video games from 1980s arcades back to life.

Most of the emulators are for game console systems. The only emulator from the home PC era is the C64. (PC games were recent enough, and hardware-intensive enough, that you might not achieve optimum performance emulating a PC on the Raspberry Pi.) By contrast, the console emulators supported by PiMAME showed no speed problems of any kind. The classics I tested all ran fluidly and without time lags.

ScummVM Is In

Fans of graphical adventure games will be pleased to know that ScummVM is part of the PiMAME package (Figure 2). ScummVM exploits the fact that, back then, game developers like LucasArts or Sierra did not program their games in a machine-oriented language, but instead used internally developed interpreted languages.

Open source programmers have used reverse engineering to uncover the structure of the coded interpreter files and developed ScummVM as their own interpreter for executing the files. For example, if you want to use an MS-DOS graphical adventure from the olden days, you will not need to emulate the complete DOS-PC, which would be too slow for complex games. Instead, you can simply copy the game files to the ScummVM subdirectory, and ScummVM will provide you with native and therefore pleasantly smooth playback.

Figure 2: Experience the everyday life of the police with ScummVM and the adventure game Police Quest.

Where Are the Games?

PiMAME specializes in emulators – not in games. Many of the games played on these legacy systems are closed source, and the vendors still maintain control of the licensing. With ScummVM, you will only need the files that were on the game media.

With the C64 and the emulator consoles, you will need to have the image files of the game media. These image files are often simply referred to as ROM files, even though, technically, this term only applies to consoles with cartridges. You should not use the ROM files available over the Internet when you don't own the original cartridge. Strictly speaking, even if you own the cartridge, you will be operating in a legal gray area. However, you will probably not need to worry about any problems in practice, because you have legally acquired the user rights for the game.

You have several options for copying game files onto the Pi. For example, because PiMAME is based on a modified Raspbian image, you can start raspi-config, activate the SSH server, and use sftp to upload the files over your home LAN to the mini computer. Another method is to use startx to call up the desktop inside the PiMAME console, then start a browser so that you can download the games from a cloud server, where you might have deposited them earlier.

The games for some of the older consoles are often only a few kilobytes in size. Therefore, even with a slow Internet connection, you can transfer many of them onto the Pi very quickly. However, for the PlayStation and graphical adventure games for ScummVM, the situation might be different. A single title can easily take up 500MB of space, and even more when continuous voice output is involved. When copying such large amounts of data to the Raspberry Pi, it is a good idea to use an external hard drive or a USB stick.

You only need to copy the ROM files once onto the Pi. Thereafter, the process is uncomplicated and quite smooth. Simply boot the SD card, select the desired console (or C64 or ScummVM) in the menu, and start play. Inside the individual emulators, you can normally access the internal menu with one of the F keys. Via the internal menu, you can end the program and return to the game console selection menu.

Buy this article as PDF

Express-Checkout as PDF

Pages: 4

Price $2.95
(incl. VAT)

Buy Raspberry Pi Geek

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content