"A guy named Andrew Henderson thought it would be a good idea to turn his BeagleBone into a Super Nintendo - and we couldn't agree more. With the BeagleBone Black, you have a chance to take a trip down Memory Lane by creating your own game system." - BeagleBone For Dummies
BeagleSNES is an embedded Linux appliance that turns your BeagleBoard-xM or BeagleBone Black hardware into a Super Nintendo Entertainment System. It combines several emulators, a custom GUI front-end for selecting games, and patched bootloader with Linux kernel to create a stand-alone console capable of playing Gameboy Color, Gameboy Advance, Nintendo Entertainment System, and Super Nintendo Entertainment System software. BeagleSNES boots a Linux kernel and OS from the BeagleBoard/Bone's microSD card, allowing you to update your BeagleSNES system by mounting the microSD card under Linux and then directly modifying its contents. ROM images, instant save state snapshots, and saved games (for the titles that originally saved games to an internal cartridge SRAM), are also stored onto the microSD card.
The v0.7 release of BeagleSNES is for BeagleBone Black only. If you have a BeagleBoard-xM, use version v0.6.
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 SNES titles using Super FX technology) will run at an adequate framerate for the BeagleBone Black, but not for the BeagleBoard-xM. 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 change the gamepad button mappings in the XML 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. The BeagleBone Black also supports using GPIO for input (though this feature was not regression tested in the v0.7 release).
The latest version of BeagleSNES is version 0.7. This release is a snapshot of the current BeagleSNES development system for the BeagleBone Black. Because this is the first version to use OpenGL ES and a post-3.8 Linux kernel, as well as a new filesystem, so it hasn't yet been optimized for a reduced boot time. But, it gives you a wide variety of new features (such as the new emulators), so it is worth giving it a try.
- BeagleSNES microSD card image (uncompressed image will fit on an 8 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. 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 uses the Texas Instruments 3.14 Linux kernel with the SGX OpenGL ES 1.1 support and libraries.
- BeagleSNES GUI/Emulator Source (custom GUI code and modified/integrated/tuned ports of SNES9X-SDL, VBA-M, and Nestopia)
- 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.
Eventually, BeagleSNES will become a full-fledged retrogaming console/appliance. This is a pretty big job, but it is slowly and surely moving in that direction. Your bug reports and feature requests all go into the development queue, so please let us know if you run into any trouble.
(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!)