WIP iOS Port

With the recent iOS 6 jailbreak I figured ‘Why not?’ It doesn’t have any advanced features yet, but I think it’s going pretty good for being 5 days old. It uses RetroArch’s OpenGL video driver (with shaders), RetroArch’s OpenAL audio driver (which lacks the audio_rate_control feature so there may be choppy frame rates at times), and only supports the touch-screen for input, using the same overlay code as the Android version.

No binaries, but there are building instructions in the ios/BUILDING file in the repo. Currently building requires XCode, and the app can be run on either a device (iPad 4 was the only tested one) or the simulator.

github.com/meancoot/RetroArch/tree/ios

Very cool to see you back with a splash :P.

I wish I had an iOS device myself so I could help out with development - unfortunately, doesn’t look like one is forthcoming yet.

Also - now that 0.9.8 is out of the door, we will want to whip some of your libretro ports into shape so that they can be bundled in for the forthcoming 0.9.9 version - I’m thinking ScummVM and MAME could at least be achievable in the here and now. Desmume and Dosbox are probably heavily dependent on dynarecs to be of any use on Android and consoles, so best to leave that until later when we have the low-hanging fruit out of the way.

Still trying to organise an iOS device for you, but yeah, it is proving difficult. I don’t have anything here I can personally send you that is powerful enough.

However thanks meancoot, just going to compile it up and test it out on my iPhone 5… is there anything jailbreak specific about it, or should it run on any device regardless?

That’s really cool :o Is it possible to use CoreAudio on iOS? There is a driver for that. If you must use OpenAL, I can add rate control interface to it quite easily.

You probably won’t have much luck running on a non-jailbroken device. I hardcoded a couple of paths which may break sandboxing rules, and the instructions I provided will the the libretro cores unsigned. I don’t have a dev account, or any devices with any other jailbreak versions to test though.

The existing CoreAudio driver uses a lot of non iOS APIs during initialization, the OpenAL driver builds cleanly. I plan on switching to CoreAudio, but I’ve been focusing on getting video and input working before worrying too much about the audio driver.

Ah, makes sense. If you find a way for it to work on both recent OSX and iOS, that’d be nice. The current code has lots of deprecation warnings lurking, and as I’ve experienced, Apple loves to completely kill APIs in cold blood :\

It runs on a non-jailbroken device, just doesn’t find any cores, etc… still better then nothing. Tempted to play with it to see if I can get it running on a non-JB device. If I can, at least it works out for those with or without, as long as you can compile it yourself.

This is what I came up with for coreaudio.c: https://github.com/meancoot/RetroArch/blob/ios/audio/coreaudio.c

I redid it for some locality but ultimately the only thing that was removed was the call to AudioObjectSetPropertyData. As is, it works on both OS X and iOS (much more smoothly than OpenAL too).

@shockdesign: At some point I’ll look into running on non-JB, worst case is that the libretro cores may need to be statically linked (i.e. One .app per libretro core).

I think a number of people would actually like that setup on Android, based on the requests for per-core configuration.

I think a number of people would actually like that setup on Android, based on the requests for per-core configuration.[/quote]

We statically link RetroArch with each core on PS3/360/Wii/Xbox 1 out of pure necessity (only PS3 supports dynamic libraries but it’s called something else there - SPRXes - and very proprietary) - but it’s just a huge maintenance hazard - and even though dynamic libraries will incur some overhead, it is probably not big enough to justify going with static libs for a frontend like RetroArch.

I guess for iOS non-JB though it might be a necessity (like it is on consoles).

On another note - looks like the XBMC Hub guys are finally coming through with the ATV2 - so let’s hope I have something in my hands later this week or beginning next week so I can start looking at the port myself.

Is it useful to have it working for non-JB? RetroArch will never be accepted on App Store anyways.

Is it useful to have it working for non-JB? RetroArch will never be accepted on App Store anyways.[/quote]

Well it’s useful for those who don’t want to JB their device however can compile and build their own version to run? Plus, there are ways around getting it on the App Store :slight_smile:

Something like how Gridlee was pushed onto the App Store… it’s the latest MAME4iOS Reloaded but bundled witha freeware ROM, easy enough to copy other ROMs over and then it becomes a fully fledged version of MAME (albiet with older emulation but still).

Well, RetroArch does actually run some actual in-house games … :wink:

Well there you go :slight_smile:

How about a iPhone 5 or ipad 4 funding for the RetroArch?

We could ask in some forums for $5 to $15 donations so that the developer could buy a iOS device of his choice. I think is possible to raise that much.

I already have an iPad 2 now - I forgot to update this thread I guess. Paid for it myself.

The only bummer right now is that I have to run OSX in a VM which is kinda slow - but better than nothing I suppose.

Still i think that a funding would be possible :(… I need to find a more active forum…toucharcade had a nice jailbreak forum but it was kinda of removed (hidden)…

Any suggestion?

We don’t want money entering into this project to be honest.

That’s why we have so far tried to refrain from doing kickstarters, donations or anything else.

The only thing that is accepted is hardware donations - however, we as a team are never going to do KIckstarters or donation raising for purchasing items.

Ok… i get it… that is a very noble approach now days.

Thanks for all your effort in this man… Even without any form of money support that is very rarely in most community’s, you guys have achieve a lot.

I only have one iPhone so i can’t really help… also I’m in Brazil so to send something to you would probably cost me a kidney…

I guess i can only thank you all in the team for the work you guys are doing. Sorry if i can’t be of any assistance… :frowning: