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. 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 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 tweak the BeagleSNES code to support their button mapping. 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.
The latest version of BeagleSNES is version 0.4.
- BeagleSNES microSD card image (uncompressed image will fit on a 4 GB SD card)
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.
- BeagleSNES kernel source for BeagleBoard-xM (a patched Linux kernel, v3.7.10)
- BeagleSNES kernel source for BeagleBone Black (a patched Linux kernel, v3.8.13)
- BeagleSNES bootloader source (a patched U-Boot, v2013.01.04)
- BeagleSNES GUI/Emulator Source (custom GUI code and SNES9X-SDL, v1.53)
- BeagleSNES GUI/Emulator file system image (the resources, configuration files, and launch script for BeagleSNES that live within the main filesystem image)
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!)