BeagleSNES

BeagleSNES is an embedded Linux appliance that turns your ARM-based BeagleBoard-xM or BeagleBone Black hardware into a Super Nintendo Entertainment System. It combines a customized SNES9X emulator, a specialized GUI front-end for selecting games, and a patched bootloader and Linux kernel to create a stand-alone console capable of playing SNES software. BeagleSNES boots a Linux kernel and OS from a 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 outputs a full HDMI audio and video stream for use with your HDMI television, and the 0.5 release adds support for the CircuitCo LCD3 cape. 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 frame rate. Titles using Mode 7 graphics and/or multiple layers of transparent tiles, however, will run just fine.

Individual BeagleSNES components (bootloader, kernel, GUI/emulator) have been broken out of the file system image in order to allow interested developers to examine them without having to examine the full file system image. Full file system images, as well as images containing only the BeagleSNES binary and data files, are available.

Comments

BeagleSNES is far more than a Linux distribution that boots into an emulator. The emulator has been profiled for these ARM platforms and modified for performance. The GUI front-end is integrated into the emulator itself. The kernel has been patched to make the system run specifically for this purpose (i.e. if performance was too slow in user space, it was pushed out to kernel space). The SNES9X emulator that BeagleSNES used as a base runs quite slowly on these boards without the modifications that were made to BeagleSNES. The reason that BeagleSNES runs as fast as it does is because the kernel, bootloader, and emulator are all modified to serve a single purpose. The underlying distro, libraries, file system, etc. does not have much impact on this. This is why the source released for this project includes kernel, bootloader, and application code. The full system image is provided for the convenience of the end users to assist them in getting the system up and running quickly. I'm disappointed that this project would be viewed as only a distro that boots into an already existing emulator, since far more engineering and research work has gone into this project. Solutions for existing issues on these platforms, like adding USB hotplugging support in user space to work around kernel bugs, have been discovered during BeagleSNES's development and provided back to the BeagleBoard and TI communities. The documentation for the project is well-organized and was prepared with the intention that it will (hopefully) serve as a useful resource for other developers that wish to develop Linux multimedia software for the BeagleBoard-xM and BeagleBone Black hardware platforms.