My latest coding project involves Mame, specifically iMame4All. iMame4all is an emulator for iOS devices that lets you run ROMs from old arcade machines. Emulators like this are pretty common place. I’ve been running several on my Mac and iPad for a while including the Commodore 64. What has reinvigorated my interest is my latest geek acquisition, the iCade.
The iCade is a mini arcade cabinet that allows you to slide your iPad in and utilize the built in joystick and buttons like a classic arcade machine. It even includes a nice light up quarter slot! The iCade works by emulating a bluetooth keyboard. Joystick movements and button presses are translated into keyboard commands. Specifically, it sends commands when you start pressing something and another when you stop pressing something.
The iCade already has the support of several apps in the App Store including Atari’s Greatest Hits, Mos Speed Run and Super Mega Worm. This is great, but the fact that iMame support was recently added to iMame4all really opens up the floodgates. iMame4all supports thousands of ROMS including Pac-Man, Donkey Kong, Mario Bros, Metal Slug, etc…
The “catch” is that iMame4all requires a jailbroken iPad to run. I do keep my iPhone jailbroken but prefer to keep my iPad clean, so this was a bother especially since I was running iOS 5 BETA to test some of my app store apps.
The reason why the app was never put in the app store is that it violates a few policies. It allows execution of remote code, and more specifically it uses external libraries. The app store sandbox requires static linking. In addition, the external library referenced (btstack) uses some undocumented API’s which is a big no-no for app store apps. The good news is that I think btstack is really only necessary for those who want to use a Wiimote with it, which I do not care about in my case.
My goal has been to get the source code into an actual Xcode project and functioning in a way that would allow it to be executed and installed by anyone with an Apple developer account. While we could never get it into the app store, we would have some other possible distribution methods for people who want to use the app without jail breaking.
iMame4all is an open-source project started by Seluco based on an existing MAME project. I had just started to get things wrapped up when I noticed that another developer contributing to the project (sandro z) had already gotten an initial version working. It allows loading the ROMs through iTunes like any other document. There isn’t a branch yet for this, so here is a link on my dropbox to the latest version. As long as you have a Mac, Xcode and a developer account you should be able to build the project. Enjoy!
I highly recommend you check out Les Bird’s code at
His xcode iMame4all project incorporates all the changes from the latest version (1.8.1) whereas the one in my dropbox is an older one. Great job Les!