Introduction

BeagleSNES is an embedded Linux appliance that turns your BeagleBoard-xM or BeagleBone Black hardware into a Super Nintendo Entertainment System. It combines the SNES9X emulator, a custom GUI front-end for selecting games, and patched bootloader with Linux kernel to create a stand-alone console capable of playing SNES software. BeagleSNES boots a Linux kernel and OS from the BeagleBoard's microSD card, allowing you to update your BeagleSNES system by mounting the microSD card under Linux and then directly modifying its contents. SNES ROM images, as well as saved games (for the SNES titles that originally saved games to their internal SRAM), are also stored onto the microSD card.

BeagleSNES uses the HDMI output of the BeagleBoard-xM board to output a DVI signal that can be displayed directly on your HDMI television or DVI computer monitor. The BeagleBone Black version uses the HDMI output to send both audio and video to your HDMI television, or the Circuitco LCD3 cape for video with USB audio. While BeagleSNES is capable of playing most SNES titles without any issue, some performance-intensive titles (such as titles using Super FX technology) will not run at an adequate framerate. Titles using Mode 7 graphics and/or multiple layers of transparent tiles, however, will run just fine.

BeagleSNES Hardware

BeagleSNES was originally developed for the BeagleBoard-xM embedded platform, but support for the BeagleBone Black was added in v0.3. Both boards will require being fully powered, so you'll need to use an external power supply to power your hardware. Powering the BeagleBoard/Bone via USB will not work because it does not provide enough power to the system. For the BeagleBoard-xM, you'll need an HDMI-to-HDMI cable to hook BeagleSNES up to your television (or HDMI-to-DVI cable to use your computer monitor), and a pair of external speakers to hear the audio from the BeagleBoard-xM's audio output jack. For the BeagleBone Black, you'll need a microHDMI-to-HDMI cable to hook BeagleSNES up to your television. The only supported game controller is the Tomee USB SNES gamepad, though most USB gamepads with enough buttons will work if you change the gamepad button mappings in the configuration file to support their particular button mapping scheme. One or two gamepads are supported for both platforms. To use two gamepads on the BeagleBone Black, you must use an external USB hub to provide the additional USB host ports for the gamepads to plug into.

BeagleSNES Software

The latest version of BeagleSNES is version 0.5.

The easiest way to get BeagleSNES up and working quickly is to download a complete microSD card image and then dd it into a fresh SD card. Read the documentation page for full details.

NOTE: The username for this system is "ubuntu", and the password is "temppwd".

If you are more interested in the individual pieces of BeagleSNES (i.e. you have your own Linux system installed on an microSD card and you want to add BeagleSNES to it), then you'll need the source for the emulator and GUI (and maybe the kernel and bootloader, as well). Download these if you want to take a look at the code without having to go through the hassle of downloading and mounting the SD image to get to everything.

The pre-made BeagleSNES uses an Ubuntu Linux for ARM distribution, though other ARM Linux distros, such as Angstrom, will work just as well.

Future Work

BeagleSNES works and is stable, but it is far from being complete. Much work still needs to be done to move the project from its current prototype state to a finished, solid system. The kernel of the BeagleBone Black is still a bit quirky and is constantly improving as patches roll in from the community. Some of the issues that are currently in the pipeline are discussed in the documentation available for download on the documentation page.


(I'm a PhD student, doing research on virtual machines, embedded systems, and security. Donate to help me purchase more hardware and software tools to develop other awesome open source embedded stuff!)