Play MAME On Your iPad/iPhone Without Jailbreaking

July 25th, 2011
Spencer Nielsen Follow snielsen42 on Twitter



As a partial follow up to my previous article “Play SNES Games On Your iPad Without Jailbreaking” I have now made a similar patch to the imame4all project which will allow it to build for non-jailbroken iOS devices. Everything appears to be in order except that I havn’t figured out a way to get the BTDaemon to run on a non-jailbroken device. This means that it can’t currently use Bluetooth controllers like the Wiimote. Digging into the btstack source it looks like you can configure it to talk with a BTDaemon process even if it is running on another machine like a Mac. I havn’t had time to fully investigate that yet though.

How To Get It Working Yourself

I have created a patch and script that will create everything for you automatically and set you up so that you can just build, run and go. Like the SNES-HD- patch before, you are going to need a current copy of Apple’s Developer Tools (tested with Xcode 3.2.6) and a copy of the iOS SDK (my changes assume the 4.3 SDK). You will need to be a paid iOS developer with Apple and have correctly configured your development machine and iOS device so that you can sign code and run said code on your device.

  • Download
  • cd nonjailbrokenimame
  • ./ (this will take a while because it is grabbing the specific project revision, patching it and then building it)
  • Place all your awesome homebrew roms into the “imame4all/ROMs/roms” directory
  • Open “imame.xcodeproj“, build for “Device” and run

Occasionally when you try to build and run you might see an error message stating “No code signature found.”. I have found that cleaning the project and then trying again often resolves the problem.

UPDATE: A reader let me know that it appears that the above steps will not work with Xcode 4. Although Xcode 4 will assemble and codesign the app as expected for some reason it gets confused and just spins when you try to run. I have verified that this is the behavior on Xcode 4.2b3 in 10.7. Until I figure out what is going on it looks like you will need to use Xcode 3.2.6 (works both on 10.6 and 10.7) to get it to upload to your device.

9 Responses to “Play MAME On Your iPad/iPhone Without Jailbreaking”

  1. David Says:

    Worked great for me, but only with Xcode 3.2.6. I tried with Xcode 3.2.5 and gives this message: “error: ‘mach_port_t’ has not been declared”. With Xcode 4.0.2 nothing happens.

    Hope you update for the recent 1.8 version 😉
    Thanks for your work!

  2. snielsen Says:

    Thanks! I am glad it is working for you 🙂 Yea, it looks like there is a bug in Xcode 4 that prevents it from producing anything. I havn’t yet had time to look into it deeply. Hopefully I will be able to find some time to update the patch for imame4all 1.8.

  3. David Says:

    Hi again. This guy made a package as you did to allow compile with Xcode and last version of iMAME4all:
    Comment thread here:

  4. snielsen Says:

    Oh nice! I am glad I wasn’t the only person thinking that non-jailbroken users deserve some emulation love 🙂

  5. Tim Says:

    I’m using Xcode 4.1 and the build etc went fine, was able to put the app on the iPad (did it via archive ipa file) and it appears to be running fine but it does not see my test ROM (so either i’m a n00b and the ROM is no good or installed in the wrong place OR there’s a bug – I’m thinking the former) I’ll test with tomorrow with some known working ROMs and let you know.

  6. snielsen Says:

    In my tests I used zipped ROMs, one set that requires external firmware and one ROM that was self-contained (with regard to MAME). What ROMs did you test with? Let me know how things go with the further tests 🙂

  7. rosaguns Says:

    Will this run on Xcode 2.4.1 ? My Os version doesn’t support any later versions of Xcode. 🙁

  8. Chris J Says:

    Is there any reason why this isn’t simply offered already built?

  9. snielsen Says:

    @rosaguns I don’t think this will work with Xcode 2.4.1.

    @Chris I am not sure if there any easy way to perform binary re-signing (I haven’t looked into yet) and there are implications with binary distribution. I decided that it would be best to simply distribute a patch instead.

Leave a Reply

Entries (RSS) and Comments (RSS).