I bought my OUYA android gaming console mainly as to be able to play old games via emulators, for example Super Nintendo classics like Super Mario World or Aladdin.
For SNES emulation I use Snes9x EX+ which works fine - but to start a game, you have to start the emulator, use the "Open ROM" menu, navigate to the .smc file to finally run it. That's definitely not easy-to-use.
There are tools like Nostalgia that provide a graphical interface to start ROMs with a single click (once you started the interface of course) and automatically download covers. But that was still a click too much for my taste; I wanted to have the SNES games directly available in the OUYA launcher like all the native games.
I did try this already a year ago but failed to start the emulator with the game; this time - after trying to get Tomb Raider to run I had some experience with decompiling Android applications and could look under the hood of Nostalgia. Starting Snes9x EX+ with the game file path was easy:
Intent intent = new Intent(); intent.setComponent( new ComponentName("com.explusalpha.Snes9xPlus", "com.imagine.BaseActivity") ); intent.setAction("android.intent.action.VIEW"); intent.setData(Uri.fromFile(new File(fileName)));
Now all left to do was extracting the .smc file shipped inside the package file, for which there were enough examples on the internet.
The result is a tool to generate OUYA SNES rom launchers with minimal effort: Provide a title, a ROM file and a image, and the script does the rest. Install the .apk on your OUYA, and enjoy the game.
The source code and build instructions for ouya-romlauncher are available on my own git server as well as GitHub.
Screenshots
My OUYA's PLAY menu now looks like this:
Game details are missing, but that has to wait until I build my own OUYA ROM store :)