[iOS/tvOS] — RetroArch 1.8.4 and other emulators (Download/Cydia repo)

RetroArch & iOS Emulators:

Click this link: iOS Emulators website

RetroArch & iOS Emulators repo (Jailbroken):

If you’re jailbroken, add my repo to Cydia by clicking this link on your jailbroken device, (this link for Sileo) or by adding this source to Cydia: http://johan.margueritte.free.fr/repo

I created a buildbot too specifically for jailbroken iOS 11+, tvOS 11+, iOS 10 — and for iOS 6 to 9 jailbroken or not! It’s already configured in my RetroArch downloads…

iOS 11+ buildbot: (64-bit)


tvOS 11+ buildbot: (64-bit)


iOS 10 buildbot: (32 & 64-bit)


iOS 9 buildbot: (32-bit)


iOS 6, 7 & 8 buildbot: (32-bit)



Thanks very much for your repo Weedy. I posted this in a different post but I am going to ask this here again. Do you know if there is a way to make the DS4 be fully recognize in RetroArch under ios12 and previous with the help of Ncontrol or Bstack/C4all? I mean with support of start, select, L3, R3 and home button? Thanks in advance and sorry for the quality of my English

@CamJRP The mfi specification on iOS 12 doesn’t have support for L3/R3/select buttons… The only solution would be to write a complete Bluetooth stack, and to add code inside of RetroArch to support it, like in the old BTstack days on 32 bit…

As things progress, you should update ASAP to 13.3 (or downgrade for people already on 13.3.1) if you’re on a device more recent than iPhone X/iPad Pro 2, as Unc0ver jailbreak is being updated as we speak!

My device can’t go further of iOS 12.4.5 (is an iPhone 6) so i don’t have native DS4 support. Would be great if the solution you mention could be implemented.

So I was reading that in the 32 bit versions of IOS Bstack was indeed directly supported by RetroArch. Can’t this characteristic be ported to current builds?

@CamJRP The original creator of BTstack lost interest in it, as all its functionalities were finally added natively in iOS, and mfi is good enough for other people who can’t update to iOS 13, apparently…

When can fix the sega DC…:喜悦:

@zzz0083 You can try the “no_exceptions” variant of flycast, which fixes problems with some games, but introduces errors with some others…

I used @jet082’s branch’s fixes on the main branch to get it to compile, but he was still working on it before his laptop went dead, so he can’t really help fixing any more issues for the time being…

I want to give a big thanks for maintaining and supporting Retroarch on iOS. It’s been my primary way to play retro games for a while.

I just happened to run into an issue, and I’m wanting to see if this has occurred with anyone else. I’ve been running non-jailbroken and installing with iOS App Signer + Xcode for a while now. I upgraded to 1.8.4 and now nothing will work due to the “failed to open libretro core” error. I’ve even tried deleting and reinstalling to 1.7.7 and I’m still having the error there now.

@DoctorBadvibes Which version did you try? (and what’s your system version?)

I will update RetroArch again soon but I would like to know if I made a mistake or something… :grimacing:

I’m running an iPad Pro 10.5 (A10X chip) currently on iOS 13.3.1.

It seemed to start doing this when I installed 1.8.4. I tried going back to some older versions I still had on my HDD that were previously working. However, 1.7.7 kept immediately crashing when I’d try to launch. 1.8.1 was the most recent working version I had installed, but now it’s doing the same as 1.8.4 with the “failed to open libretro core” error. I tried resetting the retroarch configs to default, but no luck.

I wondered if it’s due to an iOS update since it’s affecting the old builds? or maybe something specific to my setup or install method? I do the weekly reinstall with xcode, but I hadn’t reinstalled for about a month until I decided to play something a few days ago.

@DoctorBadvibes Yeah, Apple removed the ability to sign dynamic libraries (i.e. cores…) for use with 13.3.1 without an enterprise certificate (from a 99$/year paid dev account)…

In the next version, I will try to provide a version with the cores statically compiled (specifically for the IPA on iOS 13.3.1+)… I don’t know how to do it though, I may need some help if you’re familiar with the subject…

I would need some help getting the cores compiled for statically linking them (as .a files)!

Okay, I managed to compile the statically linking RetroArch, but I realized it only supports one core per instance of RetroArch, which means you would need to have a RetroArch version for EACH CORE!

BTW: Did you think about jailbreaking your iPad with Checkra1n? You could just use the version from my repo then…

Now I understand. I’d heard about the changes in Catalina, but didn’t even think about it in regards to iOS.

I wish I had the ability to help, but that’s probably beyond my skillset. Though, this is my primary way of using Retroarch. So, I’ll continue to research anything that may be helpful. If I discover anything, I’ll definitely share it.

Again, thanks for all the work you’ve done on this project. I never thought I’d be running through Contra 1-4 with a PS4 controller on an iPad!

1 Like

@DoctorBadvibes I mean, you have 3 solutions:

  • Using one app for each core (I could rename each of them to the core name)
  • Paying 99$/year to be able to install RetroArch like before
  • Jailbreaking

Yeah, it’s looking like it’s just time to jailbreak again. Thanks for all your work on this

1 Like

Hi! I’m not sure if this may be the right place to post this, but I am hesitant to make this an issue on libretro/RetroArch just yet in case I’m missing something.

I just recently (i.e. within the last two days) jailbroke my iPhone SE (an A9 powered device) on iOS 13.3.1 using checkra1n, and am currently using the builds provided on your Cydia repo. It’s my first go on using emulators on iOS after having used RA on Android, Windows, and Linux. All seems well, but I do have some problems; a few being minor, and one that’s causing me headaches at the moment.

I’ve had some individual core issues, like P-UAE crashing every time I attempt to exit it; whether it be with a floppy image or a provided WHDLoad disk loaded, so this prevents me from saving core settings at all. I’ve also found PCSX ReARMed’s standard (dynarec) core to not work (Failed to load content), but the interpreted one seems to be fine. Not sure if this is intentional on my version of iOS, or the jailbreak.

However, my biggest issue so far seems to be that some cores seem to report a bad, variable screen refresh rate. This isn’t all the cores; in fact, it only seems to affect (from my testing with my provided games library) the Genesis Plus GX, PicoDrive, Mupen64Plus-Next, Beetle PSX, bsnes (mercury-xxx and bsnes current), and PCSX ReARMed (interpreter). The other cores I’ve tried (FBNeo, MAME 2010, SNES9x, fMSX, mGBA, Handy, VICE, and the remainder Mednafen cores (PCE, VB, NGP, WS)) work perfectly as far as my eyes and acute hearing with headphones can tell. It seems to be a video refresh rate issue because I can tell by switching the frontend on and off that the estimated video refresh rate fluctuates somewhere between ~58hz and ~60hz, and by fast forwarding/disabling the frame limiter, all the above cores go beyond fullspeed, so it isn’t a performance bottleneck.

Interestingly, if I pull down the Notification Center and go back to RA, the cores with bad sync seem to get better, at least temporarily.

Note, this is with all default video/audio/latency settings, as provided by your builds; 60.000 video refresh rate, 64 ms audio latency, synchronized video & audio, Late controller polling, glui menu driver, no Rewind or latency-mitigating settings. All I’ve changed in my configuration is my file browser and system directories, and adjusted my menu scaler accordingly to 0.80. I have tried the Variable Refresh Rate setting, and adjusting my framerate, but these settings either don’t work or only mitigate the problem temporarily; and obviously, causes some havoc with the cores that do run perfectly fine.

So… what am I missing? Are these known issues, or is this unique to my device, or jailbreak? I hesitate to think this is the fault of the device as RA can, and does, operate at a smooth 60hz.

@SeongGino Hi!

I just noticed something I never tried before, but could you try activating the “Force-disable sRGB FBO” option and report back ?

Thanks for the tip! While it seems to help Genesis Plus maintain sync better for a bit, unfortunately the problem does still come up. PCSX, no change; it’s as bad as it was.

EDIT: It seems like the cause for Genesis Plus’s improper sync was due to using Nuked FM emulation; setting it to the default MAME FM setting brings it back in line with the other perfectly synced cores, regardless of sRGB FBO setting. PicoDrive remains pretty bad though (when emulating 32x), and PCSX Interpreter as well.

@SeongGino Hi again!

The first thing I used to recommend when video sync seems to be off: go to Settings -> Video -> Output, let the counter on the Estimated Screen Framerate run for a while, and when it seems to have stabilized a bit, click on it to set the Vertical Refresh Rate to the actual estimated value…

Can you please try it and report back?

On a jailbroken iPad Pro 2 (my main test device), the value fluctuates between 59.999 and 60.002 so the default value of 60 is perfect, but I just tested on my recently jailbroken iPhone 11 Pro Max and the value is completely whack and fluctuates a lot, but seems to more often than not be around 59.748, so setting the Vertical Refresh Rate to that fixes some glaring video sync problems, and gets smooth afterwards…

. . . Where?

Are we talking at the frontend without a core? Inside of a core? And if that’s the case, what core should I be syncing to?

Because in a core-less state, my estimated framerate finishes at 60.002. And this is the case with cores that, as stated, do perform perfectly with regards to sync. But if I use PCSX or Genesis Plus (w/ Nuked FM emulation), then that estimated refresh rate can go anywhere from the low 59’s to the mid 57’s; and no matter what setting I use, it will always jump around and cause A/V sync issues again. Besides, if I do that, then this will ruin the other working cores that function fine on 60.000hz. I guess I should’ve mentioned that I tried this already before posting.

Have you checked the edit that I posted above your post? That might indicate that this is based on the load, and not the device’s screen faking an artificially higher rate. I’ve used devices like the GPD Win whose screen fakes 60, but is actually lower; and my SE here does not behave like that at all, or at least not in the same way.